Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Thomas Munro <thomas.munro@gmail.com>, Petr Fedorov <petr.fedorov@phystech.edu>
Date: 2020-09-07T03:46:57Z
Lists: pgsql-bugs, pgsql-hackers
po 7. 9. 2020 v 1:46 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:

> Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> > Here is a new patch series version.
> > I have created a new internal function for converting integers to
> > numeric, to make the implementation a bit more elegant and compact.
>
> I reviewed the 0002 patch, finding one bug (in int8_sum) and a few
> more calls of int8_numeric that could be converted.  I think the
> attached updated version is committable, and I'd recommend going
> ahead with that regardless of the rest of this.  I hadn't realized
> how many random calls of int8_numeric and int4_numeric we'd grown,
> but there are a lot, so this is nice cleanup.
>

This patch is a clean win.

+1


> I continue to think that we can't commit 0003 in this form, because
> of the breakage that will ensure in stored views.  As I said upthread,
> we should leave the existing SQL-exposed functions alone, invent
> new ones that return numeric, and alter the parser to translate
> EXTRACT constructs to the new functions.  This approach would also
> provide an "out" for anyone who does complain about the performance
> cost --- they can just continue to use the old functions.
>

+1

Regards

Pavel


>                         regards, tom lane
>
>

Commits

  1. Fix inconsistent equalfuncs.c behavior for FuncCall.funcformat.

  2. Doc: fix discussion of how to get real Julian Dates.

  3. Doc: document EXTRACT(JULIAN ...), improve Julian Date explanation.

  4. Change return type of EXTRACT to numeric

  5. Improve our ability to regurgitate SQL-syntax function calls.

  6. Add more tests for EXTRACT of date type

  7. Expose internal function for converting int64 to numeric

  8. Change floating-point output format for improved performance.