1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-29 22:49:41 +03:00

Clean up index/btree comments/macros, as approved.

This commit is contained in:
Bruce Momjian
2001-02-22 21:48:49 +00:00
parent 660ca3e01c
commit 4f6c49fef0
6 changed files with 52 additions and 42 deletions

View 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 ? \
( \

View 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
@@ -32,31 +33,28 @@
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,