This is an automated email from the ASF dual-hosted git repository. reshke pushed a commit to branch jdejii in repository https://gitbox.apache.org/repos/asf/cloudberry.git
commit 3e75f095ea8d49ca1ba6bf2236e12d7fae9e05f5 Author: reshke <[email protected]> AuthorDate: Mon Aug 17 08:39:37 2026 +0000 Fix JOIN motion type selection for join quals containing outer refs --- src/backend/optimizer/plan/initsplan.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c index b65897043ca..b2af9f7d9f5 100644 --- a/src/backend/optimizer/plan/initsplan.c +++ b/src/backend/optimizer/plan/initsplan.c @@ -2798,7 +2798,12 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, if (maybe_equivalence) { if (process_equivalence(root, &restrictinfo, jtitem->jdomain)) + { + /* Update infobut we may use in join motion planning */ + if (contains_outer_params((Node *) restrictinfo->clause, root)) + restrictinfo->contain_outer_query_references = true; return; + } /* EC rejected it, so set left_ec/right_ec the hard way ... */ if (restrictinfo->mergeopfamilies) /* EC might have changed this */ initialize_mergeclause_eclasses(root, restrictinfo); @@ -2822,6 +2827,10 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, ojcinfo->sjinfo = sjinfo; root->left_join_clauses = lappend(root->left_join_clauses, ojcinfo); + + /* Update infobut we may use in join motion planning */ + if (contains_outer_params((Node *) restrictinfo->clause, root)) + restrictinfo->contain_outer_query_references = true; return; } if (bms_is_subset(restrictinfo->right_relids, @@ -2836,6 +2845,10 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, ojcinfo->sjinfo = sjinfo; root->right_join_clauses = lappend(root->right_join_clauses, ojcinfo); + + /* Update infobut we may use in join motion planning */ + if (contains_outer_params((Node *) restrictinfo->clause, root)) + restrictinfo->contain_outer_query_references = true; return; } if (sjinfo->jointype == JOIN_FULL) @@ -2847,6 +2860,10 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, ojcinfo->sjinfo = sjinfo; root->full_join_clauses = lappend(root->full_join_clauses, ojcinfo); + + /* Update infobut we may use in join motion planning */ + if (contains_outer_params((Node *) restrictinfo->clause, root)) + restrictinfo->contain_outer_query_references = true; return; } /* nope, so fall through to distribute_restrictinfo_to_rels */ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
