Show names of DEALLOCATE as constants in pg_stat_statements
authorMichael Paquier <michael@paquier.xyz>
Sun, 27 Aug 2023 08:27:44 +0000 (17:27 +0900)
committerMichael Paquier <michael@paquier.xyz>
Sun, 27 Aug 2023 08:27:44 +0000 (17:27 +0900)
commitbb45156f342c2cdb88cdd7f9efdc4541e910ec86
tree630d2e17fc3afab41b7c5ddcda653628a7f2fddd
parente48b19c5db3185e1868391176fc040df08a149fb
Show names of DEALLOCATE as constants in pg_stat_statements

This commit switches query jumbling so as prepared statement names are
treated as constants in DeallocateStmt.  A boolean field is added to
DeallocateStmt to make a distinction between ALL and named prepared
statements, as "name" was used to make this difference before, NULL
meaning DEALLOCATE ALL.

Prior to this commit, DEALLOCATE was not tracked in pg_stat_statements,
for the reason that it was not possible to treat its name parameter as a
constant.  Now that query jumbling applies to all the utility nodes,
this reason does not apply anymore.

Like 638d42a3c520, this can be a huge advantage for monitoring where
prepared statement names are randomly generated, preventing bloat in
pg_stat_statements.  A couple of tests are added to track the new
behavior.

Author: Dagfinn Ilmari MannsÃ¥ker, Michael Paquier
Reviewed-by: Julien Rouhaud
Discussion: https://postgr.es/m/ZMhT9kNtJJsHw6jK@paquier.xyz
contrib/pg_stat_statements/expected/utility.out
contrib/pg_stat_statements/pg_stat_statements.c
contrib/pg_stat_statements/sql/utility.sql
src/backend/parser/gram.y
src/include/nodes/parsenodes.h