]> granicus.if.org Git - postgresql/commitdiff
Insert temporary debugging output in regression tests.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 May 2019 16:23:16 +0000 (12:23 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 May 2019 16:23:21 +0000 (12:23 -0400)
We're seeing occasional instability in the plans generated for
parallel queries on the "a_star" table hierarchy.  This suggests
that something is changing the planner's stats for those tables,
but that should not be happening within a regression test run.
To try to gather some information about what's happening, insert
additional queries to check the basic page/tuple counts for these
tables, as well as whether any vacuums or analyzes have happened
on them.  (We expect that only the database-wide VACUUM in
sanity_check.sql will have touched them.)

I added the probes not only in select_parallel.sql itself, but
also in stats.sql, bearing in mind that the stats collector's
lag may prevent the initial query from reporting current truth.
If any extra vacuum/analyze has happened, the recheck in stats.sql
definitely ought to see it.

This commit can be reverted once we figure out what's going on.

Per suggestion from David Rowley, though I changed the queries around.

Discussion: https://postgr.es/m/CA+hUKG+0CxrKRWRMf5ymN3gm+BECHna2B-q1w8onKBep4HasUw@mail.gmail.com

src/test/regress/expected/select_parallel.out
src/test/regress/expected/stats.out
src/test/regress/sql/select_parallel.sql
src/test/regress/sql/stats.sql

index 0eca76cb41e78300ef41069d92f660606b10aab0..9775cc898ce818dc33d2ee352dcf9da338f14a5c 100644 (file)
@@ -89,6 +89,33 @@ select round(avg(aa)), sum(aa) from a_star a3;
     14 | 355
 (1 row)
 
+-- Temporary hack to investigate whether extra vacuum/analyze is happening
+select relname, relpages, reltuples
+from pg_class
+where relname like '__star' order by relname;
+ relname | relpages | reltuples 
+---------+----------+-----------
+ a_star  |        1 |         3
+ b_star  |        1 |         4
+ c_star  |        1 |         4
+ d_star  |        1 |        16
+ e_star  |        1 |         7
+ f_star  |        1 |        16
+(6 rows)
+
+select relname, vacuum_count, analyze_count, autovacuum_count, autoanalyze_count
+from pg_stat_all_tables
+where relname like '__star' order by relname;
+ relname | vacuum_count | analyze_count | autovacuum_count | autoanalyze_count 
+---------+--------------+---------------+------------------+-------------------
+ a_star  |            1 |             0 |                0 |                 0
+ b_star  |            1 |             0 |                0 |                 0
+ c_star  |            1 |             0 |                0 |                 0
+ d_star  |            1 |             0 |                0 |                 0
+ e_star  |            1 |             0 |                0 |                 0
+ f_star  |            1 |             0 |                0 |                 0
+(6 rows)
+
 -- Disable Parallel Append
 alter table a_star reset (parallel_workers);
 alter table b_star reset (parallel_workers);
index b01e58b98cb15137708e30d872cc97b8504defac..61fbf7e41eaede12e6da4065ec46c16b7388e5fd 100644 (file)
@@ -199,6 +199,33 @@ FROM prevstats AS pr;
  t
 (1 row)
 
+-- Temporary hack to investigate whether extra vacuum/analyze is happening
+select relname, relpages, reltuples
+from pg_class
+where relname like '__star' order by relname;
+ relname | relpages | reltuples 
+---------+----------+-----------
+ a_star  |        1 |         3
+ b_star  |        1 |         4
+ c_star  |        1 |         4
+ d_star  |        1 |        16
+ e_star  |        1 |         7
+ f_star  |        1 |        16
+(6 rows)
+
+select relname, vacuum_count, analyze_count, autovacuum_count, autoanalyze_count
+from pg_stat_all_tables
+where relname like '__star' order by relname;
+ relname | vacuum_count | analyze_count | autovacuum_count | autoanalyze_count 
+---------+--------------+---------------+------------------+-------------------
+ a_star  |            1 |             0 |                0 |                 0
+ b_star  |            1 |             0 |                0 |                 0
+ c_star  |            1 |             0 |                0 |                 0
+ d_star  |            1 |             0 |                0 |                 0
+ e_star  |            1 |             0 |                0 |                 0
+ f_star  |            1 |             0 |                0 |                 0
+(6 rows)
+
 DROP TABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4;
 DROP TABLE prevstats;
 -- End of Stats Test
index 03c056b8b771f64c7c02d6157412f6708636c485..f96812b550627d4f5908e8f4b7123de1b36725d9 100644 (file)
@@ -36,6 +36,14 @@ explain (costs off)
   select round(avg(aa)), sum(aa) from a_star;
 select round(avg(aa)), sum(aa) from a_star a3;
 
+-- Temporary hack to investigate whether extra vacuum/analyze is happening
+select relname, relpages, reltuples
+from pg_class
+where relname like '__star' order by relname;
+select relname, vacuum_count, analyze_count, autovacuum_count, autoanalyze_count
+from pg_stat_all_tables
+where relname like '__star' order by relname;
+
 -- Disable Parallel Append
 alter table a_star reset (parallel_workers);
 alter table b_star reset (parallel_workers);
index feaaee6326e2f6e0102151aaa53dc9fca70b2f7a..9defd4b7a9791dbb340842776162a92c6f5fd363 100644 (file)
@@ -174,6 +174,14 @@ SELECT st.heap_blks_read + st.heap_blks_hit >= pr.heap_blks + cl.relpages,
 SELECT pr.snap_ts < pg_stat_get_snapshot_timestamp() as snapshot_newer
 FROM prevstats AS pr;
 
+-- Temporary hack to investigate whether extra vacuum/analyze is happening
+select relname, relpages, reltuples
+from pg_class
+where relname like '__star' order by relname;
+select relname, vacuum_count, analyze_count, autovacuum_count, autoanalyze_count
+from pg_stat_all_tables
+where relname like '__star' order by relname;
+
 DROP TABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4;
 DROP TABLE prevstats;
 -- End of Stats Test