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;
      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 ||
              adjust_appendrel_attrs(root,
                                    (Node *) target->exprs,
                                    nappinfos, appinfos);
 -       child_extra.target = child_target;
  
         /* Translate havingQual and targetList. */
         child_extra.havingQual = (Node *)
           *         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.
      AggClauseCosts agg_final_costs;
  
     /* Data which may differ across partitions. */
 -   PathTarget *target;
     bool        target_parallel_safe;
     Node       *havingQual;
     List       *targetList;