David Newall wrote:
> PostgreSQL version: 7.4.3 (RPMs from ftp.au.postgresql.org)
>
> Operating Sysem: Fedora Core 1
>
> CREATE TABLE t1 (i INTEGER, j INTEGER);
> INSERT INTO t1 VALUES (1, NULL);
> CREATE TABLE t2 AS SELECT * FROM t1;
> SELECT * FROM t1 JOIN t2 USING (i, j);
> i | j
> ---+---
> (0 rows)
>
> I believe the one row, which is identically present in both table,
> should be selected. The problem occurs because of the NULL value.
A join happens when two values are equal in the sense of the operator =.
But "NULL = NULL" is not true, so the behavior is correct.