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]