Обсуждение: BUG #12046: lower_inf('(-infinity,today)'::tsrange) returns false
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?
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