index 78213dcb4ef24b581c67b82910061dc36b2be509..ca49d795a012303b3a49116e293a96411042e795 100644 (file)
@@ -187,13 +187,6 @@ ginStepRight(Buffer buffer, Relation index, int lockmode)
if (isLeaf != GinPageIsLeaf(page) || isData != GinPageIsData(page))
elog(ERROR, "right sibling of GIN page is of different type");
- /*
- * Given the proper lock sequence above, we should never land on a deleted
- * page.
- */
- if (GinPageIsDeleted(page))
- elog(ERROR, "right sibling of GIN page was deleted");
-
return nextbuffer;
}
index 54d6890912566131f21af883aad06459a82d3e8a..23751d538018557025cf95262832cca4621ae991 100644 (file)
@@ -238,6 +238,9 @@ dataIsMoveRight(GinBtree btree, Page page)
if (GinPageRightMost(page))
return false;
+ if (GinPageIsDeleted(page))
+ return true;
+
return (ginCompareItemPointers(&btree->itemptr, iptr) > 0) ? true : false;
}
index f36f1a824231d4ebe514af5b5374cbc8336f19c3..120e75a71f25f7e42b78cc9e1e0a07fce6da7c7f 100644 (file)
@@ -186,7 +186,7 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
* we shouldn't change rightlink field to save workability of running
* search scan
*/
- GinPageGetOpaque(page)->flags = GIN_DELETED;
+ GinPageSetDeleted(page);
MarkBufferDirty(pBuffer);
MarkBufferDirty(lBuffer);
index f3c82ac836cdbcaf6d53376041c8783f4fe15979..55e0c442cbb5af4d31610b91c4e710948bde92ea 100644 (file)
@@ -530,7 +530,7 @@ ginRedoDeletePage(XLogReaderState *record)
{
page = BufferGetPage(dbuffer);
Assert(GinPageIsData(page));
- GinPageGetOpaque(page)->flags = GIN_DELETED;
+ GinPageSetDeleted(page);
/*
* deleteXid field of ginxlogDeletePage was added during backpatching.