Re: New function pg_stat_statements_reset_query() to reset statisticsof a specific query - Mailing list pgsql-hackers

From Haribabu Kommi
Subject Re: New function pg_stat_statements_reset_query() to reset statisticsof a specific query
Date
Msg-id CAJrrPGcrScWKSB-NVBw_EUwOtvsnsrQo-F28b=1+k6Q=nueVCg@mail.gmail.com
Whole thread Raw
In response to Re: New function pg_stat_statements_reset_query() to reset statisticsof a specific query  (Fujii Masao <masao.fujii@gmail.com>)
List pgsql-hackers

On Tue, Jul 10, 2018 at 12:26 AM Fujii Masao <masao.fujii@gmail.com> wrote:
On Sun, Jul 8, 2018 at 11:48 AM, Haribabu Kommi
<kommi.haribabu@gmail.com> wrote:
>
> On Fri, Jul 6, 2018 at 3:22 AM Fujii Masao <masao.fujii@gmail.com> wrote:
>>
>> On Wed, Jul 4, 2018 at 7:12 PM, Haribabu Kommi <kommi.haribabu@gmail.com>
>> wrote:
>> >
>> > Update patch attached.
>>
>> + if (userid != 0 && dbid != 0 && queryid != 0)
>>
>> UINT64CONST() should be used for the constant for queryid?
>
>
> OK.
>
>>
>> It's rare case, but 0 can be assigned as valid queryid. Right?
>
>
> But for normal queries, in post parse analyze function, the queryID
> is calculated and it set to 1, in case if the calculation becomes 0.
> But for the utility statements, the calculation is done using the
> pgss_hash_string() function. I am not sure whether this function
> can return 0.

Though I've not read the whole code of pgss_hash_string(), ISTM that
the function can return 0. Otherwise, the following code is unnecessary
after queryid is assigned by hash_any_extended(),
in pgss_post_parse_analyze().

    /*
    * If we are unlucky enough to get a hash of zero, use 1 instead, to
    * prevent confusion with the utility-statement case.
    */
    if (query->queryId == UINT64CONST(0))
    query->queryId = UINT64CONST(1);

> If yes, then we may need same handling to utility statements
> similar like normal statements but with queryID as 2 for utility statements.

That's possible, but I think that it's better to get rid of such corner
case at all.

QueryID 2 is used in case if the generated hash value is 0 for utility statements
to give difference with normal statements and also used the UINT64CONST
macro as per the earlier comment.

updated patch attached. This patch needs to be applied on top of the ACL
permissions revert patch. ACL revert patch also in this thread.

Regards,
Haribabu Kommi
Fujitsu Australia
Attachment

pgsql-hackers by date:

Previous
From: "Iwata, Aya"
Date:
Subject: RE: hostorder and failover_timeout for libpq
Next
From: Andres Freund
Date:
Subject: Re: Non-reserved replication slots and slot advancing