Skip to content

escaped single quotes in search expression cause multiple placeholders in normalized_query #34

@terrorobe

Description

@terrorobe

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions