Re: queryId constant squashing does not support prepared statements
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Álvaro Herrera <alvherre@kurilemu.de>
Cc: Sami Imseih <samimseih@gmail.com>, Dmitry Dolgov <9erthalion6@gmail.com>, Junwang Zhao <zhjwpku@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-06-10T06:37:18Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix typo in comment
- a3994ec6acb2 18.0 landed
-
Make query jumbling also squash PARAM_EXTERN params
- c2da1a5d6325 18.0 landed
-
Fix squashing algorithm for query texts
- 0f65f3eec478 18.0 landed
-
pg_stat_statements: Fix parameter number gaps in normalized queries
- 3c03b8cd7979 13.22 landed
- 8a1459f62ad1 14.19 landed
- 130300a15407 15.14 landed
- 7e8b44f4e0e6 16.10 landed
- 290e8ab32ac5 17.6 landed
- 35a428f30b15 18.0 landed
Attachments
- regression.diffs (text/plain)
On Mon, Jun 09, 2025 at 12:44:59PM +0200, Alvaro Herrera wrote: > I also added a recursive call in IsSquashableExpression to itself. The > check for stack depth can be done without throwing an error. I tested > this by adding stack bloat in that function. I also renamed it to > IsSquashableConstant. This changes one of the tests, because a cast > sequence like 42::int::bigint::int is considered squashable. > > Other than that, the changes are cosmetic. > > Barring objections, I'll push this soon, then look at rebasing 0003 on > top, which I expect to be an easy job. v9-0002 is failing in the CI for the freebsd task: https://github.com/michaelpq/postgres/runs/43784034162 Here is the link to the diffs, also attached to this message: https://api.cirrus-ci.com/v1/artifact/task/5378459897167872/testrun/build/testrun/pg_stat_statements/regress/regression.diffs I am also able to reproduce these failures locally, FWIW. For example, with a IN clause made of integer constants gets converted to an ArrayExpr, but in _jumbleElements() we fail to call RecordConstLocation() and the list is not squashed. I think that this is can be reproduced by -DWRITE_READ_PARSE_PLAN_TREES -DCOPY_PARSE_PLAN_TREES -DRAW_EXPRESSION_COVERAGE_TEST that I always include in my builds. The freebsd task uses the same with debug_copy_parse_plan_trees=on, debug_write_read_parse_plan_trees=on and debug_raw_expression_coverage_test=on. -- Michael