Github user cloud-fan commented on a diff in the pull request:
https://github.com/apache/spark/pull/22395#discussion_r217233033
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/arithmetic.scala
---
@@ -314,6 +314,27 @@ case class Divide(left: Expression, right: Expression)
extends DivModLike {
override def evalOperation(left: Any, right: Any): Any = div(left, right)
}
+@ExpressionDescription(
+ usage = "expr1 _FUNC_ expr2 - Returns `expr1`/`expr2`. It performs
integral division.",
+ examples = """
+ Examples:
+ > SELECT 3 _FUNC_ 2;
+ 1
+ """,
+ since = "3.0.0")
+case class IntegralDivide(left: Expression, right: Expression) extends
DivModLike {
+
+ override def inputType: AbstractDataType = IntegralType
+
+ override def symbol: String = "/"
+ override def sqlOperator: String = "div"
+
+ private lazy val div: (Any, Any) => Any = dataType match {
+ case i: IntegralType => i.integral.asInstanceOf[Integral[Any]].quot
+ }
+ override def evalOperation(left: Any, right: Any): Any = div(left, right)
--- End diff --
Sorry I may not recall it very clearly. Can you check Hive and other
databases and see if the result type of `div` is always long?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]