Include values of A_Const nodes in query jumbling
commit9ba37b2cb6a174b37fc51d0649ef73e56eae27fc
authorMichael Paquier <michael@paquier.xyz>
Tue, 7 Feb 2023 00:03:54 +0000 (7 09:03 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 7 Feb 2023 00:03:54 +0000 (7 09:03 +0900)
tree8da54ff6c6e95f26dd029be745308a3625c310c3
parent209f0f0e8516dfb382afdd2375c8b84c912dc420
Include values of A_Const nodes in query jumbling

Like the implementation for node copy, write and read, this node
requires a custom implementation so as the query jumbling is able to
consider the correct value assigned to it, depending on its type (int,
float, bool, string, bitstring).

Based on a dump of pg_stat_statements from the regression database, this
would confuse the query jumbling of the following queries:
- SET.
- COPY TO with SELECT queries.
- START TRANSACTION with different isolation levels.
- ALTER TABLE with default expressions.
- CREATE TABLE with partition bounds.

Note that there may be a long-term argument in tracking the location of
such nodes so as query strings holding such nodes could be normalized,
but this is left as a separate discussion.

Oversight in 3db72eb.

Discussion: https://postgr.es/m/Y9+HuYslMAP6yyPb@paquier.xyz
contrib/pg_stat_statements/expected/pg_stat_statements.out
contrib/pg_stat_statements/sql/pg_stat_statements.sql
src/backend/nodes/queryjumblefuncs.c
src/include/nodes/parsenodes.h