Fix flakiness in the pg_visibility VM-only vacuum test by using a temporary table.

The test relies on VACUUM being able to mark a page all-visible, but
this can fail when autovacuum in other sessions prevents the visibility
horizon from advancing. Making the test table temporary isolates its
horizon from other sessions, including catalog table vacuums, ensuring
reliable test behavior.

Reported-by: Alexander Lakhin <exclusion@gmail.com>
Author: Kirill Reshke <reshkekirill@gmail.com>
Reviewed-by: Melanie Plageman <melanieplageman@gmail.com>
Discussion: https://postgr.es/m/2b09fba6-6b71-497a-96ef-a6947fcc39f6%40gmail.com
This commit is contained in:
Melanie Plageman 2026-02-02 17:44:37 -05:00
parent 12451d9d1f
commit 4a99ef1a0d
2 changed files with 2 additions and 2 deletions

View file

@ -207,7 +207,7 @@ select pg_truncate_visibility_map('test_partition');
-- test the case where vacuum phase I does not need to modify the heap buffer
-- and only needs to set the VM
create table test_vac_unmodified_heap(a int);
create temp table test_vac_unmodified_heap(a int);
insert into test_vac_unmodified_heap values (1);
vacuum (freeze) test_vac_unmodified_heap;
select pg_visibility_map_summary('test_vac_unmodified_heap');

View file

@ -97,7 +97,7 @@ select pg_truncate_visibility_map('test_partition');
-- test the case where vacuum phase I does not need to modify the heap buffer
-- and only needs to set the VM
create table test_vac_unmodified_heap(a int);
create temp table test_vac_unmodified_heap(a int);
insert into test_vac_unmodified_heap values (1);
vacuum (freeze) test_vac_unmodified_heap;
select pg_visibility_map_summary('test_vac_unmodified_heap');