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 26c2954f6b [GLUTEN-11622][VL] Enable minute/second(timestamp_ntz)
native execution (#12295)
26c2954f6b is described below
commit 26c2954f6bed910dbe6d050c99ad7dff38f73801
Author: Mariam AlMesfer <[email protected]>
AuthorDate: Fri Jul 10 13:52:36 2026 +0300
[GLUTEN-11622][VL] Enable minute/second(timestamp_ntz) native execution
(#12295)
Co-authored-by: Mariam-Almesfer <[email protected]>
---
.../org/apache/gluten/functions/DateFunctionsValidateSuite.scala | 8 ++++++++
.../apache/gluten/extension/columnar/validator/Validators.scala | 8 +++++---
2 files changed, 13 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 47b3e5b692..417824b425 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
@@ -603,6 +603,14 @@ class DateFunctionsValidateSuite extends
FunctionsValidateSuite {
runQueryAndCompare("select hour(ts) from view") {
checkGlutenPlan[ProjectExecTransformer]
}
+ // minute(timestamp_ntz) runs natively; output is int (no NTZ
propagation).
+ runQueryAndCompare("select minute(ts) from view") {
+ checkGlutenPlan[ProjectExecTransformer]
+ }
+ // second(timestamp_ntz) runs natively; output is int (no NTZ
propagation).
+ runQueryAndCompare("select second(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 d063afc989..61c98de1bd 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
+import org.apache.spark.sql.catalyst.expressions.{Hour, Minute, Second}
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 isHourOnNtz = plan match {
+ val isExtractOnNtz = plan match {
case p: ProjectExec =>
p.projectList.forall {
expr =>
@@ -279,12 +279,14 @@ object Validators {
!expr.references.exists(a => containsNTZ(a.dataType))) ||
expr.exists {
case Hour(child, _) => containsNTZ(child.dataType)
+ case Minute(child, _) => containsNTZ(child.dataType)
+ case Second(child, _) => containsNTZ(child.dataType)
case _ => false
}
}
case _ => false
}
- if (isScan || isHourOnNtz) {
+ if (isScan || isExtractOnNtz) {
return pass()
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]