From c2b175b94851e59765cc87243d8faf923e3d820b Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 3 Oct 2013 11:47:17 +0300 Subject: 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. --- src/backend/access/gin/ginget.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/backend/access/gin/ginget.c') diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c index cb17d383bc8..cb779aa7f74 100644 --- a/src/backend/access/gin/ginget.c +++ b/src/backend/access/gin/ginget.c @@ -83,7 +83,7 @@ findItemInPostingPage(Page page, ItemPointer item, OffsetNumber *off) */ for (*off = FirstOffsetNumber; *off <= maxoff; (*off)++) { - res = ginCompareItemPointers(item, (ItemPointer) GinDataPageGetItem(page, *off)); + res = ginCompareItemPointers(item, GinDataPageGetItemPointer(page, *off)); if (res <= 0) return true; @@ -154,7 +154,7 @@ scanPostingTree(Relation index, GinScanEntry scanEntry, GinPageGetOpaque(page)->maxoff >= FirstOffsetNumber) { tbm_add_tuples(scanEntry->matchBitmap, - (ItemPointer) GinDataPageGetItem(page, FirstOffsetNumber), + GinDataPageGetItemPointer(page, FirstOffsetNumber), GinPageGetOpaque(page)->maxoff, false); scanEntry->predictNumberResult += GinPageGetOpaque(page)->maxoff; } @@ -467,7 +467,8 @@ restartScanEntry: */ entry->list = (ItemPointerData *) palloc(BLCKSZ); entry->nlist = GinPageGetOpaque(page)->maxoff; - memcpy(entry->list, GinDataPageGetItem(page, FirstOffsetNumber), + memcpy(entry->list, + GinDataPageGetItemPointer(page, FirstOffsetNumber), GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData)); LockBuffer(entry->buffer, GIN_UNLOCK); @@ -587,8 +588,9 @@ entryGetNextItem(GinState *ginstate, GinScanEntry entry) * Found position equal to or greater than stored */ entry->nlist = GinPageGetOpaque(page)->maxoff; - memcpy(entry->list, GinDataPageGetItem(page, FirstOffsetNumber), - GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData)); + memcpy(entry->list, + GinDataPageGetItemPointer(page, FirstOffsetNumber), + GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData)); LockBuffer(entry->buffer, GIN_UNLOCK); -- cgit v1.2.3