BUG #13073: Uniqueness constraint incorrectly reports constraint violations

From: dportas(at)acm(dot)org
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #13073: Uniqueness constraint incorrectly reports constraint violations
Date: 2015-04-16 20:03:34
Message-ID: 20150416200334.5200.85645@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 13073
Logged by: David Portas
Email address: dportas(at)acm(dot)org
PostgreSQL version: 9.1.13
Operating system: Debian Linux
Description:

Repro script:
CREATE TABLE tbl1 (x INT NOT NULL PRIMARY KEY);
INSERT INTO tbl1 VALUES (1),(2);
UPDATE tbl1 SET x = x +1;

Result:

ERROR: duplicate key value violates unique constraint "tbl1_pkey"
DETAIL: Key (x)=(2) already exists.

Expected result: UPDATE should succeed because the constraint is not
violated. The constraint should be evaluated against the complete resulting
table as per documentation: "unique with respect to all the rows in the
table"[1].

The expected result can be seen if the insertion order of the INSERTs is
reversed:
CREATE TABLE tbl1 (x INT NOT NULL PRIMARY KEY);
INSERT INTO tbl1 VALUES (2),(1);
UPDATE tbl1 SET x = x +1;

Result: UPDATE succeeds. This is expected but is inconsistent with the
previous result even though the two UPDATEs are logically equivalent.

The same effect is seen if UNIQUE is specified instead of PRIMARY KEY.

[1]http://www.postgresql.org/docs/9.1/static/ddl-constraints.html

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Guillaume Lelarge 2015-04-16 20:20:08 Re: BUG #13073: Uniqueness constraint incorrectly reports constraint violations
Previous Message rogerwinter 2015-04-16 14:56:44 BUG #13066: Package postgresql92-odbc has problems