BUG #13496: INSERT WHERE NOT EXISTS error - Mailing list pgsql-bugs

From ilies.ovidiu@googlemail.com
Subject BUG #13496: INSERT WHERE NOT EXISTS error
Date
Msg-id 20150709155304.15752.16284@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #13496: INSERT WHERE NOT EXISTS error  ("David G. Johnston" <david.g.johnston@gmail.com>)
Re: BUG #13496: INSERT WHERE NOT EXISTS error  (hubert depesz lubaczewski <depesz@depesz.com>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      13496
Logged by:          Radu Ovidiu
Email address:      ilies.ovidiu@googlemail.com
PostgreSQL version: 9.4.4
Operating system:   Debian Linux 8 / Redhat Linux 6.5
Description:

Hi,

I run a web server with high loads ~ 700 users / minute.

Sometimes (rare) I get an error like duplicate value violation on insert on
field "search_term".

Table is like:
id, primary key
search_term, varchar(255), UNIQUE

The insert query is like:
INSERT INTO "website"."search_terms" SELECT 'someID', 'someSearchTerm' WHERE
NOT EXISTS ( SELECT 1 FROM "website"."search_terms" WHERE (("id" = 'someID')
OR ("term" = 'someSearchTerm')) LIMIT 1 OFFSET 0 )

It appears this "upsert" is not safe in high concurency mode ~ 20 users /
second as I see in Google analytics for that period of time.

pgsql-bugs by date:

Previous
From: Michael Paquier
Date:
Subject: Re: PQexec() hangs on OOM
Next
From: "David G. Johnston"
Date:
Subject: Re: BUG #13496: INSERT WHERE NOT EXISTS error