pg_stat_plans icon indicating copy to clipboard operation
pg_stat_plans copied to clipboard

escaped single quotes in search expression cause multiple placeholders in normalized_query

Open terrorobe opened this issue 12 years ago • 0 comments

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=# 

terrorobe avatar Sep 24 '13 13:09 terrorobe