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.
>
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 |