This is an automated email from the ASF dual-hosted git repository.

philo-he 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 6273a48a80 [VL] Support dayname and monthname functions (#12725)
6273a48a80 is described below

commit 6273a48a8016c13a33e1c254a140874e8de2717c
Author: Kaifei Yi <[email protected]>
AuthorDate: Mon Aug 10 09:32:08 2026 +0800

    [VL] Support dayname and monthname functions (#12725)
---
 .../scala/org/apache/gluten/utils/CHExpressionUtil.scala     |  4 +++-
 .../gluten/functions/ScalarFunctionsValidateSuite.scala      | 12 ++++++++++++
 .../org/apache/gluten/expression/ExpressionConverter.scala   |  3 ++-
 .../scala/org/apache/gluten/expression/ExpressionNames.scala |  2 ++
 .../org/apache/gluten/sql/shims/spark40/Spark40Shims.scala   |  4 +++-
 .../org/apache/gluten/sql/shims/spark41/Spark41Shims.scala   |  4 +++-
 6 files changed, 25 insertions(+), 4 deletions(-)

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 ed8f410b75..62f06632f3 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
@@ -213,6 +213,8 @@ object CHExpressionUtil {
     CHAR_TYPE_WRITE_SIDE_CHECK -> DefaultValidator(),
     READ_SIDE_PADDING -> DefaultValidator(),
     DIV -> DefaultValidator(),
-    REGEXP_INSTR -> DefaultValidator()
+    REGEXP_INSTR -> DefaultValidator(),
+    DAY_NAME -> DefaultValidator(),
+    MONTH_NAME -> DefaultValidator()
   )
 }
diff --git 
a/backends-velox/src/test/scala/org/apache/gluten/functions/ScalarFunctionsValidateSuite.scala
 
b/backends-velox/src/test/scala/org/apache/gluten/functions/ScalarFunctionsValidateSuite.scala
index 33215a5283..418cae1b9b 100644
--- 
a/backends-velox/src/test/scala/org/apache/gluten/functions/ScalarFunctionsValidateSuite.scala
+++ 
b/backends-velox/src/test/scala/org/apache/gluten/functions/ScalarFunctionsValidateSuite.scala
@@ -737,6 +737,18 @@ class ScalarFunctionsValidateSuite extends 
FunctionsValidateSuite {
     }
   }
 
+  testWithMinSparkVersion("dayname", "4.0") {
+    runQueryAndCompare("SELECT dayname(l_shipdate) FROM lineitem limit 50") {
+      checkGlutenPlan[ProjectExecTransformer]
+    }
+  }
+
+  testWithMinSparkVersion("monthname", "4.0") {
+    runQueryAndCompare("SELECT monthname(l_shipdate) FROM lineitem limit 50") {
+      checkGlutenPlan[ProjectExecTransformer]
+    }
+  }
+
   testWithMinSparkVersion("mask", "3.4") {
     runQueryAndCompare("SELECT mask(c_comment) FROM customer limit 50") {
       checkGlutenPlan[ProjectExecTransformer]
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 ad3c26c118..b70bbc8799 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
@@ -646,7 +646,8 @@ object ExpressionConverter extends SQLConfHelper with 
Logging {
           replaceWithExpressionTransformer0(expr.children.head, attributeSeq, 
expressionsMap),
           expr
         )
-      case _: GetDateField | _: GetTimeField =>
+      case e @ (_: GetDateField | _: GetTimeField)
+          if 
DateTimeExpressionsTransformer.EXTRACT_DATE_FIELD_MAPPING.contains(e.getClass) 
=>
         ExtractDateTransformer(
           substraitExprName,
           replaceWithExpressionTransformer0(expr.children.head, attributeSeq, 
expressionsMap),
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 c453f9b236..def43746c1 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
@@ -228,6 +228,8 @@ object ExpressionNames {
   final val TIMESTAMP_DIFF = "timestampdiff"
   final val NEXT_DAY = "next_day"
   final val LAST_DAY = "last_day"
+  final val DAY_NAME = "dayname"
+  final val MONTH_NAME = "monthname"
   final val MONTHS_BETWEEN = "months_between"
   final val DATE_FROM_UNIX_DATE = "date_from_unix_date"
   final val UNIX_DATE = "unix_date"
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 59d44de9fc..2f4dafd188 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
@@ -79,7 +79,9 @@ class Spark40Shims extends SparkShims {
       Sig[UrlDecode](ExpressionNames.URL_DECODE),
       Sig[ToPrettyString](ExpressionNames.TO_PRETTY_STRING),
       Sig[RandStr](ExpressionNames.RANDSTR),
-      Sig[RegExpInStr](ExpressionNames.REGEXP_INSTR)
+      Sig[RegExpInStr](ExpressionNames.REGEXP_INSTR),
+      Sig[DayName](ExpressionNames.DAY_NAME),
+      Sig[MonthName](ExpressionNames.MONTH_NAME)
     )
   }
 
diff --git 
a/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala
 
b/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala
index 78cd7d572f..3934f6fe84 100644
--- 
a/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala
+++ 
b/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala
@@ -78,7 +78,9 @@ class Spark41Shims extends SparkShims {
       Sig[UrlDecode](ExpressionNames.URL_DECODE),
       Sig[ToPrettyString](ExpressionNames.TO_PRETTY_STRING),
       Sig[RandStr](ExpressionNames.RANDSTR),
-      Sig[RegExpInStr](ExpressionNames.REGEXP_INSTR)
+      Sig[RegExpInStr](ExpressionNames.REGEXP_INSTR),
+      Sig[DayName](ExpressionNames.DAY_NAME),
+      Sig[MonthName](ExpressionNames.MONTH_NAME)
     )
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to