doc: move ROW IS NULL examples to a different chapter
authorBruce Momjian <bruce@momjian.us>
Mon, 13 Nov 2023 20:20:54 +0000 (15:20 -0500)
committerBruce Momjian <bruce@momjian.us>
Mon, 13 Nov 2023 20:20:54 +0000 (15:20 -0500)
Also add examples.

Reported-by: Wolfgang Walther
Discussion: https://postgr.es/m/21ff8e9c-627a-f949-fb00-a41b9ddcc9d3@technowledgy.de

Backpatch-through: master

doc/src/sgml/func.sgml
doc/src/sgml/syntax.sgml

index d963f0a0a0000160e11ee75b22afd1affdd19046..92843b2abb3b6b66c0d44e494fc2b4892dabaf53 100644 (file)
@@ -718,7 +718,19 @@ repeat('Pg', 4) <returnvalue>PgPgPgPg</returnvalue>
     <literal>IS NULL</literal> and <literal>IS NOT NULL</literal> do not always return
     inverse results for row-valued expressions; in particular, a row-valued
     expression that contains both null and non-null fields will return false
-    for both tests.  In some cases, it may be preferable to
+    for both tests.  For example: 
+
+<programlisting>
+SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same');
+
+SELECT ROW(table.*) IS NULL FROM table;  -- detect all-null rows
+
+SELECT ROW(table.*) IS NOT NULL FROM table;  -- detect all-non-null rows
+
+SELECT NOT(ROW(table.*) IS NOT NULL) FROM TABLE; -- detect at least one null in rows
+</programlisting>
+
+    In some cases, it may be preferable to
     write <replaceable>row</replaceable> <literal>IS DISTINCT FROM NULL</literal>
     or <replaceable>row</replaceable> <literal>IS NOT DISTINCT FROM NULL</literal>,
     which will simply check whether the overall row value is null without any
index 9cee925a4836f80eff51527af935d183e9817684..37817d06384ce935ce18d37d96d3bca462dcc5dd 100644 (file)
@@ -2479,17 +2479,12 @@ SELECT getf1(CAST(ROW(11,'this is a test',2.5) AS myrowtype));
   <para>
    Row constructors can be used to build composite values to be stored
    in a composite-type table column, or to be passed to a function that
-   accepts a composite parameter.  Also,
-   it is possible to compare two row values or test a row with
-   <literal>IS NULL</literal> or <literal>IS NOT NULL</literal>, for example:
-<programlisting>
-SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same');
-
-SELECT ROW(table.*) IS NULL FROM table;  -- detect all-null rows
-</programlisting>
-   For more detail see <xref linkend="functions-comparisons"/>.
-   Row constructors can also be used in connection with subqueries,
-   as discussed in <xref linkend="functions-subquery"/>.
+   accepts a composite parameter.  Also, it is possible to test rows
+   using the standard comparison operators as described in <xref
+   linkend="functions-comparison"/>, to compare one row against another
+   as described in <xref linkend="functions-comparisons"/>, and to
+   use them in connection with subqueries, as discussed in <xref
+   linkend="functions-subquery"/>,
   </para>
 
   </sect2>