BUG #13608: 3 argument range constructor functions

Started by Kruus, Robert SPSAover 10 years ago2 messagesbugs
Jump to latest
#1Kruus, Robert SPSA
Robert.Kruus@gov.sk.ca

The following bug has been logged on the website:

Bug reference: 13608
Logged by: Robert Kruus
Email address: robert.kruus@gov.sk.ca
PostgreSQL version: 9.3.9
Operating system: FreeBSD (9.2)
Description:

The int4range, int8range, daterange functions seem to be ignoring the 3rd
argument which specifies the interval bounds.
i.e.
SELECT daterange('2010-01-01'::date, '2011-01-01'::date, '()'::text);
daterange
-------------------------
[2010-01-02,2011-01-02)

It works fine for numrange, tsrange, tstzrange.
i.e.
SELECT numrange(1,4, '()');
numrange
----------
(1,4)

PostgreSQL 9.3.9 on amd64-portbld-freebsd9.2, compiled by FreeBSD clang
version 3.3 (tags/RELEASE_33/final 183502) 20130610, 64-bit

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kruus, Robert SPSA (#1)
Re: BUG #13608: 3 argument range constructor functions

robert.kruus@gov.sk.ca writes:

The int4range, int8range, daterange functions seem to be ignoring the 3rd
argument which specifies the interval bounds.
i.e.
SELECT daterange('2010-01-01'::date, '2011-01-01'::date, '()'::text);
daterange
-------------------------
[2010-01-02,2011-01-02)

It's not ignoring it. What it's doing is canonicalizing the range so that
equivalent ranges actually look the same. Note your bounds have changed.
(BTW, you misquoted the result; the upper date does not change in this
case, at least not for me.)

See the discussion of discrete vs continuous range types at

http://www.postgresql.org/docs/9.3/static/rangetypes.html#RANGETYPES-DISCRETE

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs