]> granicus.if.org Git - postgresql/commitdiff
Clean up index/btree comments/macros, as approved.
authorBruce Momjian <bruce@momjian.us>
Thu, 22 Feb 2001 21:48:49 +0000 (21:48 +0000)
committerBruce Momjian <bruce@momjian.us>
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,