Re: Use read streams in pg_visibility
Nazir Bilal Yavuz <byavuz81@gmail.com>
From: Nazir Bilal Yavuz <byavuz81@gmail.com>
To: Noah Misch <noah@leadboat.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-09-09T15:25:07Z
Lists: pgsql-hackers
Attachments
- v6-0001-Add-tests-that-pg_check_-visible-frozen-report-co.patch (text/x-patch) patch v6-0001
- v6-0002-Optimize-pg_visibility-with-read-streams.patch (text/x-patch) patch v6-0002
Hi, On Thu, 5 Sept 2024 at 18:54, Noah Misch <noah@leadboat.com> wrote: > > On Thu, Sep 05, 2024 at 03:59:53PM +0300, Nazir Bilal Yavuz wrote: > > On Wed, 4 Sept 2024 at 21:43, Noah Misch <noah@leadboat.com> wrote: > > > https://postgr.es/m/CAEudQAozv3wTY5TV2t29JcwPydbmKbiWQkZD42S2OgzdixPMDQ@mail.gmail.com > > > then observed that collect_corrupt_items() was now guaranteed to never detect > > > corruption. I have pushed revert ddfc556 of the pg_visibility.c changes. For > > > the next try, could you add that testing we discussed? > > > > Do you think that corrupting the visibility map and then seeing if > > pg_check_visible() and pg_check_frozen() report something is enough? > > I think so. Please check that it would have caught both the blkno bug and the > above bug. The test and updated patch files are attached. In that test I overwrite the visibility map file with its older state. Something like this: 1- Create the table, then run VACUUM FREEZE on the table. 2- Shutdown the server, create a copy of the vm file, restart the server. 3- Run the DELETE command on some $random_tuples. 4- Shutdown the server, overwrite the vm file with the #2 vm file, restart the server. 5- pg_check_visible and pg_check_frozen must report $random_tuples as corrupted. Do you think this test makes sense and enough? -- Regards, Nazir Bilal Yavuz Microsoft
Commits
-
Optimize pg_visibility with read streams.
- 65c310b310a6 18.0 landed
- ed1b1ee59fb3 18.0 landed
-
Revert "Optimize pg_visibility with read streams."
- ddfc556a6444 18.0 landed
-
Fix stack variable scope from previous commit.
- 1c61fd8b5279 18.0 landed
-
Add block_range_read_stream_cb(), to deduplicate code.
- c582b75851c2 18.0 landed