On Mon, Dec 1, 2025 at 4:20 PM Heikki Linnakangas <hlinnaka@iki.fi> wrote:
> Ok, here's a proper patch with tests. The patch itself is the above
> one-liner. It's in patch 0004.
>
> While testing this, I bumped into another similar amcheck bug: if the
> root page split is interrupted, verify_btree() complains:
>
> ERROR: block 3 is not true root in index "nbtree_incomplete_splits_i_idx"
>
> Attached patch 0002 contains a fix and a test for that. The fix for that
> is also one-liner.
Good catch.
> Summary of the patches:
>
> Patch 0001 adds an injection point test for incomplete splits. We
> already had such a test for GIN, which handles incomplete splits the
> same way as B-tree. I copy-pasted and adapted the GIN test for B-tree.
> This was an easy way to increase our test coverage.
>
> Patch 0002 fixes the incomplete-root-split bug in amcheck. It modifies
> the test added in patch 0001 to cover the bug fix.
>
> Patch 0003 adds a test for half-dead pages, similar to what 0001 did for
> incomplete splits.
>
> Patch 0004 fixes the bogus half-deaf-page error in amcheck, i.e. the
> issue that started this thread. It modifies the test introduced in patch
> 0003 to add amcheck calls, to cover the bug fix.
All seem reasonable.
These tests will increase nbtree code coverage quite a bit, which is a
nice bonus.
--
Peter Geoghegan