diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 499917d45f..7740306aca 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -3059,15 +3059,24 @@ EvalPlanQualStart(EPQState *epqstate, EState *parentestate, Plan *planTree)
estate->es_output_cid = parentestate->es_output_cid;
if (parentestate->es_num_result_relations > 0)
{
- int numResultRelations = parentestate->es_num_result_relations;
+ int numResultRels = parentestate->es_num_result_relations;
+ int numRootResultRels = parentestate->es_num_root_result_relations;
ResultRelInfo *resultRelInfos;
resultRelInfos = (ResultRelInfo *)
- palloc(numResultRelations * sizeof(ResultRelInfo));
+ palloc(numResultRels * sizeof(ResultRelInfo));
memcpy(resultRelInfos, parentestate->es_result_relations,
- numResultRelations * sizeof(ResultRelInfo));
+ numResultRels * sizeof(ResultRelInfo));
estate->es_result_relations = resultRelInfos;
- estate->es_num_result_relations = numResultRelations;
+ estate->es_num_result_relations = numResultRels;
+
+ /* Also transfer partitioned root result relations. */
+ resultRelInfos = (ResultRelInfo *)
+ palloc(numRootResultRels * sizeof(ResultRelInfo));
+ memcpy(resultRelInfos, parentestate->es_root_result_relations,
+ numRootResultRels * sizeof(ResultRelInfo));
+ estate->es_root_result_relations = resultRelInfos;
+ estate->es_num_root_result_relations = numRootResultRels;
}
/* es_result_relation_info must NOT be copied */
/* es_trig_target_relations must NOT be copied */