Doc: clarify behavior of standard aggregates for null inputs.
authorTom Lane
Tue, 27 Aug 2019 20:37:21 +0000 (16:37 -0400)
committerTom Lane
Tue, 27 Aug 2019 20:37:21 +0000 (16:37 -0400)
Section 4.2.7 says that unless otherwise specified, built-in
aggregates ignore rows in which any input is null.  This is
not true of the JSON aggregates, but it wasn't documented.
Fix that.

Of the other entries in table 9.55, some were explicit about
ignoring nulls, and some weren't; for consistency and
self-contained-ness, make them all say it explicitly.

Per bug #15884 from Tim Möhlmann.  Back-patch to all supported
branches.

Discussion: https://postgr.es/m/15884-c32d848f787fcae3@postgresql.org

doc/src/sgml/func.sgml

index a7abf8c2eee0867c8a4a436888d4006211f0830a..c878a0ba4debf4fc79fc31eec2fea6f0efee608e 100644 (file)
@@ -14604,7 +14604,7 @@ NULL baz(3 rows)
       No
       input arrays concatenated into array of one higher dimension
        (inputs must all have same dimensionality,
-        and cannot be empty or NULL)
+        and cannot be empty or null)
      
 
      
@@ -14628,7 +14628,7 @@ NULL baz(3 rows)
        otherwise the same as the argument data type
       
       Yes
-      the average (arithmetic mean) of all input values
+      the average (arithmetic mean) of all non-null input values
      
 
      
@@ -14756,7 +14756,7 @@ NULL baz(3 rows)
        json
       
       No
-      aggregates values as a JSON array
+      aggregates values, including nulls, as a JSON array
      
 
      
@@ -14773,7 +14773,7 @@ NULL baz(3 rows)
        jsonb
       
       No
-      aggregates values as a JSON array
+      aggregates values, including nulls, as a JSON array
      
 
      
@@ -14790,7 +14790,8 @@ NULL baz(3 rows)
        json
       
       No
-      aggregates name/value pairs as a JSON object
+      aggregates name/value pairs as a JSON object; values can be
+       null, but not names
      
 
      
@@ -14807,7 +14808,8 @@ NULL baz(3 rows)
        jsonb
       
       No
-      aggregates name/value pairs as a JSON object
+      aggregates name/value pairs as a JSON object; values can be
+       null, but not names
      
 
      
@@ -14823,7 +14825,7 @@ NULL baz(3 rows)
       Yes
       
        maximum value of 
-       class="parameter">expression across all input
+       class="parameter">expression across all non-null input
        values
       
      
@@ -14841,7 +14843,7 @@ NULL baz(3 rows)
       Yes
       
        minimum value of 
-       class="parameter">expression across all input
+       class="parameter">expression across all non-null input
        values
       
      
@@ -14863,7 +14865,7 @@ NULL baz(3 rows)
        same as argument types
       
       No
-      input values concatenated into a string, separated by delimiter
+      non-null input values concatenated into a string, separated by delimiter
      
 
      
@@ -14886,7 +14888,8 @@ NULL baz(3 rows)
        argument data type
       
       Yes
-      sum of expression across all input values
+      sum of expression
+       across all non-null input values
      
 
      
@@ -14903,7 +14906,8 @@ NULL baz(3 rows)
        xml
       
       No
-      concatenation of XML values (see also )
+      concatenation of non-null XML values
+       (see also )