You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2022/11/21 22:09:47 UTC

[GitHub] [arrow-datafusion] alamb commented on a diff in pull request #4307: Add another api to create join plan

alamb commented on code in PR #4307:
URL: https://github.com/apache/arrow-datafusion/pull/4307#discussion_r1028559854


##########
datafusion/expr/src/logical_plan/builder.rs:
##########
@@ -458,6 +461,81 @@ impl LogicalPlanBuilder {
         self.join_detailed(right, join_type, join_keys, filter, false)
     }
 
+    /// Apply a join with on constraint which the key is an expression.
+    ///
+    /// Filter expression expected to contain non-equality predicates that can not be pushed
+    /// down to any of join inputs.
+    /// In case of outer join, filter applied to only matched rows.
+    pub fn join_with_expr_keys(
+        &self,
+        right: &LogicalPlan,
+        join_type: JoinType,
+        join_keys: (Vec<impl Into<Expr>>, Vec<impl Into<Expr>>),

Review Comment:
   Given all the logic I think we now have in the optimizer (e.g. eliminate cross join https://github.com/apache/arrow-datafusion/pull/4185) I recommend we *ONLY* support specifying `filter` on this function and leave it up to the optimizer pass to sort out which are eqijoins and which are not



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org