The SQL spec has some detailed discussion of some strange null behaviours.
Specifically "row(1,null) is null" is false but "row(1,null) is not null" is
*also* supposed to be false. Postgres currently gets this wrong. "is [not]
null" is apparently supposed to mean "all the fields are (not) null".
So in the following the first query is correct but the second is incorrect:
pgbench=# select row(1::integer, null::integer) is null;?column?
----------f
(1 row)
pgbench=# select row(1::integer, null::integer) is not null;?column?
----------t
(1 row)
--
greg