mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
Fix oversight in new EvalPlanQual logic: the second loop over the ExecRowMark
list in ExecLockRows() forgot to allow for the possibility that some of the rowmarks are for child tables that aren't relevant to the current row. Per report from Kenichiro Tanaka.
This commit is contained in:
parent
2dbbda02e7
commit
77c75076f3
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/executor/nodeLockRows.c,v 1.5 2010/07/12 17:01:05 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/executor/nodeLockRows.c,v 1.6 2010/07/28 17:21:56 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -195,6 +195,13 @@ lnext:
|
||||
HeapTupleData tuple;
|
||||
Buffer buffer;
|
||||
|
||||
/* ignore non-active child tables */
|
||||
if (!ItemPointerIsValid(&(erm->curCtid)))
|
||||
{
|
||||
Assert(erm->rti != erm->prti); /* check it's child table */
|
||||
continue;
|
||||
}
|
||||
|
||||
if (EvalPlanQualGetTuple(&node->lr_epqstate, erm->rti) != NULL)
|
||||
continue; /* it was updated and fetched above */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user