AngersZhuuuu commented on a change in pull request #29084:
URL: https://github.com/apache/spark/pull/29084#discussion_r453496821
##########
File path:
sql/core/src/main/scala/org/apache/spark/sql/execution/SparkStrategies.scala
##########
@@ -191,15 +191,19 @@ abstract class SparkStrategies extends
QueryPlanner[SparkPlan] {
def createSortMergeJoin() = {
if (RowOrdering.isOrderable(leftKeys)) {
Some(Seq(joins.SortMergeJoinExec(
- leftKeys, rightKeys, joinType, condition, planLater(left),
planLater(right))))
+ leftKeys, rightKeys, joinType, nonEquiCond, planLater(left),
planLater(right))))
} else {
None
}
}
def createCartesianProduct() = {
if (joinType.isInstanceOf[InnerLike]) {
- Some(Seq(joins.CartesianProductExec(planLater(left),
planLater(right), p.condition)))
+ // Since for join hint [[SHUFFLE_REPLICATE_NL]] when having equi
join conditions,
+ // we still choose Cartesian Product Join, but in
ExtractEquiJoinKeys, it will filter
+ // out equi condition. Instead of using the condition extracted by
ExtractEquiJoinKeys,
+ // we should use the original join condition "j.condition".
Review comment:
> how about:
>
> ```
> `CartesianProductExec` can't implicitly evaluate the equal join condition,
here we should
> pass the original condition which includes both equal and non-equal
conditions.
> ```
Updated
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]