doc: move ROW IS NULL examples to a different chapter
authorBruce Momjian
Mon, 13 Nov 2023 20:20:54 +0000 (15:20 -0500)
committerBruce Momjian
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) PgPgPgPg
     IS NULL and IS NOT NULL 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: 
+
+
+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
+
+
+    In some cases, it may be preferable to
     write row IS DISTINCT FROM NULL
     or row IS NOT DISTINCT FROM NULL,
     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));
   
    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
-   IS NULL or IS NOT NULL, for example:
-
-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
-
-   For more detail see .
-   Row constructors can also be used in connection with subqueries,
-   as discussed in .
+   accepts a composite parameter.  Also, it is possible to test rows
+   using the standard comparison operators as described in 
+   linkend="functions-comparison"/>, to compare one row against another
+   as described in , and to
+   use them in connection with subqueries, as discussed in 
+   linkend="functions-subquery"/>,