Re: Amcheck verification of GiST and GIN

Andrey Borodin <x4mmm@yandex-team.ru>

From: Andrey Borodin <x4mmm@yandex-team.ru>
To: Tomas Vondra <tomas@vondra.me>
Cc: Kirill Reshke <reshkekirill@gmail.com>, Alexander Lakhin <exclusion@gmail.com>, Andrey Borodin <amborodin86@gmail.com>, Peter Geoghegan <pg@bowt.ie>, Mark Dilger <mark.dilger@enterprisedb.com>, Jose Arthur Benetasso Villanova <jose.arthur@gmail.com>, Andres Freund <andres@anarazel.de>, Nikolay Samokhvalov <samokhvalov@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-02-21T18:22:28Z
Lists: pgsql-hackers

> On 21 Feb 2025, at 19:29, Tomas Vondra <tomas@vondra.me> wrote:
> 
> I see this patch didn't move since December :-( I still think these
> improvements would be useful, it certainly was very helpful when I was
> working on the GIN/GiST parallel builds (the GiST builds stalled, but I
> hope to push the GIN patches soon).
> 
> So I'd like to get some of this in too. I'm not sure about the GiST
> bits, because I know very little about that AM (the parallel builds made
> me acutely aware of that).
> 
> But I'd like to get the GIN parts in. We're at v34 already, and the
> recent changes were mostly cosmetic. Does anyone object to me polishing
> and pushing those parts?

Hi Tomas!

Committing verification for any index type would help immensely. Currently we have many separate areas of work that just depend on this common part. GiST and GIN have a code for verification, which is bound together by this patch set. If someone, e.g., wants to work on BRIN - they have to deal with all the patch set.
If we have any second index in amcheck, no matter GiST or GIN, - it's clear how to split the work on other AMs.

Kirill spend a lot of time ironing out various false positives from GIN check. Kirill, what is your opinion about GIN verification? Does it look complete? (in a sense that it will not trigger false alarm, certainly it cannot catch all the type of corruptions)

Thanks!


Best regards, Andrey Borodin.


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 posting tree checks in gin_index_check()

  2. amcheck: Fix parent key check in gin_index_check()

  3. amcheck: Fix checks of entry order for GIN indexes

  4. amcheck: Remove unused GinScanItem->parentlsn field

  5. amcheck: Test gin_index_check on a multicolumn index

  6. Remove incidental md5() function use from test

  7. amcheck: Add a GIN index to the CREATE INDEX CONCURRENTLY tests

  8. amcheck: Add a test with GIN index on JSONB data

  9. amcheck: Fix indentation in verify_gin.c

  10. amcheck: Add gin_index_check() to verify GIN index

  11. amcheck: Move common routines into a separate module

  12. Fix grammar in GIN README

  13. Avoid amcheck inline compression false positives.