From 8e167e618893b59ee45317c43055002ba71f955b Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Fri, 7 Mar 2025 18:35:13 -0500 Subject: [PATCH] nbtree: refine _bt_readnextpage contract comments. Another minor follow-up commit for commit 1bd4bc85, which changed the _bt_readnextpage contract. --- src/backend/access/nbtree/nbtsearch.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c index 472ce06f190..6b2f464aa04 100644 --- a/src/backend/access/nbtree/nbtsearch.c +++ b/src/backend/access/nbtree/nbtsearch.c @@ -2183,7 +2183,9 @@ _bt_readfirstpage(IndexScanDesc scan, OffsetNumber offnum, ScanDirection dir) * scan. A seized=false caller's blkno can never be assumed to be the page * that must be read next during a parallel scan, though. We must figure that * part out for ourselves by seizing the scan (the correct page to read might - * already be beyond the seized=false caller's blkno during a parallel scan). + * already be beyond the seized=false caller's blkno during a parallel scan, + * unless blkno/so->currPos.nextPage/so->currPos.prevPage is already P_NONE, + * or unless so->currPos.moreRight/so->currPos.moreLeft is already unset). * * On success exit, so->currPos is updated to contain data from the next * interesting page, and we return true. We hold a pin on the buffer on @@ -2204,6 +2206,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, BTScanOpaque so = (BTScanOpaque) scan->opaque; Assert(so->currPos.currPage == lastcurrblkno || seized); + Assert(!(blkno == P_NONE && seized)); Assert(!BTScanPosIsPinned(so->currPos)); /*