Re: Refactor query normalization into core query jumbling
Sami Imseih <samimseih@gmail.com>
From: Sami Imseih <samimseih@gmail.com>
To: Lukas Fittl <lukas@fittl.com>
Cc: Michael Paquier <michael@paquier.xyz>, zengman <zengman@halodbtech.com>, pgsql-hackers <pgsql-hackers@postgresql.org>,
Julien Rouhaud <rjuju123@gmail.com>
Date: 2026-01-06T20:20:47Z
Lists: pgsql-hackers
Attachments
- v4-0002-Make-JumbleState-const-in-post_parse_analyze-hook.patch (application/octet-stream) patch v4-0002
- v4-0001-pg_stat_statements-Move-query-normalization-to-co.patch (application/octet-stream) patch v4-0001
> >> backwards compatible. Basically, we keep JumbleState a non-constant, > >> but provide core APIs for any operation, such as > >> generate_normalized_query, > >> that needs to modify the state. So, my approach was not about enforcing a > >> read-only JumbleState, but about providing the API to dissuade an author > >> from modifying a JumbleState. > > > Given the lack of public APIs to modify JumbleState today, I don't see how > > an extension would do > > modifications in a meaningful way, short of copying the code. I think we > > should be a bit bolder here in > > enforcing a convention, either clearly making it read-only or dropping the > > argument again. > > Based on the discussion so far I am leaning towards making JumbleState > read-only as described here [0]. I don't see how we can drop JumbleState > completely from hooks, since normalization needs to occur on-demand > by the extension. Here is v4. 0001 - addresses the comments made by Bertrand. 0002 - makes JumbleState a constant when passed to post_parse_analyze and updates all downstream code that consume the JumbleState. This means we now need to copy the locations from JState into a local/temporary array when generating the normalized string. -- Sami Imseih Amazon Web Services (AWS)
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