From dffad0285672af8a65a6d8d6b01d6870435e40e4 Mon Sep 17 00:00:00 2001 From: Neil Conway <neilc@samurai.com> Date: Fri, 27 Jul 2007 19:09:04 +0000 Subject: [PATCH] Slight refactor for ExecOpenScanRelation(): we can use ExecRelationIsTargetRelation() to check if the relation is a target rel, rather than scanning through the result relation array ourselves. --- src/backend/executor/execUtils.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 493df3ef9ac..91baffb4e78 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); } -- GitLab