Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 7b1ddba

Browse files
committed
pg_stat_statements: Add tests with extended query protocol
There are currently no tests in the tree checking that queries using the extended query protocol are able to map with their query ID. This can be achieved for some paths of the extended query protocol with the psql meta-commands \bind or \bind_named, so let's add some tests based on both. I have found that to be a useful addition while working on a different issue. Discussion: https://postgr.es/m/ZuEt6MOEBSlifBfn@paquier.xyz
1 parent 05036a3 commit 7b1ddba

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

contrib/pg_stat_statements/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ LDFLAGS_SL += $(filter -lm, $(LIBS))
1919

2020
REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_statements/pg_stat_statements.conf
2121
REGRESS = select dml cursors utility level_tracking planning \
22-
user_activity wal entry_timestamp privileges cleanup \
22+
user_activity wal entry_timestamp privileges extended cleanup \
2323
oldextversions
2424
# Disabled because these tests require "shared_preload_libraries=pg_stat_statements",
2525
# which typical installcheck users do not have (e.g. buildfarm clients).
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
-- Tests with extended query protocol
2+
SET pg_stat_statements.track_utility = FALSE;
3+
SELECT pg_stat_statements_reset() IS NOT NULL AS t;
4+
t
5+
---
6+
t
7+
(1 row)
8+
9+
SELECT $1 \parse stmt1
10+
SELECT $1, $2 \parse stmt2
11+
SELECT $1, $2, $3 \parse stmt3
12+
SELECT $1 \bind 'unnamed_val1' \g
13+
?column?
14+
--------------
15+
unnamed_val1
16+
(1 row)
17+
18+
\bind_named stmt1 'stmt1_val1' \g
19+
?column?
20+
------------
21+
stmt1_val1
22+
(1 row)
23+
24+
\bind_named stmt2 'stmt2_val1' 'stmt2_val2' \g
25+
?column? | ?column?
26+
------------+------------
27+
stmt2_val1 | stmt2_val2
28+
(1 row)
29+
30+
\bind_named stmt3 'stmt3_val1' 'stmt3_val2' 'stmt3_val3' \g
31+
?column? | ?column? | ?column?
32+
------------+------------+------------
33+
stmt3_val1 | stmt3_val2 | stmt3_val3
34+
(1 row)
35+
36+
\bind_named stmt3 'stmt3_val4' 'stmt3_val5' 'stmt3_val6' \g
37+
?column? | ?column? | ?column?
38+
------------+------------+------------
39+
stmt3_val4 | stmt3_val5 | stmt3_val6
40+
(1 row)
41+
42+
\bind_named stmt2 'stmt2_val3' 'stmt2_val4' \g
43+
?column? | ?column?
44+
------------+------------
45+
stmt2_val3 | stmt2_val4
46+
(1 row)
47+
48+
\bind_named stmt1 'stmt1_val1' \g
49+
?column?
50+
------------
51+
stmt1_val1
52+
(1 row)
53+
54+
SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
55+
calls | rows | query
56+
-------+------+----------------------------------------------------
57+
3 | 3 | SELECT $1
58+
2 | 2 | SELECT $1, $2
59+
2 | 2 | SELECT $1, $2, $3
60+
1 | 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t
61+
(4 rows)
62+

contrib/pg_stat_statements/meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ tests += {
5151
'wal',
5252
'entry_timestamp',
5353
'privileges',
54+
'extended',
5455
'cleanup',
5556
'oldextversions',
5657
],
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- Tests with extended query protocol
2+
3+
SET pg_stat_statements.track_utility = FALSE;
4+
5+
SELECT pg_stat_statements_reset() IS NOT NULL AS t;
6+
SELECT $1 \parse stmt1
7+
SELECT $1, $2 \parse stmt2
8+
SELECT $1, $2, $3 \parse stmt3
9+
SELECT $1 \bind 'unnamed_val1' \g
10+
\bind_named stmt1 'stmt1_val1' \g
11+
\bind_named stmt2 'stmt2_val1' 'stmt2_val2' \g
12+
\bind_named stmt3 'stmt3_val1' 'stmt3_val2' 'stmt3_val3' \g
13+
\bind_named stmt3 'stmt3_val4' 'stmt3_val5' 'stmt3_val6' \g
14+
\bind_named stmt2 'stmt2_val3' 'stmt2_val4' \g
15+
\bind_named stmt1 'stmt1_val1' \g
16+
17+
SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";

0 commit comments

Comments
 (0)