Re: VACUUM can finish an interrupted nbtree page split -- is that okay?
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2019-05-07T16:59:56Z
Lists: pgsql-hackers
On Tue, May 7, 2019 at 12:27 AM Heikki Linnakangas <hlinnaka@iki.fi> wrote: > I don't understand that reasoning. Yes, _bt_pagedel() will complain if > it finds a half-dead internal page. But how does that mean that > _bt_lock_branch_parent() can't encounter one? I suppose that in theory it could, but only if you allow that any possible state could be found -- it doesn't seem any more likely than any other random illegal state. Even when it happens, we'll get a "failed to re-find parent key" error message when we go a bit further. Isn't that a logical outcome? Actually, maybe we won't get that error, because we're talking about a corrupt index, and all bets are off -- no reason to think that the half-dead internal page would be consistent with other pages in any way. But even then, you'll go on to report it in the usual way, since VACUUM scans nbtree indexes in physical order. -- Peter Geoghegan
Commits
-
Remove extra nbtree half-dead internal page check.
- 3f58cc6dd8fc 12.0 landed
-
Note case where nbtree VACUUM finishes splits.
- 35bc0ec7c800 12.0 landed
-
Fix error when trying to delete page with half-dead left sibling.
- 8da31837803e 9.4.0 cited
-
Fix race condition in B-tree page deletion.
- efada2b8e920 9.4.0 cited