v9-0010-Run-pgindent.patch

application/octet-stream

Filename: v9-0010-Run-pgindent.patch
Type: application/octet-stream
Part: 9
Message: Re: Eager aggregation, take 3

Patch

Format: format-patch
Series: patch v9-0010
Subject: Run pgindent
File+
src/backend/optimizer/geqo/geqo_eval.c 10 9
src/backend/optimizer/path/allpaths.c 37 37
src/backend/optimizer/path/joinrels.c 11 9
src/backend/optimizer/plan/initsplan.c 12 12
src/backend/optimizer/plan/planner.c 4 4
src/backend/optimizer/util/appendinfo.c 1 1
src/backend/optimizer/util/relnode.c 35 34
src/include/nodes/pathnodes.h 5 5
src/tools/pgindent/typedefs.list 4 0
From 3f807e0601224654085f947bab5d4def3bde4fdf Mon Sep 17 00:00:00 2001
From: Richard Guo <guofenglinux@gmail.com>
Date: Wed, 3 Jul 2024 16:24:39 +0900
Subject: [PATCH v9 10/10] Run pgindent

---
 src/backend/optimizer/geqo/geqo_eval.c  | 19 ++++---
 src/backend/optimizer/path/allpaths.c   | 74 ++++++++++++-------------
 src/backend/optimizer/path/joinrels.c   | 20 ++++---
 src/backend/optimizer/plan/initsplan.c  | 24 ++++----
 src/backend/optimizer/plan/planner.c    |  8 +--
 src/backend/optimizer/util/appendinfo.c |  2 +-
 src/backend/optimizer/util/relnode.c    | 69 +++++++++++------------
 src/include/nodes/pathnodes.h           | 10 ++--
 src/tools/pgindent/typedefs.list        |  4 ++
 9 files changed, 119 insertions(+), 111 deletions(-)

diff --git a/src/backend/optimizer/geqo/geqo_eval.c b/src/backend/optimizer/geqo/geqo_eval.c
index 278857d767..2851bed282 100644
--- a/src/backend/optimizer/geqo/geqo_eval.c
+++ b/src/backend/optimizer/geqo/geqo_eval.c
@@ -87,8 +87,9 @@ geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
 	 * already contain some entries.  The newly added entries will be recycled
 	 * by the MemoryContextDelete below, so we must ensure that each list of
 	 * the RelInfoList structures is restored to its former state before
-	 * exiting.  We can do this by truncating each list to its original length.
-	 * NOTE this assumes that any added entries are appended at the end!
+	 * exiting.  We can do this by truncating each list to its original
+	 * length. NOTE this assumes that any added entries are appended at the
+	 * end!
 	 *
 	 * We also must take care not to mess up the outer hash tables of the
 	 * RelInfoList structures, if any.  We can do this by just temporarily
@@ -136,8 +137,8 @@ geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
 
 	/*
 	 * Restore each of the list in join_rel_list, agg_info_list and
-	 * upper_rels[UPPERREL_PARTIAL_GROUP_AGG] to its former state, and put back
-	 * original hashtable if any.
+	 * upper_rels[UPPERREL_PARTIAL_GROUP_AGG] to its former state, and put
+	 * back original hashtable if any.
 	 */
 	root->join_rel_list->items = list_truncate(root->join_rel_list->items,
 											   savelength_join_rel);
@@ -308,14 +309,14 @@ merge_clump(PlannerInfo *root, List *clumps, Clump *new_clump, int num_gene,
 
 				/*
 				 * Except for the topmost scan/join rel, consider generating
-				 * partial aggregation paths for the grouped relation on top of the
-				 * paths of this rel.  After that, we're done creating paths for
-				 * the grouped relation, so run set_cheapest().
+				 * partial aggregation paths for the grouped relation on top
+				 * of the paths of this rel.  After that, we're done creating
+				 * paths for the grouped relation, so run set_cheapest().
 				 */
 				if (!bms_equal(joinrel->relids, root->all_query_rels))
 				{
-					RelOptInfo   *rel_grouped;
-					RelAggInfo   *agg_info;
+					RelOptInfo *rel_grouped;
+					RelAggInfo *agg_info;
 
 					rel_grouped = find_grouped_rel(root, joinrel->relids,
 												   &agg_info);
diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c
index 359eee3486..3602dcacfa 100644
--- a/src/backend/optimizer/path/allpaths.c
+++ b/src/backend/optimizer/path/allpaths.c
@@ -360,19 +360,19 @@ setup_base_grouped_rels(PlannerInfo *root)
 
 	for (rti = 1; rti < root->simple_rel_array_size; rti++)
 	{
-		RelOptInfo	   *rel = root->simple_rel_array[rti];
-		RelOptInfo	   *rel_grouped;
-		RelAggInfo	   *agg_info;
+		RelOptInfo *rel = root->simple_rel_array[rti];
+		RelOptInfo *rel_grouped;
+		RelAggInfo *agg_info;
 
 		/* there may be empty slots corresponding to non-baserel RTEs */
 		if (rel == NULL)
 			continue;
 
-		Assert(rel->relid == rti); /* sanity check on array */
+		Assert(rel->relid == rti);	/* sanity check on array */
 
 		/*
-		 * Ignore RTEs that are not simple rels.  Note that we need to consider
-		 * "other rels" here.
+		 * Ignore RTEs that are not simple rels.  Note that we need to
+		 * consider "other rels" here.
 		 */
 		if (!IS_SIMPLE_REL(rel))
 			continue;
@@ -1366,8 +1366,8 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel,
 static void
 set_grouped_rel_pathlist(PlannerInfo *root, RelOptInfo *rel)
 {
-	RelOptInfo   *rel_grouped;
-	RelAggInfo   *agg_info;
+	RelOptInfo *rel_grouped;
+	RelAggInfo *agg_info;
 
 	/* Add paths to the grouped base relation if one exists. */
 	rel_grouped = find_grouped_rel(root, rel->relids,
@@ -3419,8 +3419,8 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 	get_agg_clause_costs(root, AGGSPLIT_INITIAL_SERIAL, &agg_costs);
 
 	/*
-	 * Determine whether it's possible to perform sort-based implementations of
-	 * grouping.
+	 * Determine whether it's possible to perform sort-based implementations
+	 * of grouping.
 	 */
 	can_sort = grouping_is_sortable(agg_info->group_clauses);
 
@@ -3481,9 +3481,9 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 			int			presorted_keys;
 
 			/*
-			 * Since the path originates from the non-grouped relation which is
-			 * not aware of eager aggregation, we must ensure that it provides
-			 * the correct input for the partial aggregation.
+			 * Since the path originates from the non-grouped relation which
+			 * is not aware of eager aggregation, we must ensure that it
+			 * provides the correct input for the partial aggregation.
 			 */
 			path = (Path *) create_projection_path(root,
 												   rel_grouped,
@@ -3527,8 +3527,8 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 			}
 
 			/*
-			 * qual is NIL because the HAVING clause cannot be evaluated until the
-			 * final value of the aggregate is known.
+			 * qual is NIL because the HAVING clause cannot be evaluated until
+			 * the final value of the aggregate is known.
 			 */
 			path = (Path *) create_agg_path(root,
 											rel_grouped,
@@ -3558,9 +3558,9 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 			int			presorted_keys;
 
 			/*
-			 * Since the path originates from the non-grouped relation which is
-			 * not aware of eager aggregation, we must ensure that it provides
-			 * the correct input for the partial aggregation.
+			 * Since the path originates from the non-grouped relation which
+			 * is not aware of eager aggregation, we must ensure that it
+			 * provides the correct input for the partial aggregation.
 			 */
 			path = (Path *) create_projection_path(root,
 												   rel_grouped,
@@ -3605,8 +3605,8 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 			}
 
 			/*
-			 * qual is NIL because the HAVING clause cannot be evaluated until the
-			 * final value of the aggregate is known.
+			 * qual is NIL because the HAVING clause cannot be evaluated until
+			 * the final value of the aggregate is known.
 			 */
 			path = (Path *) create_agg_path(root,
 											rel_grouped,
@@ -3628,12 +3628,12 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 	 */
 	if (can_hash && cheapest_total_path != NULL)
 	{
-		Path   *path;
+		Path	   *path;
 
 		/*
 		 * Since the path originates from the non-grouped relation which is
-		 * not aware of eager aggregation, we must ensure that it provides
-		 * the correct input for the partial aggregation.
+		 * not aware of eager aggregation, we must ensure that it provides the
+		 * correct input for the partial aggregation.
 		 */
 		path = (Path *) create_projection_path(root,
 											   rel_grouped,
@@ -3641,8 +3641,8 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 											   agg_info->agg_input);
 
 		/*
-		 * qual is NIL because the HAVING clause cannot be evaluated until
-		 * the final value of the aggregate is known.
+		 * qual is NIL because the HAVING clause cannot be evaluated until the
+		 * final value of the aggregate is known.
 		 */
 		path = (Path *) create_agg_path(root,
 										rel_grouped,
@@ -3663,12 +3663,12 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 	 */
 	if (can_hash && cheapest_partial_path != NULL)
 	{
-		Path   *path;
+		Path	   *path;
 
 		/*
 		 * Since the path originates from the non-grouped relation which is
-		 * not aware of eager aggregation, we must ensure that it provides
-		 * the correct input for the partial aggregation.
+		 * not aware of eager aggregation, we must ensure that it provides the
+		 * correct input for the partial aggregation.
 		 */
 		path = (Path *) create_projection_path(root,
 											   rel_grouped,
@@ -3676,8 +3676,8 @@ generate_grouped_paths(PlannerInfo *root, RelOptInfo *rel_grouped,
 											   agg_info->agg_input);
 
 		/*
-		 * qual is NIL because the HAVING clause cannot be evaluated until
-		 * the final value of the aggregate is known.
+		 * qual is NIL because the HAVING clause cannot be evaluated until the
+		 * final value of the aggregate is known.
 		 */
 		path = (Path *) create_agg_path(root,
 										rel_grouped,
@@ -3880,14 +3880,14 @@ standard_join_search(PlannerInfo *root, int levels_needed, List *initial_rels)
 
 			/*
 			 * Except for the topmost scan/join rel, consider generating
-			 * partial aggregation paths for the grouped relation on top of the
-			 * paths of this rel.  After that, we're done creating paths for
-			 * the grouped relation, so run set_cheapest().
+			 * partial aggregation paths for the grouped relation on top of
+			 * the paths of this rel.  After that, we're done creating paths
+			 * for the grouped relation, so run set_cheapest().
 			 */
 			if (!bms_equal(rel->relids, root->all_query_rels))
 			{
-				RelOptInfo   *rel_grouped;
-				RelAggInfo   *agg_info;
+				RelOptInfo *rel_grouped;
+				RelAggInfo *agg_info;
 
 				rel_grouped = find_grouped_rel(root, rel->relids,
 											   &agg_info);
@@ -4777,8 +4777,8 @@ generate_partitionwise_join_paths(PlannerInfo *root, RelOptInfo *rel)
 					   rel->top_parent_relids : rel->relids,
 					   root->all_query_rels))
 		{
-			RelOptInfo   *rel_grouped;
-			RelAggInfo   *agg_info;
+			RelOptInfo *rel_grouped;
+			RelAggInfo *agg_info;
 
 			rel_grouped = find_grouped_rel(root, child_rel->relids,
 										   &agg_info);
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index 78a88c9d3b..23bbef15f0 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -905,12 +905,12 @@ make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1,
 					  RelOptInfo *rel2, RelOptInfo *joinrel,
 					  SpecialJoinInfo *sjinfo, List *restrictlist)
 {
-	RelOptInfo	   *rel_grouped;
-	RelAggInfo	   *agg_info = NULL;
-	RelOptInfo	   *rel1_grouped;
-	RelOptInfo	   *rel2_grouped;
-	bool			rel1_empty;
-	bool			rel2_empty;
+	RelOptInfo *rel_grouped;
+	RelAggInfo *agg_info = NULL;
+	RelOptInfo *rel1_grouped;
+	RelOptInfo *rel2_grouped;
+	bool		rel1_empty;
+	bool		rel2_empty;
 
 	/*
 	 * If there are no aggregate expressions or grouping expressions, eager
@@ -975,9 +975,9 @@ make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1,
 	/*
 	 * Join of two grouped relations is currently not supported.  In such a
 	 * case, grouping of one side would change the occurrence of the other
-	 * side's aggregate transient states on the input of the final aggregation.
-	 * This can be handled by adjusting the transient states, but it's not
-	 * worth the effort for now.
+	 * side's aggregate transient states on the input of the final
+	 * aggregation. This can be handled by adjusting the transient states, but
+	 * it's not worth the effort for now.
 	 */
 	if (!rel1_empty && !rel2_empty)
 		return;
@@ -989,6 +989,7 @@ make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1,
 								   sjinfo, restrictlist);
 		populate_joinrel_with_paths(root, rel1_grouped, rel2, rel_grouped,
 									sjinfo, restrictlist);
+
 		/*
 		 * It shouldn't happen that we have marked rel1_grouped as dummy in
 		 * populate_joinrel_with_paths due to provably constant-false join
@@ -1003,6 +1004,7 @@ make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1,
 								   sjinfo, restrictlist);
 		populate_joinrel_with_paths(root, rel1, rel2_grouped, rel_grouped,
 									sjinfo, restrictlist);
+
 		/*
 		 * It shouldn't happen that we have marked rel2_grouped as dummy in
 		 * populate_joinrel_with_paths due to provably constant-false join
diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index 9f05edfbac..f093ef0f13 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -430,9 +430,9 @@ create_agg_clause_infos(PlannerInfo *root)
 	}
 
 	/*
-	 * Aggregates within the HAVING clause need to be processed in the same way
-	 * as those in the targetlist.  Note that HAVING can contain Aggrefs but
-	 * not WindowFuncs.
+	 * Aggregates within the HAVING clause need to be processed in the same
+	 * way as those in the targetlist.  Note that HAVING can contain Aggrefs
+	 * but not WindowFuncs.
 	 */
 	if (root->parse->havingQual != NULL)
 	{
@@ -504,10 +504,10 @@ create_grouping_expr_infos(PlannerInfo *root)
 		SortGroupClause *sgc = lfirst_node(SortGroupClause, lc);
 		TargetEntry *tle = get_sortgroupclause_tle(sgc, root->processed_tlist);
 		TypeCacheEntry *tce;
-		Oid				equalimageproc;
-		Oid				eq_op;
-		List		   *eq_opfamilies;
-		Oid				btree_opfamily;
+		Oid			equalimageproc;
+		Oid			eq_op;
+		List	   *eq_opfamilies;
+		Oid			btree_opfamily;
 
 		Assert(tle->ressortgroupref > 0);
 
@@ -518,11 +518,11 @@ create_grouping_expr_infos(PlannerInfo *root)
 			return;
 
 		/*
-		 * Eager aggregation is only possible if equality of grouping keys
-		 * per the equality operator implies bitwise equality. Otherwise, if
-		 * we put keys of different byte images into the same group, we lose
-		 * some information that may be needed to evaluate join clauses above
-		 * the pushed-down aggregate node, or the WHERE clause.
+		 * Eager aggregation is only possible if equality of grouping keys per
+		 * the equality operator implies bitwise equality. Otherwise, if we
+		 * put keys of different byte images into the same group, we lose some
+		 * information that may be needed to evaluate join clauses above the
+		 * pushed-down aggregate node, or the WHERE clause.
 		 *
 		 * For example, the NUMERIC data type is not supported because values
 		 * that fall into the same group according to the equality operator
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index b69efb3cd1..72a45f1b01 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -4084,8 +4084,8 @@ create_ordinary_grouping_paths(PlannerInfo *root, RelOptInfo *input_rel,
 	/*
 	 * Now choose the best path(s) for partially_grouped_rel.
 	 *
-	 * Note that the non-partial paths can come either from the Gather above or
-	 * from eager aggregation.
+	 * Note that the non-partial paths can come either from the Gather above
+	 * or from eager aggregation.
 	 */
 	if (partially_grouped_rel && partially_grouped_rel->pathlist)
 		set_cheapest(partially_grouped_rel);
@@ -7245,8 +7245,8 @@ create_partial_grouping_paths(PlannerInfo *root,
 
 	/*
 	 * It is possible that the partially_grouped_rel created by eager
-	 * aggregation is dummy.  In this case we just set it to NULL.  It might be
-	 * created again by the following logic if possible.
+	 * aggregation is dummy.  In this case we just set it to NULL.  It might
+	 * be created again by the following logic if possible.
 	 */
 	if (partially_grouped_rel && IS_DUMMY_REL(partially_grouped_rel))
 		partially_grouped_rel = NULL;
diff --git a/src/backend/optimizer/util/appendinfo.c b/src/backend/optimizer/util/appendinfo.c
index 08de77d439..27ac853c0a 100644
--- a/src/backend/optimizer/util/appendinfo.c
+++ b/src/backend/optimizer/util/appendinfo.c
@@ -542,7 +542,7 @@ adjust_appendrel_attrs_mutator(Node *node,
 
 		if (oldtarget->sortgrouprefs)
 		{
-			Size	nbytes = list_length(oldtarget->exprs) * sizeof(Index);
+			Size		nbytes = list_length(oldtarget->exprs) * sizeof(Index);
 
 			newtarget->exprs = (List *)
 				adjust_appendrel_attrs_mutator((Node *) oldtarget->exprs,
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index 91013e1a80..55ff082b9b 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -47,7 +47,7 @@ typedef struct RelInfoEntry
 {
 	Relids		relids;			/* hash key --- MUST BE FIRST */
 	void	   *data;
-} RelInfoEntry;
+}			RelInfoEntry;
 
 static void build_joinrel_tlist(PlannerInfo *root, RelOptInfo *joinrel,
 								RelOptInfo *input_rel,
@@ -435,13 +435,13 @@ RelOptInfo *
 build_simple_grouped_rel(PlannerInfo *root, int relid,
 						 RelAggInfo **agg_info_p)
 {
-	RelOptInfo	   *rel_plain;
-	RelOptInfo	   *rel_grouped;
-	RelAggInfo	   *agg_info;
+	RelOptInfo *rel_plain;
+	RelOptInfo *rel_grouped;
+	RelAggInfo *agg_info;
 
 	/*
-	 * We should have available aggregate expressions and grouping expressions,
-	 * otherwise we cannot reach here.
+	 * We should have available aggregate expressions and grouping
+	 * expressions, otherwise we cannot reach here.
 	 */
 	Assert(root->agg_clause_list != NIL);
 	Assert(root->group_expr_list != NIL);
@@ -481,7 +481,7 @@ build_simple_grouped_rel(PlannerInfo *root, int relid,
 RelOptInfo *
 build_grouped_rel(PlannerInfo *root, RelOptInfo *rel_plain)
 {
-	RelOptInfo   *rel_grouped;
+	RelOptInfo *rel_grouped;
 
 	rel_grouped = makeNode(RelOptInfo);
 	memcpy(rel_grouped, rel_plain, sizeof(RelOptInfo));
@@ -2672,13 +2672,13 @@ create_rel_agg_info(PlannerInfo *root, RelOptInfo *rel)
 
 	/*
 	 * If this is a child rel, the grouped rel for its parent rel must have
-	 * been created if it can.  So we can just use parent's RelAggInfo if there
-	 * is one, with appropriate variable substitutions.
+	 * been created if it can.  So we can just use parent's RelAggInfo if
+	 * there is one, with appropriate variable substitutions.
 	 */
 	if (IS_OTHER_REL(rel))
 	{
-		RelOptInfo	   *rel_grouped;
-		RelAggInfo	   *agg_info;
+		RelOptInfo *rel_grouped;
+		RelAggInfo *agg_info;
 
 		Assert(!bms_is_empty(rel->top_parent_relids));
 		rel_grouped = find_grouped_rel(root, rel->top_parent_relids, &agg_info);
@@ -2761,8 +2761,8 @@ create_rel_agg_info(PlannerInfo *root, RelOptInfo *rel)
 			 * Initialize the SortGroupClause.
 			 *
 			 * As the final aggregation will not use this grouping expression,
-			 * we don't care whether sortop is < or >. The value of nulls_first
-			 * should not matter for the same reason.
+			 * we don't care whether sortop is < or >. The value of
+			 * nulls_first should not matter for the same reason.
 			 */
 			cl->tleSortGroupRef = ++sortgroupref;
 			get_sort_group_operators(var->vartype,
@@ -2826,7 +2826,7 @@ create_rel_agg_info(PlannerInfo *root, RelOptInfo *rel)
 	foreach(lc, root->agg_clause_list)
 	{
 		AggClauseInfo *ac_info = lfirst_node(AggClauseInfo, lc);
-		Aggref   *aggref;
+		Aggref	   *aggref;
 
 		Assert(IsA(ac_info->aggref, Aggref));
 
@@ -2848,8 +2848,8 @@ create_rel_agg_info(PlannerInfo *root, RelOptInfo *rel)
 	result->agg_input = agg_input;
 
 	/*
-	 * The number of aggregation input rows is simply the number of rows of the
-	 * non-grouped relation, which should have been estimated by now.
+	 * The number of aggregation input rows is simply the number of rows of
+	 * the non-grouped relation, which should have been estimated by now.
 	 */
 	result->input_rows = rel->rows;
 
@@ -2920,7 +2920,8 @@ eager_aggregation_possible_for_relation(PlannerInfo *root, RelOptInfo *rel)
 		Assert(IsA(ac_info->aggref, Aggref));
 
 		/*
-		 * Give up if any aggregate needs relations other than the current one.
+		 * Give up if any aggregate needs relations other than the current
+		 * one.
 		 *
 		 * If the aggregate needs the current rel plus anything else, then the
 		 * problem is that grouping of the current relation could make some
@@ -3012,7 +3013,7 @@ init_grouping_targets(PlannerInfo *root, RelOptInfo *rel,
 		}
 		else
 		{
-			bool	safe_to_push;
+			bool		safe_to_push;
 
 			if (is_var_needed_by_join(root, (Var *) expr, rel, &safe_to_push))
 			{
@@ -3024,17 +3025,17 @@ init_grouping_targets(PlannerInfo *root, RelOptInfo *rel,
 					return false;
 
 				/*
-				 * The expression is needed for a join, however it's neither in
-				 * the GROUP BY clause nor can it be derived from it using EC.
-				 * (Otherwise it would have already been added to the targets
-				 * above.)  We need to construct a special SortGroupClause for
-				 * this expression.
+				 * The expression is needed for a join, however it's neither
+				 * in the GROUP BY clause nor can it be derived from it using
+				 * EC. (Otherwise it would have already been added to the
+				 * targets above.)  We need to construct a special
+				 * SortGroupClause for this expression.
 				 *
 				 * Note that its tleSortGroupRef needs to be unique within
 				 * agg_input, so we need to postpone creation of this
 				 * SortGroupClause until we're done with the iteration of
-				 * rel->reltarget->exprs.  And it makes sense for the caller to
-				 * do some more checks before it starts to create those
+				 * rel->reltarget->exprs.  And it makes sense for the caller
+				 * to do some more checks before it starts to create those
 				 * SortGroupClauses.
 				 */
 				*group_exprs_extra_p = lappend(*group_exprs_extra_p, expr);
@@ -3045,9 +3046,9 @@ init_grouping_targets(PlannerInfo *root, RelOptInfo *rel,
 				 * Another reason we might need this variable is that some
 				 * aggregate pushed down to this relation references it. In
 				 * such a case, add it to "agg_input", but not to "target".
-				 * However, if the aggregate is not the only reason for the var
-				 * to be in the target, some more checks need to be performed
-				 * below.
+				 * However, if the aggregate is not the only reason for the
+				 * var to be in the target, some more checks need to be
+				 * performed below.
 				 */
 				add_new_column_to_pathtarget(agg_input, expr);
 			}
@@ -3101,8 +3102,8 @@ init_grouping_targets(PlannerInfo *root, RelOptInfo *rel,
 			 * expression but not referenced by any join.
 			 *
 			 * If the eager aggregation will support generic grouping
-			 * expression in the future, create_rel_agg_info() will have to add
-			 * this variable to "agg_input" target and also add the whole
+			 * expression in the future, create_rel_agg_info() will have to
+			 * add this variable to "agg_input" target and also add the whole
 			 * generic expression to "target".
 			 */
 			return false;
@@ -3128,7 +3129,7 @@ is_var_in_aggref_only(PlannerInfo *root, Var *var)
 	foreach(lc, root->agg_clause_list)
 	{
 		AggClauseInfo *ac_info = lfirst_node(AggClauseInfo, lc);
-		List		  *vars;
+		List	   *vars;
 
 		Assert(IsA(ac_info->aggref, Aggref));
 
@@ -3188,9 +3189,9 @@ is_var_needed_by_join(PlannerInfo *root, Var *var, RelOptInfo *rel,
 	attno = var->varattno - baserel->min_attr;
 
 	/*
-	 * If the baserel this Var belongs to can be nulled by outer joins that are
-	 * above the current rel, then it is not safe to use this Var as a grouping
-	 * key at current rel level.
+	 * If the baserel this Var belongs to can be nulled by outer joins that
+	 * are above the current rel, then it is not safe to use this Var as a
+	 * grouping key at current rel level.
 	 */
 	*safe_to_push = bms_is_subset(baserel->nulling_relids, rel->relids);
 
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h
index 4ce70f256d..e32d96769c 100644
--- a/src/include/nodes/pathnodes.h
+++ b/src/include/nodes/pathnodes.h
@@ -291,7 +291,7 @@ struct PlannerInfo
 	 * join_rel_list is a list of all join-relation RelOptInfos we have
 	 * considered in this planning run.
 	 */
-	RelInfoList *join_rel_list;	/* list of join-relation RelOptInfos */
+	RelInfoList *join_rel_list; /* list of join-relation RelOptInfos */
 
 	/*
 	 * When doing a dynamic-programming-style join search, join_rel_level[k]
@@ -435,7 +435,7 @@ struct PlannerInfo
 	 * Upper-rel RelOptInfos. Use fetch_upper_rel() to get any particular
 	 * upper rel.
 	 */
-	RelInfoList		upper_rels[UPPERREL_FINAL + 1] pg_node_attr(read_write_ignore);
+	RelInfoList upper_rels[UPPERREL_FINAL + 1] pg_node_attr(read_write_ignore);
 
 	/*
 	 * list of grouped relation RelAggInfos. One instance of RelAggInfo per
@@ -1147,10 +1147,10 @@ typedef struct RelAggInfo
 	struct PathTarget *agg_input;
 
 	/* estimated number of input tuples for the grouped paths */
-	Cardinality		input_rows;
+	Cardinality input_rows;
 
-	/* estimated number of result tuples of the grouped relation*/
-	Cardinality		grouped_rows;
+	/* estimated number of result tuples of the grouped relation */
+	Cardinality grouped_rows;
 
 	/* a list of SortGroupClause's */
 	List	   *group_clauses;
diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list
index e6c1caf649..4019a5fee9 100644
--- a/src/tools/pgindent/typedefs.list
+++ b/src/tools/pgindent/typedefs.list
@@ -41,6 +41,7 @@ AfterTriggersTableData
 AfterTriggersTransData
 Agg
 AggClauseCosts
+AggClauseInfo
 AggInfo
 AggPath
 AggSplit
@@ -1058,6 +1059,7 @@ GrantTargetType
 Group
 GroupByOrdering
 GroupClause
+GroupExprInfo
 GroupPath
 GroupPathExtraData
 GroupResultPath
@@ -2364,12 +2366,14 @@ ReindexObjectType
 ReindexParams
 ReindexStmt
 ReindexType
+RelAggInfo
 RelFileLocator
 RelFileLocatorBackend
 RelFileNumber
 RelIdCacheEnt
 RelInfo
 RelInfoArr
+RelInfoList
 RelMapFile
 RelMapping
 RelOptInfo
-- 
2.43.0