Re: Query Jumbling for CALL and SET utility statements

Drouvot, Bertrand <bdrouvot@amazon.com>

From: "Drouvot, Bertrand" <bdrouvot@amazon.com>
To: Julien Rouhaud <rjuju123@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, Jeremy Schneider <schnjere@amazon.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Pavel Stehule <pavel.stehule@gmail.com>, Andres Freund <andres@anarazel.de>, "Imseih (AWS), Sami" <simseih@amazon.com>
Date: 2022-09-09T10:11:50Z
Lists: pgsql-hackers

Attachments

Hi,

On 9/8/22 6:07 PM, Drouvot, Bertrand wrote:
> On 9/8/22 1:29 PM, Julien Rouhaud wrote:
>>
>> IME if your application relies on 2PC it's very likely that you will hit the
>> exact same problems described in your original email.
>
> Agree
>
>>   What do you think about
>> normalizing those too while working on the subject?
>
> That sounds reasonable, I'll have a look at those too while at it.
>
Attached v5 to normalize 2PC commands too, so that we get things like:

create table test_tx (a int);
begin;
prepare transaction 'tx1';
insert into test_tx values (1);
commit prepared 'tx1';
begin;
prepare transaction 'tx2';
insert into test_tx values (2);
commit prepared 'tx2';
begin;
prepare transaction 'tx3';
insert into test_tx values (3);
rollback prepared 'tx3';
begin;
prepare transaction 'tx4';
insert into test_tx values (4);
rollback prepared 'tx4';
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE 
"C";
query                                     | calls | rows
------------------------------------------------------------------------------+-------+------
  SELECT pg_stat_statements_reset() |     1 |    1
  SELECT query, calls, rows FROM pg_stat_statements ORDER BY query 
COLLATE "C" |     0 |    0
  begin |     4 |    0
  commit prepared $1 |     2 |    0
  create table test_tx (a 
int)                                                 |     1 |    0
  insert into test_tx values 
($1)                                              |     4 |    4
  prepare transaction 
$1                                                       |     4 |    0
  rollback prepared 
$1                                                         | 2 |    0
(8 rows)

For those ones I also had to do some minor changes in gram.y and to the 
TransactionStmt struct to record the gid location.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services:https://aws.amazon.com

Commits

  1. Show values of SET statements as constants in pg_stat_statements

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