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
pull/177/head
Michael Paquier 1 year ago
parent 05036a3155
commit 7b1ddbae36
  1. 2
      contrib/pg_stat_statements/Makefile
  2. 62
      contrib/pg_stat_statements/expected/extended.out
  3. 1
      contrib/pg_stat_statements/meson.build
  4. 17
      contrib/pg_stat_statements/sql/extended.sql

@ -19,7 +19,7 @@ LDFLAGS_SL += $(filter -lm, $(LIBS))
REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_statements/pg_stat_statements.conf REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_statements/pg_stat_statements.conf
REGRESS = select dml cursors utility level_tracking planning \ REGRESS = select dml cursors utility level_tracking planning \
user_activity wal entry_timestamp privileges cleanup \ user_activity wal entry_timestamp privileges extended cleanup \
oldextversions oldextversions
# Disabled because these tests require "shared_preload_libraries=pg_stat_statements", # Disabled because these tests require "shared_preload_libraries=pg_stat_statements",
# which typical installcheck users do not have (e.g. buildfarm clients). # which typical installcheck users do not have (e.g. buildfarm clients).

@ -0,0 +1,62 @@
-- Tests with extended query protocol
SET pg_stat_statements.track_utility = FALSE;
SELECT pg_stat_statements_reset() IS NOT NULL AS t;
t
---
t
(1 row)
SELECT $1 \parse stmt1
SELECT $1, $2 \parse stmt2
SELECT $1, $2, $3 \parse stmt3
SELECT $1 \bind 'unnamed_val1' \g
?column?
--------------
unnamed_val1
(1 row)
\bind_named stmt1 'stmt1_val1' \g
?column?
------------
stmt1_val1
(1 row)
\bind_named stmt2 'stmt2_val1' 'stmt2_val2' \g
?column? | ?column?
------------+------------
stmt2_val1 | stmt2_val2
(1 row)
\bind_named stmt3 'stmt3_val1' 'stmt3_val2' 'stmt3_val3' \g
?column? | ?column? | ?column?
------------+------------+------------
stmt3_val1 | stmt3_val2 | stmt3_val3
(1 row)
\bind_named stmt3 'stmt3_val4' 'stmt3_val5' 'stmt3_val6' \g
?column? | ?column? | ?column?
------------+------------+------------
stmt3_val4 | stmt3_val5 | stmt3_val6
(1 row)
\bind_named stmt2 'stmt2_val3' 'stmt2_val4' \g
?column? | ?column?
------------+------------
stmt2_val3 | stmt2_val4
(1 row)
\bind_named stmt1 'stmt1_val1' \g
?column?
------------
stmt1_val1
(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)

@ -51,6 +51,7 @@ tests += {
'wal', 'wal',
'entry_timestamp', 'entry_timestamp',
'privileges', 'privileges',
'extended',
'cleanup', 'cleanup',
'oldextversions', 'oldextversions',
], ],

@ -0,0 +1,17 @@
-- Tests with extended query protocol
SET pg_stat_statements.track_utility = FALSE;
SELECT pg_stat_statements_reset() IS NOT NULL AS t;
SELECT $1 \parse stmt1
SELECT $1, $2 \parse stmt2
SELECT $1, $2, $3 \parse stmt3
SELECT $1 \bind 'unnamed_val1' \g
\bind_named stmt1 'stmt1_val1' \g
\bind_named stmt2 'stmt2_val1' 'stmt2_val2' \g
\bind_named stmt3 'stmt3_val1' 'stmt3_val2' 'stmt3_val3' \g
\bind_named stmt3 'stmt3_val4' 'stmt3_val5' 'stmt3_val6' \g
\bind_named stmt2 'stmt2_val3' 'stmt2_val4' \g
\bind_named stmt1 'stmt1_val1' \g
SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
Loading…
Cancel
Save