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 ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org