From: | Joseph Koshakow <koshy44(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Fix overflow in DecodeInterval |
Date: | 2022-04-02 19:51:38 |
Message-ID: | CAAvxfHf8mXDaCjHmvDHNcKw8o8+cBOHiB+nE5ea9_a-1oiVS0Q@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sat, Apr 2, 2022 at 3:08 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> Joseph Koshakow <koshy44(at)gmail(dot)com> writes:
> > Ok I actually remember now, the issue is with the rounding
> > code in AdjustFractMicroseconds.
> > ...
> > I believe it's possible for `frac -= usec;` to result in a value greater
> > than 1 or less than -1 due to the lossiness of int64 to double
> > conversions.
>
> I think it's not, at least not for the interesting range of possible
> values in this code. Given that abs(frac) < 1 to start with, the
> abs value of usec can't exceed the value of scale, which is at most
> USECS_PER_DAY so it's at most 37 or so bits, which is well within
> the exact range for any sane implementation of double. It would
> take a very poor floating-point implementation to not get the right
> answer here. (And we're largely assuming IEEE-compliant floats these
> days.)
Ah, I see. That makes sense to me.
On Sat, Apr 2, 2022 at 3:10 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> Joseph Koshakow <koshy44(at)gmail(dot)com> writes:
> > I took a stab at this issue and the attached patch (which would be
> > applied on top of your v10 patch) seems to fix the issue. Feel
> > free to ignore it if you're already working on a fix.
>
> You really only need to flip val/fval in one place. More to the
> point, there's also the hh:mm:ss paths to deal with; see my v11.
Good point. Thanks again for all the help!
- Joe Koshakow
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Munro | 2022-04-02 20:07:58 | Re: A qsort template |
Previous Message | Andrew Dunstan | 2022-04-02 19:40:03 | Re: JSON constructors and window functions |