Github user dbtsai commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21797#discussion_r203169950
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/expressions.scala
 ---
    @@ -218,15 +218,24 @@ object ReorderAssociativeOperator extends 
Rule[LogicalPlan] {
     object OptimizeIn extends Rule[LogicalPlan] {
       def apply(plan: LogicalPlan): LogicalPlan = plan transform {
         case q: LogicalPlan => q transformExpressionsDown {
    -      case In(v, list) if list.isEmpty && !v.nullable => FalseLiteral
    +      case In(v, list) if list.isEmpty =>
    +        // When v is not nullable, the following expression will be 
optimized
    +        // to FalseLiteral which is tested in OptimizeInSuite.scala
    +        If(IsNotNull(v), FalseLiteral, Literal(null, BooleanType))
           case expr @ In(v, list) if expr.inSetConvertible =>
             val newList = ExpressionSet(list).toSeq
    -        if (newList.size > SQLConf.get.optimizerInSetConversionThreshold) {
    +        if (newList.length == 1
    +          // TODO: `EqualTo` for structural types are not working. Until 
SPARK-24443 is addressed,
    +          // TODO: we exclude them in this rule.
    +          && !v.isInstanceOf[CreateNamedStructLike]
    +          && !newList.head.isInstanceOf[CreateNamedStructLike]) {
    --- End diff --
    
    @cloud-fan @gatorsmile until https://github.com/apache/spark/pull/21470 is 
merged, let's exclude `CreateNamedStructLike` in this rule.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to