diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 32f903d8dc..01209aa328 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -558,7 +558,8 @@ use_physical_tlist(PlannerInfo *root, RelOptInfo *rel) * If the plan node immediately above a scan would prefer to get only * needed Vars and not a physical tlist, it must call this routine to * undo the decision made by use_physical_tlist(). Currently, Hash, Sort, - * and Material nodes want this, so they don't have to store useless columns. + * Material, and Gather nodes want this, so they don't have to store or + * transfer useless columns. */ static void disuse_physical_tlist(PlannerInfo *root, Plan *plan, Path *path) @@ -1123,6 +1124,8 @@ create_gather_plan(PlannerInfo *root, GatherPath *best_path) subplan = create_plan_recurse(root, best_path->subpath); + disuse_physical_tlist(root, subplan, best_path->subpath); + gather_plan = make_gather(subplan->targetlist, NIL, best_path->num_workers,