aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2021-07-25 23:25:15 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2021-07-25 23:25:15 -0400
commit0806d08d4626f0a71a4e83cb399ee965a8aac99b (patch)
treeb2d2d9d030af6070a096ef63faca02fbae1903a6
parent2b58f894e56a1944e824e19c92337d6bf24d9c41 (diff)
downloadpostgresql-0806d08d4626f0a71a4e83cb399ee965a8aac99b.tar.gz
postgresql-0806d08d4626f0a71a4e83cb399ee965a8aac99b.zip
Harden pg_stat_statements tests against CLOBBER_CACHE_ALWAYS.
Turns out the buildfarm hasn't been testing this, which will soon change. Julien Rouhaud, per report from me Discussion: https://postgr.es/m/42557.1627229005@sss.pgh.pa.us
-rw-r--r--contrib/pg_stat_statements/expected/pg_stat_statements.out30
-rw-r--r--contrib/pg_stat_statements/sql/pg_stat_statements.sql7
2 files changed, 26 insertions, 11 deletions
diff --git a/contrib/pg_stat_statements/expected/pg_stat_statements.out b/contrib/pg_stat_statements/expected/pg_stat_statements.out
index 40b5109b559..b52d1877223 100644
--- a/contrib/pg_stat_statements/expected/pg_stat_statements.out
+++ b/contrib/pg_stat_statements/expected/pg_stat_statements.out
@@ -850,16 +850,26 @@ SELECT 42;
42
(1 row)
-SELECT query, plans, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
- query | plans | calls | rows
--------------------------------------------------------------------------------------+-------+-------+------
- ALTER TABLE test ADD COLUMN x int | 0 | 1 | 0
- CREATE TABLE test () | 0 | 1 | 0
- PREPARE prep1 AS SELECT COUNT(*) FROM test | 2 | 4 | 4
- SELECT $1 | 3 | 3 | 3
- SELECT pg_stat_statements_reset() | 0 | 1 | 1
- SELECT query, plans, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 1 | 0 | 0
-(6 rows)
+SELECT query, plans, calls, rows FROM pg_stat_statements
+ WHERE query NOT LIKE 'PREPARE%' ORDER BY query COLLATE "C";
+ query | plans | calls | rows
+----------------------------------------------------------+-------+-------+------
+ ALTER TABLE test ADD COLUMN x int | 0 | 1 | 0
+ CREATE TABLE test () | 0 | 1 | 0
+ SELECT $1 | 3 | 3 | 3
+ SELECT pg_stat_statements_reset() | 0 | 1 | 1
+ SELECT query, plans, calls, rows FROM pg_stat_statements+| 1 | 0 | 0
+ WHERE query NOT LIKE $1 ORDER BY query COLLATE "C" | | |
+(5 rows)
+
+-- for the prepared statement we expect at least one replan, but cache
+-- invalidations could force more
+SELECT query, plans >= 2 AND plans <= calls AS plans_ok, calls, rows FROM pg_stat_statements
+ WHERE query LIKE 'PREPARE%' ORDER BY query COLLATE "C";
+ query | plans_ok | calls | rows
+--------------------------------------------+----------+-------+------
+ PREPARE prep1 AS SELECT COUNT(*) FROM test | t | 4 | 4
+(1 row)
--
-- access to pg_stat_statements_info view
diff --git a/contrib/pg_stat_statements/sql/pg_stat_statements.sql b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
index bc3b6493e6b..dffd2c8c187 100644
--- a/contrib/pg_stat_statements/sql/pg_stat_statements.sql
+++ b/contrib/pg_stat_statements/sql/pg_stat_statements.sql
@@ -356,7 +356,12 @@ EXECUTE prep1;
SELECT 42;
SELECT 42;
SELECT 42;
-SELECT query, plans, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
+SELECT query, plans, calls, rows FROM pg_stat_statements
+ WHERE query NOT LIKE 'PREPARE%' ORDER BY query COLLATE "C";
+-- for the prepared statement we expect at least one replan, but cache
+-- invalidations could force more
+SELECT query, plans >= 2 AND plans <= calls AS plans_ok, calls, rows FROM pg_stat_statements
+ WHERE query LIKE 'PREPARE%' ORDER BY query COLLATE "C";
--
-- access to pg_stat_statements_info view