Fix daterange canonicalization for +/- infinity.
authorJeff Davis <jdavis@postgresql.org>
Thu, 18 Jul 2019 23:53:17 +0000 (16:53 -0700)
committerJeff Davis <jdavis@postgresql.org>
Thu, 18 Jul 2019 23:53:17 +0000 (16:53 -0700)
commit56afeb765177ac135a2524551a148c67dc65addb
tree5d0680da5e9d3a3b63ea8ca3b019c0583122e861
parente3441b2a22b2d38f62b7bcbb10682de1acb0b2d6
Fix daterange canonicalization for +/- infinity.

The values 'infinity' and '-infinity' are a part of the DATE type
itself, so a bound of the date 'infinity' is not the same as an
unbounded/infinite range. However, it is still wrong to try to
canonicalize such values, because adding or subtracting one has no
effect. Fix by treating 'infinity' and '-infinity' the same as
unbounded ranges for the purposes of canonicalization (but not other
purposes).

Backpatch to all versions because it is inconsistent with the
documented behavior. Note that this could be an incompatibility for
applications relying on the behavior contrary to the documentation.

Author: Laurenz Albe
Reviewed-by: Thomas Munro
Discussion: https://postgr.es/m/77f24ea19ab802bc9bc60ddbb8977ee2d646aec1.camel%40cybertec.at
Backpatch-through: 9.4
src/backend/utils/adt/rangetypes.c
src/test/regress/expected/rangetypes.out
src/test/regress/sql/rangetypes.sql