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]

Reply via email to