diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/expressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/expressions.scala index e92ec469c152b..9410d4279360a 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/expressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/expressions.scala @@ -267,7 +267,7 @@ object OptimizeIn extends Rule[LogicalPlan] { optimizeIn(expr, v, list) } else if (convertible.nonEmpty && nonConvertible.nonEmpty) { val optimizedIn = optimizeIn(In(v, convertible), v, convertible) - And(optimizedIn, In(v, nonConvertible)) + Or(optimizedIn, In(v, nonConvertible)) } else { expr } diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizeInSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizeInSuite.scala index 9433fcfa2b47d..1014a207f89b4 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizeInSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizeInSuite.scala @@ -233,7 +233,7 @@ class OptimizeInSuite extends PlanTest { val correctAnswer1 = testRelation .where( - And(EqualTo(UnresolvedAttribute("a"), Literal(1)), + Or(EqualTo(UnresolvedAttribute("a"), Literal(1)), In(UnresolvedAttribute("a"), Seq(UnresolvedAttribute("b")))) ) .analyze