This is an automated email from the ASF dual-hosted git repository. yjhjstz pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit b7aa8ad3030e3fe51f2ec55995fcb251698a9bb1 Author: Brent Doil <[email protected]> AuthorDate: Thu Sep 14 15:23:21 2023 -0400 Add test for VACUUM reltuple distortion Add a test exercising the patch to avoid distortion in the pg_class.reltuples estimates used by VACUUM https://github.com/postgres/postgres/commit/74388a1ac36d2f0206c5477eeddc636d7947a5a4 --- src/test/regress/expected/vacuum_gp.out | 30 ++++++++++++++++++++++++++++++ src/test/regress/sql/vacuum_gp.sql | 11 +++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/test/regress/expected/vacuum_gp.out b/src/test/regress/expected/vacuum_gp.out index d3a6ba5a11..0b5803d80e 100644 --- a/src/test/regress/expected/vacuum_gp.out +++ b/src/test/regress/expected/vacuum_gp.out @@ -402,8 +402,38 @@ select datname, pg_column_size(datacl) > 8192 as datacl_size, age(datfrozenxid) DROP DATABASE vacuum_freeze_test; -- start_ignore select clean_roles(); + clean_roles + ok +------------- +(1 row) + drop function toast_pg_database_datacl(); drop function clean_roles(); -- end_ignore -- free pg_global space, otherwise it fails db_size_functions VACUUM FULL pg_authid, pg_database; +-- Multiple VACUUM commands run on a table should not distort the values of reltuples. +CREATE TABLE vac_reltuple_distortion(a int) DISTRIBUTED BY (a); +INSERT INTO vac_reltuple_distortion SELECT generate_series(1, 1000000); +ANALYZE vac_reltuple_distortion; +SELECT reltuples, relname FROM pg_class WHERE oid='vac_reltuple_distortion'::regclass; + reltuples | relname +-----------+------------------------- + 1e+06 | vac_reltuple_distortion +(1 row) + +VACUUM vac_reltuple_distortion; +VACUUM vac_reltuple_distortion; -- 2nd call to VACUUM after ANALYZE +SELECT reltuples, relname FROM pg_class WHERE oid='vac_reltuple_distortion'::regclass; + reltuples | relname +-----------+------------------------- + 1e+06 | vac_reltuple_distortion +(1 row) + +VACUUM vac_reltuple_distortion; +SELECT reltuples, relname FROM pg_class WHERE oid='vac_reltuple_distortion'::regclass; + reltuples | relname +-----------+------------------------- + 1e+06 | vac_reltuple_distortion +(1 row) + diff --git a/src/test/regress/sql/vacuum_gp.sql b/src/test/regress/sql/vacuum_gp.sql index 3ee26177fa..04f88df9e0 100644 --- a/src/test/regress/sql/vacuum_gp.sql +++ b/src/test/regress/sql/vacuum_gp.sql @@ -280,3 +280,14 @@ drop function clean_roles(); -- end_ignore -- free pg_global space, otherwise it fails db_size_functions VACUUM FULL pg_authid, pg_database; + +-- Multiple VACUUM commands run on a table should not distort the values of reltuples. +CREATE TABLE vac_reltuple_distortion(a int) DISTRIBUTED BY (a); +INSERT INTO vac_reltuple_distortion SELECT generate_series(1, 1000000); +ANALYZE vac_reltuple_distortion; +SELECT reltuples, relname FROM pg_class WHERE oid='vac_reltuple_distortion'::regclass; +VACUUM vac_reltuple_distortion; +VACUUM vac_reltuple_distortion; -- 2nd call to VACUUM after ANALYZE +SELECT reltuples, relname FROM pg_class WHERE oid='vac_reltuple_distortion'::regclass; +VACUUM vac_reltuple_distortion; +SELECT reltuples, relname FROM pg_class WHERE oid='vac_reltuple_distortion'::regclass; \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
