Re: Amcheck verification of GiST and GIN

Arseniy Mukhin <arseniy.mukhin.dev@gmail.com>

From: Arseniy Mukhin <arseniy.mukhin.dev@gmail.com>
To: Tomas Vondra <tomas@vondra.me>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Kirill Reshke <reshkekirill@gmail.com>, Mark Dilger <mark.dilger@enterprisedb.com>, "Andrey M. Borodin" <x4mmm@yandex-team.ru>, Alexander Lakhin <exclusion@gmail.com>, Andrey Borodin <amborodin86@gmail.com>, Peter Geoghegan <pg@bowt.ie>, 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-05-29T11:53:32Z
Lists: pgsql-hackers

Attachments

On Mon, May 26, 2025 at 7:28 PM Arseniy Mukhin
<arseniy.mukhin.dev@gmail.com> wrote:
> On Mon, May 26, 2025 at 1:27 PM Tomas Vondra <tomas@vondra.me> wrote:
> > Also, I've noticed that the TAP test passes even with some (most) of the
> > verify_gin.c changes reverted. See the 0002 patch - this does not break
> > the TAP test. Of course, that does not prove the changes are wrong and
> > I'm not claiming that. But can we improve the TAP test to trigger this
> > too? To show the current code (in master) misses this?
>
> Yes, changes in the undo patch is about posting tree check part (6, 7 points)
> and I haven't written tests for it, because to break posting tree you need to
> manipulate with tids which is not as easy as replace "aaaa" with "cccc" as tests
> for entry tree do. Probably it would be much easier to use page api to
> corrupt some
> posting tree pages, but I don't know, is it impossible in TAP tests?

I added the test for the posting tree parent_key check. Now applying
'undo patch' results in
a test failure.
Also I realized that the test 'invalid_entry_columns_order_test' will
fail on big endian machines,
because varlena len encoding is different for little endian and big
endian, so I changed the test a little bit.
Now the test doesn't use varlena len byte in regex.
I also remove the blksize hardcode and start getting it from the
cluster configuration. But anyway some tests
will fail with not standard block size (probably all tests where tree
growth is expected).


Best regards,
Arseniy Mukhin

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.