pg_stat_plans
pg_stat_plans copied to clipboard
escaped single quotes in search expression cause multiple placeholders in normalized_query
When faced with a query_string that contains doubled/escaped single quotes these will be replaced with additional '?' placeholder characters. This causes issues when trying to identify identical query classes across stats resets.
plantest=# select * from foo where data = 'bla';
id | data
----+------
(0 rows)
plantest=# select normalized_query, calls from pg_stat_plans_queries where dbid=152414;
normalized_query | calls
-------------------------------------------------------------------------+-------
select * from foo where data = ?; | 1
select pg_stat_plans_reset(); | 1
(3 rows)
plantest=# select pg_stat_plans_reset();
pg_stat_plans_reset
---------------------
(1 row)
plantest=# select * from foo where data = 'bl''a';
id | data
----+------
(0 rows)
plantest=# select normalized_query, calls from pg_stat_plans_queries where dbid=152414;
normalized_query | calls
------------------------------------+-------
select * from foo where data = ??; | 1
select pg_stat_plans_reset(); | 1
(2 rows)
plantest=# select pg_stat_plans_reset();
pg_stat_plans_reset
---------------------
(1 row)
plantest=# select * from foo where data = 'b''l''a';
id | data
----+------
(0 rows)
plantest=# select normalized_query, calls from pg_stat_plans_queries where dbid=152414;
normalized_query | calls
-------------------------------------+-------
select * from foo where data = ???; | 1
select pg_stat_plans_reset(); | 1
(2 rows)
plantest=#