From d6f24ee52555615f31c00948f4c33210712f58a8 Mon Sep 17 00:00:00 2001 From: shining1989 <785294663@qq.com> Date: Thu, 26 Apr 2018 10:20:36 +0800 Subject: [PATCH] left outer join synchronize the condition from left table to right --- .../scala/org/apache/spark/sql/catalyst/optimizer/joins.scala | 2 +- .../sql/catalyst/plans/logical/basicLogicalOperators.scala | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/joins.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/joins.scala index edbeaf273fd6f..117fa268964f8 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/joins.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/joins.scala @@ -138,7 +138,7 @@ object EliminateOuterJoin extends Rule[LogicalPlan] with PredicateHelper { join.joinType match { case RightOuter if leftHasNonNullPredicate => Inner - case LeftOuter if rightHasNonNullPredicate => Inner + case LeftOuter if rightHasNonNullPredicate => LeftOuter case FullOuter if leftHasNonNullPredicate && rightHasNonNullPredicate => Inner case FullOuter if leftHasNonNullPredicate => LeftOuter case FullOuter if rightHasNonNullPredicate => RightOuter diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala index 10df504795430..f5d48eda601fe 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/basicLogicalOperators.scala @@ -317,6 +317,8 @@ case class Join( left.constraints case LeftOuter => left.constraints + .union(right.constraints) + .union(splitConjunctivePredicates(condition.get).toSet) case RightOuter => right.constraints case FullOuter =>