Thread: BUG #7501: Unique index fails to check uniqueness on nulls

BUG #7501: Unique index fails to check uniqueness on nulls

From
matthew.p.kusnierz@jpmorgan.com
Date:
The following bug has been logged on the website:

Bug reference:      7501
Logged by:          Matt Kusnierz
Email address:      matthew.p.kusnierz@jpmorgan.com
PostgreSQL version: 9.0.4
Operating system:   Windows XP
Description:        =


Multi-column unique indexes allow duplicate rows to be inserted if any of
the indexed columns are inserted with a null.

For example:

create table foo (a varchar(10) null, b varchar(10) null);
create unique index uix on foo (a, b);

insert into foo (a, b) values ('abc', null);
insert into foo (a, b) values ('abc', null);

Clearly the second insert should fail with an ERROR: duplicate key value
violates unique constraint "uix"

But this does not occur!

Re: BUG #7501: Unique index fails to check uniqueness on nulls

From
Jeff Davis
Date:
On Thu, 2012-08-23 at 09:38 +0000, matthew.p.kusnierz@jpmorgan.com
wrote:
> Multi-column unique indexes allow duplicate rows to be inserted if any of
> the indexed columns are inserted with a null.

That is mandated in the SQL spec, and is documented here:

"For the purpose of a unique constraint, null values are not considered
equal."

 -- http://www.postgresql.org/docs/9.2/static/sql-createtable.html

NULLs can be confusing, I know.

Regards,
    Jeff Davis