Re: queryId constant squashing does not support prepared statements

Dmitry Dolgov <9erthalion6@gmail.com>

From: Dmitry Dolgov <9erthalion6@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Sami Imseih <samimseih@gmail.com>, Junwang Zhao <zhjwpku@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-05-09T08:12:24Z
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 →
  1. Fix typo in comment

  2. Make query jumbling also squash PARAM_EXTERN params

  3. Fix squashing algorithm for query texts

  4. pg_stat_statements: Fix parameter number gaps in normalized queries

> On Fri, May 09, 2025 at 08:47:58AM GMT, Michael Paquier wrote:
>  SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C";
> -                       query                        | calls
> -----------------------------------------------------+-------
> - SELECT ARRAY[$1 /*, ... */]                        |     1
> - SELECT pg_stat_statements_reset() IS NOT NULL AS t |     1
> +                         query                         | calls
> +-------------------------------------------------------+-------
> + SELECT ARRAY[$1, $2, $3, $4, $5, $6, $7, $8, $9, $10] |     1
> + SELECT pg_stat_statements_reset() IS NOT NULL AS t    |     1
>  (2 rows)
>
> Yes, we are going to need more than that for such cases if we want to
> cover all the ground we're aiming for.
>
> Putting that aside, the test coverage for ARRAY[] elements is also
> very limited on HEAD with one single test only with a set of
> constants.  We really should improve that, tracking more patterns and
> more mixed combinations to see what gets squashed and what is not.  So
> this should be extended with more cases, including expressions,
> parameters and sublinks, with checks on pg_stat_statements.calls to
> see how the counters are aggregated.  That's going to be important
> when people play with this code to track how things change when
> manipulating the element jumbling.  I'd suggest to do that separately
> of the rest.

Agree, I'll try to extend number of test cases here as a separate patch.