Re: Infinite Interval

jian he <jian.universality@gmail.com>

From: jian he <jian.universality@gmail.com>
To: Joseph Koshakow <koshy44@gmail.com>
Cc: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-01-09T04:17:24Z
Lists: pgsql-hackers
On Sun, Jan 8, 2023 at 4:22 AM Joseph Koshakow <koshy44@gmail.com> wrote:

> On Sat, Jan 7, 2023 at 3:05 PM Joseph Koshakow <koshy44@gmail.com> wrote:
> >
> > On Sat, Jan 7, 2023 at 3:04 PM Joseph Koshakow <koshy44@gmail.com>
> wrote:
> > >
> > > I think this patch is just about ready for review, except for the
> > > following two questions:
> > >   1. Should finite checks on intervals only look at months or all three
> > >   fields?
> > >   2. Should we make the error messages for adding/subtracting infinite
> > >   values more generic or leave them as is?
> > >
> > > My opinions are
> > >   1. We should only look at months.
> > >   2. We should make the errors more generic.
> > >
> > > Anyone else have any thoughts?
>
> Here's a patch with the more generic error messages.
>
> - Joe
>

HI.

I just found out another problem.

select * from  generate_series(timestamp'-infinity', timestamp 'infinity',
interval 'infinity');
ERROR:  timestamp out of range

select * from  generate_series(timestamp'-infinity',timestamp 'infinity',
interval '-infinity'); --return following

 generate_series
-----------------
(0 rows)


select * from generate_series(timestamp 'infinity',timestamp 'infinity',
interval 'infinity');
--will run all the time.

select * from  generate_series(timestamp 'infinity',timestamp 'infinity',
interval '-infinity');
ERROR:  timestamp out of range

 select * from  generate_series(timestamp'-infinity',timestamp'-infinity',
interval 'infinity');
ERROR:  timestamp out of range

select * from  generate_series(timestamp'-infinity',timestamp'-infinity',
interval '-infinity');
--will run all the time.

-- 
 I recommend David Deutsch's <<The Beginning of Infinity>>

  Jian

Commits

  1. Support +/- infinity in the interval data type.

  2. Avoid integer overflow hazard in interval_time().

  3. Guard against overflow in make_interval().

  4. Fix minmax-multi on infinite date/timestamp values

  5. Optimize various aggregate deserialization functions, take 2

  6. Remove dead code in DecodeInterval()

  7. Accept "+infinity" in date and timestamp[tz] input.

  8. Fix overflow hazards in interval input and output conversions.