Re: [Bug] Duplicate results for inheritance and FOR UPDATE. - Mailing list pgsql-hackers

From Kyotaro HORIGUCHI
Subject Re: [Bug] Duplicate results for inheritance and FOR UPDATE.
Date
Msg-id 20141212.102356.73006940.horiguchi.kyotaro@lab.ntt.co.jp
Whole thread Raw
In response to Re: [Bug] Duplicate results for inheritance and FOR UPDATE.  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hello,

> > This issue is that some query returns duplicate rows after FOR
> > UPDATE was blocked, in other words, after getting
> > HeapTupleUpdated in ExecLockRows.
> 
> Good catch!

Thank you.

> > In the EPQ block in ExecScanFetch, it seems should return NULL if
> > the relation does not has test tuple. The attached patch does so
> > on the current master and the problem has disappeared.
> 
> ... but bad fix.  This would break join cases, wherein it's important
> that other scan nodes still return all the required tuples.  (It's
> unfortunate that the eval-plan-qual isolation test fails to cover
> joins :-(.)

Hmm. I regretfully forgot to do isolation check. The confluent
didn't seem a bug but I couldn't see its intention.

> After digging around a bit, I realized that the problem is actually in
> nodeLockRows.c.  It is supposed to do EvalPlanQualSetTuple(..., NULL)
> for each child table that's not supposed to return any row during the
> current EPQ test cycle.  Unfortunately, it only does that reliably once
> the EPQ environment is already set up.  If we discover we need an EPQ
> test while looking at a non-first child table, tables already passed
> over in the loop over node->lr_arowMarks don't get the word.

Thank you for the detailed explanation. I was wondering during
investigation about EvalPlanQualSetTuple(, NULL) was called only
for children after the first one that had EPQ test tuple. Now I
understand that it was the core of this bug.

> So the correct fix (or a correct fix, anyway; this could also have been
> done with more-invasive loop logic changes) is as attached.  I'm working
> on back-patching this.

That really helps. Thank you.

regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center




pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: Proposal : REINDEX SCHEMA
Next
From: Michael Paquier
Date:
Subject: Re: Proposal : REINDEX SCHEMA