From: | Peter Geoghegan <pg(at)bowt(dot)ie> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>, Greg Stark <stark(at)mit(dot)edu>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: 64-bit queryId? |
Date: | 2017-10-02 21:18:22 |
Message-ID: | CAH2-WzkueMfAmY3onoXLi+g67SJoKY65Cg9Z1QOhSyhCEU8w3g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Oct 2, 2017 at 9:10 AM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Mon, Oct 2, 2017 at 11:02 AM, Joshua D. Drake <jd(at)commandprompt(dot)com> wrote:
>> +1 to both of these as well.
>
> OK, so here's a patch. Review appreciated.
You need to change the SQL interface as well, although I'm not sure
exactly how. The problem is that you are now passing a uint64 queryId
to Int64GetDatumFast() within pg_stat_statements_internal(). That
worked when queryId was a uint32, because you can easily represent
values <= UINT_MAX as an int64/int8. However, you cannot represent the
second half of the range of uint64 within a int64/int8. I think that
this will behave different depending on USE_FLOAT8_BYVAL, if nothing
else.
The background here is that we used int8 as the output type for the
function when queryId was first exposed via the SQL interface because
there was no 32-bit unsigned int type that we could have used (except
possibly Oid, but that's weird). You see the same pattern in a couple
of other places.
--
Peter Geoghegan
From | Date | Subject | |
---|---|---|---|
Next Message | Maksim Milyutin | 2017-10-02 21:20:19 | Re: [BUG] Cache invalidation for queries that contains const of temporary composite type |
Previous Message | Tatsuo Ishii | 2017-10-02 21:09:31 | Re: list of credits for release notes |