You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by ch...@apache.org on 2025/09/25 14:17:27 UTC

(cloudberry) branch cbdb-postgres-merge updated: Fix some compile errors for optimizer

This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this push:
     new 6c40002b688 Fix some compile errors for optimizer
6c40002b688 is described below

commit 6c40002b688df066cc0d017bd350d5f5a8c0a771
Author: Jinbao Chen <ch...@gmail.com>
AuthorDate: Thu Sep 25 22:17:11 2025 +0800

    Fix some compile errors for optimizer
---
 src/backend/optimizer/path/equivclass.c |  3 +--
 src/backend/optimizer/path/joinrels.c   |  4 ++--
 src/backend/optimizer/path/pathkeys.c   | 12 +++++-------
 src/backend/optimizer/plan/createplan.c | 25 ++++++++++++-------------
 src/backend/optimizer/plan/initsplan.c  | 12 ++++--------
 src/include/nodes/nodes.h               |  4 ++++
 src/include/nodes/pathnodes.h           |  2 +-
 src/include/optimizer/optimizer.h       |  1 -
 src/include/optimizer/paths.h           |  1 -
 src/include/optimizer/planmain.h        |  4 ++--
 10 files changed, 31 insertions(+), 37 deletions(-)

diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index 4c7e6866cfd..ddaa9cc9b8a 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -732,7 +732,6 @@ get_eclass_for_sort_expr(PlannerInfo *root,
 			}
 
 			Assert(rel->reloptkind == RELOPT_BASEREL ||
-				   rel->reloptkind == RELOPT_DEADREL ||
 				   rel->reloptkind == RELOPT_OTHER_MEMBER_REL);
 
 			rel->eclass_indexes = bms_add_member(rel->eclass_indexes,
@@ -3263,7 +3262,7 @@ translate_expr_to_rel_vars(PlannerInfo *root, GroupedVarInfo *gvi,
 		ListCell   *l2;
 
 		/* These EC kind should be ignored. */
-		if (ec->ec_has_volatile || ec->ec_below_outer_join || ec->ec_broken)
+		if (ec->ec_has_volatile || ec->ec_broken)
 			continue;
 
 		/* Single-element EC can hardly help in translations. */
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index 4ea5a36da96..b8e37e7f60a 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -864,7 +864,7 @@ make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
 		agg_info->build_from_plain = true;
 		joinrel = agg_info->rel_grouped;
 		if (joinrel == NULL)
-			joinrel = build_join_rel(root, joinrelids, rel1, rel2, sjinfo,
+			joinrel = build_join_rel(root, joinrelids, rel1, rel2, sjinfo, NIL,
 									 &restrictlist, agg_info);
 		generate_grouping_paths(root, joinrel, joinrel_plain, agg_info);
 		if (joinrel->pathlist != NIL || joinrel->partial_pathlist != NIL)
@@ -906,7 +906,7 @@ make_grouped_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2,
 		agg_info->build_from_plain = false;
 		joinrel = agg_info->rel_grouped_non_plain;
 		if (joinrel == NULL)
-			joinrel = build_join_rel(root, joinrelids, rel1, rel2, sjinfo,
+			joinrel = build_join_rel(root, joinrelids, rel1, rel2, sjinfo, NIL,
 									 &restrictlist, agg_info);
 
 		populate_joinrel_with_paths(root, rel1, rel2, joinrel, sjinfo,
diff --git a/src/backend/optimizer/path/pathkeys.c b/src/backend/optimizer/path/pathkeys.c
index c22bcbbbecb..8f2e38eb5e8 100644
--- a/src/backend/optimizer/path/pathkeys.c
+++ b/src/backend/optimizer/path/pathkeys.c
@@ -174,12 +174,13 @@ gen_implied_qual(PlannerInfo *root,
 	new_rinfo = make_restrictinfo(root,
 								  (Expr *) new_clause,
 								  old_rinfo->is_pushed_down,
-								  old_rinfo->outerjoin_delayed,
+								  old_rinfo->has_clone,
+								  old_rinfo->is_clone,
 								  old_rinfo->pseudoconstant,
 								  old_rinfo->security_level,
 								  new_qualscope,
-								  old_rinfo->outer_relids,
-								  old_rinfo->nullable_relids);
+								  old_rinfo->incompatible_relids,
+								  old_rinfo->outer_relids);
 	check_mergejoinable(new_rinfo);
 	check_hashjoinable(new_rinfo);
 
@@ -195,7 +196,7 @@ gen_implied_qual(PlannerInfo *root,
 										   PVC_RECURSE_AGGREGATES |
 										   PVC_INCLUDE_PLACEHOLDERS);
 
-		add_vars_to_targetlist(root, vars, new_qualscope, false);
+		add_vars_to_targetlist(root, vars, new_qualscope);
 		list_free(vars);
 	}
 
@@ -1509,7 +1510,6 @@ cdb_make_distkey_for_expr(PlannerInfo *root,
 	 * used for DistributionKey, so it would not participate in qual deduction.
 	 */
 	eclass = get_eclass_for_sort_expr(root, (Expr *) expr,
-									  NULL,
 									  mergeopfamilies,
 									  lefttype,
 									  exprCollation(expr),
@@ -1625,7 +1625,6 @@ cdb_pull_up_eclass(PlannerInfo *root,
 	 */
 	outer_ec = get_eclass_for_sort_expr(root,
 										newexpr,
-										NULL,
 										eclass->ec_opfamilies,
 										exprType((Node *) newexpr),
 										exprCollation((Node *) newexpr),
@@ -1782,7 +1781,6 @@ make_distribution_exprs_for_groupclause(PlannerInfo *root, List *groupclause, Li
 
 		pathkey = make_pathkey_from_sortop(root,
 										   expr,
-										   root->nullable_baserels,
 										   sortcl->sortop,
 										   sortcl->nulls_first,
 										   sortcl->tleSortGroupRef,
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 932a4552b63..af918fb9640 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -318,7 +318,6 @@ static IncrementalSort *make_incrementalsort_from_pathkeys(Plan *lefttree,
 static Sort *make_sort_from_groupcols(List *groupcls,
 									  AttrNumber *grpColIdx,
 									  Plan *lefttree);
-static Material *make_material(Plan *lefttree);
 static Memoize *make_memoize(Plan *lefttree, Oid *hashoperators,
 							 Oid *collations, List *param_exprs,
 							 bool singlerow, bool binary_mode,
@@ -5271,7 +5270,7 @@ create_nestloop_plan(PlannerInfo *root,
 	bool		partition_selectors_created;
 	bool		prefetch = false;
 
-	push_partition_selector_candidate_for_join(root, best_path);
+	push_partition_selector_candidate_for_join(root, &best_path->jpath);
 
 #if  0
 	/*
@@ -5293,7 +5292,7 @@ create_nestloop_plan(PlannerInfo *root,
 	 * inject Partition Selectors to the inner side.
 	 */
 	partition_selectors_created =
-		pop_and_inject_partition_selectors(root, best_path);
+		pop_and_inject_partition_selectors(root, &best_path->jpath);
 
 	/* For a nestloop, include outer relids in curOuterRels for inner side */
 	root->curOuterRels = bms_union(root->curOuterRels,
@@ -5312,8 +5311,8 @@ create_nestloop_plan(PlannerInfo *root,
 	 * NOTE: materialize_finished_plan() does *almost* what we want -- except
 	 * we aren't finished.
 	 */
-	if (best_path->innerjoinpath->motionHazard ||
-		!best_path->innerjoinpath->rescannable)
+	if (best_path->jpath.innerjoinpath->motionHazard ||
+		!best_path->jpath.innerjoinpath->rescannable)
 	{
 		Plan	   *p;
 		Material   *mat;
@@ -5351,7 +5350,7 @@ create_nestloop_plan(PlannerInfo *root,
 		 * MPP-1657: Even if there is already a materialize here, we
 		 * may need to update its strictness.
 		 */
-		if (best_path->outerjoinpath->motionHazard)
+		if (best_path->jpath.outerjoinpath->motionHazard)
 		{
 			mat->cdb_strict = true;
 			prefetch = true;
@@ -5380,7 +5379,7 @@ create_nestloop_plan(PlannerInfo *root,
 		otherclauses = NIL;
 	}
 
-	if (best_path->jointype == JOIN_LASJ_NOTIN)
+	if (best_path->jpath.jointype == JOIN_LASJ_NOTIN)
 	{
 		joinclauses = remove_isnotfalse(joinclauses);
 	}
@@ -5412,9 +5411,9 @@ create_nestloop_plan(PlannerInfo *root,
 
 	copy_generic_path_info(&join_plan->join.plan, &best_path->jpath.path);
 
-	if (IsA(best_path->innerjoinpath, MaterialPath))
+	if (IsA(best_path->jpath.innerjoinpath, MaterialPath))
 	{
-		MaterialPath *mp = (MaterialPath *) best_path->innerjoinpath;
+		MaterialPath *mp = (MaterialPath *) best_path->jpath.innerjoinpath;
 
 		if (mp->cdb_strict)
 			prefetch = true;
@@ -5439,16 +5438,16 @@ create_nestloop_plan(PlannerInfo *root,
 	 *
 	 * See ExecPrefetchJoinQual() for details.
 	 */
-	if (best_path->outerjoinpath &&
-		best_path->outerjoinpath->motionHazard &&
+	if (best_path->jpath.outerjoinpath &&
+		best_path->jpath.outerjoinpath->motionHazard &&
 		join_plan->join.joinqual != NIL)
 		join_plan->join.prefetch_joinqual = true;
 
 	/*
 	 * Similar for non join qual.
 	 */
-	if (best_path->outerjoinpath &&
-		best_path->outerjoinpath->motionHazard &&
+	if (best_path->jpath.outerjoinpath &&
+		best_path->jpath.outerjoinpath->motionHazard &&
 		join_plan->join.plan.qual != NIL)
 		join_plan->join.prefetch_qual = true;
 
diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index b1a779f5529..8b29d23a032 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -138,8 +138,6 @@ static void distribute_qual_to_rels(PlannerInfo *root, Node *clause,
 									List **postponed_oj_qual_list);
 static bool check_redundant_nullability_qual(PlannerInfo *root, Node *clause);
 static Relids get_join_domain_min_rels(PlannerInfo *root, Relids domain_relids);
-static void check_mergejoinable(RestrictInfo *restrictinfo);
-static void check_hashjoinable(RestrictInfo *restrictinfo);
 static void check_memoizable(RestrictInfo *restrictinfo);
 
 
@@ -287,7 +285,7 @@ build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
 		if (window_vars != NIL)
 		{
 			add_vars_to_targetlist(root, window_vars,
-								   bms_make_singleton(0), true);
+								   bms_make_singleton(0));
 			list_free(window_vars);
 		}
 	}
@@ -307,7 +305,7 @@ build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
  */
 void
 add_vars_to_targetlist_x(PlannerInfo *root, List *vars,
-						 Relids where_needed, bool create_new_ph, bool force)
+						 Relids where_needed, bool force)
 {
 	ListCell   *temp;
 
@@ -357,10 +355,9 @@ add_vars_to_targetlist_x(PlannerInfo *root, List *vars,
 	}
 }
 void
-add_vars_to_targetlist(PlannerInfo *root, List *vars, Bitmapset *where_needed,
-					   bool create_new_ph)
+add_vars_to_targetlist(PlannerInfo *root, List *vars, Bitmapset *where_needed)
 {
-	add_vars_to_targetlist_x(root, vars, where_needed, create_new_ph, false);
+	add_vars_to_targetlist_x(root, vars, where_needed, false);
 }
 
 /*
@@ -2992,7 +2989,6 @@ distribute_restrictinfo_to_rels(PlannerInfo *root,
 												   PVC_RECURSE_PLACEHOLDERS);
 
 				add_vars_to_targetlist_x(root, vars, relids,
-										 false, /* create_new_ph */
 										 true /* force */);
 				list_free(vars);
 
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 00ba1ce18dc..a61a77ea51a 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -354,6 +354,7 @@ typedef enum NodeTag
 	T_IndexClause,
 	T_PlaceHolderVar,
 	T_SpecialJoinInfo,
+	T_OuterJoinClauseInfo,
 	T_AppendRelInfo,
 	T_RowIdentityVarInfo,
 	T_PlaceHolderInfo,
@@ -361,9 +362,12 @@ typedef enum NodeTag
 	T_MinMaxAggInfo,
 	T_SegfileMapNode,
 	T_PlannerParamItem,
+	T_AggInfo,
+	T_AggTransInfo,
 	T_RollupData,
 	T_GroupingSetData,
 	T_StatisticExtInfo,
+	T_JoinDomain,
 
     /* Tags for MPP planner nodes (relation.h) */
     T_CdbMotionPath = 580,
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h
index 636cf8a6850..1fd3bb2e5b0 100644
--- a/src/include/nodes/pathnodes.h
+++ b/src/include/nodes/pathnodes.h
@@ -1747,7 +1747,7 @@ typedef struct DistributionKey
  * This is copied from MUST_BE_REDUNDANT in pathkeys.c
  */
 #define CdbEquivClassIsConstant(eclass)						\
-	((eclass)->ec_has_const && !(eclass)->ec_below_outer_join)
+	((eclass)->ec_has_const)
 
 /*
  * VolatileFunctionStatus -- allows nodes to cache their
diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h
index 047740823aa..e3473ccca7d 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -94,7 +94,6 @@ extern PGDLLIMPORT double parallel_setup_cost;
 extern PGDLLIMPORT double recursive_worktable_factor;
 extern PGDLLIMPORT int effective_cache_size;
 
-extern double clamp_row_est(double nrows);
 extern long clamp_cardinality_to_long(Cardinality x);
 
 /* in path/indxpath.c: */
diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h
index 5965372f582..a7af5e9ccb9 100644
--- a/src/include/optimizer/paths.h
+++ b/src/include/optimizer/paths.h
@@ -261,7 +261,6 @@ extern List *build_partition_pathkeys(PlannerInfo *root, RelOptInfo *partrel,
 									  ScanDirection scandir, bool *partialkeys);
 extern PathKey *make_pathkey_from_sortop(PlannerInfo *root,
 										 Expr *expr,
-										 Relids nullable_relids,
 										 Oid ordering_op,
 										 bool nulls_first,
 										 Index sortref,
diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h
index 592e45b47de..b7c86ad569e 100644
--- a/src/include/optimizer/planmain.h
+++ b/src/include/optimizer/planmain.h
@@ -112,9 +112,9 @@ extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode);
 extern void add_other_rels_to_query(PlannerInfo *root);
 extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist);
 extern void add_vars_to_targetlist(PlannerInfo *root, List *vars,
-								   Relids where_needed, bool create_new_ph);
+								   Relids where_needed);
 extern void add_vars_to_targetlist_x(PlannerInfo *root, List *vars,
-									 Relids where_needed, bool create_new_ph,
+									 Relids where_needed,
 									 bool force);
 extern void setup_aggregate_pushdown(PlannerInfo *root);
 extern void find_lateral_references(PlannerInfo *root);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org