pgsql: Test that vacuum removes tuples older than OldestXmin
От | Melanie Plageman |
---|---|
Тема | pgsql: Test that vacuum removes tuples older than OldestXmin |
Дата | |
Msg-id | E1uU3ia-0038Ns-2E@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Test that vacuum removes tuples older than OldestXmin If vacuum fails to prune a tuple killed before OldestXmin, it will decide to freeze its xmax and later error out in pre-freeze checks. Add a test reproducing this scenario to the recovery suite which creates a table on a primary, updates the table to generate dead tuples for vacuum, and then, during the vacuum, uses a replica to force GlobalVisState->maybe_needed on the primary to move backwards and precede the value of OldestXmin set at the beginning of vacuuming the table. This test is coverage for a case fixed in 83c39a1f7f3. The test was originally committed to master in aa607980aee but later reverted in efcbb76efe4 due to test instability. The test requires multiple index passes. In Postgres 17+, vacuum uses a TID store for the dead TIDs that is very space efficient. With the old minimum maintenance_work_mem of 1 MB, it required a large number of dead rows to generate enough dead TIDs to force multiple index vacuuming passes. Once the source code changes were made to allow a minimum maintenance_work_mem value of 64kB, the test could be made much faster and more stable. Author: Melanie Plageman <melanieplageman@gmail.com> Reviewed-by: John Naylor <johncnaylorls@gmail.com> Reviewed-by: Peter Geoghegan <pg@bowt.ie> Discussion: https://postgr.es/m/CAAKRu_ZJBkidusDut6i%3DbDCiXzJEp93GC1%2BNFaZt4eqanYF3Kw%40mail.gmail.com Backpatch-through: 17 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/303ba0573ce656b98620133cd17418dcd217318f Modified Files -------------- src/test/recovery/meson.build | 3 +- src/test/recovery/t/048_vacuum_horizon_floor.pl | 278 ++++++++++++++++++++++++ 2 files changed, 280 insertions(+), 1 deletion(-)
В списке pgsql-committers по дате отправления: