Github user dongjoon-hyun commented on a diff in the pull request:

    https://github.com/apache/spark/pull/22395#discussion_r217935398
  
    --- Diff: 
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ArithmeticExpressionSuite.scala
 ---
    @@ -143,16 +143,14 @@ class ArithmeticExpressionSuite extends SparkFunSuite 
with ExpressionEvalHelper
         }
       }
     
    -  // By fixing SPARK-15776, Divide's inputType is required to be 
DoubleType of DecimalType.
    -  // TODO: in future release, we should add a IntegerDivide to support 
integral types.
    -  ignore("/ (Divide) for integral type") {
    -    checkEvaluation(Divide(Literal(1.toByte), Literal(2.toByte)), 0.toByte)
    -    checkEvaluation(Divide(Literal(1.toShort), Literal(2.toShort)), 
0.toShort)
    -    checkEvaluation(Divide(Literal(1), Literal(2)), 0)
    -    checkEvaluation(Divide(Literal(1.toLong), Literal(2.toLong)), 0.toLong)
    -    checkEvaluation(Divide(positiveShortLit, negativeShortLit), 0.toShort)
    -    checkEvaluation(Divide(positiveIntLit, negativeIntLit), 0)
    -    checkEvaluation(Divide(positiveLongLit, negativeLongLit), 0L)
    +  test("/ (Divide) for integral type") {
    +    checkEvaluation(IntegralDivide(Literal(1.toByte), Literal(2.toByte)), 
0L)
    +    checkEvaluation(IntegralDivide(Literal(1.toShort), 
Literal(2.toShort)), 0L)
    +    checkEvaluation(IntegralDivide(Literal(1), Literal(2)), 0L)
    +    checkEvaluation(IntegralDivide(Literal(1.toLong), Literal(2.toLong)), 
0L)
    +    checkEvaluation(IntegralDivide(positiveShortLit, negativeShortLit), 0L)
    +    checkEvaluation(IntegralDivide(positiveIntLit, negativeIntLit), 0L)
    +    checkEvaluation(IntegralDivide(positiveLongLit, negativeLongLit), 0L)
    --- End diff --
    
    Could you add a test case for `divide by zero` like `test("/ (Divide) 
basic")`?
    
    For now, this PR seems to follow the behavior of Spark `/` instead of Hive 
`div`. We had better be clear on our decision and prevent future unintended 
behavior changes.
    ```scala
    scala> sql("select 2 / 0, 2 div 0").show()
    +---------------------------------------+---------+
    |(CAST(2 AS DOUBLE) / CAST(0 AS DOUBLE))|(2 div 0)|
    +---------------------------------------+---------+
    |                                   null|     null|
    +---------------------------------------+---------+
    ```
    
    ```sql
    0: jdbc:hive2://ctr-e138-1518143905142-477481> select 2 / 0;
    +-------+
    |  _c0  |
    +-------+
    | NULL  |
    +-------+
    
    0: jdbc:hive2://ctr-e138-1518143905142-477481> select 2 div 0;
    Error: Error while compiling statement: FAILED:
    SemanticException [Error 10014]: Line 1:7 Wrong arguments '0':
    org.apache.hadoop.hive.ql.metadata.HiveException: Unable to execute method 
public org.apache.hadoop.io.LongWritable 
org.apache.hadoop.hive.ql.udf.UDFOPLongDivide.evaluate(org.apache.hadoop.io.LongWritable,org.apache.hadoop.io.LongWritable)
 with arguments {2,0}:/ by zero (state=42000,code=10014)
    ```


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to