From 84b0fb6e1ce58c7b917fbcc32e73cadcd265d535 Mon Sep 17 00:00:00 2001 From: reshke Date: Thu, 15 Jan 2026 06:34:42 +0000 Subject: [PATCH v1] Fix gistkillitems for GiST ROOT page. --- src/backend/access/gist/gist.c | 1 + src/backend/access/gist/gistget.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c index 9c219cadf07..2f341df9058 100644 --- a/src/backend/access/gist/gist.c +++ b/src/backend/access/gist/gist.c @@ -1681,6 +1681,7 @@ gistprunepage(Relation rel, Page page, Buffer buffer, Relation heapRel) maxoff; Assert(GistPageIsLeaf(page)); + Assert(BufferIsLockedByMeInMode(buffer, BUFFER_LOCK_EXCLUSIVE)); /* * Scan over all items to see which ones need to be deleted according to diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c index 11b214eb99b..7dc34680e2d 100644 --- a/src/backend/access/gist/gistget.c +++ b/src/backend/access/gist/gistget.c @@ -407,6 +407,9 @@ gistScanPage(IndexScanDesc scan, GISTSearchItem *pageItem, */ so->curPageLSN = BufferGetLSNAtomic(buffer); + /* save current item BlockNumber for gistkillitems() call */ + so->curBlkno = pageItem->blkno; + /* * check all tuples on page */ @@ -722,9 +725,6 @@ gistgettuple(IndexScanDesc scan, ScanDirection dir) CHECK_FOR_INTERRUPTS(); - /* save current item BlockNumber for next gistkillitems() call */ - so->curBlkno = item->blkno; - /* * While scanning a leaf page, ItemPointers of matching heap * tuples are stored in so->pageData. If there are any on -- 2.43.0