Re: Refactor query normalization into core query jumbling
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Lukas Fittl <lukas@fittl.com>
Cc: Sami Imseih <samimseih@gmail.com>, zengman <zengman@halodbtech.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Julien Rouhaud <rjuju123@gmail.com>
Date: 2026-03-27T05:17:57Z
Lists: pgsql-hackers
Attachments
- v8-0001-Make-JumbleState-const-in-post_parse_analyze-hook.patch (text/plain) patch v8-0001
On Thu, Mar 26, 2026 at 06:50:20PM -0700, Lukas Fittl wrote: > On Thu, Mar 26, 2026 at 10:19 AM Sami Imseih <samimseih@gmail.com> wrote: > > Both of those changes belong in 0002. See the attached v7. > > Looks good! > > I've also done a quick follow-up test with pg_tracing and that > simplifies its logic as expected [0] to be able to extract inline > parameter values. I have been looking at what you have here. As mentioned upthread, I am on board with aiming for JumbleState to be a const so as we enforce as policy that no extension is allowed to touch what the core code has computed. However, I am not convinced by most of the patch. The logic to recompute the lengths of the constants is a concept proper to PGSS. Perhaps we could reconsider moving that into core at some point, but I am honestly not sure to see the range of benefits we'd gain from that. This line of arguments is stronger for the normalization of the query string. Why should the core code decide what a normalized string should look like when it comes to the detection of the constants, if any? Instead of a dollar-quoted number, we could enforce a bunch of things, like a '?' or a '$woozah$' at these locations. Saying that, the key point of the patch is to take a copy of the JumbleState locations, and recompute it for the needs of PGSS for the sake of the normalized query representation. Hence, why don't we just do that at the end? That should be enough to enforce the const marker for the JumbleState across all the loaded extensions that want to look at it. This leads me to the simpler patch attached. Comments or tomatoes? That's simpler, and I'd be OK with just that for v19. That would be much better than the current state of affairs, where PGSS decides to enforce its own ideas in the JumbleState, ideas fed to anything looping into the post-parse-analyze hook after PGSS. -- Michael
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Mark JumbleState as a const in the post_parse_analyze hook
- 49cc0d41488b 19 (unreleased) landed
-
Force standard_conforming_strings to always be ON.
- 45762084545e 19 (unreleased) cited
-
Move pg_stat_statements query jumbling to core.
- 5fd9dfa5f50e 14.0 cited