ExecRelationIsTargetRelation-compare-OID.patch

text/plain

Filename: ExecRelationIsTargetRelation-compare-OID.patch
Type: text/plain
Part: 0
Message: Re: Inadequate executor locking of indexes

Patch

Format: unified
File+
src/backend/executor/execUtils.c 6 1
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 2a47abc02e..b9ee875267 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -664,12 +664,17 @@ bool
 ExecRelationIsTargetRelation(EState *estate, Index scanrelid)
 {
 	ResultRelInfo *resultRelInfos;
+	Oid			scanreloid;
 	int			i;
 
+	Assert(estate->es_range_table_array != NULL &&
+		   estate->es_range_table_array[scanrelid - 1] != NULL);
+	scanreloid = estate->es_range_table_array[scanrelid - 1]->relid;
+
 	resultRelInfos = estate->es_result_relations;
 	for (i = 0; i < estate->es_num_result_relations; i++)
 	{
-		if (resultRelInfos[i].ri_RangeTableIndex == scanrelid)
+		if (scanreloid == resultRelInfos[i].ri_RelationDesc->rd_id)
 			return true;
 	}
 	return false;