aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gin/ginget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/gin/ginget.c')
-rw-r--r--src/backend/access/gin/ginget.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c
index acbdc5fe7f2..2a3991f1d12 100644
--- a/src/backend/access/gin/ginget.c
+++ b/src/backend/access/gin/ginget.c
@@ -124,18 +124,16 @@ static void
scanPostingTree(Relation index, GinScanEntry scanEntry,
BlockNumber rootPostingTree)
{
- GinPostingTreeScan *gdi;
+ GinBtreeStack *stack;
Buffer buffer;
Page page;
/* Descend to the leftmost leaf page */
- gdi = ginPrepareScanPostingTree(index, rootPostingTree, TRUE);
-
- buffer = ginScanBeginPostingTree(gdi);
+ stack = ginScanBeginPostingTree(index, rootPostingTree);
+ buffer = stack->buffer;
IncrBufferRefCount(buffer); /* prevent unpin in freeGinBtreeStack */
- freeGinBtreeStack(gdi->stack);
- pfree(gdi);
+ freeGinBtreeStack(stack);
/*
* Loop iterates through all leaf pages of posting tree
@@ -376,8 +374,7 @@ restartScanEntry:
ginPrepareEntryScan(&btreeEntry, entry->attnum,
entry->queryKey, entry->queryCategory,
ginstate);
- btreeEntry.searchMode = TRUE;
- stackEntry = ginFindLeafPage(&btreeEntry, NULL);
+ stackEntry = ginFindLeafPage(&btreeEntry, GIN_ROOT_BLKNO, true);
page = BufferGetPage(stackEntry->buffer);
needUnlock = TRUE;
@@ -427,7 +424,7 @@ restartScanEntry:
if (GinIsPostingTree(itup))
{
BlockNumber rootPostingTree = GinGetPostingTree(itup);
- GinPostingTreeScan *gdi;
+ GinBtreeStack *stack;
Page page;
/*
@@ -439,9 +436,9 @@ restartScanEntry:
*/
LockBuffer(stackEntry->buffer, GIN_UNLOCK);
needUnlock = FALSE;
- gdi = ginPrepareScanPostingTree(ginstate->index, rootPostingTree, TRUE);
- entry->buffer = ginScanBeginPostingTree(gdi);
+ stack = ginScanBeginPostingTree(ginstate->index, rootPostingTree);
+ entry->buffer = stack->buffer;
/*
* We keep buffer pinned because we need to prevent deletion of
@@ -451,7 +448,7 @@ restartScanEntry:
IncrBufferRefCount(entry->buffer);
page = BufferGetPage(entry->buffer);
- entry->predictNumberResult = gdi->stack->predictNumber * GinPageGetOpaque(page)->maxoff;
+ entry->predictNumberResult = stack->predictNumber * GinPageGetOpaque(page)->maxoff;
/*
* Keep page content in memory to prevent durable page locking
@@ -463,8 +460,7 @@ restartScanEntry:
GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData));
LockBuffer(entry->buffer, GIN_UNLOCK);
- freeGinBtreeStack(gdi->stack);
- pfree(gdi);
+ freeGinBtreeStack(stack);
entry->isFinished = FALSE;
}
else if (GinGetNPosting(itup) > 0)