Skip to content

Commit cf28c58

Browse files
committed
divide fix
1 parent 2dfe50f commit cf28c58

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,6 @@ abstract class Expression extends TreeNode[Expression] {
142142
val evalE2 = e2.eval(i: Row)
143143
if (evalE2 == null) {
144144
null
145-
} else if (evalE2 == 0) {
146-
null
147145
} else {
148146
e1.dataType match {
149147
case ft: FractionalType =>

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,16 @@ case class Multiply(left: Expression, right: Expression) extends BinaryArithmeti
106106
case class Divide(left: Expression, right: Expression) extends BinaryArithmetic {
107107
def symbol = "/"
108108

109-
override def nullable = left.nullable || right.nullable || dataType.isInstanceOf[DecimalType]
109+
override def nullable = true
110110

111-
override def eval(input: Row): Any = dataType match {
112-
case _: FractionalType => f2(input, left, right, _.div(_, _))
113-
case _: IntegralType => i2(input, left , right, _.quot(_, _))
114-
}
111+
override def eval(input: Row): Any =
112+
if(right.eval(input) == 0) {
113+
null
114+
} else
115+
dataType match {
116+
case _: FractionalType => f2(input, left, right, _.div(_, _))
117+
case _: IntegralType => i2(input, left , right, _.quot(_, _))
118+
}
115119

116120
}
117121

0 commit comments

Comments
 (0)