On Thu, Nov 2, 2023 at 08:56:13AM +0100, Laurenz Albe wrote: > On Wed, 2023-11-01 at 18:03 -0400, Bruce Momjian wrote: > > On Wed, Nov 1, 2023 at 09:40:43PM +0100, Laurenz Albe wrote: > > > > Yes, I agree this documentation needs help. > > > > > > > > For upper/lower(), it is clear that the documentation is better saying > > > > "unspecified" rather than infinite. The fact that upper/lower_inf() > > > > returns false for +/-Infinity is quite odd, but should at least be > > > > documented. > > > > > > > > Patch attached. It is odd that +Infinity (vs. Infinity) wasn't > > > > supported for datetime input until PG 16, but I think we have to say > > > > +/-infinity vs (blank)/-Infinity. > > > > > > > > Patch attached. > > > > > > I am unhappy with "unspecified". A NULL value as upper or lower bound > > > has a very > > > specific meaning, namely that the range is unbounded in that direction. > > > This is > > > a bit confusing, since NULL is typically used for unknown or undefined > > > values. > > > > > > I think it would be better to say "returns NULL if the range is empty or > > > unbounded" > > > and "is the range unbounded on the upper end?". > > > > I had to go with "Is the multirange's lower bound unbounded?" because > > the surrounding items use that sentence structure. Patch attached. > > Better, though "Is the range's upper bound unbounded?" makes me cringe.
Oh, yeah, totally cringe, me too. :-) > It is not the bound that is bounded or not, but the range. > > How about "Is the range unbounded at the upper end?" or "Does the range > have no upper bound?" I used your "end" idea to modify the patch, attached. -- Bruce Momjian <br...@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index c76ec52c55..c2f266ea24 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -19905,7 +19905,7 @@ SELECT NULLIF(value, '(none)') ... </para> <para> Extracts the lower bound of the range (<literal>NULL</literal> if the - range is empty or the lower bound is infinite). + range is empty or unbounded). </para> <para> <literal>lower(numrange(1.1,2.2))</literal> @@ -19923,7 +19923,7 @@ SELECT NULLIF(value, '(none)') ... </para> <para> Extracts the upper bound of the range (<literal>NULL</literal> if the - range is empty or the upper bound is infinite). + range is empty or unbounded). </para> <para> <literal>upper(numrange(1.1,2.2))</literal> @@ -19991,7 +19991,8 @@ SELECT NULLIF(value, '(none)') ... <returnvalue>boolean</returnvalue> </para> <para> - Is the range's lower bound infinite? + Is the range's lower end unbounded? A +/-Infinity lower + bound returns false. </para> <para> <literal>lower_inf('(,)'::daterange)</literal> @@ -20008,7 +20009,8 @@ SELECT NULLIF(value, '(none)') ... <returnvalue>boolean</returnvalue> </para> <para> - Is the range's upper bound infinite? + Is the range's upper end unbounded? A +/-Infinity upper + bound returns false. </para> <para> <literal>upper_inf('(,)'::daterange)</literal> @@ -20063,7 +20065,7 @@ SELECT NULLIF(value, '(none)') ... </para> <para> Extracts the lower bound of the multirange (<literal>NULL</literal> if the - multirange is empty or the lower bound is infinite). + multirange is empty or unbounded). </para> <para> <literal>lower('{[1.1,2.2)}'::nummultirange)</literal> @@ -20081,7 +20083,7 @@ SELECT NULLIF(value, '(none)') ... </para> <para> Extracts the upper bound of the multirange (<literal>NULL</literal> if the - multirange is empty or the upper bound is infinite). + multirange is empty or unbounded). </para> <para> <literal>upper('{[1.1,2.2)}'::nummultirange)</literal> @@ -20149,7 +20151,8 @@ SELECT NULLIF(value, '(none)') ... <returnvalue>boolean</returnvalue> </para> <para> - Is the multirange's lower bound infinite? + Is the multirange's lower end unbounded? A +/-Infinity lower + bound returns false. </para> <para> <literal>lower_inf('{(,)}'::datemultirange)</literal> @@ -20166,7 +20169,8 @@ SELECT NULLIF(value, '(none)') ... <returnvalue>boolean</returnvalue> </para> <para> - Is the multirange's upper bound infinite? + Is the multirange's upper end unbounded? A +/-Infinity upper + bound returns false. </para> <para> <literal>upper_inf('{(,)}'::datemultirange)</literal>