Github user mgaido91 commented on a diff in the pull request:
https://github.com/apache/spark/pull/21599#discussion_r199632638
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala
---
@@ -128,17 +128,31 @@ abstract class BinaryArithmetic extends
BinaryOperator with NullIntolerant {
def calendarIntervalMethod: String =
sys.error("BinaryArithmetics must override either
calendarIntervalMethod or genCode")
+ def checkOverflowCode(result: String, op1: String, op2: String): String =
+ sys.error("BinaryArithmetics must override either checkOverflowCode or
genCode")
+
override def doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode =
dataType match {
case _: DecimalType =>
defineCodeGen(ctx, ev, (eval1, eval2) =>
s"$eval1.$decimalMethod($eval2)")
case CalendarIntervalType =>
defineCodeGen(ctx, ev, (eval1, eval2) =>
s"$eval1.$calendarIntervalMethod($eval2)")
+ // In the following cases, overflow can happen, so we need to check
the result is valid.
+ // Otherwise we throw an ArithmeticException
--- End diff --
@gatorsmile @hvanhovell do you have time to check this and give your
opinion here? Thanks.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]