Re: Why does the range type's upper function behave inconsistently? - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Why does the range type's upper function behave inconsistently?
Date
Msg-id 55996A4F.3040508@aklaver.com
Whole thread Raw
In response to Why does the range type's upper function behave inconsistently?  (Dane Foster <studdugie@gmail.com>)
Responses Re: Why does the range type's upper function behave inconsistently?  (Dane Foster <studdugie@gmail.com>)
List pgsql-general
On 07/05/2015 10:13 AM, Dane Foster wrote:
> I don't understand the inconsistent behavior of the range types' upper
> function in regard to inclusive ranges.
>
> For example(s):
> 1. SELECT upper(int4range(1, 4, '[]')) = 4; -- FALSE
> 2. SELECT upper(int8range(1, 4, '[]')) = 4; -- FALSE
> 3. SELECT upper(numrange(1, 4, '[]')) = 4; -- TRUE
> 4. SELECT upper(tstzrange('2015-07-01: 00:00:00', now(), '[]')) = now();
> -- TRUE
> 5. SELECT upper(daterange('2015-01-01', current_date, '[]')) =
> current_date; -- FALSE

To follow up on Julien Rouhaud post, if you do:

production=# select daterange('2015-01-01', current_date, '[]');
         daterange
-------------------------
  [2015-01-01,2015-07-06)
(1 row)

see that the '[]] has been changed to '[)' with tomorrows date as the
upper bound.

>
> #1 & #2 are FALSE because upper returns 5 instead of 4; and #5 is FALSE
> because upper returns: current_date + interval '1 day'. I don't
> understand the logic behind why it would return the inclusive upper
> bound value for some ranges and not others. If anyone can shed some
> light on this behavior it would be greatly appreciated.
>
> One of things I originally tried to use upper for was CHECK constraints.
> That was until I wrote some unit tests and realized that upper doesn't
> consistently work the way I expected. Of course my assumptions are
> probably wrong so that's why I'm asking for clarification.
>
> Regards,
>
> Dane


--
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Why does the range type's upper function behave inconsistently?
Next
From: Dane Foster
Date:
Subject: Re: Why does the range type's upper function behave inconsistently?