mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Minor GIN code refactoring.
It makes for cleaner code to have separate Get/Add functions for PostingItems and ItemPointers. A few callsites that have to deal with both types need to be duplicated because of this, but all the callers have to know which one they're dealing with anyway. Overall, this reduces the amount of casting required. Extracted from Alexander Korotkov's larger patch to change the data page format.
This commit is contained in:
@@ -232,10 +232,14 @@ typedef signed char GinNullCategory;
|
||||
#define GinDataPageGetRightBound(page) ((ItemPointer) PageGetContents(page))
|
||||
#define GinDataPageGetData(page) \
|
||||
(PageGetContents(page) + MAXALIGN(sizeof(ItemPointerData)))
|
||||
/* non-leaf pages contain PostingItems */
|
||||
#define GinDataPageGetPostingItem(page, i) \
|
||||
((PostingItem *) (GinDataPageGetData(page) + ((i)-1) * sizeof(PostingItem)))
|
||||
/* leaf pages contain ItemPointers */
|
||||
#define GinDataPageGetItemPointer(page, i) \
|
||||
((ItemPointer) (GinDataPageGetData(page) + ((i)-1) * sizeof(ItemPointerData)))
|
||||
#define GinSizeOfDataPageItem(page) \
|
||||
(GinPageIsLeaf(page) ? sizeof(ItemPointerData) : sizeof(PostingItem))
|
||||
#define GinDataPageGetItem(page,i) \
|
||||
(GinDataPageGetData(page) + ((i)-1) * GinSizeOfDataPageItem(page))
|
||||
|
||||
#define GinDataPageGetFreeSpace(page) \
|
||||
(BLCKSZ - MAXALIGN(SizeOfPageHeaderData) \
|
||||
@@ -534,7 +538,8 @@ extern uint32 ginMergeItemPointers(ItemPointerData *dst,
|
||||
ItemPointerData *a, uint32 na,
|
||||
ItemPointerData *b, uint32 nb);
|
||||
|
||||
extern void GinDataPageAddItem(Page page, void *data, OffsetNumber offset);
|
||||
extern void GinDataPageAddItemPointer(Page page, ItemPointer data, OffsetNumber offset);
|
||||
extern void GinDataPageAddPostingItem(Page page, PostingItem *data, OffsetNumber offset);
|
||||
extern void GinPageDeletePostingItem(Page page, OffsetNumber offset);
|
||||
|
||||
typedef struct
|
||||
|
||||
Reference in New Issue
Block a user