This is an automated email from the ASF dual-hosted git repository.
rui-mo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 50469ec660 [GLUTEN-11622][VL] Enable timestampadd(timestamp_ntz)
native execution (#12296)
50469ec660 is described below
commit 50469ec6605b8dd44f5b9dc171582108077f1a84
Author: Mariam AlMesfer <[email protected]>
AuthorDate: Mon Aug 3 13:04:50 2026 +0300
[GLUTEN-11622][VL] Enable timestampadd(timestamp_ntz) native execution
(#12296)
Co-authored-by: Mariam-Almesfer <[email protected]>
---
.../org/apache/gluten/functions/DateFunctionsValidateSuite.scala | 4 ++++
.../apache/gluten/extension/columnar/validator/Validators.scala | 7 ++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git
a/backends-velox/src/test/scala/org/apache/gluten/functions/DateFunctionsValidateSuite.scala
b/backends-velox/src/test/scala/org/apache/gluten/functions/DateFunctionsValidateSuite.scala
index 417824b425..36ce82257a 100644
---
a/backends-velox/src/test/scala/org/apache/gluten/functions/DateFunctionsValidateSuite.scala
+++
b/backends-velox/src/test/scala/org/apache/gluten/functions/DateFunctionsValidateSuite.scala
@@ -611,6 +611,10 @@ class DateFunctionsValidateSuite extends
FunctionsValidateSuite {
runQueryAndCompare("select second(ts) from view") {
checkGlutenPlan[ProjectExecTransformer]
}
+ // timestampadd(timestamp_ntz) runs natively; output stays
timestamp_ntz.
+ runQueryAndCompare("select timestampadd(hour, 1, ts) from view") {
+ checkGlutenPlan[ProjectExecTransformer]
+ }
}
}
}
diff --git
a/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/validator/Validators.scala
b/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/validator/Validators.scala
index 61c98de1bd..f3825ed89a 100644
---
a/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/validator/Validators.scala
+++
b/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/validator/Validators.scala
@@ -25,7 +25,7 @@ import
org.apache.gluten.extension.columnar.offload.OffloadSingleNode
import org.apache.gluten.sql.shims.SparkShimLoader
import org.apache.spark.internal.Logging
-import org.apache.spark.sql.catalyst.expressions.{Hour, Minute, Second}
+import org.apache.spark.sql.catalyst.expressions.{Hour, Minute, Second,
TimestampAdd}
import org.apache.spark.sql.execution._
import org.apache.spark.sql.execution.aggregate.{HashAggregateExec,
ObjectHashAggregateExec, SortAggregateExec}
import org.apache.spark.sql.execution.datasources.WriteFilesExec
@@ -271,7 +271,7 @@ object Validators {
case p if HiveTableScanExecTransformer.isHiveTableScan(p) => true
case _ => false
}
- val isExtractOnNtz = plan match {
+ val isSupportedNtz = plan match {
case p: ProjectExec =>
p.projectList.forall {
expr =>
@@ -281,12 +281,13 @@ object Validators {
case Hour(child, _) => containsNTZ(child.dataType)
case Minute(child, _) => containsNTZ(child.dataType)
case Second(child, _) => containsNTZ(child.dataType)
+ case TimestampAdd(_, _, child, _) =>
containsNTZ(child.dataType)
case _ => false
}
}
case _ => false
}
- if (isScan || isExtractOnNtz) {
+ if (isScan || isSupportedNtz) {
return pass()
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]