Re: pgsql: Move pg_stat_statements query jumbling to core.

From: Julien Rouhaud <rjuju123(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: Re: pgsql: Move pg_stat_statements query jumbling to core.
Date: 2021-04-08 05:22:49
Message-ID: CAOBaU_aOr8LRyzmgnq78Qp9oJup9TQ3i67STLYfBJDGu3tYvjw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Le jeu. 8 avr. 2021 à 13:17, Andres Freund <andres(at)anarazel(dot)de> a écrit :

>
> This - or something in the vicinity - seems to break running the
> regression tests with force_parallel_mode=regress. There's lots of
> differences like
>
> SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE
> "C";
> query
> | calls | rows
>
> ------------------------------------------------------------------------------+-------+------
> SELECT (i + $2 + $3)::INTEGER
> | 2 | 2
> SELECT (i + $2)::INTEGER LIMIT $3
> | 2 | 2
> - SELECT PLUS_ONE($1)
> | 2 | 2
> - SELECT PLUS_TWO($1)
> | 2 | 2
> - SELECT pg_stat_statements_reset()
> | 1 | 1
> + SELECT PLUS_ONE($1)
> | 4 | 4
> + SELECT PLUS_TWO($1)
> | 4 | 4
> + SELECT pg_stat_statements_reset();
> | 2 | 2
> SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE
> "C" | 0 | 0
> (6 rows)
>
> SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C";
> calls | query
>
> -------+------------------------------------------------------------------------------------------
> - 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id
> + 2 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> KEY SHARE
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> NO KEY UPDATE
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> SHARE
> 2 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> UPDATE
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> UPDATE NOWAIT
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> UPDATE OF pgss_a
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> UPDATE OF pgss_b
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> UPDATE OF pgss_b, pgss_a
> 1 | SELECT * FROM pgss_a JOIN pgss_b ON pgss_b.a_id = pgss_a.id FOR
> UPDATE SKIP LOCKED
> 0 | SELECT calls, query FROM pg_stat_statements ORDER BY query
> COLLATE "C"
> - 1 | SELECT pg_stat_statements_reset()
> + 2 | SELECT pg_stat_statements_reset();
> (12 rows)
>

oh, I think it's because parallel workers now have the queryid of the main
query. Probably ignoring parallel workers in the executor end hook will fix
the problem. I'll look at it as soon as I will be back home.

>

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Thomas Munro 2021-04-08 05:52:18 pgsql: Provide ReadRecentBuffer() to re-pin buffers by ID.
Previous Message Alvaro Herrera 2021-04-08 05:20:39 pgsql: autovacuum: handle analyze for partitioned tables