From 5b2f2af3d9d57626b9052a05337e32ad1399093d Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Tue, 2 Mar 2021 14:06:07 -0800 Subject: [PATCH] nbtree page deletion: Add leaftopparent assertion. Add documenting assertion. This makes it easier to follow how we maintain the top parent link in target subtree's half-dead/leaf level page. --- src/backend/access/nbtree/nbtpage.c | 3 +++ src/backend/access/nbtree/nbtxlog.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 84ea7eac58..c09e492a5f 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -2458,6 +2458,9 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno, leaftopparent = InvalidBlockNumber; } + /* No leaftopparent for level 0 (leaf page) or level 1 target */ + Assert(!BlockNumberIsValid(leaftopparent) || targetlevel > 1); + /* * And next write-lock the (current) right sibling. */ diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 8b7c143db4..990f5d0f52 100644 --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -818,7 +818,7 @@ btree_xlog_unlink_page(uint8 info, XLogReaderState *record) safexid = xlrec->safexid; /* No leaftopparent for level 0 (leaf page) or level 1 target */ - Assert(xlrec->leaftopparent == InvalidBlockNumber || level > 1); + Assert(!BlockNumberIsValid(xlrec->leaftopparent) || level > 1); /* * In normal operation, we would lock all the pages this WAL record