Skip to content

Commit 65f9125

Browse files
committed
extend the condition to cover more cases in non null predicates.
1 parent c04b53b commit 65f9125

File tree

1 file changed

+13
-13
lines changed
  • sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer

1 file changed

+13
-13
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)