aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gin/ginxlog.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-11-20 16:57:41 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-11-20 16:57:41 +0200
commit501012631e7d2e1c22f60b11ff8cb62ae021625e (patch)
treea697f2617f6a5f71cf7ccc38a1c1b8b5876009a8 /src/backend/access/gin/ginxlog.c
parent04965ad40e10677ceec94d871a183e73023b238f (diff)
downloadpostgresql-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.c15
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);