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

    https://github.com/apache/spark/pull/19729#discussion_r150437176
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala
 ---
    @@ -604,6 +604,8 @@ case class Least(children: Seq[Expression]) extends 
Expression {
         val evalChildren = children.map(_.genCode(ctx))
         val first = evalChildren(0)
    --- End diff --
    
    [`defaultValue` 
function](https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/codegen/CodeGenerator.scala#L596)
 returns `-1` or `null`.
    
    When we compare any non-primitive value with `null`, `NullPointerException` 
may occur.  
    Wehn we compare primitive value with initial value `-1`, the result may 
cause an incorrect result. For example, in `Greatest`, if all of the given 
values are `-2`, the result will be `-1`. It is incorrect.
    
    What do you think?



---

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

Reply via email to