Clean up index/btree comments/macros, as approved.
This commit is contained in:
parent
660ca3e01c
commit
4f6c49fef0
|
@ -9,7 +9,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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--;
|
attnum--;
|
||||||
|
|
||||||
if (IndexTupleNoNulls(tup))
|
if (!IndexTupleHasNulls(tup))
|
||||||
{
|
{
|
||||||
#ifdef IN_MACRO
|
#ifdef IN_MACRO
|
||||||
/* This is handled in the macro */
|
/* This is handled in the macro */
|
||||||
|
@ -301,7 +301,7 @@ nocache_index_getattr(IndexTuple tup,
|
||||||
return fetchatt(att[attnum],
|
return fetchatt(att[attnum],
|
||||||
tp + att[attnum]->attcacheoff);
|
tp + att[attnum]->attcacheoff);
|
||||||
}
|
}
|
||||||
else if (!IndexTupleAllFixed(tup))
|
else if (IndexTupleHasVarlenas(tup))
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
|
@ -365,7 +365,7 @@ nocache_index_getattr(IndexTuple tup,
|
||||||
|
|
||||||
for (i = 0; i < attnum; i++)
|
for (i = 0; i < attnum; i++)
|
||||||
{
|
{
|
||||||
if (!IndexTupleNoNulls(tup))
|
if (IndexTupleHasNulls(tup))
|
||||||
{
|
{
|
||||||
if (att_isnull(i, bp))
|
if (att_isnull(i, bp))
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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);
|
memcpy(datum, entry.pred, entry.bytes);
|
||||||
/* clear out old size */
|
/* clear out old size */
|
||||||
t->t_info &= 0xe000;
|
t->t_info &= ~INDEX_SIZE_MASK;
|
||||||
/* or in new size */
|
/* or in new size */
|
||||||
t->t_info |= MAXALIGN(entry.bytes + sizeof(IndexTupleData));
|
t->t_info |= MAXALIGN(entry.bytes + sizeof(IndexTupleData));
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* This file contains only the public interface routines.
|
* This file contains only the public interface routines.
|
||||||
|
@ -170,7 +170,7 @@ hashbuild(PG_FUNCTION_ARGS)
|
||||||
* of the way nulls are handled here.
|
* of the way nulls are handled here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (itup->t_info & INDEX_NULL_MASK)
|
if (IndexTupleHasNulls(itup))
|
||||||
{
|
{
|
||||||
pfree(itup);
|
pfree(itup);
|
||||||
continue;
|
continue;
|
||||||
|
@ -256,7 +256,7 @@ hashinsert(PG_FUNCTION_ARGS)
|
||||||
itup = index_formtuple(RelationGetDescr(rel), datum, nulls);
|
itup = index_formtuple(RelationGetDescr(rel), datum, nulls);
|
||||||
itup->t_tid = *ht_ctid;
|
itup->t_tid = *ht_ctid;
|
||||||
|
|
||||||
if (itup->t_info & INDEX_NULL_MASK)
|
if (IndexTupleHasNulls(itup))
|
||||||
PG_RETURN_POINTER((InsertIndexResult) NULL);
|
PG_RETURN_POINTER((InsertIndexResult) NULL);
|
||||||
|
|
||||||
hitem = _hash_formitem(itup);
|
hitem = _hash_formitem(itup);
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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;
|
Size tuplen;
|
||||||
|
|
||||||
/* disallow nulls in hash keys */
|
/* disallow nulls in hash keys */
|
||||||
if (itup->t_info & INDEX_NULL_MASK)
|
if (IndexTupleHasNulls(itup))
|
||||||
elog(ERROR, "hash indices cannot include null keys");
|
elog(ERROR, "hash indices cannot include null keys");
|
||||||
|
|
||||||
/* make a copy of the index tuple with room for the sequence number */
|
/* make a copy of the index tuple with room for the sequence number */
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* 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 */
|
ItemPointerData t_tid; /* reference TID to heap tuple */
|
||||||
|
|
||||||
/*
|
/* ---------------
|
||||||
* t_info is layed out in the following fashion:
|
* t_info is layed out in the following fashion:
|
||||||
*
|
*
|
||||||
* 15th (leftmost) bit: "has nulls" bit 14th bit: "has varlenas" bit 13th
|
* 15th (high) bit: has nulls
|
||||||
* bit: "has rules" bit - (removed ay 11/94) bits 12-0 bit: size of
|
* 14th bit: has varlenas
|
||||||
* tuple.
|
* 13th bit: unused
|
||||||
|
* 12-0 bit: size of tuple
|
||||||
|
* ---------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned short t_info; /* various info about tuple */
|
unsigned short t_info; /* various info about tuple */
|
||||||
|
@ -69,13 +71,14 @@ typedef RetrieveIndexResultData *RetrieveIndexResult;
|
||||||
#define INDEX_SIZE_MASK 0x1FFF
|
#define INDEX_SIZE_MASK 0x1FFF
|
||||||
#define INDEX_NULL_MASK 0x8000
|
#define INDEX_NULL_MASK 0x8000
|
||||||
#define INDEX_VAR_MASK 0x4000
|
#define INDEX_VAR_MASK 0x4000
|
||||||
|
/* bit 0x2000 is not used */
|
||||||
|
|
||||||
#define IndexTupleSize(itup) ((Size) (((IndexTuple) (itup))->t_info & 0x1FFF))
|
#define IndexTupleSize(itup) ((Size) (((IndexTuple) (itup))->t_info & INDEX_SIZE_MASK))
|
||||||
#define IndexTupleDSize(itup) ((Size) ((itup).t_info & 0x1FFF))
|
#define IndexTupleDSize(itup) ((Size) ((itup).t_info & INDEX_SIZE_MASK))
|
||||||
#define IndexTupleNoNulls(itup) (!(((IndexTuple) (itup))->t_info & 0x8000))
|
#define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK))
|
||||||
#define IndexTupleAllFixed(itup) (!(((IndexTuple) (itup))->t_info & 0x4000))
|
#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
|
* Takes an infomask as argument (primarily because this needs to be usable
|
||||||
|
@ -107,7 +110,7 @@ typedef RetrieveIndexResultData *RetrieveIndexResult;
|
||||||
( \
|
( \
|
||||||
AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \
|
AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \
|
||||||
*(isnull) = false, \
|
*(isnull) = false, \
|
||||||
IndexTupleNoNulls(tup) ? \
|
!IndexTupleHasNulls(tup) ? \
|
||||||
( \
|
( \
|
||||||
(tupleDesc)->attrs[(attnum)-1]->attcacheoff >= 0 ? \
|
(tupleDesc)->attrs[(attnum)-1]->attcacheoff >= 0 ? \
|
||||||
( \
|
( \
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* 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
|
* 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
|
* to both siblings in the tree. This is used to do forward/backward
|
||||||
* info. In addition, we need to know what sort of page this is
|
* 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.
|
* (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
|
* We also store a back-link to the parent page, but this cannot be trusted
|
||||||
|
@ -32,31 +33,28 @@
|
||||||
|
|
||||||
typedef struct BTPageOpaqueData
|
typedef struct BTPageOpaqueData
|
||||||
{
|
{
|
||||||
BlockNumber btpo_prev;
|
BlockNumber btpo_prev; /* used for backward index scans */
|
||||||
BlockNumber btpo_next;
|
BlockNumber btpo_next; /* used for forward index scans */
|
||||||
BlockNumber btpo_parent;
|
BlockNumber btpo_parent; /* pointer to parent, but not updated
|
||||||
uint16 btpo_flags;
|
on parent split */
|
||||||
|
uint16 btpo_flags; /* LEAF?, ROOT?, FREE?, META?, REORDER? */
|
||||||
|
|
||||||
} BTPageOpaqueData;
|
} BTPageOpaqueData;
|
||||||
|
|
||||||
typedef BTPageOpaqueData *BTPageOpaque;
|
typedef BTPageOpaqueData *BTPageOpaque;
|
||||||
|
|
||||||
/* Bits defined in btpo_flags */
|
/* Bits defined in btpo_flags */
|
||||||
#define BTP_LEAF (1 << 0) /* It's a leaf page */
|
#define BTP_LEAF (1 << 0) /* leaf page, if not internal page */
|
||||||
#define BTP_ROOT (1 << 1) /* It's the root page (has no parent) */
|
#define BTP_ROOT (1 << 1) /* root page (has no parent) */
|
||||||
#define BTP_FREE (1 << 2) /* not currently used... */
|
#define BTP_FREE (1 << 2) /* page not in use */
|
||||||
#define BTP_META (1 << 3) /* Set in the meta-page only */
|
#define BTP_META (1 << 3) /* meta-page */
|
||||||
#define BTP_REORDER (1 << 4) /* items must be re-ordered */
|
#define BTP_REORDER (1 << 4) /* items need reordering */
|
||||||
|
|
||||||
|
|
||||||
#define BTREE_METAPAGE 0 /* first page is meta */
|
/*
|
||||||
#define BTREE_MAGIC 0x053162
|
* 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.
|
||||||
#define BTreeInvalidParent(opaque) \
|
*/
|
||||||
(opaque->btpo_parent == InvalidBlockNumber || \
|
|
||||||
opaque->btpo_parent == BTREE_METAPAGE)
|
|
||||||
|
|
||||||
#define BTREE_VERSION 1
|
|
||||||
|
|
||||||
typedef struct BTMetaPageData
|
typedef struct BTMetaPageData
|
||||||
{
|
{
|
||||||
|
@ -69,6 +67,15 @@ typedef struct BTMetaPageData
|
||||||
#define BTPageGetMeta(p) \
|
#define BTPageGetMeta(p) \
|
||||||
((BTMetaPageData *) &((PageHeader) p)->pd_linp[0])
|
((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
|
* BTScanOpaqueData is used to remember which buffers we're currently
|
||||||
* examining in the scan. We keep these buffers pinned (but not locked,
|
* examining in the scan. We keep these buffers pinned (but not locked,
|
||||||
|
|
Loading…
Reference in New Issue