Clean up index/btree comments/macros, as approved.
authorBruce Momjian
Thu, 22 Feb 2001 21:48:49 +0000 (21:48 +0000)
committerBruce Momjian
Thu, 22 Feb 2001 21:48:49 +0000 (21:48 +0000)
src/backend/access/common/indextuple.c
src/backend/access/gist/gist.c
src/backend/access/hash/hash.c
src/backend/access/hash/hashutil.c
src/include/access/itup.h
src/include/access/nbtree.h

index 4b46c202dcd47064038267fcbb5f99fb47df8787..e503d9b888d0f2ece68510decae60effe48516cb 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.51 2001/02/15 20:57:01 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.52 2001/02/22 21:48:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -230,7 +230,7 @@ nocache_index_getattr(IndexTuple tup,
 
    attnum--;
 
-   if (IndexTupleNoNulls(tup))
+   if (!IndexTupleHasNulls(tup))
    {
 #ifdef IN_MACRO
 /* This is handled in the macro */
@@ -301,7 +301,7 @@ nocache_index_getattr(IndexTuple tup,
            return fetchatt(att[attnum],
                            tp + att[attnum]->attcacheoff);
        }
-       else if (!IndexTupleAllFixed(tup))
+       else if (IndexTupleHasVarlenas(tup))
        {
            int         j;
 
@@ -365,7 +365,7 @@ nocache_index_getattr(IndexTuple tup,
 
        for (i = 0; i < attnum; i++)
        {
-           if (!IndexTupleNoNulls(tup))
+           if (IndexTupleHasNulls(tup))
            {
                if (att_isnull(i, bp))
                {
index c631f38503733fe260f98c1fe60873c058df8baf..c7bfa9c9626396ec991b759be083dde07f486414 100644 (file)
@@ -6,7 +6,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.69 2001/01/29 00:39:12 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.70 2001/02/22 21:48:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1102,7 +1102,7 @@ gist_tuple_replacekey(Relation r, GISTENTRY entry, IndexTuple t)
    {
        memcpy(datum, entry.pred, entry.bytes);
        /* clear out old size */
-       t->t_info &= 0xe000;
+       t->t_info &= ~INDEX_SIZE_MASK;
        /* or in new size */
        t->t_info |= MAXALIGN(entry.bytes + sizeof(IndexTupleData));
 
index 2f4448e107e238fb468bf3eaaf0326df2002e63b..44a8b225e8f42d886078d9e9f6afe7409f297b9d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/hash/hash.c,v 1.48 2001/01/29 00:39:13 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/hash/hash.c,v 1.49 2001/02/22 21:48:49 momjian Exp $
  *
  * NOTES
  *   This file contains only the public interface routines.
@@ -170,7 +170,7 @@ hashbuild(PG_FUNCTION_ARGS)
         * of the way nulls are handled here.
         */
 
-       if (itup->t_info & INDEX_NULL_MASK)
+       if (IndexTupleHasNulls(itup))
        {
            pfree(itup);
            continue;
@@ -256,7 +256,7 @@ hashinsert(PG_FUNCTION_ARGS)
    itup = index_formtuple(RelationGetDescr(rel), datum, nulls);
    itup->t_tid = *ht_ctid;
 
-   if (itup->t_info & INDEX_NULL_MASK)
+   if (IndexTupleHasNulls(itup))
        PG_RETURN_POINTER((InsertIndexResult) NULL);
 
    hitem = _hash_formitem(itup);
index 338ea849ca122b57ae975aafbd3894c233c6628a..0aac61fa025dcba02d98fcfc75eae6c2d90813a2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashutil.c,v 1.25 2001/01/24 19:42:47 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashutil.c,v 1.26 2001/02/22 21:48:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -72,7 +72,7 @@ _hash_formitem(IndexTuple itup)
    Size        tuplen;
 
    /* disallow nulls in hash keys */
-   if (itup->t_info & INDEX_NULL_MASK)
+   if (IndexTupleHasNulls(itup))
        elog(ERROR, "hash indices cannot include null keys");
 
    /* make a copy of the index tuple with room for the sequence number */
index 7d124ef56f6c56334491357836c400bba99d058d..7c6adc8b2615f70fcff1218bd58f761be5796619 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: itup.h,v 1.29 2001/02/21 19:07:04 momjian Exp $
+ * $Id: itup.h,v 1.30 2001/02/22 21:48:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -24,12 +24,14 @@ typedef struct IndexTupleData
 {
    ItemPointerData t_tid;      /* reference TID to heap tuple */
 
-   /*
+   /* ---------------
     * t_info is layed out in the following fashion:
     *
-    * 15th (leftmost) bit: "has nulls" bit 14th bit: "has varlenas" bit 13th
-    * bit: "has rules" bit - (removed ay 11/94) bits 12-0 bit: size of
-    * tuple.
+    * 15th (high) bit: has nulls
+    * 14th bit: has varlenas
+    * 13th bit: unused
+    * 12-0 bit: size of tuple
+    * ---------------
     */
 
    unsigned short t_info;      /* various info about tuple */
@@ -69,13 +71,14 @@ typedef RetrieveIndexResultData *RetrieveIndexResult;
 #define INDEX_SIZE_MASK 0x1FFF
 #define INDEX_NULL_MASK 0x8000
 #define INDEX_VAR_MASK 0x4000
+/* bit 0x2000 is not used */
 
-#define IndexTupleSize(itup)   ((Size) (((IndexTuple) (itup))->t_info & 0x1FFF))
-#define IndexTupleDSize(itup)                ((Size) ((itup).t_info & 0x1FFF))
-#define IndexTupleNoNulls(itup)  (!(((IndexTuple) (itup))->t_info & 0x8000))
-#define IndexTupleAllFixed(itup) (!(((IndexTuple) (itup))->t_info & 0x4000))
+#define IndexTupleSize(itup)       ((Size) (((IndexTuple) (itup))->t_info & INDEX_SIZE_MASK))
+#define IndexTupleDSize(itup)      ((Size) ((itup).t_info & INDEX_SIZE_MASK))
+#define IndexTupleHasNulls(itup)   ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK))
+#define IndexTupleHasVarlenas(itup)    ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK))
 
-#define IndexTupleHasMinHeader(itup) (IndexTupleNoNulls(itup))
+#define IndexTupleHasMinHeader(itup) (!IndexTupleHasNulls(itup))
 
 /*
  * Takes an infomask as argument (primarily because this needs to be usable
@@ -107,7 +110,7 @@ typedef RetrieveIndexResultData *RetrieveIndexResult;
 ( \
    AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \
    *(isnull) = false, \
-   IndexTupleNoNulls(tup) ? \
+   !IndexTupleHasNulls(tup) ? \
    ( \
        (tupleDesc)->attrs[(attnum)-1]->attcacheoff >= 0 ? \
        ( \
index d87cf0eced4ccb9af168af371980f28f9110c24b..9ca3a6f858ad7fa13238d82c2df0008407549a8b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nbtree.h,v 1.52 2001/02/21 19:07:04 momjian Exp $
+ * $Id: nbtree.h,v 1.53 2001/02/22 21:48:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,8 +21,9 @@
 
 /*
  * BTPageOpaqueData -- At the end of every page, we store a pointer
- * to both siblings in the tree.  See Lehman and Yao's paper for more
- * info.  In addition, we need to know what sort of page this is
+ * to both siblings in the tree.  This is used to do forward/backward
+ *  index scans.  See Lehman and Yao's paper for more
+ * info.  In addition, we need to know what type of page this is
  * (leaf or internal), and whether the page is available for reuse.
  *
  * We also store a back-link to the parent page, but this cannot be trusted
 
 typedef struct BTPageOpaqueData
 {
-   BlockNumber btpo_prev;
-   BlockNumber btpo_next;
-   BlockNumber btpo_parent;
-   uint16      btpo_flags;
+   BlockNumber btpo_prev;      /* used for backward index scans */
+   BlockNumber btpo_next;      /* used for forward index scans */
+   BlockNumber btpo_parent;    /* pointer to parent, but not updated
+                                  on parent split */
+   uint16      btpo_flags;     /* LEAF?, ROOT?, FREE?, META?, REORDER? */
 
 } BTPageOpaqueData;
 
 typedef BTPageOpaqueData *BTPageOpaque;
 
 /* Bits defined in btpo_flags */
-#define BTP_LEAF       (1 << 0)    /* It's a leaf page */
-#define BTP_ROOT       (1 << 1)    /* It's the root page (has no parent) */
-#define BTP_FREE       (1 << 2)    /* not currently used... */
-#define BTP_META       (1 << 3)    /* Set in the meta-page only */
-#define    BTP_REORDER     (1 << 4)    /* items must be re-ordered */
+#define BTP_LEAF       (1 << 0)    /* leaf page, if not internal page */
+#define BTP_ROOT       (1 << 1)    /* root page (has no parent) */
+#define BTP_FREE       (1 << 2)    /* page not in use */
+#define BTP_META       (1 << 3)    /* meta-page */
+#define    BTP_REORDER     (1 << 4)    /* items need reordering */
 
 
-#define BTREE_METAPAGE 0   /* first page is meta */
-#define BTREE_MAGIC        0x053162
-
-#define BTreeInvalidParent(opaque) \
-   (opaque->btpo_parent == InvalidBlockNumber || \
-       opaque->btpo_parent == BTREE_METAPAGE)
-
-#define BTREE_VERSION  1
+/*
+ * The Meta page is always the first page in the btree index.
+ * Its primary purpose is to point to the location of the btree root page.
+ */
 
 typedef struct BTMetaPageData
 {
@@ -69,6 +67,15 @@ typedef struct BTMetaPageData
 #define BTPageGetMeta(p) \
    ((BTMetaPageData *) &((PageHeader) p)->pd_linp[0])
 
+#define BTREE_METAPAGE 0   /* first page is meta */
+#define BTREE_MAGIC        0x053162    /* magic number of btree pages */
+
+#define BTreeInvalidParent(opaque) \
+   (opaque->btpo_parent == InvalidBlockNumber || \
+       opaque->btpo_parent == BTREE_METAPAGE)
+
+#define BTREE_VERSION  1
+   
 /*
  * BTScanOpaqueData is used to remember which buffers we're currently
  * examining in the scan.  We keep these buffers pinned (but not locked,