diff --git a/src/test/regress/expected/multi_utilities.out b/src/test/regress/expected/multi_utilities.out index c96c787fc..2edc4aa8b 100644 --- a/src/test/regress/expected/multi_utilities.out +++ b/src/test/regress/expected/multi_utilities.out @@ -86,7 +86,7 @@ SELECT master_create_worker_shards('dustbunnies', 1, 2); -- run VACUUM and ANALYZE against the table on the master VACUUM dustbunnies; ANALYZE dustbunnies; --- update statistics, then verify that the four dead rows are gone +-- verify that the VACUUM and ANALYZE ran \c - - - :worker_1_port SELECT pg_sleep(.500); pg_sleep @@ -106,3 +106,35 @@ SELECT pg_stat_get_analyze_count('dustbunnies_990002'::regclass); 1 (1 row) +-- disable auto-VACUUM for next test +ALTER TABLE dustbunnies_990002 SET (autovacuum_enabled = false); +SELECT relfrozenxid AS frozenxid FROM pg_class WHERE oid='dustbunnies_990002'::regclass +\gset +-- send a VACUUM FREEZE after adding a new row +\c - - - :master_port +INSERT INTO dustbunnies VALUES (5, 'peter'); +VACUUM (FREEZE) dustbunnies; +-- verify that relfrozenxid increased +\c - - - :worker_1_port +SELECT relfrozenxid::text::integer > :frozenxid AS frozen_performed FROM pg_class +WHERE oid='dustbunnies_990002'::regclass; + frozen_performed +------------------ + t +(1 row) + +-- get file node to verify VACUUM FULL +SELECT relfilenode AS oldnode FROM pg_class WHERE oid='dustbunnies_990002'::regclass +\gset +-- send a VACUUM FULL +\c - - - :master_port +VACUUM (FULL) dustbunnies; +-- verify that relfrozenxid increased +\c - - - :worker_1_port +SELECT relfilenode != :oldnode AS table_rewritten FROM pg_class +WHERE oid='dustbunnies_990002'::regclass; + table_rewritten +----------------- + t +(1 row) + diff --git a/src/test/regress/sql/multi_utilities.sql b/src/test/regress/sql/multi_utilities.sql index 6118f2117..702807c12 100644 --- a/src/test/regress/sql/multi_utilities.sql +++ b/src/test/regress/sql/multi_utilities.sql @@ -60,18 +60,36 @@ SELECT master_create_worker_shards('dustbunnies', 1, 2); VACUUM dustbunnies; ANALYZE dustbunnies; --- update statistics, then verify that the four dead rows are gone +-- verify that the VACUUM and ANALYZE ran \c - - - :worker_1_port SELECT pg_sleep(.500); SELECT pg_stat_get_vacuum_count('dustbunnies_990002'::regclass); SELECT pg_stat_get_analyze_count('dustbunnies_990002'::regclass); +-- disable auto-VACUUM for next test +ALTER TABLE dustbunnies_990002 SET (autovacuum_enabled = false); +SELECT relfrozenxid AS frozenxid FROM pg_class WHERE oid='dustbunnies_990002'::regclass +\gset --- try a mixed VACUUM ANALYZE +-- send a VACUUM FREEZE after adding a new row \c - - - :master_port -VACUUM (FULL, ANALYZE) dustbunnies; +INSERT INTO dustbunnies VALUES (5, 'peter'); +VACUUM (FREEZE) dustbunnies; --- update statistics, then verify that the four dead rows are gone +-- verify that relfrozenxid increased \c - - - :worker_1_port -SELECT pg_sleep(.500); -SELECT * FROM pg_stat_all_tables WHERE relid = 'dustbunnies_990002'::regclass; +SELECT relfrozenxid::text::integer > :frozenxid AS frozen_performed FROM pg_class +WHERE oid='dustbunnies_990002'::regclass; + +-- get file node to verify VACUUM FULL +SELECT relfilenode AS oldnode FROM pg_class WHERE oid='dustbunnies_990002'::regclass +\gset + +-- send a VACUUM FULL +\c - - - :master_port +VACUUM (FULL) dustbunnies; + +-- verify that relfrozenxid increased +\c - - - :worker_1_port +SELECT relfilenode != :oldnode AS table_rewritten FROM pg_class +WHERE oid='dustbunnies_990002'::regclass;