Hi,
On 10/6/22 1:18 PM, Julien Rouhaud wrote:
> Hi,
>
> On Thu, Oct 06, 2022 at 12:57:17PM +0200, Drouvot, Bertrand wrote:
>> Hi hackers,
>>
>> "SET local" is currently recorded in VariableSetStmt (with the boolean
>> is_local) but "SET session" is not.
>>
>> Please find attached a patch proposal to also record "SET session" so that
>> VariableSetStmt records all the cases.
>>
>> Remark: Recording "SET session" will also help for the Jumbling work being
>> done in [1].
>
> I don't think it's necessary. SET and SET SESSION are semantically the same
Thanks for your feedback!
> so
> nothing should rely on how exactly someone spelled it. This is also the case
> for our core jumbling code, where we guarantee (or at least try to) that two
> semantically identical statements will get the same queryid, and therefore
> don't distinguish eg. LIKE vs ~~.
Agree, but on the other hand currently SET and SET SESSION are recorded
with distinct queryid:
postgres=# select calls, query, queryid from pg_stat_statements;
calls | query | queryid
-------+---------------------------------------------+----------------------
2 | select calls, query from pg_stat_statements | -6345508659980235519
1 | set session enable_seqscan=1 | -3921418831612111986
1 | create extension pg_stat_statements | -1739183385080879393
1 | set enable_seqscan=1 | 7925920505912025406
(4 rows)
and this behavior would change with the Jumbling work in progress in [1]
(mentioned up-thread) if we don't record "SET SESSION".
I think that would make sense to keep the same behavior, what do you think?
Regards,
--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com