This is an automated email from the ASF dual-hosted git repository.
zhli pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 2e6b013d87 [VL] Enable div function (#11230)
2e6b013d87 is described below
commit 2e6b013d87479dcf19a15c0a2d4d6b6943838e63
Author: Zhen Li <[email protected]>
AuthorDate: Tue Dec 2 11:13:24 2025 +0800
[VL] Enable div function (#11230)
Enable div function.
---
.../main/scala/org/apache/gluten/utils/CHExpressionUtil.scala | 3 ++-
.../apache/gluten/functions/ArithmeticAnsiValidateSuite.scala | 11 +++++++++++
.../org/apache/gluten/expression/ExpressionConverter.scala | 8 ++++++++
.../org/apache/gluten/expression/ExpressionMappings.scala | 1 +
.../scala/org/apache/gluten/expression/ExpressionNames.scala | 2 ++
.../org/apache/gluten/sql/shims/spark34/Spark34Shims.scala | 1 +
.../org/apache/gluten/sql/shims/spark35/Spark35Shims.scala | 1 +
.../org/apache/gluten/sql/shims/spark40/Spark40Shims.scala | 1 +
8 files changed, 27 insertions(+), 1 deletion(-)
diff --git
a/backends-clickhouse/src/main/scala/org/apache/gluten/utils/CHExpressionUtil.scala
b/backends-clickhouse/src/main/scala/org/apache/gluten/utils/CHExpressionUtil.scala
index 37308f8c0b..27d77d42cf 100644
---
a/backends-clickhouse/src/main/scala/org/apache/gluten/utils/CHExpressionUtil.scala
+++
b/backends-clickhouse/src/main/scala/org/apache/gluten/utils/CHExpressionUtil.scala
@@ -210,6 +210,7 @@ object CHExpressionUtil {
LUHN_CHECK -> DefaultValidator(),
VARCHAR_TYPE_WRITE_SIDE_CHECK -> DefaultValidator(),
CHAR_TYPE_WRITE_SIDE_CHECK -> DefaultValidator(),
- READ_SIDE_PADDING -> DefaultValidator()
+ READ_SIDE_PADDING -> DefaultValidator(),
+ DIV -> DefaultValidator()
)
}
diff --git
a/backends-velox/src/test/scala/org/apache/gluten/functions/ArithmeticAnsiValidateSuite.scala
b/backends-velox/src/test/scala/org/apache/gluten/functions/ArithmeticAnsiValidateSuite.scala
index ce3540e21a..a1633c4cb4 100644
---
a/backends-velox/src/test/scala/org/apache/gluten/functions/ArithmeticAnsiValidateSuite.scala
+++
b/backends-velox/src/test/scala/org/apache/gluten/functions/ArithmeticAnsiValidateSuite.scala
@@ -89,4 +89,15 @@ class ArithmeticAnsiValidateSuite extends
FunctionsValidateSuite {
}
}
+ test("div") {
+ runQueryAndCompare("SELECT int_field1 div 2 FROM datatab WHERE int_field1
IS NOT NULL") {
+ checkGlutenPlan[ProjectExecTransformer]
+ }
+ if (isSparkVersionGE("3.4")) {
+ intercept[SparkException] {
+ sql("SELECT 1 div 0 ").collect()
+ }
+ }
+ }
+
}
diff --git
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
index c7ee159e01..c46a9b1077 100644
---
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
+++
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
@@ -734,6 +734,14 @@ object ExpressionConverter extends SQLConfHelper with
Logging {
a,
ExpressionNames.CHECKED_DIVIDE
)
+ case i: IntegralDivide =>
+
BackendsApiManager.getSparkPlanExecApiInstance.genArithmeticTransformer(
+ substraitExprName,
+ replaceWithExpressionTransformer0(i.left, attributeSeq,
expressionsMap),
+ replaceWithExpressionTransformer0(i.right, attributeSeq,
expressionsMap),
+ i,
+ ExpressionNames.CHECKED_DIV
+ )
case tryEval: TryEval =>
// This is a placeholder to handle try_eval(other expressions).
BackendsApiManager.getSparkPlanExecApiInstance.genTryEvalTransformer(
diff --git
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
index cc75002875..b0b7c80793 100644
---
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
+++
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
@@ -37,6 +37,7 @@ object ExpressionMappings {
Sig[Subtract](SUBTRACT),
Sig[Multiply](MULTIPLY),
Sig[Divide](DIVIDE),
+ Sig[IntegralDivide](DIV),
Sig[UnaryPositive](POSITIVE),
Sig[UnaryMinus](NEGATIVE),
Sig[And](AND),
diff --git
a/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
b/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
index ef2dee605f..741c1f7a19 100644
---
a/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
+++
b/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
@@ -60,6 +60,7 @@ object ExpressionNames {
final val ADD = "add"
final val SUBTRACT = "subtract"
final val MULTIPLY = "multiply"
+ final val DIV = "div"
final val DIVIDE = "divide"
final val POSITIVE = "positive"
final val NEGATIVE = "negative"
@@ -91,6 +92,7 @@ object ExpressionNames {
final val CHECKED_SUBTRACT = "checked_subtract"
final val CHECKED_DIVIDE = "checked_divide"
final val CHECKED_MULTIPLY = "checked_multiply"
+ final val CHECKED_DIV = "checked_div"
// SparkSQL String functions
final val ASCII = "ascii"
diff --git
a/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
b/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
index ac15aff6e7..ef7b7f21fe 100644
---
a/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
+++
b/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
@@ -560,6 +560,7 @@ class Spark34Shims extends SparkShims {
case s: Subtract => s.evalMode == EvalMode.ANSI
case d: Divide => d.evalMode == EvalMode.ANSI
case m: Multiply => m.evalMode == EvalMode.ANSI
+ case i: IntegralDivide => i.evalMode == EvalMode.ANSI
case _ => false
}
}
diff --git
a/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
b/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
index 4d373b1cc3..a538b25dca 100644
---
a/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
+++
b/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
@@ -600,6 +600,7 @@ class Spark35Shims extends SparkShims {
case s: Subtract => s.evalMode == EvalMode.ANSI
case d: Divide => d.evalMode == EvalMode.ANSI
case m: Multiply => m.evalMode == EvalMode.ANSI
+ case i: IntegralDivide => i.evalMode == EvalMode.ANSI
case _ => false
}
}
diff --git
a/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala
b/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala
index 66fa54bb93..cecb8eee10 100644
---
a/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala
+++
b/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala
@@ -624,6 +624,7 @@ class Spark40Shims extends SparkShims {
case d: Divide => d.evalMode == EvalMode.ANSI
case m: Multiply => m.evalMode == EvalMode.ANSI
case c: Cast => c.evalMode == EvalMode.ANSI
+ case i: IntegralDivide => i.evalMode == EvalMode.ANSI
case _ => false
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]