mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Refactor the internal GIN B-tree interface for forming a downlink.
This creates a new gin-btree callback function for creating a downlink for a page. Previously, ginxlog.c duplicated the logic used during normal operation.
This commit is contained in:
@ -799,31 +799,20 @@ ginContinueSplit(ginIncompleteSplit *split)
|
||||
ginPrepareEntryScan(&btree,
|
||||
InvalidOffsetNumber, (Datum) 0, GIN_CAT_NULL_KEY,
|
||||
&ginstate);
|
||||
btree.entry = ginPageGetLinkItup(buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
Page page = BufferGetPage(buffer);
|
||||
|
||||
ginPrepareDataScan(&btree, reln);
|
||||
|
||||
PostingItemSetBlockNumber(&(btree.pitem), split->leftBlkno);
|
||||
if (GinPageIsLeaf(page))
|
||||
btree.pitem.key = *GinDataPageGetItemPointer(page,
|
||||
GinPageGetOpaque(page)->maxoff);
|
||||
else
|
||||
btree.pitem.key = GinDataPageGetPostingItem(page,
|
||||
GinPageGetOpaque(page)->maxoff)->key;
|
||||
}
|
||||
|
||||
btree.rightblkno = split->rightBlkno;
|
||||
|
||||
stack.blkno = split->leftBlkno;
|
||||
stack.buffer = buffer;
|
||||
stack.off = InvalidOffsetNumber;
|
||||
stack.parent = NULL;
|
||||
|
||||
ginFindParents(&btree, &stack, split->rootBlkno);
|
||||
|
||||
btree.prepareDownlink(&btree, buffer);
|
||||
ginInsertValue(&btree, stack.parent, NULL);
|
||||
|
||||
FreeFakeRelcacheEntry(reln);
|
||||
|
Reference in New Issue
Block a user