Skip to content

Commit

Permalink
Remove dependency to pg_stat_statements in regression tests
Browse files Browse the repository at this point in the history
pg_stat_statements was still being used for a few tests in pg_hint_plan,
with most of the cases removed by 32ced2e.  The remaining cases
involve:
- Check that relations parts of extensions are not affected by hints,
which has a limited interest.
- pg_stat_statements_reset() combined with a scan of pg_stat_statements,
which has also limited interest because upstream covers that already, in
a much wider way.

As a whole, this dependency does not provide any meaningful coverage not
covered by upstream, and now that query IDs are used in the hint table,
even less.  This commit removes the dependency altogether, making it
possible to run the regression test suite without these binaries
installed.
  • Loading branch information
michaelpq committed May 20, 2024
1 parent 34ee847 commit 8e296b6
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 67 deletions.
3 changes: 1 addition & 2 deletions expected/init.out
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,7 @@ CREATE VIEW v4 AS SELECT v_2.t1_id, t_3.id FROM v2 v_2, t3 t_3 WHERE v_2.t1_id =
* Utility function to retrieve a query ID from a query.
*
* This wraps the input query within an EXPLAIN (VERBOSE, FORMAT json) and
* returns its query ID. This removes the need to use pg_stat_statements
* while minimizing the number of queries executed.
* returns its query ID.
*/
CREATE FUNCTION get_query_id(text) RETURNS bigint
LANGUAGE plpgsql AS
Expand Down
17 changes: 0 additions & 17 deletions expected/ut-A.out
Original file line number Diff line number Diff line change
Expand Up @@ -3147,12 +3147,6 @@ SHOW pg_hint_plan.debug_print;
---- No. A-11-5 EXECUTE statement name error
----
-- No. A-11-5-1
SELECT pg_stat_statements_reset() IS NOT NULL as t;
t
---
t
(1 row)

SELECT * FROM s1.t1 WHERE t1.c1 = 1;
c1 | c2 | c3 | c4
----+----+----+----
Expand Down Expand Up @@ -3185,17 +3179,6 @@ error hint:
1 | 1 | 1 | 1
(1 row)

SELECT s.query, s.calls
FROM public.pg_stat_statements s
JOIN pg_catalog.pg_database d
ON (s.dbid = d.oid)
ORDER BY 1;
query | calls
----------------------------------------------------+-------
SELECT * FROM s1.t1 WHERE t1.c1 = $1 | 3
SELECT pg_stat_statements_reset() IS NOT NULL as t | 1
(2 rows)

----
---- No. A-12-1 reset of global variable of core at the error
---- No. A-12-2 reset of global variable of original at the error
Expand Down
64 changes: 29 additions & 35 deletions expected/ut-W.out
Original file line number Diff line number Diff line change
Expand Up @@ -1248,24 +1248,21 @@ Parallel()

-- Hints on unhintable relations are just ignored
/*+Parallel(p1 5 hard) Parallel(s1 3 hard) IndexScan(ft1) SeqScan(cte1)
TidScan(fs1) IndexScan(t) IndexScan(*VALUES*) */
IndexScan(t) IndexScan(*VALUES*) */
\o results/ut-W.tmpout
EXPLAIN (COSTS false) SELECT id FROM p1_c1_c1 as s1 TABLESAMPLE SYSTEM(10)
UNION ALL
SELECT id FROM ft1
UNION ALL
(WITH cte1 AS (SELECT id FROM p1 WHERE id % 2 = 0) SELECT id FROM cte1)
UNION ALL
SELECT userid FROM pg_stat_statements fs1
UNION ALL
SELECT x FROM (VALUES (1), (2), (3)) t(x);
LOG: pg_hint_plan:
used hint:
Parallel(p1 5 hard)
not used hint:
IndexScan(*VALUES*)
SeqScan(cte1)
TidScan(fs1)
IndexScan(ft1)
IndexScan(t)
Parallel(s1 3 hard)
Expand All @@ -1276,38 +1273,35 @@ error hint:
\! sql/maskout2.sh results/ut-W.tmpout
--(snip..)
--(snip..)
Append
-> Result
-> Append
-> Sample Scan on p1_c1_c1 s1
Sampling: system ('10'::real)
-> Foreign Scan on ft1
Foreign File: (snip..)
-> Gather
Workers Planned: 5
-> Parallel Append
-> Seq Scan on p1 p1_1
Filter: ((id % 2) = 0)
-> Seq Scan on p1_c1 p1_2
Filter: ((id % 2) = 0)
-> Seq Scan on p1_c3 p1_4
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c2 p1_3
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c4 p1_5
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c1_c1 p1_6
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c1_c2 p1_7
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c3_c1 p1_8
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c3_c2 p1_9
Filter: ((id % 2) = 0)
-> Function Scan on pg_stat_statements
-> Subquery Scan on "*SELECT* 5"
Gather
Workers Planned: 1
Single Copy: true
-> Parallel Append
-> Sample Scan on p1_c1_c1 s1
Sampling: system ('10'::real)
-> Foreign Scan on ft1
Foreign File: (snip..)
-> Values Scan on "*VALUES*"
(31 rows)
-> Parallel Append
-> Seq Scan on p1 p1_1
Filter: ((id % 2) = 0)
-> Seq Scan on p1_c1 p1_2
Filter: ((id % 2) = 0)
-> Seq Scan on p1_c3 p1_4
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c2 p1_3
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c4 p1_5
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c1_c1 p1_6
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c1_c2 p1_7
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c3_c1 p1_8
Filter: ((id % 2) = 0)
-> Parallel Seq Scan on p1_c3_c2 p1_9
Filter: ((id % 2) = 0)
(28 rows)

ALTER SYSTEM SET session_preload_libraries TO DEFAULT;
SELECT pg_reload_conf();
Expand Down
1 change: 0 additions & 1 deletion expected/ut-init.out
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
SET search_path TO public;
CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION btree_gist;
CREATE EXTENSION btree_gin;
CREATE ROLE regress_super_user
Expand Down
3 changes: 1 addition & 2 deletions sql/init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,7 @@ CREATE VIEW v4 AS SELECT v_2.t1_id, t_3.id FROM v2 v_2, t3 t_3 WHERE v_2.t1_id =
* Utility function to retrieve a query ID from a query.
*
* This wraps the input query within an EXPLAIN (VERBOSE, FORMAT json) and
* returns its query ID. This removes the need to use pg_stat_statements
* while minimizing the number of queries executed.
* returns its query ID.
*/
CREATE FUNCTION get_query_id(text) RETURNS bigint
LANGUAGE plpgsql AS
Expand Down
6 changes: 0 additions & 6 deletions sql/ut-A.sql
Original file line number Diff line number Diff line change
Expand Up @@ -926,15 +926,9 @@ SHOW pg_hint_plan.debug_print;
----

-- No. A-11-5-1
SELECT pg_stat_statements_reset() IS NOT NULL as t;
SELECT * FROM s1.t1 WHERE t1.c1 = 1;
/*+Set(enable_seqscan off)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
/*+SeqScan(t1)*/ SELECT * FROM s1.t1 WHERE t1.c1 = 1;
SELECT s.query, s.calls
FROM public.pg_stat_statements s
JOIN pg_catalog.pg_database d
ON (s.dbid = d.oid)
ORDER BY 1;

----
---- No. A-12-1 reset of global variable of core at the error
Expand Down
4 changes: 1 addition & 3 deletions sql/ut-W.sql
Original file line number Diff line number Diff line change
Expand Up @@ -207,16 +207,14 @@ EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;

-- Hints on unhintable relations are just ignored
/*+Parallel(p1 5 hard) Parallel(s1 3 hard) IndexScan(ft1) SeqScan(cte1)
TidScan(fs1) IndexScan(t) IndexScan(*VALUES*) */
IndexScan(t) IndexScan(*VALUES*) */
\o results/ut-W.tmpout
EXPLAIN (COSTS false) SELECT id FROM p1_c1_c1 as s1 TABLESAMPLE SYSTEM(10)
UNION ALL
SELECT id FROM ft1
UNION ALL
(WITH cte1 AS (SELECT id FROM p1 WHERE id % 2 = 0) SELECT id FROM cte1)
UNION ALL
SELECT userid FROM pg_stat_statements fs1
UNION ALL
SELECT x FROM (VALUES (1), (2), (3)) t(x);
\o
\! sql/maskout2.sh results/ut-W.tmpout
Expand Down
1 change: 0 additions & 1 deletion sql/ut-init.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
SET search_path TO public;

CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION btree_gist;
CREATE EXTENSION btree_gin;

Expand Down

0 comments on commit 8e296b6

Please sign in to comment.