diff options
Diffstat (limited to 'src/include/access/gin.h')
-rw-r--r-- | src/include/access/gin.h | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/include/access/gin.h b/src/include/access/gin.h index 80f23749968..4e4259363dd 100644 --- a/src/include/access/gin.h +++ b/src/include/access/gin.h @@ -3,7 +3,7 @@ * header file for postgres inverted index access method implementation. * * Copyright (c) 2006, PostgreSQL Global Development Group - * $PostgreSQL: pgsql/src/include/access/gin.h,v 1.10 2007/01/31 15:09:45 teodor Exp $ + * $PostgreSQL: pgsql/src/include/access/gin.h,v 1.11 2007/04/09 22:04:04 tgl Exp $ *-------------------------------------------------------------------------- */ @@ -31,41 +31,27 @@ #define GIN_CONSISTENT_PROC 4 #define GINNProcs 4 -typedef XLogRecPtr GinNSN; - /* * Page opaque data in a inverted index page. + * + * Note: GIN does not include a page ID word as do the other index types. + * This is OK because the opaque data is only 8 bytes and so can be reliably + * distinguished by size. Revisit this if the size ever increases. */ typedef struct GinPageOpaqueData { - uint16 flags; + BlockNumber rightlink; /* next page if any */ OffsetNumber maxoff; /* number entries on GIN_DATA page: number of * heap ItemPointer on GIN_DATA|GIN_LEAF page * and number of records on GIN_DATA & * ~GIN_LEAF page */ - BlockNumber rightlink; + uint16 flags; /* see bit definitions below */ } GinPageOpaqueData; typedef GinPageOpaqueData *GinPageOpaque; #define GIN_ROOT_BLKNO (0) -typedef struct -{ - BlockIdData child_blkno; /* use it instead of BlockNumber to save space - * on page */ - ItemPointerData key; -} PostingItem; - -#define PostingItemGetBlockNumber(pointer) \ - BlockIdGetBlockNumber(&(pointer)->child_blkno) - -#define PostingItemSetBlockNumber(pointer, blockNumber) \ - BlockIdSet(&((pointer)->child_blkno), (blockNumber)) - -/* - * Page opaque data in a inverted index page. - */ #define GIN_DATA (1 << 0) #define GIN_LEAF (1 << 1) #define GIN_DELETED (1 << 2) @@ -98,8 +84,21 @@ typedef struct #define GinItemPointerGetOffsetNumber(pointer) \ ((pointer)->ip_posid) +typedef struct +{ + BlockIdData child_blkno; /* use it instead of BlockNumber to save space + * on page */ + ItemPointerData key; +} PostingItem; + +#define PostingItemGetBlockNumber(pointer) \ + BlockIdGetBlockNumber(&(pointer)->child_blkno) + +#define PostingItemSetBlockNumber(pointer, blockNumber) \ + BlockIdSet(&((pointer)->child_blkno), (blockNumber)) + /* - * Support work on IndexTuuple on leaf pages + * Support work on IndexTuple on leaf pages */ #define GinGetNPosting(itup) GinItemPointerGetOffsetNumber(&(itup)->t_tid) #define GinSetNPosting(itup,n) ItemPointerSetOffsetNumber(&(itup)->t_tid,(n)) |