@@ -787,19 +787,19 @@ object OuterJoinElimination extends Rule[LogicalPlan] with PredicateHelper {
787787 private def hasNonNullPredicate (condition : Seq [Expression ], child : LogicalPlan ): Boolean = {
788788 val localCondition = condition.filter(_.references subsetOf child.outputSet)
789789 localCondition.exists(_.collect {
790- case EqualTo (ar : AttributeReference , l : Literal ) => true
791- case EqualTo (l : Literal , ar : AttributeReference ) => true
792- case EqualNullSafe (ar : AttributeReference , l : Literal ) => true
793- case EqualNullSafe (l : Literal , ar : AttributeReference ) => true
794- case GreaterThan (ar : AttributeReference , l : Literal ) => true
795- case GreaterThan (l : Literal , ar : AttributeReference ) => true
796- case GreaterThanOrEqual (ar : AttributeReference , l : Literal ) => true
797- case GreaterThanOrEqual (l : Literal , ar : AttributeReference ) => true
798- case LessThan (ar : AttributeReference , l : Literal ) => true
799- case LessThan (l : Literal , ar : AttributeReference ) => true
800- case LessThanOrEqual (ar : AttributeReference , l : Literal ) => true
801- case LessThanOrEqual (l : Literal , ar : AttributeReference ) => true
802- case In (ar : AttributeReference , l ) => true
790+ case EqualTo (ar : AttributeReference , _ ) => true
791+ case EqualTo (_ , ar : AttributeReference ) => true
792+ case EqualNullSafe (ar : AttributeReference , l) if ! l.nullable => true
793+ case EqualNullSafe (l, ar : AttributeReference ) if ! l.nullable => true
794+ case GreaterThan (ar : AttributeReference , _ ) => true
795+ case GreaterThan (_ , ar : AttributeReference ) => true
796+ case GreaterThanOrEqual (ar : AttributeReference , _ ) => true
797+ case GreaterThanOrEqual (_ , ar : AttributeReference ) => true
798+ case LessThan (ar : AttributeReference , _ ) => true
799+ case LessThan (_ , ar : AttributeReference ) => true
800+ case LessThanOrEqual (ar : AttributeReference , _ ) => true
801+ case LessThanOrEqual (_ , ar : AttributeReference ) => true
802+ case In (ar : AttributeReference , _ ) => true
803803 case IsNotNull (ar : AttributeReference ) => true
804804 }.nonEmpty)
805805 }
0 commit comments