You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by re...@apache.org on 2026/08/17 08:54:35 UTC
(cloudberry) 01/01: Fix JOIN motion type selection for join quals containing outer refs
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 <re...@double.cloud>
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: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org