From: | Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | David Steele <david(at)pgmasters(dot)net>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Petr Fedorov <petr(dot)fedorov(at)phystech(dot)edu>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch |
Date: | 2021-04-01 18:49:45 |
Message-ID: | 75db3efe-8023-58ef-9ee4-8a6a3101c7ca@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
On 19.03.21 21:06, Tom Lane wrote:
> Yeah, I was wondering if we could do something like that, but I hadn't
> got as far as figuring a way to deal with divisors not a multiple of
> NBASE.
>
> Looking at the proposed code, I wonder if it wouldn't be better to
> define the function as taking the base-10-log of the divisor, so that
> you'd have the number of digits to shift (and the dscale) immediately
> instead of needing repeated integer divisions to get that.
done that way, much simpler now
> Also, the
> risk of intermediate overflow here seems annoying:
>
> + if (unlikely(pg_mul_s64_overflow(val1, NBASE/x, &val1)))
> + elog(ERROR, "overflow");
>
> Maybe that's unreachable for the ranges of inputs the current patch could
> create, but it seems like it makes the function distinctly less
> general-purpose than one would think from its comment. Maybe, if that
> overflows, we could handle the failure by making that adjustment after
> we've converted to numeric?
also done
I also figured out a way to combine the float8 and numeric
implementations so that there is not so much duplication. Added tests
to cover all the edge and overflow cases.
I think this is solid now.
The extract(julian from timestamp) is still a bit in the slow mode, but
as I previously stated, it's not documented and gives the wrong result,
so it's not clear whether it should be fixed and what it should do. I
think I'll register that part as an open item in any case, to see what
we should do about that.
Attachment | Content-Type | Size |
---|---|---|
v6-0001-Change-return-type-of-EXTRACT-to-numeric.patch | text/plain | 95.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | egashira.yusuke@fujitsu.com | 2021-04-02 11:09:21 | RE: BUG #16922: In cascading replication, a standby server aborted when an upstream standby server promoted |
Previous Message | Tom Lane | 2021-04-01 18:13:38 | Re: BUG #16951: pg_restore segfaults on custom format piped from a different version of PG |
From | Date | Subject | |
---|---|---|---|
Next Message | 'alvherre@alvh.no-ip.org' | 2021-04-01 19:05:36 | Re: libpq debug log |
Previous Message | Tom Lane | 2021-04-01 18:35:54 | Re: libpq debug log |