]> granicus.if.org Git - postgresql/commitdiff
Clean up some ugly coding (hardwired constants) in index_formtuple.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 23 Sep 2000 22:40:12 +0000 (22:40 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 23 Sep 2000 22:40:12 +0000 (22:40 +0000)
src/backend/access/common/indextuple.c

index 9450911ab1554b767a796058e11a98fe4f03f9f3..b4dc69df26978ae40b0936868a341ce7979d06a3 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.44 2000/07/22 11:18:45 wieck Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.45 2000/09/23 22:40:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,8 +46,8 @@ index_formtuple(TupleDesc tupleDescriptor,
        uint16          tupmask = 0;
        int                     numberOfAttributes = tupleDescriptor->natts;
 #ifdef TOAST_INDEX_HACK
-       Datum           untoasted_value[MaxHeapAttributeNumber];
-       bool            untoasted_free[MaxHeapAttributeNumber];
+       Datum           untoasted_value[INDEX_MAX_KEYS];
+       bool            untoasted_free[INDEX_MAX_KEYS];
 #endif
 
        if (numberOfAttributes > INDEX_MAX_KEYS)
@@ -79,10 +79,14 @@ index_formtuple(TupleDesc tupleDescriptor,
                }
        }
 #endif
-       for (i = 0; i < numberOfAttributes && !hasnull; i++)
+
+       for (i = 0; i < numberOfAttributes; i++)
        {
                if (null[i] != ' ')
+               {
                        hasnull = true;
+                       break;
+               }
        }
 
        if (hasnull)
@@ -122,23 +126,21 @@ index_formtuple(TupleDesc tupleDescriptor,
        /*
         * We do this because DataFill wants to initialize a "tupmask" which
         * is used for HeapTuples, but we want an indextuple infomask.  The
-        * only "relevent" info is the "has variable attributes" field, which
-        * is in mask position 0x02.  We have already set the null mask above.
+        * only relevant info is the "has variable attributes" field.
+        * We have already set the hasnull bit above.
         */
 
-       if (tupmask & 0x02)
+       if (tupmask & HEAP_HASVARLENA)
                infomask |= INDEX_VAR_MASK;
 
        /*
-        * Here we make sure that we can actually hold the size.  We also want
-        * to make sure that size is not aligned oddly.  This actually is a
-        * rather odd way to make sure the size is not too large overall.
+        * Here we make sure that the size will fit in the field reserved for
+        * it in t_info.
         */
 
-       if (size & 0xE000)
+       if ((size & INDEX_SIZE_MASK) != size)
                elog(ERROR, "index_formtuple: data takes %d bytes: too big", size);
 
-
        infomask |= size;
 
        /* ----------------