diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/select.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/select.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/select.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/select.out 2026-05-30 02:44:48.325188910 +0000 @@ -2,14 +2,14 @@ -- SELECT statements -- CREATE EXTENSION pg_stat_statements; +ERROR: extension "pg_stat_statements" has no installation script nor update path for version "1.14" SET pg_stat_statements.track_utility = FALSE; SET pg_stat_statements.track_planning = TRUE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- -- simple and compound statements -- @@ -206,46 +206,21 @@ DEALLOCATE pgss_test; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------------------------------ - 1 | 1 | PREPARE pgss_test (int) AS SELECT $1, $2 LIMIT $3 - 4 | 4 | SELECT $1 + - | | -- but this one will appear + - | | AS "text" - 2 | 2 | SELECT $1 + $2 - 3 | 3 | SELECT $1 + $2 + $3 AS "add" - 1 | 1 | SELECT $1 AS "float" - 2 | 2 | SELECT $1 AS "int" - 2 | 2 | SELECT $1 AS "int" LIMIT $2 - 2 | 0 | SELECT $1 AS "int" OFFSET $2 - 6 | 0 | SELECT $1 AS "int" OFFSET $2 LIMIT $3 - 2 | 2 | SELECT $1 AS "int" ORDER BY 1 - 1 | 2 | SELECT $1 AS i UNION SELECT $2 ORDER BY i - 1 | 1 | SELECT $1 || $2 - 2 | 2 | SELECT DISTINCT $1 AS "int" - 0 | 0 | SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C" - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 1 | 2 | WITH t(f) AS ( + - | | VALUES ($1), ($2) + - | | ) + - | | SELECT f FROM t ORDER BY f - 1 | 1 | select $1::jsonb ? $2 -(17 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- normalization of constants and parameters, with constant locations -- recorded one or more times. SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE '1' IN ('1'::int, '3'::int::text); -- (1 row) @@ -259,28 +234,21 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -------------------------------------------------------------------------+------- - SELECT WHERE $1 IN ($2::int, $3::int::text) | 1 - SELECT WHERE ($1, $2) IN (($3, $4), ($5, $6)) | 2 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 - SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C" | 0 -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- with the last element being an explicit function call with an argument, ensure -- the normalization of the squashing interval is correct. SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE 1 IN (1, int4(1), int4(2)); -- (1 row) @@ -290,24 +258,19 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -------------------------------------------------------------------------+------- - SELECT WHERE $1 IN ($2 /*, ... */) | 2 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 - SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C" | 0 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- -- queries with locking clauses -- CREATE TABLE pgss_a (id integer PRIMARY KEY); CREATE TABLE pgss_b (id integer PRIMARY KEY, a_id integer REFERENCES pgss_a); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- control query SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id; id | id | a_id @@ -368,38 +331,22 @@ (0 rows) SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | query --------+------------------------------------------------------------------------------------------ - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR KEY SHARE - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR NO KEY UPDATE - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR SHARE - 2 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR UPDATE - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR UPDATE NOWAIT - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR UPDATE OF pgss_a - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR UPDATE OF pgss_b - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR UPDATE OF pgss_b, pgss_a - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR UPDATE SKIP LOCKED - 0 | SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C" - 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(12 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, query FROM pg_stat_statements ORDER BY query C... + ^ DROP TABLE pgss_a, pgss_b CASCADE; -- -- access to pg_stat_statements_info view -- SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT dealloc FROM pg_stat_statements_info; - dealloc ---------- - 0 -(1 row) - +ERROR: relation "pg_stat_statements_info" does not exist +LINE 1: SELECT dealloc FROM pg_stat_statements_info; + ^ -- FROM [ONLY] CREATE TABLE tbl_inh(id integer); CREATE TABLE tbl_inh_1() INHERITS (tbl_inh); @@ -416,11 +363,9 @@ (0 rows) SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%FROM%tbl_inh%'; - count -------- - 2 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%F... + ^ -- WITH TIES CREATE TABLE limitoption AS SELECT 0 AS val FROM generate_series(1, 10); SELECT * @@ -454,11 +399,9 @@ (2 rows) SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%FETCH FIRST%'; - count -------- - 2 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%F... + ^ -- GROUP BY, HAVING, GROUPING SELECT COUNT(*) FROM (VALUES (1::INT, 2::INT)) AS t(a, b) GROUP BY a; count @@ -539,22 +482,9 @@ (1 row) SELECT calls, query FROM pg_stat_statements WHERE query LIKE '%GROUP BY%' ORDER BY query COLLATE "C"; - calls | query --------+------------------------------------------------------------------------------------------- - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY GROUPING SETS(a, ()) - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY GROUPING SETS(b, ()) - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY a - 2 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY a HAVING a = $3 - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY a, b - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY b - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY b HAVING b = $3 - 1 | SELECT COUNT(*) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY b, a - 1 | SELECT GROUPING(a) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY a - 1 | SELECT GROUPING(b) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY a, b - 1 | SELECT GROUPING(b) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY b - 1 | SELECT GROUPING(b) FROM (VALUES ($1::INT, $2::INT)) AS t(a, b) GROUP BY b, a -(12 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, query FROM pg_stat_statements WHERE query LIKE... + ^ -- GROUP BY [DISTINCT] SELECT a, b, c FROM (VALUES (1, 2, 3), (4, NULL, 6), (7, 8, 9)) AS t (a, b, c) @@ -611,11 +541,9 @@ (13 rows) SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%GROUP BY%ROLLUP%'; - count -------- - 2 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%G... + ^ -- GROUPING SET agglevelsup SELECT ( SELECT ( @@ -642,17 +570,14 @@ (3 rows) SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%SELECT GROUPING%'; - count -------- - 6 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT COUNT(*) FROM pg_stat_statements WHERE query LIKE '%S... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Temporary table with same name, re-created. BEGIN; CREATE TEMP TABLE temp_t (id int) ON COMMIT DROP; @@ -671,19 +596,14 @@ COMMIT; SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | query --------+------------------------------------------------------------------------ - 2 | SELECT * FROM temp_t - 0 | SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C" - 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, query FROM pg_stat_statements ORDER BY query C... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- search_path with various schemas and temporary tables CREATE SCHEMA pgss_schema_1; CREATE SCHEMA pgss_schema_2; @@ -860,18 +780,9 @@ (0 rows) SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | query --------+------------------------------------------------------------------------ - 8 | SELECT a FROM tab_search_diff_2 - 4 | SELECT a FROM tab_search_diff_2 AS t1 - 4 | SELECT a, b FROM tab_search_same - 0 | SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C" - 4 | SELECT count(*) FROM tab_search_diff_1 - 4 | SELECT count(*) FROM tab_search_diff_2 - 4 | SELECT count(*) FROM tab_search_same - 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(8 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, query FROM pg_stat_statements ORDER BY query C... + ^ DROP SCHEMA pgss_schema_1 CASCADE; NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to table pgss_schema_1.tab_search_same @@ -884,8 +795,7 @@ drop cascades to table pgss_schema_2.tab_search_diff_2 DROP TABLE tab_search_same, tab_search_diff_1, tab_search_diff_2; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/dml.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/dml.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/dml.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/dml.out 2026-05-30 02:44:48.445189084 +0000 @@ -73,26 +73,14 @@ (8 rows) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+--------------------------------------------------------------------- - 1 | 1 | DELETE FROM pgss_dml_tab WHERE a > $1 - 1 | 3 | INSERT INTO pgss_dml_tab (a, b) VALUES ($1, $2), ($3, $4), ($5, $6) - 1 | 10 | INSERT INTO pgss_dml_tab VALUES(generate_series($1, $2), $3) - 1 | 12 | SELECT * FROM pgss_dml_tab ORDER BY a - 2 | 4 | SELECT * FROM pgss_dml_tab WHERE a > $1 ORDER BY a - 1 | 8 | SELECT * FROM pgss_dml_tab WHERE a IN ($1 /*, ... */) - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 1 | 0 | SET pg_stat_statements.track_utility = $1 - 6 | 6 | UPDATE pgss_dml_tab SET b = $1 WHERE a = $2 - 1 | 3 | UPDATE pgss_dml_tab SET b = $1 WHERE a > $2 -(10 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- MERGE MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= 4) WHEN MATCHED THEN UPDATE SET b = st.b || st.a::text; @@ -116,38 +104,17 @@ WHEN NOT MATCHED THEN DO NOTHING; DROP TABLE pgss_dml_tab; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+----------------------------------------------------------------------------------------- - 1 | 6 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= $1)+ - | | WHEN MATCHED AND length(st.b) > $2 THEN UPDATE SET b = pgss_dml_tab.b || st.a::text - 1 | 6 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= $1)+ - | | WHEN MATCHED THEN DELETE - 1 | 0 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= $1)+ - | | WHEN MATCHED THEN DO NOTHING - 1 | 6 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= $1)+ - | | WHEN MATCHED THEN UPDATE SET b = pgss_dml_tab.b || st.a::text - 1 | 6 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= $1)+ - | | WHEN MATCHED THEN UPDATE SET b = st.b || st.a::text - 1 | 0 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a AND st.a >= $1)+ - | | WHEN NOT MATCHED THEN DO NOTHING - 1 | 0 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a) + - | | WHEN NOT MATCHED THEN INSERT (a) VALUES ($1) - 2 | 0 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a) + - | | WHEN NOT MATCHED THEN INSERT (a, b) VALUES ($1, $2) - 1 | 0 | MERGE INTO pgss_dml_tab USING pgss_dml_tab st ON (st.a = pgss_dml_tab.a) + - | | WHEN NOT MATCHED THEN INSERT (b, a) VALUES ($1, $2) - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(10 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ -- check that [temp] table relation extensions are tracked as writes CREATE TABLE pgss_extend_tab (a int, b text); CREATE TEMP TABLE pgss_extend_temp_tab (a int, b text); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. INSERT INTO pgss_extend_tab (a, b) SELECT generate_series(1, 1000), 'something'; INSERT INTO pgss_extend_temp_tab (a, b) SELECT generate_series(1, 1000), 'something'; WITH sizes AS ( @@ -161,14 +128,11 @@ SUM(shared_blks_written) >= (SELECT rel_size FROM sizes) AS written_ok, SUM(shared_blks_dirtied) >= (SELECT rel_size FROM sizes) AS dirtied_ok FROM pg_stat_statements; - temp_written_ok | temp_dirtied_ok | written_ok | dirtied_ok ------------------+-----------------+------------+------------ - t | t | t | t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 11: FROM pg_stat_statements; + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/cursors.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/cursors.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/cursors.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/cursors.out 2026-05-30 02:44:48.501189166 +0000 @@ -4,11 +4,10 @@ -- These tests require track_utility to be enabled. SET pg_stat_statements.track_utility = TRUE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- DECLARE -- SELECT is normalized. DECLARE cursor_stats_1 CURSOR WITH HOLD FOR SELECT 1; @@ -16,19 +15,14 @@ DECLARE cursor_stats_1 CURSOR WITH HOLD FOR SELECT 2; CLOSE cursor_stats_1; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------- - 2 | 0 | CLOSE cursor_stats_1 - 2 | 0 | DECLARE cursor_stats_1 CURSOR WITH HOLD FOR SELECT $1 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- FETCH BEGIN; DECLARE cursor_stats_1 CURSOR WITH HOLD FOR SELECT 2; @@ -49,25 +43,14 @@ CLOSE cursor_stats_2; COMMIT; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------- - 1 | 0 | BEGIN - 1 | 0 | CLOSE cursor_stats_1 - 1 | 0 | CLOSE cursor_stats_2 - 1 | 0 | COMMIT - 1 | 0 | DECLARE cursor_stats_1 CURSOR WITH HOLD FOR SELECT $1 - 1 | 0 | DECLARE cursor_stats_2 CURSOR WITH HOLD FOR SELECT $1 - 1 | 1 | FETCH $1 IN cursor_stats_1 - 1 | 1 | FETCH $1 IN cursor_stats_2 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(9 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Normalization of FETCH statements BEGIN; DECLARE pgss_cursor CURSOR FOR SELECT FROM generate_series(1, 10); @@ -185,23 +168,6 @@ COMMIT; SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | query --------+-------------------------------------------------------------------- - 1 | BEGIN - 1 | COMMIT - 1 | DECLARE pgss_cursor CURSOR FOR SELECT FROM generate_series($1, $2) - 3 | FETCH ABSOLUTE $1 pgss_cursor - 1 | FETCH ALL pgss_cursor - 1 | FETCH BACKWARD ALL pgss_cursor - 4 | FETCH BACKWARD pgss_cursor - 1 | FETCH FIRST pgss_cursor - 1 | FETCH FORWARD ALL pgss_cursor - 4 | FETCH FORWARD pgss_cursor - 1 | FETCH LAST pgss_cursor - 1 | FETCH NEXT pgss_cursor - 1 | FETCH PRIOR pgss_cursor - 3 | FETCH RELATIVE $1 pgss_cursor - 4 | FETCH pgss_cursor - 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(16 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, query FROM pg_stat_statements ORDER BY query C... + ^ diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/utility.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/utility.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/utility.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/utility.out 2026-05-30 02:44:48.981189865 +0000 @@ -4,11 +4,10 @@ -- These tests require track_utility to be enabled. SET pg_stat_statements.track_utility = TRUE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Tables, indexes, triggers CREATE TEMP TABLE tab_stats (a int, b char(20)); CREATE INDEX index_stats ON tab_stats(b, (b || 'data1'), (b || 'data2')) WHERE a > 0; @@ -24,24 +23,14 @@ NOTICE: table "tab_stats" does not exist, skipping NOTICE: table "tab_stats" does not exist, skipping NOTICE: table "tab_stats" does not exist, skipping - calls | rows | query --------+------+-------------------------------------------------------------------------------------- - 1 | 0 | ALTER TABLE tab_stats ADD CONSTRAINT a_nonzero CHECK (a <> 0) - 1 | 0 | ALTER TABLE tab_stats ALTER COLUMN b TYPE text USING 'data' || b - 1 | 0 | ALTER TABLE tab_stats ALTER COLUMN b set default 'a' - 1 | 0 | CREATE INDEX index_stats ON tab_stats(b, (b || 'data1'), (b || 'data2')) WHERE a > 0 - 1 | 0 | CREATE TEMP TABLE tab_stats (a int, b char(20)) - 3 | 0 | DROP TABLE IF EXISTS tab_stats - 1 | 0 | DROP TABLE tab_stats - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(8 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 6: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Partitions CREATE TABLE pt_stats (a int, b int) PARTITION BY range (a); CREATE TABLE pt_stats1 (a int, b int); @@ -97,62 +86,14 @@ CREATE STATISTICS tab_expr_stats_1 (mcv) ON a, (2*a), (3*b) FROM tab_expr_stats; DROP TABLE tab_expr_stats; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------------------------------------- - 1 | 0 | ALTER FOREIGN TABLE foreign_stats ADD COLUMN b integer DEFAULT 1 - 1 | 0 | ALTER FOREIGN TABLE foreign_stats ADD CONSTRAINT b_nonzero CHECK (b <> 0) - 1 | 0 | ALTER INDEX pt_stats_index ATTACH PARTITION pt_stats2_index - 1 | 0 | ALTER TABLE pt_stats ATTACH PARTITION pt_stats1 FOR VALUES FROM (0) TO (100) - 1 | 0 | ALTER VIEW view_stats ALTER COLUMN a SET DEFAULT 2 - 1 | 0 | CREATE FOREIGN DATA WRAPPER wrapper_stats - 1 | 0 | CREATE FOREIGN TABLE foreign_stats (a int) SERVER server_stats - 1 | 0 | CREATE FUNCTION func_stats(a text DEFAULT 'a_data', b text DEFAULT lower('b_data'))+ - | | RETURNS text AS $$ SELECT $1::text || '_' || $2::text; $$ LANGUAGE SQL + - | | SET work_mem = $1 - 1 | 0 | CREATE FUNCTION trigger_func_stats () RETURNS trigger LANGUAGE plpgsql + - | | AS $$ BEGIN return OLD; end; $$ - 1 | 0 | CREATE INDEX pt_stats2_index ON ONLY pt_stats2 (a) - 1 | 0 | CREATE INDEX pt_stats_index ON ONLY pt_stats (a) - 1 | 0 | CREATE POLICY policy_stats ON tab_policy_stats USING (a = 5) WITH CHECK (b < 5) - 1 | 0 | CREATE RULE rules_stats AS ON INSERT TO tab_rule_stats DO INSTEAD + - | | INSERT INTO tab_rule_stats_2 VALUES(new.*, 1, 2) - 1 | 0 | CREATE SERVER server_stats FOREIGN DATA WRAPPER wrapper_stats - 1 | 0 | CREATE STATISTICS tab_expr_stats_1 (mcv) ON a, (2*a), (3*b) FROM tab_expr_stats - 1 | 0 | CREATE TABLE pt_stats (a int, b int) PARTITION BY range (a) - 1 | 0 | CREATE TABLE pt_stats1 (a int, b int) - 1 | 0 | CREATE TABLE pt_stats2 PARTITION OF pt_stats FOR VALUES FROM (100) TO (200) - 1 | 0 | CREATE TABLE tab_expr_stats (a int, b int) - 1 | 0 | CREATE TABLE tab_policy_stats (a int, b int) - 1 | 0 | CREATE TABLE tab_rule_stats (a int, b int) - 1 | 0 | CREATE TABLE tab_rule_stats_2 (a int, b int, c int, d int) - 1 | 0 | CREATE TABLE trigger_tab_stats (a int, b int) - 1 | 0 | CREATE TRIGGER trigger_tab_stats + - | | AFTER UPDATE ON trigger_tab_stats + - | | FOR EACH ROW WHEN (OLD.a < 0 AND OLD.b < 1 AND true) + - | | EXECUTE FUNCTION trigger_func_stats() - 1 | 0 | CREATE TYPE stats_type as (f1 numeric(35, 6), f2 numeric(35, 2)) - 1 | 0 | CREATE VIEW view_stats AS SELECT 1::int AS a, 2::int AS b - 1 | 0 | DROP FOREIGN DATA WRAPPER wrapper_stats - 1 | 0 | DROP FOREIGN TABLE foreign_stats - 1 | 0 | DROP FUNCTION func_stats - 1 | 0 | DROP RULE rules_stats ON tab_rule_stats - 1 | 0 | DROP SERVER server_stats - 1 | 0 | DROP TABLE pt_stats - 1 | 0 | DROP TABLE tab_expr_stats - 1 | 0 | DROP TABLE tab_policy_stats - 1 | 0 | DROP TABLE tab_rule_stats, tab_rule_stats_2 - 1 | 0 | DROP TABLE trigger_tab_stats - 1 | 0 | DROP TYPE stats_type - 1 | 0 | DROP VIEW view_stats - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(39 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Transaction statements BEGIN; ABORT; @@ -181,24 +122,14 @@ BEGIN TRANSACTION NOT DEFERRABLE, READ ONLY, READ WRITE, DEFERRABLE; COMMIT; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+--------------------------------------------------------------------- - 4 | 0 | ABORT - 6 | 0 | BEGIN - 2 | 0 | BEGIN ISOLATION LEVEL SERIALIZABLE - 1 | 0 | BEGIN TRANSACTION DEFERRABLE - 1 | 0 | BEGIN TRANSACTION NOT DEFERRABLE, READ ONLY, READ WRITE, DEFERRABLE - 1 | 0 | BEGIN TRANSACTION READ ONLY, READ WRITE, DEFERRABLE, NOT DEFERRABLE - 7 | 0 | COMMIT WORK - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(8 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Two-phase transactions BEGIN; PREPARE TRANSACTION 'stat_trans1'; @@ -207,21 +138,14 @@ PREPARE TRANSACTION 'stat_trans2'; ROLLBACK PREPARED 'stat_trans2'; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 2 | 0 | BEGIN - 1 | 0 | COMMIT PREPARED $1 - 2 | 0 | PREPARE TRANSACTION $1 - 1 | 0 | ROLLBACK PREPARED $1 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Savepoints BEGIN; SAVEPOINT sp1; @@ -237,22 +161,14 @@ RELEASE SAVEPOINT sp1; COMMIT; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 1 | 0 | BEGIN - 1 | 0 | COMMIT - 3 | 0 | RELEASE $1 - 4 | 0 | ROLLBACK TO $1 - 4 | 0 | SAVEPOINT $1 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(6 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- EXPLAIN statements -- A Query is used, normalized by the query jumbling. EXPLAIN (costs off) SELECT 1; @@ -282,13 +198,9 @@ (2 rows) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+--------------------------------------------------------------------------------- - 2 | 0 | EXPLAIN (costs off) SELECT $1 - 2 | 0 | EXPLAIN (costs off) SELECT a FROM generate_series($1,$2) AS tab(a) WHERE a = $3 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ -- CALL CREATE OR REPLACE PROCEDURE sum_one(i int) AS $$ DECLARE @@ -324,11 +236,10 @@ i3 := i3 + i; END; $$ LANGUAGE plpgsql; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CALL sum_one(3); CALL sum_one(199); CALL sum_two(1,1); @@ -348,24 +259,16 @@ (1 row) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 2 | 0 | CALL in_out($1, $2, $3) - 1 | 0 | CALL overload($1) - 1 | 0 | CALL overload($1) - 2 | 0 | CALL sum_one($1) - 2 | 0 | CALL sum_two($1,$2) - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(6 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ -- COPY CREATE TABLE copy_stats (a int, b int); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Some queries with A_Const nodes. COPY (SELECT 1) TO STDOUT; 1 @@ -384,25 +287,15 @@ COPY (DELETE FROM copy_stats WHERE a = 1 RETURNING *) TO STDOUT; 1 4 SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------------------- - 1 | 1 | COPY (DELETE FROM copy_stats WHERE a = 1 RETURNING *) TO STDOUT - 1 | 1 | COPY (INSERT INTO copy_stats VALUES (1, 1) RETURNING *) TO STDOUT - 1 | 1 | COPY (INSERT INTO copy_stats VALUES (2, 2) RETURNING *) TO STDOUT - 1 | 1 | COPY (SELECT 1) TO STDOUT - 1 | 1 | COPY (SELECT 2) TO STDOUT - 1 | 2 | COPY (UPDATE copy_stats SET b = b + 1 RETURNING *) TO STDOUT - 1 | 2 | COPY (UPDATE copy_stats SET b = b + 2 RETURNING *) TO STDOUT - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(8 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ DROP TABLE copy_stats; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- CREATE TABLE AS -- SELECT queries are normalized, creating matching query IDs. CREATE TABLE ctas_stats_1 AS SELECT 1 AS a; @@ -418,23 +311,14 @@ FROM generate_series(1, 5) AS tab(a) WHERE a < 4 AND a > 1; DROP TABLE ctas_stats_2; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+-------------------------------------------------------------------- - 2 | 2 | CREATE TABLE ctas_stats_1 AS SELECT $1 AS a - 2 | 4 | CREATE TABLE ctas_stats_2 AS + - | | SELECT a AS col1, $1::int AS col2 + - | | FROM generate_series($2, $3) AS tab(a) WHERE a < $4 AND a > $5 - 2 | 0 | DROP TABLE ctas_stats_1 - 2 | 0 | DROP TABLE ctas_stats_2 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- CREATE MATERIALIZED VIEW -- SELECT queries are normalized, creating matching query IDs. CREATE MATERIALIZED VIEW matview_stats_1 AS @@ -446,21 +330,14 @@ FROM generate_series(1, 5) AS tab(a) WHERE a < 4 AND a > 3; DROP MATERIALIZED VIEW matview_stats_1; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+-------------------------------------------------------------------- - 2 | 2 | CREATE MATERIALIZED VIEW matview_stats_1 AS + - | | SELECT a AS col1, $1::int AS col2 + - | | FROM generate_series($2, $3) AS tab(a) WHERE a < $4 AND a > $5 - 2 | 0 | DROP MATERIALIZED VIEW matview_stats_1 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- CREATE VIEW CREATE VIEW view_stats_1 AS SELECT a AS col1, 2::int AS col2 @@ -471,45 +348,28 @@ FROM generate_series(1, 5) AS tab(a) WHERE a < 4 AND a > 3; DROP VIEW view_stats_1; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+----------------------------------------------------------------- - 1 | 0 | CREATE VIEW view_stats_1 AS + - | | SELECT a AS col1, 2::int AS col2 + - | | FROM generate_series(1, 10) AS tab(a) WHERE a < 5 AND a > 2 - 1 | 0 | CREATE VIEW view_stats_1 AS + - | | SELECT a AS col1, 4::int AS col2 + - | | FROM generate_series(1, 5) AS tab(a) WHERE a < 4 AND a > 3 - 2 | 0 | DROP VIEW view_stats_1 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(4 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Domains CREATE DOMAIN domain_stats AS int CHECK (VALUE > 0); ALTER DOMAIN domain_stats SET DEFAULT '3'; ALTER DOMAIN domain_stats ADD CONSTRAINT higher_than_one CHECK (VALUE > 1); DROP DOMAIN domain_stats; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------------------------------- - 1 | 0 | ALTER DOMAIN domain_stats ADD CONSTRAINT higher_than_one CHECK (VALUE > 1) - 1 | 0 | ALTER DOMAIN domain_stats SET DEFAULT '3' - 1 | 0 | CREATE DOMAIN domain_stats AS int CHECK (VALUE > 0) - 1 | 0 | DROP DOMAIN domain_stats - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Execution statements SELECT 1 as a; a @@ -536,21 +396,14 @@ DEALLOCATE ALL; DEALLOCATE PREPARE ALL; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 2 | 0 | DEALLOCATE $1 - 2 | 0 | DEALLOCATE ALL - 2 | 2 | PREPARE stat_select AS SELECT $1 AS a - 1 | 1 | SELECT $1 as a - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- SET statements. -- These use two different strings, still they count as one entry. CREATE ROLE regress_stat_set_1; @@ -606,52 +459,16 @@ SET TIME ZONE 'CST7CDT,M4.1.0,M10.5.0'; RESET TIME ZONE; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------------------ - 3 | 0 | BEGIN - 3 | 0 | COMMIT - 1 | 0 | CREATE ROLE regress_stat_set_1 - 1 | 0 | CREATE ROLE regress_stat_set_2 - 2 | 0 | RESET SESSION AUTHORIZATION - 1 | 0 | RESET TIME ZONE - 1 | 0 | RESET enable_seqscan - 1 | 0 | RESET work_mem - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 1 | 0 | SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_1' - 1 | 0 | SET LOCAL SESSION AUTHORIZATION 'regress_stat_set_2' - 1 | 0 | SET LOCAL SESSION AUTHORIZATION DEFAULT - 2 | 0 | SET LOCAL work_mem = $1 - 2 | 0 | SET LOCAL work_mem = DEFAULT - 1 | 0 | SET LOCAL work_mem FROM CURRENT - 1 | 0 | SET SESSION AUTHORIZATION 'regress_stat_set_1' - 1 | 0 | SET SESSION AUTHORIZATION 'regress_stat_set_2' - 1 | 0 | SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY - 1 | 0 | SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ ONLY - 1 | 0 | SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY, READ WRITE - 1 | 0 | SET SESSION SESSION AUTHORIZATION DEFAULT - 1 | 0 | SET TIME ZONE 'America/New_York' - 1 | 0 | SET TIME ZONE 'Asia/Tokyo' - 1 | 0 | SET TIME ZONE 'CST7CDT,M4.1.0,M10.5.0' - 2 | 0 | SET TIME ZONE DEFAULT - 1 | 0 | SET TRANSACTION ISOLATION LEVEL READ COMMITTED - 1 | 0 | SET TRANSACTION ISOLATION LEVEL REPEATABLE READ - 1 | 0 | SET TRANSACTION ISOLATION LEVEL SERIALIZABLE - 1 | 0 | SET XML OPTION CONTENT - 1 | 0 | SET XML OPTION DOCUMENT - 2 | 0 | SET enable_seqscan = $1 - 5 | 0 | SET work_mem = $1 - 2 | 0 | SET work_mem = DEFAULT - 1 | 0 | SET work_mem FROM CURRENT -(34 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ DROP ROLE regress_stat_set_1; DROP ROLE regress_stat_set_2; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- -- Track the total number of rows retrieved or affected by the utility -- commands of COPY, FETCH, CREATE TABLE AS, CREATE MATERIALIZED VIEW, @@ -694,46 +511,27 @@ COMMIT; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------------------------------------------------------------------------- - 1 | 0 | BEGIN - 1 | 0 | COMMIT - 1 | 3 | COPY pgss_ctas (a, b) FROM STDIN - 1 | 13 | CREATE MATERIALIZED VIEW pgss_matv AS SELECT * FROM pgss_ctas - 1 | 10 | CREATE TABLE pgss_ctas AS SELECT a, $1 b FROM generate_series($2, $3) a - 1 | 0 | DECLARE pgss_cursor CURSOR FOR SELECT * FROM pgss_matv - 1 | 5 | FETCH FORWARD $1 pgss_cursor - 1 | 7 | FETCH FORWARD ALL pgss_cursor - 1 | 1 | FETCH NEXT pgss_cursor - 1 | 13 | REFRESH MATERIALIZED VIEW pgss_matv - 1 | 10 | SELECT generate_series($1, $2) c INTO pgss_select_into - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(12 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ DROP MATERIALIZED VIEW pgss_matv; DROP TABLE pgss_ctas; DROP TABLE pgss_select_into; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Special cases. Keep these ones at the end to avoid conflicts. SET SCHEMA 'foo'; SET SCHEMA 'public'; RESET ALL; SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 1 | 0 | RESET ALL - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 2 | 0 | SET SCHEMA $1 -(3 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/level_tracking.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/level_tracking.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/level_tracking.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/level_tracking.out 2026-05-30 02:44:49.249190254 +0000 @@ -3,11 +3,10 @@ -- SET pg_stat_statements.track_utility = TRUE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- DO block - top-level tracking. CREATE TABLE stats_track_tab (x int); SET pg_stat_statements.track = 'top'; @@ -19,22 +18,14 @@ $$ LANGUAGE plpgsql; SELECT toplevel, calls, query FROM pg_stat_statements WHERE query LIKE '%DELETE%' ORDER BY query COLLATE "C", toplevel; - toplevel | calls | query -----------+-------+-------------------------------- - t | 1 | DELETE FROM stats_track_tab - t | 1 | DO $$ + - | | BEGIN + - | | DELETE FROM stats_track_tab;+ - | | END; + - | | $$ LANGUAGE plpgsql -(2 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- DO block - all-level tracking. SET pg_stat_statements.track = 'all'; DELETE FROM stats_track_tab; @@ -49,24 +40,9 @@ END; $$; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C", toplevel; - toplevel | calls | query -----------+-------+---------------------------------------------------- - f | 1 | DELETE FROM stats_track_tab - t | 1 | DELETE FROM stats_track_tab - t | 1 | DO $$ + - | | BEGIN + - | | DELETE FROM stats_track_tab; + - | | END; $$ - t | 1 | DO LANGUAGE plpgsql $$ + - | | BEGIN + - | | -- this is a SELECT + - | | PERFORM 'hello world'::TEXT; + - | | END; $$ - f | 1 | SELECT $1::TEXT - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - t | 1 | SET pg_stat_statements.track = $1 -(7 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- Procedure with multiple utility statements. CREATE OR REPLACE PROCEDURE proc_with_utility_stmt() LANGUAGE SQL @@ -79,48 +55,37 @@ -- all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CALL proc_with_utility_stmt(); SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C", toplevel; - toplevel | calls | query -----------+-------+---------------------------------------------------- - t | 1 | CALL proc_with_utility_stmt() - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - f | 2 | SHOW pg_stat_statements.track - f | 1 | SHOW pg_stat_statements.track_utility -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CALL proc_with_utility_stmt(); SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C", toplevel; - toplevel | calls | query -----------+-------+---------------------------------------------------- - t | 1 | CALL proc_with_utility_stmt() - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN - all-level tracking. CREATE TABLE test_table (x int); SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) SELECT 1; QUERY PLAN ------------ @@ -206,47 +171,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+--------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2) - f | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2); - t | 1 | EXPLAIN (COSTS OFF) (TABLE test_table) - f | 1 | EXPLAIN (COSTS OFF) (TABLE test_table); - t | 1 | EXPLAIN (COSTS OFF) (VALUES ($1, $2)) - f | 1 | EXPLAIN (COSTS OFF) (VALUES ($1, $2)); - t | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab - f | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab; - t | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (($1)) - f | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (($1)); - t | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($1, $2) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) - f | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($1, $2) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id); - t | 1 | EXPLAIN (COSTS OFF) SELECT $1 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1 UNION SELECT $2 - f | 1 | EXPLAIN (COSTS OFF) SELECT $1 UNION SELECT $2; - f | 1 | EXPLAIN (COSTS OFF) SELECT $1; - t | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab - f | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab; - t | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 WHERE x = $2 - f | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 WHERE x = $2; - t | 1 | EXPLAIN (COSTS OFF) VALUES ($1) - f | 1 | EXPLAIN (COSTS OFF) VALUES ($1); - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(23 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN - top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) SELECT 1; QUERY PLAN ------------ @@ -332,33 +266,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+-------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2) - t | 1 | EXPLAIN (COSTS OFF) (TABLE test_table) - t | 1 | EXPLAIN (COSTS OFF) (VALUES ($1, $2)) - t | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab - t | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (($1)) - t | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($1, $2) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) - t | 1 | EXPLAIN (COSTS OFF) SELECT $1 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1 UNION SELECT $2 - t | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab - t | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 WHERE x = $2 - t | 1 | EXPLAIN (COSTS OFF) VALUES ($1) - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(12 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN - all-level tracking with multi-statement strings. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- SELECT queries EXPLAIN (COSTS OFF) SELECT 1\; EXPLAIN (COSTS OFF) SELECT 1, 2; QUERY PLAN @@ -405,29 +322,14 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+--------------------------------------------------------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3) - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3) UNION SELECT $4, $5, $6 - f | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3); EXPLAIN (COSTS OFF) (SELECT 1, 2, 3, 4); - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3, $4) - f | 1 | EXPLAIN (COSTS OFF) (SELECT 1, 2, 3); EXPLAIN (COSTS OFF) (SELECT $1, $2, $3, $4); - t | 1 | EXPLAIN (COSTS OFF) SELECT $1 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2 UNION SELECT $3, $4 - f | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2 UNION SELECT $3, $4; EXPLAIN (COSTS OFF) (SELECT 1, 2, 3) UNION SELECT 3, 4, 5; - f | 1 | EXPLAIN (COSTS OFF) SELECT $1; EXPLAIN (COSTS OFF) SELECT 1, 2; - f | 1 | EXPLAIN (COSTS OFF) SELECT 1, 2 UNION SELECT 3, 4; EXPLAIN (COSTS OFF) (SELECT $1, $2, $3) UNION SELECT $4, $5, $6; - f | 1 | EXPLAIN (COSTS OFF) SELECT 1; EXPLAIN (COSTS OFF) SELECT $1, $2; - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(13 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Most DMLs EXPLAIN (COSTS OFF) TABLE stats_track_tab\; EXPLAIN (COSTS OFF) (TABLE test_table); QUERY PLAN @@ -494,37 +396,14 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+---------------------------------------------------------------------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) (TABLE test_table) - t | 1 | EXPLAIN (COSTS OFF) (VALUES ($1, $2)) - t | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab - t | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab WHERE x = $1 - f | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab; EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab WHERE x = $1; - f | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab; EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab WHERE x = 1; - t | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES ($1), ($2) - t | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (($1)) - f | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (($1)); EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (1), (2); - f | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES ((1)); EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES ($1), ($2); - t | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab - f | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab; EXPLAIN (COSTS OFF) (TABLE test_table); - f | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab; EXPLAIN (COSTS OFF) (TABLE test_table); - t | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 - t | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 WHERE x = $2 - f | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 WHERE x = $2; EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = 1; - f | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = 1 WHERE x = 1; EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1; - t | 1 | EXPLAIN (COSTS OFF) VALUES ($1) - f | 1 | EXPLAIN (COSTS OFF) VALUES ($1); EXPLAIN (COSTS OFF) (VALUES (1, 2)); - f | 1 | EXPLAIN (COSTS OFF) VALUES (1); EXPLAIN (COSTS OFF) (VALUES ($1, $2)); - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(21 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- MERGE, worth its own. EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab USING (SELECT id FROM generate_series(1, 10) id) ON x = id @@ -547,32 +426,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------------------------------------------------ - t | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($1, $2) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) - f | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($1, $2) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id); EXPLAIN (COSTS OFF) SELECT 1, 2, 3, 4, 5; - f | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series(1, 10) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id); EXPLAIN (COSTS OFF) SELECT $1, $2, $3, $4, $5; - t | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2, $3, $4, $5 - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN - top-level tracking with multi-statement strings. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) SELECT 1\; EXPLAIN (COSTS OFF) SELECT 1, 2; QUERY PLAN ------------ @@ -696,38 +559,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------------------------------------------------------------ - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3) - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3) UNION SELECT $4, $5, $6 - t | 1 | EXPLAIN (COSTS OFF) (SELECT $1, $2, $3, $4) - t | 1 | EXPLAIN (COSTS OFF) (TABLE test_table) - t | 1 | EXPLAIN (COSTS OFF) (VALUES ($1, $2)) - t | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab - t | 1 | EXPLAIN (COSTS OFF) DELETE FROM stats_track_tab WHERE x = $1 - t | 1 | EXPLAIN (COSTS OFF) INSERT INTO stats_track_tab VALUES (($1)) - t | 1 | EXPLAIN (COSTS OFF) MERGE INTO stats_track_tab USING (SELECT id FROM generate_series($1, $2) id) ON x = id+ - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) - t | 1 | EXPLAIN (COSTS OFF) SELECT $1 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2 UNION SELECT $3, $4 - t | 1 | EXPLAIN (COSTS OFF) SELECT $1, $2, $3, $4, $5 - t | 1 | EXPLAIN (COSTS OFF) TABLE stats_track_tab - t | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 - t | 1 | EXPLAIN (COSTS OFF) UPDATE stats_track_tab SET x = $1 WHERE x = $2 - t | 1 | EXPLAIN (COSTS OFF) VALUES ($1) - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(18 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN with CTEs - all-level tracking SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) WITH a AS (SELECT 4) SELECT 1; QUERY PLAN ------------ @@ -789,39 +630,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) (WITH a AS (SELECT $1) (SELECT $2, $3)) - f | 1 | EXPLAIN (COSTS OFF) (WITH a AS (SELECT $1) (SELECT $2, $3)); - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) DELETE FROM stats_track_tab - f | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) DELETE FROM stats_track_tab; - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) INSERT INTO stats_track_tab VALUES (($2)) - f | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) INSERT INTO stats_track_tab VALUES (($2)); - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($2, $3) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) - f | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($2, $3) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id); - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) SELECT $2 - f | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) SELECT $2; - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) UPDATE stats_track_tab SET x = $2 WHERE x = $3 - f | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) UPDATE stats_track_tab SET x = $2 WHERE x = $3; - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (select $1) SELECT $2 UNION SELECT $3 - f | 1 | EXPLAIN (COSTS OFF) WITH a AS (select $1) SELECT $2 UNION SELECT $3; - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(15 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN with CTEs - top-level tracking SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) WITH a AS (SELECT 4) SELECT 1; QUERY PLAN ------------ @@ -883,29 +701,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------------------------------------------ - t | 1 | EXPLAIN (COSTS OFF) (WITH a AS (SELECT $1) (SELECT $2, $3)) - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) DELETE FROM stats_track_tab - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) INSERT INTO stats_track_tab VALUES (($2)) - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) MERGE INTO stats_track_tab + - | | USING (SELECT id FROM generate_series($2, $3) id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) SELECT $2 - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (SELECT $1) UPDATE stats_track_tab SET x = $2 WHERE x = $3 - t | 1 | EXPLAIN (COSTS OFF) WITH a AS (select $1) SELECT $2 UNION SELECT $3 - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(8 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- Explain analyze, all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT 100; QUERY PLAN ----------------------------------- @@ -921,25 +726,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------------------------------- - t | 1 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) + - | | DECLARE foocur CURSOR FOR SELECT * FROM stats_track_tab - f | 1 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) + - | | DECLARE foocur CURSOR FOR SELECT * FROM stats_track_tab; - t | 1 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT $1 - f | 1 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT $1; - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- Explain analyze, top tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT 100; QUERY PLAN ----------------------------------- @@ -955,135 +751,99 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------------------------------ - t | 1 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) + - | | DECLARE foocur CURSOR FOR SELECT * FROM stats_track_tab - t | 1 | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT $1 - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- Create Materialized View, all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE MATERIALIZED VIEW pgss_materialized_view AS SELECT * FROM generate_series(1, 5) as id; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+---------------------------------------------------- - t | 1 | CREATE MATERIALIZED VIEW pgss_materialized_view AS+ - | | SELECT * FROM generate_series($1, $2) as id - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- CREATE MATERIALIZED VIEW, top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE MATERIALIZED VIEW pgss_materialized_view_2 AS SELECT * FROM generate_series(1, 5) as id; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+------------------------------------------------------ - t | 1 | CREATE MATERIALIZED VIEW pgss_materialized_view_2 AS+ - | | SELECT * FROM generate_series($1, $2) as id - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- REFRESH MATERIALIZED VIEW, all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. REFRESH MATERIALIZED VIEW pgss_materialized_view; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+---------------------------------------------------- - t | 1 | REFRESH MATERIALIZED VIEW pgss_materialized_view - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- REFRESH MATERIALIZED VIEW, top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. REFRESH MATERIALIZED VIEW pgss_materialized_view; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+---------------------------------------------------- - t | 1 | REFRESH MATERIALIZED VIEW pgss_materialized_view - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- CREATE TABLE AS, all-level tracking. SET pg_stat_statements.track = 'all'; PREPARE test_prepare_pgss AS select generate_series(1, 10); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE TEMPORARY TABLE pgss_ctas_1 AS SELECT 1; CREATE TEMPORARY TABLE pgss_ctas_2 AS EXECUTE test_prepare_pgss; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+----------------------------------------------------------------- - t | 1 | CREATE TEMPORARY TABLE pgss_ctas_1 AS SELECT $1 - f | 1 | CREATE TEMPORARY TABLE pgss_ctas_1 AS SELECT $1; - t | 1 | CREATE TEMPORARY TABLE pgss_ctas_2 AS EXECUTE test_prepare_pgss - f | 1 | PREPARE test_prepare_pgss AS select generate_series($1, $2) - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- CREATE TABLE AS, top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE TEMPORARY TABLE pgss_ctas_3 AS SELECT 1; CREATE TEMPORARY TABLE pgss_ctas_4 AS EXECUTE test_prepare_pgss; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+----------------------------------------------------------------- - t | 1 | CREATE TEMPORARY TABLE pgss_ctas_3 AS SELECT $1 - t | 1 | CREATE TEMPORARY TABLE pgss_ctas_4 AS EXECUTE test_prepare_pgss - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN with CREATE TABLE AS - all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) CREATE TEMPORARY TABLE pgss_explain_ctas AS SELECT 1; QUERY PLAN ------------ @@ -1092,21 +852,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+---------------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) CREATE TEMPORARY TABLE pgss_explain_ctas AS SELECT $1 - f | 1 | EXPLAIN (COSTS OFF) CREATE TEMPORARY TABLE pgss_explain_ctas AS SELECT $1; - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- EXPLAIN with CREATE TABLE AS - top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. EXPLAIN (COSTS OFF) CREATE TEMPORARY TABLE pgss_explain_ctas AS SELECT 1; QUERY PLAN ------------ @@ -1115,20 +870,16 @@ SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+--------------------------------------------------------------------------- - t | 1 | EXPLAIN (COSTS OFF) CREATE TEMPORARY TABLE pgss_explain_ctas AS SELECT $1 - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- DECLARE CURSOR, all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. BEGIN; DECLARE FOOCUR CURSOR FOR SELECT * from stats_track_tab; FETCH FORWARD 1 FROM foocur; @@ -1140,25 +891,16 @@ COMMIT; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+---------------------------------------------------------- - t | 1 | BEGIN - t | 1 | CLOSE foocur - t | 1 | COMMIT - t | 1 | DECLARE FOOCUR CURSOR FOR SELECT * from stats_track_tab - f | 1 | DECLARE FOOCUR CURSOR FOR SELECT * from stats_track_tab; - t | 1 | FETCH FORWARD $1 FROM foocur - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(7 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- DECLARE CURSOR, top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. BEGIN; DECLARE FOOCUR CURSOR FOR SELECT * FROM stats_track_tab; FETCH FORWARD 1 FROM foocur; @@ -1170,24 +912,16 @@ COMMIT; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+--------------------------------------------------------- - t | 1 | BEGIN - t | 1 | CLOSE foocur - t | 1 | COMMIT - t | 1 | DECLARE FOOCUR CURSOR FOR SELECT * FROM stats_track_tab - t | 1 | FETCH FORWARD $1 FROM foocur - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(6 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- COPY - all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. COPY (SELECT 1) TO stdout; 1 COPY (SELECT 1 UNION SELECT 2) TO stdout; @@ -1207,35 +941,16 @@ 2 SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+----------------------------------------------------------------------------- - f | 1 | COPY (DELETE FROM stats_track_tab WHERE x = $1 RETURNING x) TO stdout - t | 1 | COPY (DELETE FROM stats_track_tab WHERE x = 2 RETURNING x) TO stdout - f | 1 | COPY (INSERT INTO stats_track_tab (x) VALUES ($1) RETURNING x) TO stdout - t | 1 | COPY (INSERT INTO stats_track_tab (x) VALUES (1) RETURNING x) TO stdout - f | 1 | COPY (MERGE INTO stats_track_tab USING (SELECT $1 id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) RETURNING x) TO stdout - t | 1 | COPY (MERGE INTO stats_track_tab USING (SELECT 1 id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) RETURNING x) TO stdout - f | 1 | COPY (SELECT $1 UNION SELECT $2) TO stdout - f | 1 | COPY (SELECT $1) TO stdout - t | 1 | COPY (SELECT 1 UNION SELECT 2) TO stdout - t | 1 | COPY (SELECT 1) TO stdout - f | 1 | COPY (UPDATE stats_track_tab SET x = $1 WHERE x = $2 RETURNING x) TO stdout - t | 1 | COPY (UPDATE stats_track_tab SET x = 2 WHERE x = 1 RETURNING x) TO stdout - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(13 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- COPY - top-level tracking. SET pg_stat_statements.track = 'top'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. COPY (SELECT 1) TO stdout; 1 COPY (SELECT 1 UNION SELECT 2) TO stdout; @@ -1255,28 +970,17 @@ 2 SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | query -----------+-------+--------------------------------------------------------------------------- - t | 1 | COPY (DELETE FROM stats_track_tab WHERE x = 2 RETURNING x) TO stdout - t | 1 | COPY (INSERT INTO stats_track_tab (x) VALUES (1) RETURNING x) TO stdout - t | 1 | COPY (MERGE INTO stats_track_tab USING (SELECT 1 id) ON x = id + - | | WHEN MATCHED THEN UPDATE SET x = id + - | | WHEN NOT MATCHED THEN INSERT (x) VALUES (id) RETURNING x) TO stdout - t | 1 | COPY (SELECT 1 UNION SELECT 2) TO stdout - t | 1 | COPY (SELECT 1) TO stdout - t | 1 | COPY (UPDATE stats_track_tab SET x = 2 WHERE x = 1 RETURNING x) TO stdout - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(7 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- DO block - top-level tracking without utility. SET pg_stat_statements.track = 'top'; SET pg_stat_statements.track_utility = FALSE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. DELETE FROM stats_track_tab; DO $$ BEGIN @@ -1289,20 +993,16 @@ END; $$; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C", toplevel; - toplevel | calls | query -----------+-------+---------------------------------------------------- - t | 1 | DELETE FROM stats_track_tab - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- DO block - all-level tracking without utility. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. DELETE FROM stats_track_tab; DO $$ BEGIN @@ -1315,25 +1015,19 @@ END; $$; SELECT toplevel, calls, query FROM pg_stat_statements ORDER BY query COLLATE "C", toplevel; - toplevel | calls | query -----------+-------+---------------------------------------------------- - f | 1 | DELETE FROM stats_track_tab - t | 1 | DELETE FROM stats_track_tab - f | 1 | SELECT $1::TEXT - t | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, query FROM pg_stat_statements + ^ -- DO block --- multiple inner queries with separators SET pg_stat_statements.track = 'all'; SET pg_stat_statements.track_utility = TRUE; CREATE TABLE pgss_do_util_tab_1 (a int); CREATE TABLE pgss_do_util_tab_2 (a int); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. DO $$ DECLARE BEGIN EXECUTE 'CREATE TABLE pgss_do_table (id INT); DROP TABLE pgss_do_table'; @@ -1342,20 +1036,14 @@ SELECT toplevel, calls, rows, query FROM pg_stat_statements WHERE toplevel IS FALSE ORDER BY query COLLATE "C"; - toplevel | calls | rows | query -----------+-------+------+------------------------------------- - f | 1 | 0 | CREATE TABLE pgss_do_table (id INT) - f | 1 | 0 | DROP TABLE pgss_do_table - f | 1 | 0 | SELECT a FROM pgss_do_util_tab_1 - f | 1 | 0 | SELECT a FROM pgss_do_util_tab_2 -(4 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, rows, query FROM pg_stat_statements + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Note the extra semicolon at the end of the query. DO $$ DECLARE BEGIN @@ -1365,24 +1053,18 @@ SELECT toplevel, calls, rows, query FROM pg_stat_statements WHERE toplevel IS FALSE ORDER BY query COLLATE "C"; - toplevel | calls | rows | query -----------+-------+------+------------------------------------- - f | 1 | 0 | CREATE TABLE pgss_do_table (id INT) - f | 1 | 0 | DROP TABLE pgss_do_table - f | 1 | 0 | SELECT a FROM pgss_do_util_tab_1 - f | 1 | 0 | SELECT a FROM pgss_do_util_tab_2 -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, rows, query FROM pg_stat_statements + ^ DROP TABLE pgss_do_util_tab_1, pgss_do_util_tab_2; -- PL/pgSQL function - top-level tracking. SET pg_stat_statements.track = 'top'; SET pg_stat_statements.track_utility = FALSE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$ DECLARE r INTEGER; @@ -1418,13 +1100,9 @@ (1 row) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 2 | 2 | SELECT PLUS_ONE($1) - 2 | 2 | SELECT PLUS_TWO($1) - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ -- immutable SQL function --- can be executed at plan time CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS $$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL; @@ -1441,23 +1119,16 @@ (1 row) SELECT toplevel, calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | rows | query -----------+-------+------+------------------------------------------------------------------------------ - t | 2 | 2 | SELECT PLUS_ONE($1) - t | 2 | 2 | SELECT PLUS_THREE($1) - t | 2 | 2 | SELECT PLUS_TWO($1) - t | 1 | 3 | SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C" - t | 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, rows, query FROM pg_stat_statements ... + ^ -- PL/pgSQL function - all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- we drop and recreate the functions to avoid any caching funnies DROP FUNCTION PLUS_ONE(INTEGER); DROP FUNCTION PLUS_TWO(INTEGER); @@ -1498,14 +1169,9 @@ (1 row) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 2 | 2 | SELECT (i + $2)::INTEGER LIMIT $3 - 2 | 2 | SELECT PLUS_ONE($1) - 2 | 2 | SELECT PLUS_TWO($1) - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ -- immutable SQL function --- can be executed at plan time CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS $$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL; @@ -1522,23 +1188,14 @@ (1 row) SELECT toplevel, calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | rows | query -----------+-------+------+------------------------------------------------------------------------------ - f | 2 | 2 | SELECT (i + $2)::INTEGER LIMIT $3 - t | 2 | 2 | SELECT PLUS_ONE($1) - t | 2 | 2 | SELECT PLUS_THREE($1) - t | 2 | 2 | SELECT PLUS_TWO($1) - t | 1 | 4 | SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C" - f | 2 | 2 | SELECT i + $2 LIMIT $3 - t | 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(7 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, rows, query FROM pg_stat_statements ... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- planner - all-level tracking. SET pg_stat_statements.track_planning = TRUE; -- Release all cached plans before the first function call. This matters @@ -1562,24 +1219,17 @@ SELECT toplevel, calls, rows, plans, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | rows | plans | query -----------+-------+------+-------+-------------------------------------------------------------------- - t | 2 | 2 | 2 | SELECT PLUS_THREE($1) - f | 2 | 2 | 2 | SELECT i + $2 LIMIT $3 - t | 1 | 1 | 0 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - t | 0 | 0 | 1 | SELECT toplevel, calls, rows, plans, query FROM pg_stat_statements+ - | | | | ORDER BY query COLLATE "C" -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, rows, plans, query FROM pg_stat_stat... + ^ RESET pg_stat_statements.track_planning; -- AFTER trigger SQL (ExecutorFinish) - all-level tracking. SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE TABLE test_trigger (id int, name text); CREATE TABLE audit_table (table_name text, action text, row_id int); CREATE OR REPLACE FUNCTION audit_trigger_func() @@ -1596,13 +1246,9 @@ INSERT INTO test_trigger VALUES (2, 'test2'); SELECT toplevel, calls, rows, plans, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - toplevel | calls | rows | plans | query -----------+-------+------+-------+----------------------------------------------------- - f | 2 | 2 | 0 | INSERT INTO audit_table VALUES ($15, TG_OP, NEW.id) - t | 2 | 2 | 0 | INSERT INTO test_trigger VALUES ($1, $2) - t | 1 | 1 | 0 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT toplevel, calls, rows, plans, query FROM pg_stat_stat... + ^ DROP TRIGGER audit_after_trigger ON test_trigger; DROP FUNCTION audit_trigger_func(); DROP TABLE audit_table, test_trigger; @@ -1611,11 +1257,10 @@ -- SET pg_stat_statements.track = 'none'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT 1 AS "one"; one ----- @@ -1629,13 +1274,11 @@ (1 row) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+------- -(0 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/planning.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/planning.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/planning.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/planning.out 2026-05-30 02:44:49.349190400 +0000 @@ -4,11 +4,10 @@ -- These tests require track_planning to be enabled. SET pg_stat_statements.track_planning = TRUE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- -- [re]plan counting -- @@ -59,30 +58,20 @@ SELECT plans, calls, rows, query FROM pg_stat_statements WHERE query NOT LIKE 'PREPARE%' ORDER BY query COLLATE "C"; - plans | calls | rows | query --------+-------+------+---------------------------------------------------------- - 0 | 1 | 0 | ALTER TABLE stats_plan_test ADD COLUMN x int - 0 | 1 | 0 | CREATE TABLE stats_plan_test () - 3 | 3 | 3 | SELECT $1 - 0 | 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 1 | 0 | 0 | SELECT plans, calls, rows, query FROM pg_stat_statements+ - | | | WHERE query NOT LIKE $1 ORDER BY query COLLATE "C" -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT plans, calls, rows, query FROM pg_stat_statements + ^ -- for the prepared statement we expect at least one replan, but cache -- invalidations could force more SELECT plans >= 2 AND plans <= calls AS plans_ok, calls, rows, query FROM pg_stat_statements WHERE query LIKE 'PREPARE%' ORDER BY query COLLATE "C"; - plans_ok | calls | rows | query -----------+-------+------+------------------------------------------------------- - t | 4 | 4 | PREPARE prep1 AS SELECT COUNT(*) FROM stats_plan_test -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...ans <= calls AS plans_ok, calls, rows, query FROM pg_stat_st... + ^ -- Cleanup DROP TABLE stats_plan_test; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/user_activity.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/user_activity.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/user_activity.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/user_activity.out 2026-05-30 02:44:49.473190581 +0000 @@ -3,11 +3,10 @@ -- SET pg_stat_statements.track_utility = TRUE; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CREATE ROLE regress_stats_user1; CREATE ROLE regress_stats_user2; SET ROLE regress_stats_user1; @@ -39,46 +38,21 @@ RESET ROLE; SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows -----------------------------------------------------+-------+------ - CREATE ROLE regress_stats_user1 | 1 | 0 - CREATE ROLE regress_stats_user2 | 1 | 0 - RESET ROLE | 2 | 0 - SELECT $1 AS "ONE" | 1 | 1 - SELECT $1 AS "ONE" | 1 | 1 - SELECT $1+$2 AS "TWO" | 1 | 1 - SELECT $1+$2 AS "TWO" | 1 | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - SET ROLE regress_stats_user1 | 1 | 0 - SET ROLE regress_stats_user2 | 1 | 0 -(10 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls, rows FROM pg_stat_statements ORDER BY q... + ^ -- -- Don't reset anything if any of the parameter is NULL -- SELECT pg_stat_statements_reset(NULL) IS NOT NULL AS t; - t ---- - f -(1 row) - -SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows -------------------------------------------------------------------------------+-------+------ - CREATE ROLE regress_stats_user1 | 1 | 0 - CREATE ROLE regress_stats_user2 | 1 | 0 - RESET ROLE | 2 | 0 - SELECT $1 AS "ONE" | 1 | 1 - SELECT $1 AS "ONE" | 1 | 1 - SELECT $1+$2 AS "TWO" | 1 | 1 - SELECT $1+$2 AS "TWO" | 1 | 1 - SELECT pg_stat_statements_reset($1) IS NOT NULL AS t | 1 | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 1 | 10 - SET ROLE regress_stats_user1 | 1 | 0 - SET ROLE regress_stats_user2 | 1 | 0 -(12 rows) - +ERROR: function pg_stat_statements_reset(unknown) does not exist +LINE 1: SELECT pg_stat_statements_reset(NULL) IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. +SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls, rows FROM pg_stat_statements ORDER BY q... + ^ -- -- remove query ('SELECT $1+$2 AS "TWO"') executed by regress_stats_user2 -- in the current_database @@ -89,121 +63,57 @@ (SELECT s.queryid FROM pg_stat_statements AS s WHERE s.query = 'SELECT $1+$2 AS "TWO"' LIMIT 1)) IS NOT NULL AS t; - t ---- - t -(1 row) - -SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows -----------------------------------------------------------------------------------+-------+------ - CREATE ROLE regress_stats_user1 | 1 | 0 - CREATE ROLE regress_stats_user2 | 1 | 0 - RESET ROLE | 2 | 0 - SELECT $1 AS "ONE" | 1 | 1 - SELECT $1 AS "ONE" | 1 | 1 - SELECT $1+$2 AS "TWO" | 1 | 1 - SELECT pg_stat_statements_reset( +| 1 | 1 - (SELECT r.oid FROM pg_roles AS r WHERE r.rolname = $1), +| | - (SELECT d.oid FROM pg_database As d where datname = current_database()),+| | - (SELECT s.queryid FROM pg_stat_statements AS s +| | - WHERE s.query = $2 LIMIT $3)) +| | - IS NOT NULL AS t | | - SELECT pg_stat_statements_reset($1) IS NOT NULL AS t | 1 | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 2 | 22 - SET ROLE regress_stats_user1 | 1 | 0 - SET ROLE regress_stats_user2 | 1 | 0 -(12 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 4: (SELECT s.queryid FROM pg_stat_statements AS s + ^ +SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls, rows FROM pg_stat_statements ORDER BY q... + ^ -- -- remove query ('SELECT $1 AS "ONE"') executed by two users -- SELECT pg_stat_statements_reset(0,0,s.queryid) IS NOT NULL AS t FROM pg_stat_statements AS s WHERE s.query = 'SELECT $1 AS "ONE"'; - t ---- - t - t -(2 rows) - -SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows -----------------------------------------------------------------------------------+-------+------ - CREATE ROLE regress_stats_user1 | 1 | 0 - CREATE ROLE regress_stats_user2 | 1 | 0 - RESET ROLE | 2 | 0 - SELECT $1+$2 AS "TWO" | 1 | 1 - SELECT pg_stat_statements_reset( +| 1 | 1 - (SELECT r.oid FROM pg_roles AS r WHERE r.rolname = $1), +| | - (SELECT d.oid FROM pg_database As d where datname = current_database()),+| | - (SELECT s.queryid FROM pg_stat_statements AS s +| | - WHERE s.query = $2 LIMIT $3)) +| | - IS NOT NULL AS t | | - SELECT pg_stat_statements_reset($1) IS NOT NULL AS t | 1 | 1 - SELECT pg_stat_statements_reset($1,$2,s.queryid) IS NOT NULL AS t +| 1 | 2 - FROM pg_stat_statements AS s WHERE s.query = $3 | | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 3 | 34 - SET ROLE regress_stats_user1 | 1 | 0 - SET ROLE regress_stats_user2 | 1 | 0 -(11 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 2: FROM pg_stat_statements AS s WHERE s.query = 'SELECT $1 AS ... + ^ +SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls, rows FROM pg_stat_statements ORDER BY q... + ^ -- -- remove query of a user (regress_stats_user1) -- SELECT pg_stat_statements_reset(r.oid) IS NOT NULL AS t FROM pg_roles AS r WHERE r.rolname = 'regress_stats_user1'; - t ---- - t -(1 row) - -SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows -----------------------------------------------------------------------------------+-------+------ - CREATE ROLE regress_stats_user1 | 1 | 0 - CREATE ROLE regress_stats_user2 | 1 | 0 - RESET ROLE | 2 | 0 - SELECT pg_stat_statements_reset( +| 1 | 1 - (SELECT r.oid FROM pg_roles AS r WHERE r.rolname = $1), +| | - (SELECT d.oid FROM pg_database As d where datname = current_database()),+| | - (SELECT s.queryid FROM pg_stat_statements AS s +| | - WHERE s.query = $2 LIMIT $3)) +| | - IS NOT NULL AS t | | - SELECT pg_stat_statements_reset($1) IS NOT NULL AS t | 1 | 1 - SELECT pg_stat_statements_reset($1,$2,s.queryid) IS NOT NULL AS t +| 1 | 2 - FROM pg_stat_statements AS s WHERE s.query = $3 | | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - SELECT pg_stat_statements_reset(r.oid) IS NOT NULL AS t +| 1 | 1 - FROM pg_roles AS r WHERE r.rolname = $1 | | - SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" | 4 | 45 - SET ROLE regress_stats_user2 | 1 | 0 -(10 rows) - +ERROR: function pg_stat_statements_reset(oid) does not exist +LINE 1: SELECT pg_stat_statements_reset(r.oid) IS NOT NULL AS t + ^ +DETAIL: There is no function of that name. +SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls, rows FROM pg_stat_statements ORDER BY q... + ^ -- -- reset all -- SELECT pg_stat_statements_reset(0,0,0) IS NOT NULL AS t; - t ---- - t -(1 row) - -SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows ----------------------------------------------------------+-------+------ - SELECT pg_stat_statements_reset(0,0,0) IS NOT NULL AS t | 1 | 1 -(1 row) - +ERROR: function pg_stat_statements_reset(integer, integer, integer) does not exist +LINE 1: SELECT pg_stat_statements_reset(0,0,0) IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. +SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls, rows FROM pg_stat_statements ORDER BY q... + ^ -- -- cleanup -- DROP ROLE regress_stats_user1; DROP ROLE regress_stats_user2; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/wal.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/wal.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/wal.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/wal.out 2026-05-30 02:44:49.565190715 +0000 @@ -13,18 +13,11 @@ wal_records > 0 as wal_records_generated, wal_records >= rows as wal_records_ge_rows FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls | rows | wal_bytes_generated | wal_records_generated | wal_records_ge_rows ---------------------------------------------------------------+-------+------+---------------------+-----------------------+--------------------- - DELETE FROM pgss_wal_tab WHERE a > $1 | 1 | 1 | t | t | t - INSERT INTO pgss_wal_tab VALUES(generate_series($1, $2), $3) | 1 | 10 | t | t | t - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 | f | f | f - SET pg_stat_statements.track_utility = $1 | 1 | 0 | f | f | t - UPDATE pgss_wal_tab SET b = $1 WHERE a > $2 | 1 | 3 | t | t | t -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 5: FROM pg_stat_statements ORDER BY query COLLATE "C"; + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/entry_timestamp.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/entry_timestamp.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/entry_timestamp.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/entry_timestamp.out 2026-05-30 02:44:49.649190837 +0000 @@ -20,12 +20,9 @@ WHERE query LIKE '%STMTTS%' GROUP BY stats_since >= :'ref_ts' ORDER BY stats_since >= :'ref_ts'; - ?column? | count -----------+------- - f | 1 - t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...ri May 29 19:44:49.64477 2026 PDT', count(*) FROM pg_stat_st... + ^ SELECT now() AS ref_ts \gset SELECT count(*) as total, @@ -43,15 +40,16 @@ ) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE '%STMTTS%'; - total | minmax_plan_zero | minmax_exec_zero | minmax_stats_since_after_ref | stats_since_after_ref --------+------------------+------------------+------------------------------+----------------------- - 2 | 0 | 0 | 0 | 0 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 15: FROM pg_stat_statements + ^ -- Perform single min/max reset SELECT pg_stat_statements_reset(0, 0, queryid, true) AS minmax_reset_ts FROM pg_stat_statements WHERE query LIKE '%STMTTS1%' \gset +ERROR: relation "pg_stat_statements" does not exist +LINE 2: FROM pg_stat_statements + ^ -- check SELECT count(*) as total, @@ -69,34 +67,31 @@ ) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE '%STMTTS%'; - total | minmax_plan_zero | minmax_exec_zero | minmax_stats_since_after_ref | stats_since_after_ref --------+------------------+------------------+------------------------------+----------------------- - 2 | 1 | 1 | 1 | 0 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 15: FROM pg_stat_statements + ^ -- check minmax reset timestamps SELECT query, minmax_stats_since = :'minmax_reset_ts' AS reset_ts_match FROM pg_stat_statements WHERE query LIKE '%STMTTS%' ORDER BY query COLLATE "C"; - query | reset_ts_match ----------------------------+---------------- - SELECT $1 AS "STMTTS1" | t - SELECT $1,$2 AS "STMTTS2" | f -(2 rows) - +ERROR: syntax error at or near ":" +LINE 2: query, minmax_stats_since = :'minmax_reset_ts' AS reset_ts_m... + ^ -- check that minmax reset does not set stats_reset SELECT stats_reset = :'minmax_reset_ts' AS stats_reset_ts_match FROM pg_stat_statements_info; - stats_reset_ts_match ----------------------- - f -(1 row) - +ERROR: syntax error at or near ":" +LINE 2: stats_reset = :'minmax_reset_ts' AS stats_reset_ts_match + ^ -- Perform common min/max reset SELECT pg_stat_statements_reset(0, 0, 0, true) AS minmax_reset_ts \gset +ERROR: function pg_stat_statements_reset(integer, integer, integer, boolean) does not exist +LINE 1: SELECT pg_stat_statements_reset(0, 0, 0, true) AS minmax_res... + ^ +DETAIL: There is no function of that name. -- check again SELECT count(*) as total, @@ -117,11 +112,9 @@ ) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE '%STMTTS%'; - total | minmax_plan_zero | minmax_exec_zero | minmax_ts_after_ref | minmax_ts_match | stats_since_after_ref --------+------------------+------------------+---------------------+-----------------+----------------------- - 2 | 2 | 2 | 2 | 2 | 0 -(1 row) - +ERROR: syntax error at or near ":" +LINE 13: WHERE minmax_stats_since = :'minmax_reset_ts' + ^ -- Execute first query once more to check stats update SELECT 1 AS "STMTTS1"; STMTTS1 @@ -145,15 +138,12 @@ ) as stats_since_after_ref FROM pg_stat_statements WHERE query LIKE '%STMTTS%'; - total | minmax_exec_zero | minmax_ts_after_ref | stats_since_after_ref --------+------------------+---------------------+----------------------- - 2 | 1 | 2 | 0 -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 12: FROM pg_stat_statements + ^ -- Cleanup SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/privileges.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/privileges.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/privileges.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/privileges.out 2026-05-30 02:44:49.761191001 +0000 @@ -10,11 +10,10 @@ GRANT pg_read_all_stats TO regress_stats_user2; SET ROLE regress_stats_superuser; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT 1 AS "ONE"; ONE ----- @@ -36,13 +35,9 @@ SELECT r.rolname, ss.queryid <> 0 AS queryid_bool, ss.query, ss.calls, ss.rows FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = r.oid ORDER BY r.rolname, ss.query COLLATE "C", ss.calls, ss.rows; - rolname | queryid_bool | query | calls | rows --------------------------+--------------+----------------------------------------------------+-------+------ - regress_stats_superuser | t | SELECT $1 AS "ONE" | 1 | 1 - regress_stats_superuser | t | SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - regress_stats_user1 | t | SELECT $1+$2 AS "TWO" | 1 | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 2: FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = ... + ^ -- -- regress_stats_user1 has no privileges to read the query text or -- queryid of queries executed by others but can see statistics @@ -52,14 +47,9 @@ SELECT r.rolname, ss.queryid <> 0 AS queryid_bool, ss.query, ss.calls, ss.rows FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = r.oid ORDER BY r.rolname, ss.query COLLATE "C", ss.calls, ss.rows; - rolname | queryid_bool | query | calls | rows --------------------------+--------------+--------------------------+-------+------ - regress_stats_superuser | | | 1 | 1 - regress_stats_superuser | | | 1 | 1 - regress_stats_superuser | | | 1 | 3 - regress_stats_user1 | t | SELECT $1+$2 AS "TWO" | 1 | 1 -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 2: FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = ... + ^ -- -- regress_stats_user2, with pg_read_all_stats role privileges, can -- read all columns, including query text and queryid, of queries @@ -69,19 +59,9 @@ SELECT r.rolname, ss.queryid <> 0 AS queryid_bool, ss.query, ss.calls, ss.rows FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = r.oid ORDER BY r.rolname, ss.query COLLATE "C", ss.calls, ss.rows; - rolname | queryid_bool | query | calls | rows --------------------------+--------------+---------------------------------------------------------------------------------+-------+------ - regress_stats_superuser | t | SELECT $1 AS "ONE" | 1 | 1 - regress_stats_superuser | t | SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 | 1 - regress_stats_superuser | t | SELECT r.rolname, ss.queryid <> $1 AS queryid_bool, ss.query, ss.calls, ss.rows+| 1 | 3 - | | FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = r.oid +| | - | | ORDER BY r.rolname, ss.query COLLATE "C", ss.calls, ss.rows | | - regress_stats_user1 | t | SELECT $1+$2 AS "TWO" | 1 | 1 - regress_stats_user1 | t | SELECT r.rolname, ss.queryid <> $1 AS queryid_bool, ss.query, ss.calls, ss.rows+| 1 | 4 - | | FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = r.oid +| | - | | ORDER BY r.rolname, ss.query COLLATE "C", ss.calls, ss.rows | | -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 2: FROM pg_stat_statements ss JOIN pg_roles r ON ss.userid = ... + ^ -- -- cleanup -- @@ -90,8 +70,7 @@ DROP ROLE regress_stats_user1; DROP ROLE regress_stats_user2; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/extended.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/extended.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/extended.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/extended.out 2026-05-30 02:44:49.881191176 +0000 @@ -9,11 +9,10 @@ (1 row) SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT $1 \parse stmt1 SELECT $1, $2 \parse stmt2 SELECT $1, $2, $3 \parse stmt3 @@ -60,22 +59,16 @@ (1 row) SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | rows | query --------+------+---------------------------------------------------- - 3 | 3 | SELECT $1 - 2 | 2 | SELECT $1, $2 - 2 | 2 | SELECT $1, $2, $3 - 1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, rows, query FROM pg_stat_statements ORDER BY q... + ^ -- Various parameter numbering patterns -- Unique query IDs with parameter numbers switched. SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE ($1::int, 7) IN ((8, $2::int), ($3::int, 9)) \bind '1' '2' '3' \g -- (0 rows) @@ -97,23 +90,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls ---------------------------------------------------------------+------- - SELECT WHERE $1::int IN ($2 /*, ... */) | 1 - SELECT WHERE $1::int IN ($2 /*, ... */) | 1 - SELECT WHERE $1::int IN ($2 /*, ... */) | 1 - SELECT WHERE ($1::int, $4) IN (($5, $2::int), ($3::int, $6)) | 1 - SELECT WHERE ($2::int, $4) IN (($5, $3::int), ($1::int, $6)) | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(6 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Two groups of two queries with the same query ID. SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE '1'::int IN ($1::int, '2'::int) \bind '1' \g -- (1 row) @@ -131,19 +116,14 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT WHERE $1::int IN ($2 /*, ... */) | 2 - SELECT WHERE $1::int IN ($2 /*, ... */) | 2 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- no squashable list, the parameters id's are kept as-is SELECT WHERE $3 = $1 AND $2 = $4 \bind 1 2 1 2 \g -- @@ -155,10 +135,6 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -------------------------------------------------------------+------- - SELECT WHERE $1 IN ($2 /*, ... */) AND $3 = $4 AND $5 = $6 | 1 - SELECT WHERE $3 = $1 AND $2 = $4 | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/parallel.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/parallel.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/parallel.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/parallel.out 2026-05-30 02:44:50.053191426 +0000 @@ -9,11 +9,10 @@ SET max_parallel_workers_per_gather = 2; CREATE TABLE pgss_parallel_tab (a int); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT count(*) FROM pgss_parallel_tab; count ------- @@ -26,9 +25,7 @@ FROM pg_stat_statements WHERE query ~ 'SELECT count' ORDER BY query COLLATE "C"; - query | has_workers_to_launch | has_workers_launched -----------------------------------------+-----------------------+---------------------- - SELECT count(*) FROM pgss_parallel_tab | t | t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 4: FROM pg_stat_statements + ^ DROP TABLE pgss_parallel_tab; diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/plancache.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/plancache.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/plancache.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/plancache.out 2026-05-30 02:44:50.189191624 +0000 @@ -18,11 +18,10 @@ $$ LANGUAGE plpgsql; -- Prepared statements SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. PREPARE p1 AS SELECT $1 AS a; SET plan_cache_mode TO force_generic_plan; EXECUTE p1(1); @@ -40,21 +39,16 @@ SELECT calls, generic_plan_calls, custom_plan_calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | generic_plan_calls | custom_plan_calls | query --------+--------------------+-------------------+---------------------------------------------------- - 2 | 1 | 1 | PREPARE p1 AS SELECT $1 AS a - 1 | 0 | 0 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 2 | 0 | 0 | SET plan_cache_mode TO $1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...generic_plan_calls, custom_plan_calls, query FROM pg_stat_st... + ^ DEALLOCATE p1; -- Extended query protocol SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT $1 AS a \parse p1 SET plan_cache_mode TO force_generic_plan; \bind_named p1 1 @@ -74,22 +68,17 @@ SELECT calls, generic_plan_calls, custom_plan_calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | generic_plan_calls | custom_plan_calls | query --------+--------------------+-------------------+---------------------------------------------------- - 2 | 1 | 1 | SELECT $1 AS a - 1 | 0 | 0 | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 2 | 0 | 0 | SET plan_cache_mode TO $1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...generic_plan_calls, custom_plan_calls, query FROM pg_stat_st... + ^ \close_prepared p1 -- EXPLAIN [ANALYZE] EXECUTE SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. PREPARE p1 AS SELECT $1; SET plan_cache_mode TO force_generic_plan; EXPLAIN (COSTS OFF) EXECUTE p1(1); @@ -119,25 +108,18 @@ SELECT calls, generic_plan_calls, custom_plan_calls, toplevel, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | generic_plan_calls | custom_plan_calls | toplevel | query --------+--------------------+-------------------+----------+---------------------------------------------------------------------------------- - 2 | 0 | 0 | t | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) EXECUTE p1(1) - 2 | 0 | 0 | t | EXPLAIN (COSTS OFF) EXECUTE p1(1) - 4 | 2 | 2 | f | PREPARE p1 AS SELECT $1 - 1 | 0 | 0 | t | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 2 | 0 | 0 | t | SET plan_cache_mode TO $1 -(5 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...an_calls, custom_plan_calls, toplevel, query FROM pg_stat_st... + ^ RESET pg_stat_statements.track; DEALLOCATE p1; -- Functions/procedures SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SET plan_cache_mode TO force_generic_plan; SELECT select_one_func(1); select_one_func @@ -156,24 +138,18 @@ CALL select_one_proc(1); SELECT calls, generic_plan_calls, custom_plan_calls, toplevel, query FROM pg_stat_statements ORDER BY query COLLATE "C"; - calls | generic_plan_calls | custom_plan_calls | toplevel | query --------+--------------------+-------------------+----------+---------------------------------------------------- - 2 | 0 | 0 | t | CALL select_one_proc($1) - 1 | 0 | 0 | t | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 2 | 0 | 0 | t | SELECT select_one_func($1) - 2 | 0 | 0 | t | SET plan_cache_mode TO $1 -(4 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...an_calls, custom_plan_calls, toplevel, query FROM pg_stat_st... + ^ -- -- EXPLAIN [ANALYZE] EXECUTE + functions/procedures -- SET pg_stat_statements.track = 'all'; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SET plan_cache_mode TO force_generic_plan; EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT select_one_func(1); QUERY PLAN @@ -204,16 +180,9 @@ CALL select_one_proc(1); SELECT calls, generic_plan_calls, custom_plan_calls, toplevel, query FROM pg_stat_statements ORDER BY query COLLATE "C", toplevel; - calls | generic_plan_calls | custom_plan_calls | toplevel | query --------+--------------------+-------------------+----------+------------------------------------------------------------------------------------------------ - 2 | 0 | 0 | t | CALL select_one_proc($1) - 2 | 0 | 0 | t | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT select_one_func($1) - 4 | 0 | 0 | f | EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF, BUFFERS OFF) SELECT select_one_func($1); - 2 | 0 | 0 | t | EXPLAIN (COSTS OFF) SELECT select_one_func($1) - 1 | 0 | 0 | t | SELECT pg_stat_statements_reset() IS NOT NULL AS t - 2 | 0 | 0 | t | SET plan_cache_mode TO $1 -(6 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: ...an_calls, custom_plan_calls, toplevel, query FROM pg_stat_st... + ^ RESET pg_stat_statements.track; -- -- Procedure with internal ROLLBACK and the extended query protocol. @@ -226,11 +195,10 @@ END; $$ LANGUAGE plpgsql; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. CALL rollback_proc($1) \parse stmt_rollback \bind_named stmt_rollback 1 \g a @@ -247,11 +215,9 @@ SELECT calls, query FROM pg_stat_statements WHERE query LIKE '%rollback_proc%' ORDER BY query COLLATE "C"; - calls | query --------+------------------------ - 2 | CALL rollback_proc($1) -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT calls, query FROM pg_stat_statements + ^ DROP PROCEDURE rollback_proc; -- -- Cleanup diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/squashing.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/squashing.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/squashing.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/squashing.out 2026-05-30 02:44:50.565192173 +0000 @@ -7,11 +7,10 @@ CREATE TABLE test_squash (id int, data int); -- single element will not be squashed SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash WHERE id IN (1); id | data ----+------ @@ -24,20 +23,15 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN ($1) | 1 - SELECT ARRAY[$1] | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- more than 1 element in a list will be squashed SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash WHERE id IN (1, 2, 3); id | data ----+------ @@ -72,21 +66,16 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls --------------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN ($1 /*, ... */) | 3 - SELECT ARRAY[$1 /*, ... */] | 3 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- built-in functions will be squashed -- the IN and ARRAY forms of this statement will have the same queryId SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE 1 IN (1, int4(1), int4(2), 2); -- (1 row) @@ -96,19 +85,15 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT WHERE $1 IN ($2 /*, ... */) | 2 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- external parameters will be squashed SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash WHERE id IN ($1, $2, $3, $4, $5) \bind 1 2 3 4 5 ; id | data @@ -122,21 +107,16 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN ($1 /*, ... */) | 1 - SELECT * FROM test_squash WHERE id::text = ANY(ARRAY[$1 /*, ... */]) | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- prepared statements will also be squashed -- the IN and ARRAY forms of this statement will have the same queryId SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. PREPARE p1(int, int, int, int, int) AS SELECT * FROM test_squash WHERE id IN ($1, $2, $3, $4, $5); EXECUTE p1(1, 2, 3, 4, 5); @@ -154,21 +134,15 @@ DEALLOCATE p1; SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls --------------------------------------------------------+------- - DEALLOCATE $1 | 2 - PREPARE p1(int, int, int, int, int) AS +| 2 - SELECT * FROM test_squash WHERE id IN ($1 /*, ... */) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- More conditions in the query SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9) AND data = 2; id | data ----+------ @@ -200,19 +174,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls ----------------------------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN ($1 /*, ... */) AND data = $2 | 6 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Multiple squashed intervals SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8, 9) AND data IN (1, 2, 3, 4, 5, 6, 7, 8, 9); id | data @@ -250,27 +220,21 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls --------------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN ($1 /*, ... */)+| 6 - AND data IN ($2 /*, ... */) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- No constants squashing for OpExpr -- The IN and ARRAY forms of this statement will have the same queryId SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash WHERE id IN (1 + 1, 2 + 2, 3 + 3, 4 + 4, 5 + 5, 6 + 6, 7 + 7, 8 + 8, 9 + 9); id | data @@ -296,15 +260,9 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN +| 2 - ($1 + $2, $3 + $4, $5 + $6, $7 + $8, $9 + $10, $11 + $12, $13 + $14, $15 + $16, $17 + $18) | - SELECT * FROM test_squash WHERE id IN +| 2 - (@ $1, @ $2, @ $3, @ $4, @ $5, @ $6, @ $7, @ $8, @ $9) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- -- FuncExpr -- @@ -313,11 +271,10 @@ -- The casted ARRAY expressions will have the same queryId as the IN clause -- form of the query SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT data FROM test_float WHERE data IN (1, 2); data ------ @@ -369,21 +326,16 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls ---------------------------------------------------------------------+------- - SELECT data FROM test_float WHERE data = ANY(ARRAY[$1 /*, ... */]) | 3 - SELECT data FROM test_float WHERE data IN ($1 /*, ... */) | 7 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Numeric type, implicit cast is squashed CREATE TABLE test_squash_numeric (id int, data numeric(5, 2)); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_numeric WHERE data IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); id | data ----+------ @@ -395,21 +347,16 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls ---------------------------------------------------------------------------+------- - SELECT * FROM test_squash_numeric WHERE data = ANY(ARRAY[$1 /*, ... */]) | 1 - SELECT * FROM test_squash_numeric WHERE data IN ($1 /*, ... */) | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Bigint, implicit cast is squashed CREATE TABLE test_squash_bigint (id int, data bigint); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_bigint WHERE data IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); id | data ----+------ @@ -421,20 +368,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls --------------------------------------------------------------------------+------- - SELECT * FROM test_squash_bigint WHERE data = ANY(ARRAY[$1 /*, ... */]) | 1 - SELECT * FROM test_squash_bigint WHERE data IN ($1 /*, ... */) | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Bigint, explicit cast is squashed SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_bigint WHERE data IN (1::bigint, 2::bigint, 3::bigint, 4::bigint, 5::bigint, 6::bigint, 7::bigint, 8::bigint, 9::bigint, 10::bigint, 11::bigint); @@ -450,20 +392,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT * FROM test_squash_bigint WHERE data IN +| 2 - ($1 /*, ... */) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Bigint, long tokens with parenthesis, will not squash SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_bigint WHERE id IN (abs(100), abs(200), abs(300), abs(400), abs(500), abs(600), abs(700), abs(800), abs(900), abs(1000), ((abs(1100)))); @@ -479,21 +416,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls --------------------------------------------------------------------------+------- - SELECT * FROM test_squash_bigint WHERE id IN +| 2 - (abs($1), abs($2), abs($3), abs($4), abs($5), abs($6), abs($7),+| - abs($8), abs($9), abs($10), ((abs($11)))) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Multiple FuncExpr's. Will not squash SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE 1 IN (1::int::bigint::int, 2::int::bigint::int); -- (1 row) @@ -503,12 +434,9 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT WHERE $1 IN ($2 /*, ... */) | 2 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- -- CoerceViaIO -- @@ -545,11 +473,10 @@ CREATE TABLE test_squash_cast (id int, data casttesttype); -- Use the introduced type to construct a list of CoerceViaIO around Const SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_cast WHERE data IN (1::int4::casttesttype, 2::int4::casttesttype, 3::int4::casttesttype, 4::int4::casttesttype, 5::int4::casttesttype, 6::int4::casttesttype, @@ -569,21 +496,16 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT * FROM test_squash_cast WHERE data IN +| 2 - ($1 /*, ... */) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Some casting expression are simplified to Const CREATE TABLE test_squash_jsonb (id int, data jsonb); SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_jsonb WHERE data IN (('"1"')::jsonb, ('"2"')::jsonb, ('"3"')::jsonb, ('"4"')::jsonb, ('"5"')::jsonb, ('"6"')::jsonb, ('"7"')::jsonb, ('"8"')::jsonb, @@ -601,20 +523,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT * FROM test_squash_jsonb WHERE data IN +| 2 - ($1 /*, ... */) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- CoerceViaIO, SubLink instead of a Const. Will not squash SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT * FROM test_squash_jsonb WHERE data IN ((SELECT '"1"')::jsonb, (SELECT '"2"')::jsonb, (SELECT '"3"')::jsonb, (SELECT '"4"')::jsonb, (SELECT '"5"')::jsonb, (SELECT '"6"')::jsonb, @@ -634,23 +551,15 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------------------------+------- - SELECT * FROM test_squash_jsonb WHERE data IN +| 2 - ((SELECT $1)::jsonb, (SELECT $2)::jsonb, (SELECT $3)::jsonb,+| - (SELECT $4)::jsonb, (SELECT $5)::jsonb, (SELECT $6)::jsonb,+| - (SELECT $7)::jsonb, (SELECT $8)::jsonb, (SELECT $9)::jsonb,+| - (SELECT $10)::jsonb) | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Multiple CoerceViaIO are squashed SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT WHERE 1 IN (1::text::int::text::int, 1::text::int::text::int); -- (1 row) @@ -660,21 +569,17 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT WHERE $1 IN ($2 /*, ... */) | 2 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- -- RelabelType -- SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- However many layers of RelabelType there are, the list will be squashable. SELECT * FROM test_squash WHERE id IN (1::oid, 2::oid, 3::oid, 4::oid, 5::oid, 6::oid, 7::oid, 8::oid, 9::oid); @@ -710,23 +615,17 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT * FROM test_squash WHERE id IN +| 5 - ($1 /*, ... */) | - SELECT ARRAY[$1 /*, ... */] | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(3 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- -- edge cases -- SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- for nested arrays, only constants are squashed SELECT ARRAY[ ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], @@ -740,17 +639,9 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT ARRAY[ +| 1 - ARRAY[$1 /*, ... */], +| - ARRAY[$2 /*, ... */], +| - ARRAY[$3 /*, ... */], +| - ARRAY[$4 /*, ... */] +| - ] | - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- Test constants evaluation in a CTE, which was causing issues in the past WITH cte AS ( SELECT 'const' as const FROM test_squash @@ -762,11 +653,10 @@ (0 rows) SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Rewritten as an OpExpr, so it will not be squashed select where '1' IN ('1'::int, '2'::int::text); -- @@ -778,19 +668,14 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 - select where $1 IN ($2 /*, ... */) | 1 - select where $1 IN ($2::int, $3::int::text) | 1 -(3 rows) - -SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ +SELECT pg_stat_statements_reset() IS NOT NULL AS t; +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. -- Both of these queries will be rewritten as an ArrayExpr, so they -- will be squashed, and have a similar queryId select where '1' IN ('1'::int::text, '2'::int::text); @@ -802,12 +687,9 @@ (1 row) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls -----------------------------------------------------+------- - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 - select where $1 IN ($2 /*, ... */) | 2 -(2 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- composite function with row expansion create table test_composite(x integer); CREATE FUNCTION composite_f(a integer[], out x integer, out y integer) returns @@ -817,11 +699,10 @@ end; $$ language plpgsql; SELECT pg_stat_statements_reset() IS NOT NULL AS t; - t ---- - t -(1 row) - +ERROR: function pg_stat_statements_reset() does not exist +LINE 1: SELECT pg_stat_statements_reset() IS NOT NULL AS t; + ^ +DETAIL: There is no function of that name. SELECT ((composite_f(array[1, 2]))).* FROM test_composite; x | y ---+--- @@ -889,23 +770,9 @@ (0 rows) SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C"; - query | calls --------------------------------------------------------------------------------------------------------------+------- - SELECT $1, $2, (ROW(ARRAY[$3 /*, ... */], ARRAY[$4 /*, ... */])).*, $5, $6 | 1 - SELECT ((composite_f(array[$1 /*, ... */]))).* FROM test_composite | 2 - SELECT ((composite_f(array[$1 /*, ... */]))).*, $2 FROM test_composite | 1 - SELECT ((composite_f(array[$1 /*, ... */]))).*, $2, $3, $4, ((composite_f(array[$5 /*, ... */]))).*, $6, $7+| 1 - FROM test_composite +| - WHERE x IN ($8 /*, ... */) | - SELECT (ROW(ARRAY[$1 /*, ... */])).* | 1 - SELECT (ROW(ARRAY[$1 /*, ... */], ARRAY[$2 /*, ... */])).* | 1 - SELECT (ROW(ARRAY[$1 /*, ... */], ARRAY[$2 /*, ... */])).*, $3 | 1 - SELECT * FROM test_squash a, test_squash b WHERE a.id = ANY (array[$1, ((b.id + b.id * $2)), $3]) | 1 - SELECT * FROM test_squash a, test_squash b WHERE a.id IN ($1, $2, $3, b.id, b.id + $4) | 1 - SELECT * FROM test_squash a, test_squash b WHERE a.id IN ($1, $2, $3, b.id, b.id + $4) | 1 - SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1 -(11 rows) - +ERROR: relation "pg_stat_statements" does not exist +LINE 1: SELECT query, calls FROM pg_stat_statements ORDER BY query C... + ^ -- -- cleanup -- diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/cleanup.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/cleanup.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/cleanup.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/cleanup.out 2026-05-30 02:44:50.641192284 +0000 @@ -1 +1,2 @@ DROP EXTENSION pg_stat_statements; +ERROR: extension "pg_stat_statements" does not exist diff -U3 /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/oldextversions.out /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/oldextversions.out --- /tmp/cirrus-ci-build/contrib/pg_stat_statements/expected/oldextversions.out 2026-05-30 02:37:13.074972533 +0000 +++ /tmp/cirrus-ci-build/contrib/pg_stat_statements/results/oldextversions.out 2026-05-30 02:44:51.325193282 +0000 @@ -476,6 +476,7 @@ -- Functions marked PARALLEL RESTRICTED in 1.14 AlTER EXTENSION pg_stat_statements UPDATE TO '1.14'; +ERROR: extension "pg_stat_statements" has no update path from version "1.13" to version "1.14" \d pg_stat_statements View "public.pg_stat_statements" Column | Type | Collation | Nullable | Default