Re: bt_index_parent_check and concurrently build indexes

Donghang Lin <donghanglin@gmail.com>

From: Donghang Lin <donghanglin@gmail.com>
To: Álvaro Herrera <alvherre@kurilemu.de>
Cc: Mihail Nikalayeu <mihailnikalayeu@gmail.com>, Peter Geoghegan <pg@bowt.ie>, Michael Paquier <michael@paquier.xyz>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, Andrey Borodin <amborodin86@gmail.com>, Matthias van de Meent <boekewurm+postgres@gmail.com>
Date: 2025-12-06T17:29:00Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. amcheck: Fix snapshot usage in bt_index_parent_check

  2. Teach contrib/amcheck to check the unique constraint violation

Hi Álvaro

You're correct that the bug is older.  I'm not sure about backporting
> the fix to 16 and earlier though, because it depends on BtreeCheckState
> having the snapshot member which was only added in commit 5ae2087202af.
> It's not a difficult patch -- attached.
>

The issue itself in fact doesn't depend on BtreeCheckState's
snapshot member.
So the fix for 14-16 can make snapshot a local variable in
the bt_check_every_level
function to make the scope small. Do you think it's worth changing it to a
local variable?

I don't think the issue itself is related to 5ae2087202af but actually
7f563c09f890 where
the heapallindexed flag is introduced for bt_index_check. The committed test
also doesn't check the uniqueness of an index. Should the commit message be
restated
to reflect this and also restate it's backport to 14 and up?

I applied the patch in 14 and noticed that it needs to fix the test number
to get the test passed.
15 and 16 do not need this diff.
-use Test::More tests => 3;
+use Test::More tests => 4;


> (One thing I realized is that the comment for BtreeCheckState->snapshot
> says that it's used for the uniqueness test only, but that's no longer
> the case.  So that needs fixed ...)
>

I think we'll have another chance to reflect that the issue is since
7f563c09f890 but not 5ae2087202af
in master for this fix. I can give it a try.

Thanks,
Donghang