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]

Reply via email to