Re: Infinite Interval
jian he <jian.universality@gmail.com>
From: jian he <jian.universality@gmail.com>
To: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Cc: Dean Rasheed <dean.a.rasheed@gmail.com>,
Joseph Koshakow <koshy44@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, "Gregory Stark (as CFM)" <stark.cfm@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-10-31T00:00:00Z
Lists: pgsql-hackers
On Mon, Oct 30, 2023 at 6:01 PM Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote: > > > Here's my version of commit message > > ``` > Support Infinite interval values > > Interval datatype uses the same input and output representation for > infinite intervals as other datatypes representing time that support > infinity. An interval larger than any other interval is represented by > string literal 'infinity' or '+infinity'. An interval which is smaller > than any other interval is represented as '-infinity'. Internally > positive infinity is represented as maximum values supported by all > the member types of Interval datastructure and negative infinity is > represented as minimum values set to all the members. INTERVAL_NOBEGIN > and INTERVAL_NOEND macros can be used to set an Interval structure to > negative and positive infinity respectively. INTERVAL_IS_NOBEGIN and > INTERVAL_IS_NOEND macros are used to test respective values. > INTERVAL_NOT_FINITE macro is used to test whether a given Interval > value is infinite. > > Implementation of all known operators now handles infinite interval > values along with operations related to BRIN index, windowing and > selectivity. Regression tests are added to test these implementation. > > If a user has stored interval values '-2147483648 months -2147483648 > days -9223372036854775807 us' and '2147483647 months 2147483647 days > 9223372036854775806 us' in PostgreSQL versions 16 or earlier. Those > values will turn into '-infinity' and 'infinity' respectively after > upgrading to v17. These values are outside the documented range > supported by interval datatype and thus there's almost no possibility > of this occurrence. But it will be good to watch for these values > during upgrade. > ``` > the message is plain enough. I can understand it. thanks!
Commits
-
Support +/- infinity in the interval data type.
- 519fc1bd9e9d 17.0 landed
-
Avoid integer overflow hazard in interval_time().
- 3850d4dec1d9 17.0 landed
-
Guard against overflow in make_interval().
- b2d55447a563 17.0 landed
-
Fix minmax-multi on infinite date/timestamp values
- 8da86d62a112 17.0 cited
-
Optimize various aggregate deserialization functions, take 2
- 0c882a298881 17.0 cited
-
Remove dead code in DecodeInterval()
- d6d1430f4043 17.0 cited
-
Accept "+infinity" in date and timestamp[tz] input.
- 2ceea5adb026 16.0 cited
-
Fix overflow hazards in interval input and output conversions.
- e39f99046710 15.0 cited