Subject: Re: shared_preload_libraries = 'pg_stat_statements' failing with installcheck (compute_query_id = auto)

From: Michael Paquier <[email-masked]>
Date: Tue, 22 Feb 2022 11:04:16 +0900

On Fri, Feb 18, 2022 at 05:38:56PM +0800, Julien Rouhaud wrote:
> On Fri, Feb 18, 2022 at 05:22:36PM +0900, Michael Paquier wrote:
>> So, I have been looking at this problem, and I don't see a problem in
>> doing something like the attached, where we add a "regress" mode to
>> compute_query_id that is a synonym of "auto". Or, in short, we have
>> the default of letting a module decide if a query ID can be computed
>> or not, at the exception that we hide its result in EXPLAIN outputs.
>>
>> Julien, what do you think?
> 
> I don't see any problem with that patch.

Okay, thanks.  I have worked on that today and applied the patch down
to 14, but without the change to enforce the parameter in the
databases created by pg_regress.  Perhaps we should do that in the
long-term, but it is also possible to pass down the option to
PGOPTIONS via command line as compute_query_id is a SUSET or just set
it in postgresql.conf, and being able to do so is enough to address
all the cases I have seen and/or could think about.
--
Michael

---

From: Justin Pryzby <[email-masked]>
Date: Tue, 22 Feb 2022 20:38:28 -0600

> Okay, thanks.  I have worked on that today and applied the patch down

While rebasing, I noticed that this patch does part of what I added in another
thread.

https://commitfest.postgresql.org/37/3409/
| explain_regress, explain(MACHINE), and default to explain(BUFFERS)

-       if (es->verbose && plannedstmt->queryId != UINT64CONST(0))
+       if (es->verbose && plannedstmt->queryId != UINT64CONST(0) && es->machine)
        {
                /*
                 * Output the queryid as an int64 rather than a uint64 so we match

Apparently, I first wrote this two years ago today.

-- 
Justin