diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 493df3ef9ac54ce639a18c01bec8ac17b2690960..91baffb4e780f32643aae6ecf18df0f76ffe28b1 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.147 2007/02/27 01:11:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.148 2007/07/27 19:09:04 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -814,24 +814,16 @@ ExecOpenScanRelation(EState *estate, Index scanrelid) { Oid reloid; LOCKMODE lockmode; - ResultRelInfo *resultRelInfos; - int i; /* - * First determine the lock type we need. Scan to see if target relation - * is either a result relation or a FOR UPDATE/FOR SHARE relation. + * Determine the lock type we need. First, scan to see if target + * relation is a result relation. */ lockmode = AccessShareLock; - resultRelInfos = estate->es_result_relations; - for (i = 0; i < estate->es_num_result_relations; i++) - { - if (resultRelInfos[i].ri_RangeTableIndex == scanrelid) - { - lockmode = NoLock; - break; - } - } + if (ExecRelationIsTargetRelation(estate, scanrelid)) + lockmode = NoLock; + /* If not, check if it's a FOR UPDATE/FOR SHARE relation */ if (lockmode == AccessShareLock) { ListCell *l; @@ -850,7 +842,6 @@ ExecOpenScanRelation(EState *estate, Index scanrelid) /* OK, open the relation and acquire lock as needed */ reloid = getrelid(scanrelid, estate->es_range_table); - return heap_open(reloid, lockmode); }