diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala index e4a60f53d6c09..37456f9e6e72c 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala @@ -293,11 +293,13 @@ object ConstantFolding extends Rule[LogicalPlan] { // Fold expressions that are foldable. case e if e.foldable => Literal.create(e.eval(null), e.dataType) - // Fold "literal in (item1, item2, ..., literal, ...)" into true directly. - case In(Literal(v, _), list) if list.exists { + // Fold "literal in (item1, item2, ..., literal, ...)" into true or false directly. + case In(Literal(v, _), list) => + val isExists = list.exists { case Literal(candidate, _) if candidate == v => true case _ => false - } => Literal.create(true, BooleanType) + } + if (isExists) Literal.create(true, BooleanType) else Literal.create(false, BooleanType) } } }