| From: | nikita(dot)y(dot)volkov(at)mail(dot)ru |
|---|---|
| To: | pgsql-bugs(at)postgresql(dot)org |
| Subject: | BUG #12330: ACID is broken for unique constraints |
| Date: | 2014-12-24 14:01:53 |
| Message-ID: | 20141224140153.11501.49752@wrigleys.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs pgsql-hackers |
The following bug has been logged on the website:
Bug reference: 12330
Logged by: Nikita Volkov
Email address: nikita(dot)y(dot)volkov(at)mail(dot)ru
PostgreSQL version: 9.2.4
Operating system: OSX 10.8.2
Description:
Executing concurrent transactions inserting the same value of a unique key
fails with the "duplicate key" error under code "23505" instead of any of
transaction conflict errors with a "40***" code.
E.g., having the following table:
CREATE TABLE "song_artist" (
"song_id" INT8 NOT NULL,
"artist_id" INT8 NOT NULL,
PRIMARY KEY ("song_id", "artist_id")
);
Even trying to protect from this with a select, won't help to get away from
the error, because at the beginning of the transaction the key does not
exist yet.
BEGIN ISOLATION LEVEL SERIALIZABLE READ WRITE;
INSERT INTO song_artist (song_id, artist_id)
SELECT 1, 2
WHERE NOT EXISTS (SELECT * FROM song_artist WHERE song_id=1 AND
artist_id=2);
COMMIT;
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jeff Janes | 2014-12-24 15:05:11 | Re: BUG #12326: I think maybe postgresql has a problem about timezone. |
| Previous Message | 284466130 | 2014-12-24 13:21:07 | BUG #12328: can't install the postgresql |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David Rowley | 2014-12-24 14:08:50 | Re: replicating DROP commands across servers |
| Previous Message | Fujii Masao | 2014-12-24 13:51:44 | Re: Moving RestoreBlockImage from xlogreader.c to xlogutils.c |