1. Also I found next ambiguous part: select upper_inf( '["2018-08-14","Infinity")'::daterange );
Thanks jstag from IRC for explanation that unbound and infinite are different essence. Thus, on the page https://www.postgresql.org/docs/11/functions-range.html lower_inf(anyrange) boolean is the lower bound infinite? lower_inf('(,)'::daterange) true upper_inf(anyrange) boolean is the upper bound infinite? upper_inf('(,)'::daterange) true should be spelled: lower_inf(anyrange) boolean is the lower bound unbound? lower_inf('(,)'::daterange) true upper_inf(anyrange) boolean is the upper bound unbound? upper_inf('(,)'::daterange) true should not? 2. I do not know, it where are any sense to distinguish: [ 2019-01-01, infinity ) and [ 2019-01-01, ) and because: https://www.postgresql.org/docs/11/rangetypes.html#RANGETYPES-INFINITE This is equivalent to considering that the lower bound is “minus infinity”, or the upper bound is “plus infinity”, respectively and because of next statement does not work: select '[2019-01-02,"infinity"]'::daterange @> 'infinity'::date; if you allow I will suggest to map/convert 'infinity' value to unbound range, for datatypes which defines 'infinity' value. so these two become same: [ 2019-01-01, infinity ) and [ 2019-01-01, ) It seems more consistent in compare to current behavior.