From: | Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
---|---|
To: | Joseph Koshakow <koshy44(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Gregory Stark (as CFM)" <stark(dot)cfm(at)gmail(dot)com>, jian he <jian(dot)universality(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Infinite Interval |
Date: | 2023-03-31 12:46:12 |
Message-ID: | CAExHW5vT1_P=pzNhvyf2vPmRURenzyu0v0o0qpvxkzf8BeX=4w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I hurried too much on the previous patch. It introduced other
problems. Attached is a better patch and also fixes problem below
#select 'infinity'::interval * 0;
?column?
----------
infinity
(1 row)
with the patch we see
#select 'infinity'::interval * 0;
2023-03-31 18:00:43.131 IST [240892] ERROR: interval out of range
2023-03-31 18:00:43.131 IST [240892] STATEMENT: select
'infinity'::interval * 0;
ERROR: interval out of range
which looks more appropriate given 0 * inf = Nan for float.
There's some way to avoid separate checks for infinite-ness of
interval and factor and use a single block using some integer
arithmetic. But I think this is more readable. So I avoided doing
that. Let me know if this works for you.
Also added some test cases.
--
Best Wishes,
Ashutosh Bapat
On Fri, Mar 31, 2023 at 3:46 PM Ashutosh Bapat
<ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> wrote:
>
> On Tue, Mar 28, 2023 at 7:17 PM Ashutosh Bapat
> <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> wrote:
> > make sure that every
> > operator that interval as one of its operands or the result has been
> > covered in the code.
>
> time_mi_time - do we want to add an Assert to make sure that this
> function does not produce an Interval structure which looks like
> non-finite interval?
>
> multiplying an interval by infinity throws an error
> #select '5 days'::interval * 'infinity'::float8;
> 2023-03-29 19:40:15.797 IST [136240] ERROR: interval out of range
> 2023-03-29 19:40:15.797 IST [136240] STATEMENT: select '5
> days'::interval * 'infinity'::float8;
> ERROR: interval out of range
>
> I think this should produce an infinite interval now. Attached patch
> to fix this, to be applied on top of your patch. With the patch
> #select '5 days'::interval * 'infinity'::float8;
> ?column?
> ----------
> infinity
> (1 row)
>
> Going through the tests now.
>
> --
> Best Wishes,
> Ashutosh Bapat
Attachment | Content-Type | Size |
---|---|---|
interval_mul_fixes.patch | text/x-patch | 1.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2023-03-31 12:55:00 | Re: regression coverage gaps for gist and hash indexes |
Previous Message | Jehan-Guillaume de Rorthais | 2023-03-31 12:06:11 | Re: Memory leak from ExecutorState context? |