On 4/29/19 12:12 PM, PG Doc comments form wrote: > The following documentation comment has been logged on the website: > > Page: https://www.postgresql.org/docs/11/rangetypes.html > Description: > > Hi. > > May I read this: > > But [today,infinity] means something different from [today,infinity) — the > latter excludes the special timestamp value infinity. > > as > > But [today,infinity] means something different from [today,infinity) — the > **first includes** the special timestamp value infinity. > > But previous paragraph says: > > But note that these infinite values are never values of the range's element > type, and can never be part of the range. (So there is no such thing as an > inclusive infinite bound — if you try to write one, it will automatically be > converted to an exclusive bound.) > > if 'infinity' can not be the part of a range this will mean: > > [today,infinity] means same as [today,infinity) > > errr... which one is correct? Please fix documentation.
'infinity' in that case is a special type of date/timestamp: https://www.postgresql.org/docs/current/datatype-datetime.html#id-1.5.7.13.19.8 which is what that paragraph is referring to. It's discussing "infinity-like" objects you may see that are different than how range types treat infinity. I re-read the language, I would not advocate for making any changes. > PS. The problem I am faced into: > I am implementing be-temporal interface. I have current period. It can be > [2019-01-01,2019-02-01), > [2019-02-01,2019-03-01) and [2019-03-01,infinity) for the current month. > > When I setup current_period to one of those I will get Orders at that > period. The Orders have with 'last_bill_date' field which will show the date > of Invoice for that Order. > For new Order we can set 'infinity' into 'last_bill_date' which will mean > that we should create Invoice. > Now to select all Order for which we should create Invoice we can write: > > select * from "order" o where o.last_bill_date +interval o.bill_interval <@ > current_period(); > > This seems obvious that infinity is part of [value, infinity) ( or > [value,infinity] ) range. (in other words the 'infinity' is always the part > of range with infinite inclusive or exclusive bound. > > This is just view from my point, there can be things that I am not aware of. You should drop the 'infinity' and just let it be NULL, i.e. daterange('2019-03-01', NULL); Jonathan
signature.asc
Description: OpenPGP digital signature