Re: Have I found an interval arithmetic bug? - Mailing list pgsql-hackers

From Dean Rasheed
Subject Re: Have I found an interval arithmetic bug?
Date
Msg-id CAEZATCWaK0qdTiqxS=fM03VaKcfbYmSOV_JzqYDrVn2nSaMnFQ@mail.gmail.com
Whole thread Raw
In response to Re: Have I found an interval arithmetic bug?  (John W Higgins <wishdev@gmail.com>)
Responses Re: Have I found an interval arithmetic bug?  (John W Higgins <wishdev@gmail.com>)
Re: Have I found an interval arithmetic bug?  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
On Wed, 28 Jul 2021 at 00:08, John W Higgins <wishdev@gmail.com> wrote:
>
> It's nice to envision all forms of fancy calculations. But the fact is that
>
> '1.5 month'::interval * 2 != '3 month"::interval
>

That's not exactly true. Even without the patch:

SELECT '1.5 month'::interval * 2 AS product,
       '3 month'::interval AS expected,
       justify_interval('1.5 month'::interval * 2) AS justified_product,
       '1.5 month'::interval * 2 = '3 month'::interval AS equal;

    product     | expected | justified_product | equal
----------------+----------+-------------------+-------
 2 mons 30 days | 3 mons   | 3 mons            | t
(1 row)

So it's equal even without calling justify_interval() on the result.

FWIW, I remain of the opinion that the interval literal code should
just spill down to lower units in all cases, just like the
multiplication and division code, so that the results are consistent
(barring floating point rounding errors) and explainable.

Regards,
Dean



pgsql-hackers by date:

Previous
From: Richard Guo
Date:
Subject: Problem about postponing gathering partial paths for topmost scan/join rel
Next
From: Pavel Stehule
Date:
Subject: Re: proposal: enhancing plpgsql debug API - returns text value of variable content