ERROR : 'tuple concurrently updated'

From: Stéphan BEUZE <stephan(dot)beuze(at)douane(dot)finances(dot)gouv(dot)fr>
To: pgsql-hackers(at)postgreSQL(dot)org
Subject: ERROR : 'tuple concurrently updated'
Date: 2013-10-16 12:25:17
Message-ID: 525E85AD.3030705@douane.finances.gouv.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

The following query is performed concurrently by two threads logged in
with two different users:

WITH raw_stat AS (
SELECT
host(client_addr) as client_addr,
pid ,
usename
FROM
pg_stat_activity
WHERE
usename = current_user
)
INSERT INTO my_stat(id, client_addr, pid, usename)
SELECT
nextval('mystat_sequence'), t.client_addr, t.pid, t.usename
FROM (
SELECT
client_addr, pid, usename
FROM
raw_stat s
WHERE
NOT EXISTS (
SELECT
NULL
FROM
my_stat u
WHERE
current_date = u.creation
AND
s.pid = u.pid
AND
s.client_addr = u.client_addr
AND
s.usename = u.usename
)
) t;

From time to time, I get the following error: "tuple concurrently updated"

I can't figure out what throw this error and why this error is thrown.
Can you shed a light ?

-------------------------------
Here is the sql definition of the table mystat.

**mystats.sql**

CREATE TABLE mystat
(
id bigint NOT NULL,
creation date NOT NULL DEFAULT current_date,

client_addr text NOT NULL,
pid integer NOT NULL,
usename name NOT NULL,
CONSTRAINT statistiques_connexions_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2013-10-16 12:37:00 Re: Triggers on foreign tables
Previous Message MauMau 2013-10-16 12:07:00 Re: Auto-tuning work_mem and maintenance_work_mem