Commit 26cb8203 authored by Tom Lane's avatar Tom Lane

Improve some comments related to executor result relations.

es_leaf_result_relations doesn't exist; perhaps this was an old name
for es_tuple_routing_result_relations, or maybe this comment has gone
unmaintained through multiple rounds of whacking the code around.

Related comment in execnodes.h was both obsolete and ungrammatical.
parent 48d818ed
...@@ -1348,13 +1348,15 @@ InitResultRelInfo(ResultRelInfo *resultRelInfo, ...@@ -1348,13 +1348,15 @@ InitResultRelInfo(ResultRelInfo *resultRelInfo,
/* /*
* ExecGetTriggerResultRel * ExecGetTriggerResultRel
* Get a ResultRelInfo for a trigger target relation.
*
* Most of the time, triggers are fired on one of the result relations of the
* query, and so we can just return a member of the es_result_relations array,
* or the es_root_result_relations array (if any), or the
* es_tuple_routing_result_relations list (if any). (Note: in self-join
* situations there might be multiple members with the same OID; if so it
* doesn't matter which one we pick.)
* *
* Get a ResultRelInfo for a trigger target relation. Most of the time,
* triggers are fired on one of the result relations of the query, and so
* we can just return a member of the es_result_relations array, the
* es_root_result_relations array (if any), or the es_leaf_result_relations
* list (if any). (Note: in self-join situations there might be multiple
* members with the same OID; if so it doesn't matter which one we pick.)
* However, it is sometimes necessary to fire triggers on other relations; * However, it is sometimes necessary to fire triggers on other relations;
* this happens mainly when an RI update trigger queues additional triggers * this happens mainly when an RI update trigger queues additional triggers
* on other relations, which will be processed in the context of the outer * on other relations, which will be processed in the context of the outer
...@@ -1404,6 +1406,7 @@ ExecGetTriggerResultRel(EState *estate, Oid relid) ...@@ -1404,6 +1406,7 @@ ExecGetTriggerResultRel(EState *estate, Oid relid)
if (RelationGetRelid(rInfo->ri_RelationDesc) == relid) if (RelationGetRelid(rInfo->ri_RelationDesc) == relid)
return rInfo; return rInfo;
} }
/* Nope, but maybe we already made an extra ResultRelInfo for it */ /* Nope, but maybe we already made an extra ResultRelInfo for it */
foreach(l, estate->es_trig_target_relations) foreach(l, estate->es_trig_target_relations)
{ {
......
...@@ -508,11 +508,10 @@ typedef struct EState ...@@ -508,11 +508,10 @@ typedef struct EState
ResultRelInfo *es_result_relation_info; /* currently active array elt */ ResultRelInfo *es_result_relation_info; /* currently active array elt */
/* /*
* Info about the target partitioned target table root(s) for * Info about the partition root table(s) for insert/update/delete queries
* update/delete queries. They required only to fire any per-statement * targeting partitioned tables. Only leaf partitions are mentioned in
* triggers defined on the table. It exists separately from * es_result_relations, but we need access to the roots for firing
* es_result_relations, because partitioned tables don't appear in the * triggers and for runtime tuple routing.
* plan tree for the update/delete cases.
*/ */
ResultRelInfo *es_root_result_relations; /* array of ResultRelInfos */ ResultRelInfo *es_root_result_relations; /* array of ResultRelInfos */
int es_num_root_result_relations; /* length of the array */ int es_num_root_result_relations; /* length of the array */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment