PostgreSQL Source Code
git master
|
#include "access/transam.h"
#include "storage/block.h"
#include "storage/itemptr.h"
#include "storage/off.h"
Go to the source code of this file.
Data Structures | |
struct | GinPageOpaqueData |
struct | GinMetaPageData |
struct | PostingItem |
struct | GinPostingList |
Typedefs | |
typedef struct GinPageOpaqueData | GinPageOpaqueData |
typedef GinPageOpaqueData * | GinPageOpaque |
typedef struct GinMetaPageData | GinMetaPageData |
typedef signed char | GinNullCategory |
#define GIN_CAT_EMPTY_ITEM 2 /* placeholder for zero-key item */ |
Definition at line 211 of file ginblock.h.
Referenced by ginExtractEntries(), and ginFillScanKey().
#define GIN_CAT_EMPTY_QUERY (-1) /* placeholder for full-scan query */ |
Definition at line 213 of file ginblock.h.
Referenced by collectMatchesForHeapRow(), ginFillScanKey(), and startScanEntry().
#define GIN_CAT_NORM_KEY 0 /* normal, non-null key value */ |
Definition at line 209 of file ginblock.h.
Referenced by collectMatchBitmap(), ginCompareEntries(), ginExtractEntries(), GinFormTuple(), ginInsertBAEntry(), gintuple_get_key(), and matchPartialInPendingList().
#define GIN_CAT_NULL_ITEM 3 /* placeholder for null item */ |
Definition at line 212 of file ginblock.h.
Referenced by collectMatchBitmap(), collectMatchesForHeapRow(), and ginExtractEntries().
#define GIN_CAT_NULL_KEY 1 /* null key value */ |
Definition at line 210 of file ginblock.h.
Referenced by ginExtractEntries(), and ginNewScanKey().
#define GIN_COMPRESSED (1 << 7) |
Definition at line 48 of file ginblock.h.
Referenced by createPostingTree(), dataPlaceToPageLeafSplit(), gin_leafpage_items(), gin_page_opaque_info(), ginPlaceToPage(), and ginRedoCreatePTree().
#define GIN_CURRENT_VERSION 2 |
Definition at line 102 of file ginblock.h.
Referenced by GinInitMetabuffer().
#define GIN_DATA (1 << 0) |
Definition at line 40 of file ginblock.h.
Referenced by createPostingTree(), dataPlaceToPageLeafSplit(), gin_leafpage_items(), gin_page_opaque_info(), and ginRedoCreatePTree().
#define GIN_DELETED (1 << 2) |
Definition at line 42 of file ginblock.h.
Referenced by entryLoadMoreItems(), gin_mask(), gin_page_opaque_info(), ginRedoDeleteListPages(), scanPostingTree(), and shiftList().
#define GIN_INCOMPLETE_SPLIT |
Definition at line 46 of file ginblock.h.
Referenced by gin_page_opaque_info(), ginPlaceToPage(), and ginRedoClearIncompleteSplit().
#define GIN_ITUP_COMPRESSED (1U << 31) |
Definition at line 236 of file ginblock.h.
#define GIN_LEAF (1 << 1) |
Definition at line 41 of file ginblock.h.
Referenced by createPostingTree(), dataPlaceToPageLeafSplit(), gin_leafpage_items(), gin_page_opaque_info(), ginbuild(), ginbuildempty(), ginPlaceToPage(), and ginRedoCreatePTree().
#define GIN_LIST (1 << 4) |
Definition at line 44 of file ginblock.h.
Referenced by gin_page_opaque_info(), ginRedoInsertListPage(), and writeListPage().
#define GIN_LIST_FULLROW (1 << 5) /* makes sense only on GIN_LIST page */ |
Definition at line 45 of file ginblock.h.
Referenced by gin_page_opaque_info().
#define GIN_META (1 << 3) |
Definition at line 43 of file ginblock.h.
Referenced by gin_metapage_info(), gin_page_opaque_info(), and GinInitMetabuffer().
#define GIN_METAPAGE_BLKNO (0) |
Definition at line 51 of file ginblock.h.
Referenced by ginGetStats(), ginHeapTupleFastInsert(), ginInsertCleanup(), ginRedoDeleteListPages(), ginRedoUpdateMetapage(), ginUpdateStats(), pgstatginindex_internal(), and scanPendingInsert().
#define GIN_ROOT_BLKNO (1) |
Definition at line 52 of file ginblock.h.
Referenced by entryLocateEntry(), ginbulkdelete(), ginPrepareEntryScan(), and ginvacuumcleanup().
#define GIN_TREE_POSTING ((OffsetNumber)0xffff) |
Definition at line 231 of file ginblock.h.
#define GinCategoryOffset | ( | itup, | |
ginstate | |||
) |
Definition at line 218 of file ginblock.h.
Referenced by GinFormTuple().
#define GinDataLeafPageGetFreeSpace | ( | page | ) | PageGetExactFreeSpace(page) |
Definition at line 287 of file ginblock.h.
Referenced by dataBeginPlaceToPageLeaf().
#define GinDataLeafPageGetPostingList | ( | page | ) | (GinPostingList *) ((PageGetContents(page) + MAXALIGN(sizeof(ItemPointerData)))) |
Definition at line 279 of file ginblock.h.
Referenced by createPostingTree(), dataPlaceToPageLeafRecompress(), dataPlaceToPageLeafSplit(), disassembleLeaf(), gin_leafpage_items(), GinDataLeafPageGetItems(), GinDataLeafPageGetItemsToTbm(), ginRedoCreatePTree(), and ginRedoRecompress().
#define GinDataLeafPageGetPostingListSize | ( | page | ) | (((PageHeader) page)->pd_lower - MAXALIGN(SizeOfPageHeaderData) - MAXALIGN(sizeof(ItemPointerData))) |
Definition at line 281 of file ginblock.h.
Referenced by disassembleLeaf(), gin_leafpage_items(), GinDataLeafPageGetItems(), GinDataLeafPageGetItemsToTbm(), and ginRedoRecompress().
#define GinDataLeafPageIsEmpty | ( | page | ) | (GinPageIsCompressed(page) ? (GinDataLeafPageGetPostingListSize(page) == 0) : (GinPageGetOpaque(page)->maxoff < FirstOffsetNumber)) |
Definition at line 284 of file ginblock.h.
Referenced by ginScanToDelete(), and ginVacuumPostingTreeLeaves().
#define GinDataPageGetData | ( | page | ) | (PageGetContents(page) + MAXALIGN(sizeof(ItemPointerData))) |
Definition at line 296 of file ginblock.h.
Referenced by dataLeafPageGetUncompressed(), and ginRedoRecompress().
#define GinDataPageGetPostingItem | ( | page, | |
i | |||
) | ((PostingItem *) (GinDataPageGetData(page) + ((i)-1) * sizeof(PostingItem))) |
Definition at line 299 of file ginblock.h.
Referenced by dataExecPlaceToPageInternal(), dataFindChildPtr(), dataGetLeftMostPage(), dataLocateItem(), dataSplitPageInternal(), GinDataPageAddPostingItem(), ginDeletePage(), GinPageDeletePostingItem(), ginRedoInsertData(), ginScanToDelete(), and ginVacuumPostingTreeLeaves().
#define GinDataPageGetRightBound | ( | page | ) | ((ItemPointer) PageGetContents(page)) |
Definition at line 289 of file ginblock.h.
Referenced by dataBeginPlaceToPageLeaf(), dataIsMoveRight(), dataPlaceToPageLeafSplit(), dataPrepareDownlink(), dataSplitPageInternal(), entryLoadMoreItems(), and ginDataFillRoot().
#define GinDataPageMaxDataSize |
Definition at line 320 of file ginblock.h.
Referenced by createPostingTree(), dataBeginPlaceToPageLeaf(), dataPlaceToPageLeafRecompress(), ginVacuumPostingTreeLeaf(), and leafRepackItems().
#define GinDataPageSetDataSize | ( | page, | |
size | |||
) |
Definition at line 310 of file ginblock.h.
Referenced by createPostingTree(), dataPlaceToPageLeafRecompress(), dataPlaceToPageLeafSplit(), dataSplitPageInternal(), GinDataPageAddPostingItem(), GinPageDeletePostingItem(), ginRedoCreatePTree(), and ginRedoRecompress().
#define GinGetDownlink | ( | itup | ) | GinItemPointerGetBlockNumber(&(itup)->t_tid) |
Definition at line 258 of file ginblock.h.
Referenced by entryFindChildPtr(), entryGetLeftMostPage(), entryLocateEntry(), ginbulkdelete(), and ginVacuumEntryPage().
#define GinGetNPosting | ( | itup | ) | GinItemPointerGetOffsetNumber(&(itup)->t_tid) |
Definition at line 229 of file ginblock.h.
Referenced by collectMatchBitmap(), ginReadTuple(), ginVacuumEntryPage(), and startScanEntry().
#define GinGetNullCategory | ( | itup, | |
ginstate | |||
) | (*((GinNullCategory *) ((char*)(itup) + GinCategoryOffset(itup,ginstate)))) |
Definition at line 221 of file ginblock.h.
Referenced by gintuple_get_key().
#define GinGetPosting | ( | itup | ) | ((Pointer) ((char*)(itup) + GinGetPostingOffset(itup))) |
Definition at line 239 of file ginblock.h.
Referenced by GinFormTuple(), ginReadTuple(), and ginVacuumEntryPage().
#define GinGetPostingOffset | ( | itup | ) | (GinItemPointerGetBlockNumber(&(itup)->t_tid) & (~GIN_ITUP_COMPRESSED)) |
Definition at line 237 of file ginblock.h.
Referenced by GinFormInteriorTuple().
#define GinGetPostingTree | ( | itup | ) | GinItemPointerGetBlockNumber(&(itup)->t_tid) |
Definition at line 234 of file ginblock.h.
Referenced by collectMatchBitmap(), ginEntryInsert(), and startScanEntry().
#define GinIsPostingTree | ( | itup | ) | (GinGetNPosting(itup) == GIN_TREE_POSTING) |
Definition at line 232 of file ginblock.h.
Referenced by addItemPointersToLeafTuple(), collectMatchBitmap(), ginEntryInsert(), GinFormInteriorTuple(), ginVacuumEntryPage(), and startScanEntry().
#define GinItemPointerGetBlockNumber | ( | pointer | ) | (ItemPointerGetBlockNumberNoCheck(pointer)) |
Definition at line 144 of file ginblock.h.
Referenced by entryGetItem(), entryLoadMoreItems(), ginCompareItemPointers(), itemptr_to_uint64(), keyGetItem(), and scanGetItem().
#define GinItemPointerGetOffsetNumber | ( | pointer | ) | (ItemPointerGetOffsetNumberNoCheck(pointer)) |
Definition at line 147 of file ginblock.h.
Referenced by entryGetItem(), entryLoadMoreItems(), ginCompareItemPointers(), itemptr_to_uint64(), keyGetItem(), and scanGetItem().
#define GinItemPointerSetBlockNumber | ( | pointer, | |
blkno | |||
) | (ItemPointerSetBlockNumber((pointer), (blkno))) |
Definition at line 150 of file ginblock.h.
Referenced by uint64_to_itemptr().
#define GinItemPointerSetOffsetNumber | ( | pointer, | |
offnum | |||
) | (ItemPointerSetOffsetNumber((pointer), (offnum))) |
Definition at line 153 of file ginblock.h.
Referenced by uint64_to_itemptr().
#define GinItupIsCompressed | ( | itup | ) | ((GinItemPointerGetBlockNumber(&(itup)->t_tid) & GIN_ITUP_COMPRESSED) != 0) |
Definition at line 240 of file ginblock.h.
Referenced by ginReadTuple(), and ginVacuumEntryPage().
#define GinListPageSize ( BLCKSZ - SizeOfPageHeaderData - MAXALIGN(sizeof(GinPageOpaqueData)) ) |
Definition at line 328 of file ginblock.h.
Referenced by ginHeapTupleFastInsert(), and makeSublist().
#define GinMaxItemSize |
Definition at line 249 of file ginblock.h.
Referenced by addItemPointersToLeafTuple(), buildFreshLeafTuple(), GinFormTuple(), and ginVacuumEntryPage().
#define GinNextPostingListSegment | ( | cur | ) | ((GinPostingList *) (((char *) (cur)) + SizeOfGinPostingList((cur)))) |
Definition at line 344 of file ginblock.h.
Referenced by disassembleLeaf(), gin_leafpage_items(), GinDataLeafPageGetItems(), ginPostingListDecodeAllSegments(), and ginRedoRecompress().
#define GinNonLeafDataPageGetFreeSpace | ( | page | ) |
Definition at line 316 of file ginblock.h.
Referenced by dataBeginPlaceToPageInternal(), and dataSplitPageInternal().
#define GinPageGetDeleteXid | ( | page | ) | ( ((PageHeader) (page))->pd_prune_xid ) |
Definition at line 135 of file ginblock.h.
Referenced by ginDeletePage().
#define GinPageGetMeta | ( | p | ) | ((GinMetaPageData *) PageGetContents(p)) |
Definition at line 104 of file ginblock.h.
Referenced by gin_metapage_info(), ginGetStats(), ginHeapTupleFastInsert(), GinInitMetabuffer(), ginInsertCleanup(), ginRedoDeleteListPages(), ginRedoUpdateMetapage(), ginUpdateStats(), pgstatginindex_internal(), scanPendingInsert(), and shiftList().
#define GinPageGetOpaque | ( | page | ) | ( (GinPageOpaque) PageGetSpecialPointer(page) ) |
Definition at line 110 of file ginblock.h.
Referenced by createPostingTree(), dataFindChildPtr(), dataGetLeftMostPage(), dataLeafPageGetUncompressed(), dataLocateItem(), dataPlaceToPageLeafRecompress(), dataSplitPageInternal(), entryLoadMoreItems(), entrySplitPage(), gin_mask(), ginbulkdelete(), GinDataPageAddPostingItem(), ginDeletePage(), ginFindLeafPage(), ginFindParents(), ginFinishSplit(), ginHeapTupleFastInsert(), GinInitPage(), ginInsertCleanup(), GinPageDeletePostingItem(), ginPlaceToPage(), ginRedoClearIncompleteSplit(), ginRedoDeletePage(), ginRedoInsertListPage(), ginRedoRecompress(), ginRedoUpdateMetapage(), ginScanToDelete(), ginStepRight(), ginVacuumPostingTreeLeaves(), scanGetCandidate(), scanPostingTree(), shiftList(), and writeListPage().
#define GinPageHasFullRow | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_LIST_FULLROW) != 0 ) |
Definition at line 119 of file ginblock.h.
Referenced by collectMatchesForHeapRow(), ginInsertCleanup(), and scanGetCandidate().
#define GinPageIsCompressed | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_COMPRESSED) != 0 ) |
Definition at line 121 of file ginblock.h.
Referenced by dataBeginPlaceToPageLeaf(), dataLeafPageGetUncompressed(), dataPlaceToPageLeafRecompress(), disassembleLeaf(), GinDataLeafPageGetItems(), GinDataLeafPageGetItemsToTbm(), and ginRedoRecompress().
#define GinPageIsData | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_DATA) != 0 ) |
Definition at line 115 of file ginblock.h.
Referenced by dataBeginPlaceToPage(), dataFindChildPtr(), dataGetLeftMostPage(), dataLocateItem(), entryFindChildPtr(), entryGetLeftMostPage(), entryIsEnoughSpace(), entryLocateEntry(), entryLocateLeafEntry(), entryPreparePage(), ginbulkdelete(), ginPlaceToPage(), ginRedoDeletePage(), ginRedoInsert(), ginRedoVacuumDataLeafPage(), ginScanToDelete(), ginStepRight(), ginvacuumcleanup(), ginVacuumPostingTreeLeaves(), and xlogVacuumPage().
#define GinPageIsDeleted | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_DELETED) != 0 ) |
Definition at line 124 of file ginblock.h.
Referenced by dataIsMoveRight(), ginInsertCleanup(), and shiftList().
#define GinPageIsIncompleteSplit | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_INCOMPLETE_SPLIT) != 0 ) |
Definition at line 127 of file ginblock.h.
Referenced by ginFindLeafPage(), ginFindParents(), ginFinishSplit(), and ginInsertValue().
#define GinPageIsLeaf | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_LEAF) != 0 ) |
Definition at line 112 of file ginblock.h.
Referenced by collectMatchBitmap(), dataBeginPlaceToPage(), dataExecPlaceToPage(), dataFindChildPtr(), dataGetLeftMostPage(), dataLocateItem(), entryFindChildPtr(), entryGetLeftMostPage(), entryLocateEntry(), entryLocateLeafEntry(), entryPreparePage(), ginbulkdelete(), GinDataPageAddPostingItem(), ginFindLeafPage(), ginFindParents(), GinFormInteriorTuple(), GinPageDeletePostingItem(), ginPlaceToPage(), ginRedoDeletePage(), ginRedoInsertData(), ginRedoInsertEntry(), ginRedoVacuumDataLeafPage(), ginScanToDelete(), ginStepRight(), ginTraverseLock(), ginvacuumcleanup(), ginVacuumPostingTreeLeaves(), and xlogVacuumPage().
#define GinPageIsList | ( | page | ) | ( (GinPageGetOpaque(page)->flags & GIN_LIST) != 0 ) |
Definition at line 117 of file ginblock.h.
Referenced by ginvacuumcleanup().
#define GinPageIsRecyclable | ( | page | ) |
Definition at line 137 of file ginblock.h.
Referenced by GinNewBuffer(), and ginvacuumcleanup().
#define GinPageRightMost | ( | page | ) | ( GinPageGetOpaque(page)->rightlink == InvalidBlockNumber) |
Definition at line 129 of file ginblock.h.
Referenced by dataBeginPlaceToPageLeaf(), dataIsMoveRight(), dataSplitPageInternal(), entryIsMoveRight(), entryLoadMoreItems(), entryLocateEntry(), ginFinishSplit(), ginScanToDelete(), moveRightIfItNeeded(), and scanPostingTree().
#define GinPageSetCompressed | ( | page | ) | ( GinPageGetOpaque(page)->flags |= GIN_COMPRESSED ) |
Definition at line 122 of file ginblock.h.
Referenced by dataPlaceToPageLeafRecompress(), and ginRedoRecompress().
#define GinPageSetData | ( | page | ) | ( GinPageGetOpaque(page)->flags |= GIN_DATA ) |
Definition at line 116 of file ginblock.h.
#define GinPageSetDeleted | ( | page | ) | ( GinPageGetOpaque(page)->flags |= GIN_DELETED) |
Definition at line 125 of file ginblock.h.
Referenced by ginDeletePage(), and ginRedoDeletePage().
#define GinPageSetDeleteXid | ( | page, | |
xid | |||
) | ( ((PageHeader) (page))->pd_prune_xid = xid) |
Definition at line 136 of file ginblock.h.
Referenced by ginDeletePage(), and ginRedoDeletePage().
#define GinPageSetFullRow | ( | page | ) | ( GinPageGetOpaque(page)->flags |= GIN_LIST_FULLROW ) |
Definition at line 120 of file ginblock.h.
Referenced by ginRedoInsertListPage(), and writeListPage().
#define GinPageSetLeaf | ( | page | ) | ( GinPageGetOpaque(page)->flags |= GIN_LEAF ) |
Definition at line 113 of file ginblock.h.
#define GinPageSetList | ( | page | ) | ( GinPageGetOpaque(page)->flags |= GIN_LIST ) |
Definition at line 118 of file ginblock.h.
#define GinPageSetNonDeleted | ( | page | ) | ( GinPageGetOpaque(page)->flags &= ~GIN_DELETED) |
Definition at line 126 of file ginblock.h.
#define GinPageSetNonLeaf | ( | page | ) | ( GinPageGetOpaque(page)->flags &= ~GIN_LEAF ) |
Definition at line 114 of file ginblock.h.
#define GinSetDownlink | ( | itup, | |
blkno | |||
) | ItemPointerSet(&(itup)->t_tid, blkno, InvalidOffsetNumber) |
Definition at line 259 of file ginblock.h.
Referenced by entryPreparePage(), GinFormInteriorTuple(), and ginRedoInsertEntry().
#define GinSetNPosting | ( | itup, | |
n | |||
) | ItemPointerSetOffsetNumber(&(itup)->t_tid,n) |
Definition at line 230 of file ginblock.h.
Referenced by GinFormTuple().
#define GinSetNullCategory | ( | itup, | |
ginstate, | |||
c | |||
) | (*((GinNullCategory *) ((char*)(itup) + GinCategoryOffset(itup,ginstate))) = (c)) |
Definition at line 223 of file ginblock.h.
Referenced by GinFormTuple().
#define GinSetPostingOffset | ( | itup, | |
n | |||
) | ItemPointerSetBlockNumber(&(itup)->t_tid,(n)|GIN_ITUP_COMPRESSED) |
Definition at line 238 of file ginblock.h.
Referenced by GinFormTuple().
#define GinSetPostingTree | ( | itup, | |
blkno | |||
) | ( GinSetNPosting((itup),GIN_TREE_POSTING), ItemPointerSetBlockNumber(&(itup)->t_tid, blkno) ) |
Definition at line 233 of file ginblock.h.
Referenced by addItemPointersToLeafTuple(), and buildFreshLeafTuple().
#define ItemPointerIsLossyPage | ( | p | ) |
Definition at line 176 of file ginblock.h.
Referenced by entryGetItem(), entryLoadMoreItems(), gingetbitmap(), keyGetItem(), and scanGetItem().
#define ItemPointerIsMin | ( | p | ) |
Definition at line 169 of file ginblock.h.
Referenced by scanGetItem().
#define ItemPointerSetLossyPage | ( | p, | |
b | |||
) | ItemPointerSet((p), (b), (OffsetNumber)0xffff) |
Definition at line 174 of file ginblock.h.
Referenced by entryGetItem(), and keyGetItem().
#define ItemPointerSetMax | ( | p | ) | ItemPointerSet((p), InvalidBlockNumber, (OffsetNumber)0xffff) |
Definition at line 172 of file ginblock.h.
Referenced by keyGetItem().
#define ItemPointerSetMin | ( | p | ) | ItemPointerSet((p), (BlockNumber)0, (OffsetNumber)0) |
Definition at line 167 of file ginblock.h.
Referenced by dataBeginPlaceToPageLeaf(), ginFillScanEntry(), ginFillScanKey(), gingetbitmap(), scanGetItem(), startScanEntry(), and startScanKey().
#define PostingItemGetBlockNumber | ( | pointer | ) | BlockIdGetBlockNumber(&(pointer)->child_blkno) |
Definition at line 190 of file ginblock.h.
Referenced by dataFindChildPtr(), dataGetLeftMostPage(), dataLocateItem(), gin_desc(), GinDataPageAddPostingItem(), ginDeletePage(), ginScanToDelete(), and ginVacuumPostingTreeLeaves().
#define PostingItemSetBlockNumber | ( | pointer, | |
blockNumber | |||
) | BlockIdSet(&((pointer)->child_blkno), (blockNumber)) |
Definition at line 193 of file ginblock.h.
Referenced by dataExecPlaceToPageInternal(), dataPrepareDownlink(), dataSplitPageInternal(), ginDataFillRoot(), and ginRedoInsertData().
#define SizeOfGinPostingList | ( | plist | ) | (offsetof(GinPostingList, bytes) + SHORTALIGN((plist)->nbytes) ) |
Definition at line 343 of file ginblock.h.
Referenced by addItemPointersToLeafTuple(), addItemsToLeaf(), buildFreshLeafTuple(), computeLeafRecompressWALData(), createPostingTree(), dataBeginPlaceToPageLeaf(), dataPlaceToPageLeafRecompress(), dataPlaceToPageLeafSplit(), desc_recompress_leaf(), ginCompressPostingList(), ginPostingListDecode(), ginRedoRecompress(), ginVacuumEntryPage(), ginVacuumPostingTreeLeaf(), leafRepackItems(), and test_itemptr_pair().
typedef struct GinMetaPageData GinMetaPageData |
typedef signed char GinNullCategory |
Definition at line 207 of file ginblock.h.
typedef GinPageOpaqueData* GinPageOpaque |
Definition at line 38 of file ginblock.h.
typedef struct GinPageOpaqueData GinPageOpaqueData |