Re: Stability of queryid in minor versions

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: David Rowley <dgrowleyml(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Stability of queryid in minor versions
Date: 2024-04-16 00:10:19
Message-ID: Zh3B69QHUAsDTaYO@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Apr 15, 2024 at 02:54:52PM +1200, David Rowley wrote:
> <filename>pg_stat_statements</filename> will consider two apparently-identical
> queries to be distinct, if they reference a table that was dropped
> and recreated between the executions of the two queries.
> + Two servers participating in replication based on physical WAL replay can
> + be expected to have identical <structfield>queryid</structfield> values for
> + the same query. However, logical replication schemes do not promise to
> + keep replicas identical in all relevant details, so
> + <structfield>queryid</structfield> will not be a useful identifier for
> + accumulating costs across a set of logical replicas.
> The hashing process is also sensitive to differences in
> machine architecture and other facets of the platform.
> Furthermore, it is not safe to assume that <structfield>queryid</structfield>
> will be stable across major versions of <productname>PostgreSQL</productname>.
> + If in doubt, direct testing is recommended.
> </para>

Not sure that this is an improvement in clarity. There are a few
bullet points that treat about the instability of the query ID, and
your patch is now mixing the query ID being different for two
mostly-identical queries on the same host with larger conditions like
the environment involved. Perhaps it would be better to move the last
sentence of the first <para> ("Furthermore, it is not safe..") with
the part you are adding about replication in this paragraph.

> <para>
> - As a rule of thumb, <structfield>queryid</structfield> values can be assumed to be
> - stable and comparable only so long as the underlying server version and
> - catalog metadata details stay exactly the same. Two servers
> - participating in replication based on physical WAL replay can be expected
> - to have identical <structfield>queryid</structfield> values for the same query.
> - However, logical replication schemes do not promise to keep replicas
> - identical in all relevant details, so <structfield>queryid</structfield> will
> - not be a useful identifier for accumulating costs across a set of logical
> - replicas. If in doubt, direct testing is recommended.
> + Generally, it can be assumed that <structfield>queryid</structfield> values
> + are stable between minor version releases of <productname>PostgreSQL</productname>,
> + providing that instances are running on the same machine architecture and
> + the catalog metadata details match. Compatibility will only be broken
> + between minor versions as a last resort.

This split is cleaner.
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2024-04-16 00:26:49 What's our minimum ninja version?
Previous Message Andres Freund 2024-04-16 00:05:43 Re: Differential code coverage between 16 and HEAD