From 60f3cc9553c7ea7a1cc61bcd1efe51537f31e531 Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Tue, 18 Dec 2018 16:59:50 -0800 Subject: [PATCH] Correct obsolete nbtree recovery comments. Commit 40dae7ec537, which made the handling of interrupted nbtree page splits more robust, removed an nbtree-specific end-of-recovery cleanup step. This meant that it was no longer possible to complete an interrupted page split during recovery. However, a reference to recovery as a reason for using a NULL stack while inserting into a parent page was missed. Remove the reference. Remove a similar obsolete reference to recovery that was introduced much more recently, as part of the btree fastpath optimization enhancement that made it into Postgres 11 (commit 2b272734, and follow-up commits). Backpatch: 11-, where the fastpath optimization was introduced. --- src/backend/access/nbtree/nbtinsert.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index 582e5b0652..80437cc831 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -876,10 +876,10 @@ _bt_insertonpg(Relation rel, * all the required conditions, including the fact that this page has * enough freespace. Note that this routine can in theory deal with * the situation where a NULL stack pointer is passed (that's what - * would happen if the fastpath is taken), like it does during crash - * recovery. But that path is much slower, defeating the very purpose - * of the optimization. The following assertion should protect us - * from any future code changes that invalidate those assumptions. + * would happen if the fastpath is taken). But that path is much + * slower, defeating the very purpose of the optimization. The + * following assertion should protect us from any future code changes + * that invalidate those assumptions. * * Note that whenever we fail to take the fastpath, we clear the * cached block. Checking for a valid cached block at this point is @@ -1807,8 +1807,8 @@ _bt_checksplitloc(FindSplitData *state, * and it'd be possible for some other process to try to split or delete * one of these pages, and get confused because it cannot find the downlink.) * - * stack - stack showing how we got here. May be NULL in cases that don't - * have to be efficient (concurrent ROOT split, WAL recovery) + * stack - stack showing how we got here. Will be NULL when splitting true + * root, or during concurrent root split, where we can be inefficient * is_root - we split the true root * is_only - we split a page alone on its level (might have been fast root) */