Re: Update with subselect sometimes returns wrong result - Mailing list pgsql-bugs

From Tom Lane
Subject Re: Update with subselect sometimes returns wrong result
Date
Msg-id 25601.1385834264@sss.pgh.pa.us
Whole thread Raw
In response to Update with subselect sometimes returns wrong result  (Oliver Seemann <oseemann@gmail.com>)
Responses Re: Update with subselect sometimes returns wrong result  (Marko Tiikkaja <marko@joh.to>)
Re: Update with subselect sometimes returns wrong result  (Andres Freund <andres@2ndquadrant.com>)
List pgsql-bugs
Oliver Seemann <oseemann@gmail.com> writes:
> Given the following table:

> CREATE TABLE t1 (id INTEGER);
> INSERT INTO t1 VALUES (0), (1);

> Then the following UPDATE should return exactly one row:

> UPDATE t1 SET id = t1.id
> FROM (SELECT id FROM t1 LIMIT 1 FOR UPDATE) AS subset
> WHERE t1.id = subset.id
> RETURNING t1.id

> And it does so, most of of the time. But when run repeatedly in a loop like
> in the attached script, then it will occasionally return 2 rows with two
> different id values, something the LIMIT 1 should prevent. In my tests it
> took from anywhere between 0 to 10 minutes and on average 1 to 2 minutes to
> trigger the problem.

I failed to reproduce the claimed misbehavior in git tip of any active
branch.  I'd like to think this means we fixed the problem in the last
two months, but I don't see anything that looks like a promising candidate
in the commit logs.  Perhaps there is some important contributing factor
you've not mentioned --- nondefault postgresql.conf settings, for
instance.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Oliver Seemann
Date:
Subject: Re: Update with subselect sometimes returns wrong result
Next
From: Marko Tiikkaja
Date:
Subject: Re: Update with subselect sometimes returns wrong result