Обсуждение: BUG #12046: lower_inf('(-infinity,today)'::tsrange) returns false

Поиск
Список
Период
Сортировка

BUG #12046: lower_inf('(-infinity,today)'::tsrange) returns false

От
presnypreklad@gmail.com
Дата:
The following bug has been logged on the website:

Bug reference:      12046
Logged by:          Nathan Cutler
Email address:      presnypreklad@gmail.com
PostgreSQL version: 9.3.5
Operating system:   openSUSE 13.2
Description:

In the course of writing a program that accepts tsrange literals from the
user, which are then plugged into various SQL queries, today I was testing
some tsranges to see how they are interpreted by PostgreSQL 9.3.5.

This one, in particular, behaves strangely: '(-infinity,today)'::tsrange

The lower_inf function says the lower bound is not infinite (!)

test=> SELECT lower_inf('(-infinity,today)'::tsrange);
 lower_inf
-----------
 f
(1 row)

Yet PostgreSQL reports that this tsrange contains a timestamp like
'1000-01-01 BC' . . .

test=> SELECT '(-infinity,today)'::tsrange @> '1000-01-01 BC'::timestamp;
 ?column?
----------
 t
(1 row)

Seems like a bug?

Re: BUG #12046: lower_inf('(-infinity,today)'::tsrange) returns false

От
Tom Lane
Дата:
presnypreklad@gmail.com writes:
> In the course of writing a program that accepts tsrange literals from the
> user, which are then plugged into various SQL queries, today I was testing
> some tsranges to see how they are interpreted by PostgreSQL 9.3.5.

> This one, in particular, behaves strangely: '(-infinity,today)'::tsrange

> The lower_inf function says the lower bound is not infinite (!)

This is not surprising: the range stuff has its own notion of "infinite
bounds", which has nothing to do with any infinity concept that the
underlying datatype may or may not have.  Trying to unify those concepts
would greatly complicate the interface between ranges and their component
datatypes, without actually buying very much AFAICS.

            regards, tom lane