In PostgreSQL 18, what does SELECT ROW(NULL::int, 1) = ROW(NULL::int, 2); return?
Explanation
Row equality returns false as soon as any pair of corresponding fields is non-null and unequal, so 1 <> 2 settles the comparison and the null in the first field is never reached. NULL is only the answer when no pair is unequal and at least one pair involves a null - SELECT ROW(NULL::int, 1) = ROW(NULL::int, 1); does return NULL.