From fde7172d932bc0c6e62be50293876916efada016 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 7 Nov 2013 19:36:52 +0200 Subject: [PATCH] Fix setting of right bound at GIN page split. Broken by my refactoring. --- src/backend/access/gin/gindatapage.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c index d67e50555c..049db38a2b 100644 --- a/src/backend/access/gin/gindatapage.c +++ b/src/backend/access/gin/gindatapage.c @@ -548,7 +548,12 @@ dataSplitPage(GinBtree btree, Buffer lbuf, Buffer rbuf, OffsetNumber off, XLogRe /* set up right bound for left page */ bound = GinDataPageGetRightBound(lpage); - *bound = btree->pitem.key; + if (GinPageIsLeaf(lpage)) + *bound = *GinDataPageGetItemPointer(lpage, + GinPageGetOpaque(lpage)->maxoff); + else + *bound = GinDataPageGetPostingItem(lpage, + GinPageGetOpaque(lpage)->maxoff)->key; /* set up right bound for right page */ bound = GinDataPageGetRightBound(rpage); @@ -577,12 +582,7 @@ dataSplitPage(GinBtree btree, Buffer lbuf, Buffer rbuf, OffsetNumber off, XLogRe /* Prepare a downlink tuple for insertion to the parent */ PostingItemSetBlockNumber(&(btree->pitem), BufferGetBlockNumber(lbuf)); - if (GinPageIsLeaf(lpage)) - btree->pitem.key = *GinDataPageGetItemPointer(lpage, - GinPageGetOpaque(lpage)->maxoff); - else - btree->pitem.key = GinDataPageGetPostingItem(lpage, - GinPageGetOpaque(lpage)->maxoff)->key; + btree->pitem.key = *GinDataPageGetRightBound(lpage); btree->rightblkno = BufferGetBlockNumber(rbuf); return lpage;