From 761d46b1b255a7521529bbe7d1b128c9d79d6b4e Mon Sep 17 00:00:00 2001 From: Jeevan Chalke Date: Tue, 27 Mar 2018 14:23:00 +0530 Subject: [PATCH 1/3] Remove target from GroupPathExtraData, instead fetch it from grouped_rel. --- src/backend/optimizer/plan/planner.c | 4 +--- src/include/nodes/relation.h | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index a19f5d0..d4acde6 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -3734,7 +3734,6 @@ create_grouping_paths(PlannerInfo *root, flags |= GROUPING_CAN_PARTIAL_AGG; extra.flags = flags; - extra.target = target; extra.target_parallel_safe = target_parallel_safe; extra.havingQual = parse->havingQual; extra.targetList = parse->targetList; @@ -6909,7 +6908,7 @@ create_partitionwise_grouping_paths(PlannerInfo *root, int cnt_parts; List *grouped_live_children = NIL; List *partially_grouped_live_children = NIL; - PathTarget *target = extra->target; + PathTarget *target = grouped_rel->reltarget; Assert(patype != PARTITIONWISE_AGGREGATE_NONE); Assert(patype != PARTITIONWISE_AGGREGATE_PARTIAL || @@ -6943,7 +6942,6 @@ create_partitionwise_grouping_paths(PlannerInfo *root, adjust_appendrel_attrs(root, (Node *) target->exprs, nappinfos, appinfos); - child_extra.target = child_target; /* Translate havingQual and targetList. */ child_extra.havingQual = (Node *) diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h index abbbda9..2b4f773 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -2340,7 +2340,6 @@ typedef enum * have been initialized. * agg_partial_costs gives partial aggregation costs. * agg_final_costs gives finalization costs. - * target is the PathTarget to be used while creating paths. * target_parallel_safe is true if target is parallel safe. * havingQual gives list of quals to be applied after aggregation. * targetList gives list of columns to be projected. @@ -2355,7 +2354,6 @@ typedef struct AggClauseCosts agg_final_costs; /* Data which may differ across partitions. */ - PathTarget *target; bool target_parallel_safe; Node *havingQual; List *targetList; -- 1.8.3.1