Re: Bug in amcheck? - Mailing list pgsql-hackers

From Peter Geoghegan
Subject Re: Bug in amcheck?
Date
Msg-id CAH2-Wz=HSUvb-onO0MAEezdH5-+oEMyBeHaBHEnxjfC8MY_HCg@mail.gmail.com
Whole thread Raw
In response to Re: Bug in amcheck?  (Heikki Linnakangas <hlinnaka@iki.fi>)
Responses Re: Bug in amcheck?
List pgsql-hackers
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



pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: All-visible pages with valid prune xid are confusing
Next
From: Melanie Plageman
Date:
Subject: Re: All-visible pages with valid prune xid are confusing