Skip site navigation (1) Skip section navigation (2)

pgsql: Fix oversight in EvalPlanQualFetch: after failing to lock a tuple

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix oversight in EvalPlanQualFetch: after failing to lock a tuple
Date: 2010-01-08 02:44:00
Message-ID: 20100108024400.5DDDE7541B9@cvs.postgresql.org (view raw or flat)
Thread:
Lists: pgsql-committers
Log Message:
-----------
Fix oversight in EvalPlanQualFetch: after failing to lock a tuple because
someone else has just updated it, we have to set priorXmax to that tuple's
xmax (ie, the XID of the other xact that updated it) before looping back to
examine the next tuple.  Obviously, the next tuple in the update chain should
have that XID as its xmin, not the same xmin as the preceding tuple that we
had been trying to lock.  The mismatch would cause the EvalPlanQual logic to
decide that the tuple chain ended in a deletion, when actually there was a
live tuple that should have been found.

I inserted this error when recently adding logic to EvalPlanQual to make it
lock tuples before returning them (as opposed to the old method in which the
lock would occur much later, causing a great deal of work to be wasted if we
only then discover someone else updated it).  Sigh.  Per today's report from
Takahiro Itagaki of inconsistent results during pgbench runs.

Modified Files:
--------------
    pgsql/src/backend/executor:
        execMain.c (r1.340 -> r1.341)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execMain.c?r1=1.340&r2=1.341)

pgsql-committers by date

Next:From: Tom LaneDate: 2010-01-08 02:51:24
Subject: Re: pgsql: Fix (some of the) breakage introduced into query-cancel
Previous:From: User FxjrDate: 2010-01-08 02:32:58
Subject: npgsql - Npgsql2: [#1010746] NpgsqlDate.AddMonths(m):

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group