Re: BUG: pg_stat_statements query normalization issues with combined queries

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2016-12-20T09:55:08Z
Lists: pgsql-hackers
>> I was expecting the 2 combined queries either to be separated in individual 
>> queries "SELECT data FROM Stuff WHERE id = ?" or in one large queries with 
>> three ?, but not the above result...
>
> Oops, I forgot the attachement, see repeat script on 9.6.1

After some quick investigation, I concluded that the issue is that the 
whole combined query string is used instead of the part refering to the 
actual query being processed.

As a result:

  - the full un-normalized string is used for both BEGIN & COMMIT
    => n shared entries, one for each actual query, begin & commit are mixed together

  - the fist-part only normalized string is used for each SELECT
    => 1 shared entry with "query" is the first partially
       normalied encountered combined query

-- 
Fabien.


Commits

  1. Teach contrib/pg_stat_statements to handle multi-statement commands better.

  2. Change representation of statement lists, and add statement location info.

  3. Revert my bad decision of about a year ago to make PortalDefineQuery