diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-11-20 16:57:41 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-11-20 16:57:41 +0200 |
commit | 501012631e7d2e1c22f60b11ff8cb62ae021625e (patch) | |
tree | a697f2617f6a5f71cf7ccc38a1c1b8b5876009a8 /src/backend/access/gin/ginxlog.c | |
parent | 04965ad40e10677ceec94d871a183e73023b238f (diff) | |
download | postgresql-501012631e7d2e1c22f60b11ff8cb62ae021625e.tar.gz postgresql-501012631e7d2e1c22f60b11ff8cb62ae021625e.zip |
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.
Diffstat (limited to 'src/backend/access/gin/ginxlog.c')
-rw-r--r-- | src/backend/access/gin/ginxlog.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/backend/access/gin/ginxlog.c b/src/backend/access/gin/ginxlog.c index 4d0ccb876f2..ddac3430613 100644 --- a/src/backend/access/gin/ginxlog.c +++ b/src/backend/access/gin/ginxlog.c @@ -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); |