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]

Reply via email to