GitHub user kiszk opened a pull request:

    https://github.com/apache/spark/pull/22012

    [SPARK-25036][SQL] Should compare ExprValue.isNull with 
LiteralTrue/LiteralFalse

    ## What changes were proposed in this pull request?
    
    This PR fixes a comparison of `ExprValue.isNull` with `String`. 
`ExprValue.isNull` should be compared with `LiteralTrue` or `LiteralFalse`.
    
    This causes the following compilation error using scala-2.12 with sbt. In 
addition, this code may also generate incorrect code in Spark 2.3.
    
    ```
    
/home/ishizaki/Spark/PR/scala212/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala:94:
 org.apache.spark.sql.catalyst.expressions.codegen.ExprValue and String are 
unrelated: they will most likely always compare unequal
    [error] [warn]         if (eval.isNull != "true") {
    [error] [warn] 
    [error] [warn] 
/home/ishizaki/Spark/PR/scala212/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala:126:
 org.apache.spark.sql.catalyst.expressions.codegen.ExprValue and String are 
unrelated: they will most likely never compare equal
    [error] [warn]              if (eval.isNull == "true") {
    [error] [warn] 
    [error] [warn] 
/home/ishizaki/Spark/PR/scala212/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala:133:
 org.apache.spark.sql.catalyst.expressions.codegen.ExprValue and String are 
unrelated: they will most likely never compare equal
    [error] [warn]             if (eval.isNull == "true") {
    [error] [warn] 
    [error] [warn] 
/home/ishizaki/Spark/PR/scala212/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/GenerateUnsafeProjection.scala:90:
 org.apache.spark.sql.catalyst.expressions.codegen.ExprValue and String are 
unrelated: they will most likely never compare equal
    [error] [warn]       if (inputs.map(_.isNull).forall(_ == "false")) {
    [error] [warn] 
    ```
    
    ## How was this patch tested?
    
    Existing UTs

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/kiszk/spark SPARK-25036a

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/22012.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #22012
    
----
commit 235a74aef24fb17f9e4c707a00a6907fedb91455
Author: Kazuaki Ishizaki <ishizaki@...>
Date:   2018-08-06T18:56:15Z

    use LiteralTrue/LiteralFalse instead of String

----


---

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

Reply via email to