Re: Update with subselect sometimes returns wrong result

From: Oliver Seemann <oseemann(at)gmail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Cc: jturkel(at)salsify(dot)com
Subject: Re: Update with subselect sometimes returns wrong result
Date: 2013-11-30 07:32:44
Message-ID: CANCipfo+EcjH4O8bFroRojBgwdXN05b-qq69zkmfZYc06vE_3A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

This looks like the same issue:
http://www.postgresql.org/message-id/E1VN53g-0002Iy-Il@wrigleys.postgresql.org

2013/11/30 Oliver Seemann <oseemann(at)gmail(dot)com>

> Hi!
>
> 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 have reproduced the issue on different machines and platforms with PG
> 9.3.1, 9.1.10, 9.0.14. (See file).
>
> Interesting, and perhaps telling:
> When autovacuum=off in postgresql.conf then I could not trigger the
> problem.
>
>
> Oliver
>
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2013-11-30 17:57:44 Re: Update with subselect sometimes returns wrong result
Previous Message Oliver Seemann 2013-11-29 23:08:14 Update with subselect sometimes returns wrong result