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

philo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 21e456578d [GLUTEN-9361][VL] Enable luhn_check function for spark 3.5 
(#9665)
21e456578d is described below

commit 21e456578d820a85c6c1bcd8db31adfb7971b520
Author: dcoliversun <[email protected]>
AuthorDate: Mon May 19 00:16:07 2025 +0800

    [GLUTEN-9361][VL] Enable luhn_check function for spark 3.5 (#9665)
---
 .../src/main/scala/org/apache/gluten/utils/CHExpressionUtil.scala   | 3 ++-
 .../org/apache/gluten/execution/VeloxStringFunctionsSuite.scala     | 6 ++++++
 .../scala/org/apache/gluten/expression/ExpressionConverter.scala    | 5 +++++
 .../main/scala/org/apache/gluten/expression/ExpressionNames.scala   | 1 +
 .../scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala    | 3 ++-
 5 files changed, 16 insertions(+), 2 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 9cad2316f5..34d70b17c4 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
@@ -207,6 +207,7 @@ object CHExpressionUtil {
     MAKE_DATE -> DefaultValidator(),
     MAP_CONCAT -> DefaultValidator(),
     ARRAY_APPEND -> DefaultValidator(),
-    JSON_OBJECT_KEYS -> DefaultValidator()
+    JSON_OBJECT_KEYS -> DefaultValidator(),
+    LUHN_CHECK -> DefaultValidator()
   )
 }
diff --git 
a/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxStringFunctionsSuite.scala
 
b/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxStringFunctionsSuite.scala
index b95672a134..ec3a6079fe 100644
--- 
a/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxStringFunctionsSuite.scala
+++ 
b/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxStringFunctionsSuite.scala
@@ -665,4 +665,10 @@ class VeloxStringFunctionsSuite extends 
VeloxWholeStageTransformerSuite {
       s"select l_orderkey, right(l_comment, $NULL_STR_COL) " +
         s"from $LINEITEM_TABLE limit 
$LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
   }
+
+  testWithMinSparkVersion("luhn_check", "3.5") {
+    runQueryAndCompare(
+      s"select l_orderkey, luhn_check(l_comment) " +
+        s"from $LINEITEM_TABLE limit 
$LENGTH")(checkGlutenOperatorMatch[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 6f2c9926d4..26dcf90124 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
@@ -167,6 +167,11 @@ object ExpressionConverter extends SQLConfHelper with 
Logging {
           "url_" + i.functionName,
           replaceWithExpressionTransformer0(i.arguments.head, attributeSeq, 
expressionsMap),
           i)
+      case i @ StaticInvoke(_, _, "isLuhnNumber", _, _, _, _, _) =>
+        return GenericExpressionTransformer(
+          ExpressionNames.LUHN_CHECK,
+          replaceWithExpressionTransformer0(i.arguments.head, attributeSeq, 
expressionsMap),
+          i)
       case StaticInvoke(clz, _, functionName, _, _, _, _, _) =>
         throw new GlutenNotSupportException(
           s"Not supported to transform StaticInvoke with object: 
${clz.getName}, " +
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 c822161ea5..18d2856ca1 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
@@ -138,6 +138,7 @@ object ExpressionNames {
   final val BASE64 = "base64"
   final val MASK = "mask"
   final val FORMAT_STRING = "format_string"
+  final val LUHN_CHECK = "luhn_check"
 
   // URL functions
   final val PARSE_URL = "parse_url"
diff --git 
a/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
 
b/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
index 543bef6c55..badf1ca66a 100644
--- 
a/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
+++ 
b/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
@@ -115,7 +115,8 @@ class Spark35Shims extends SparkShims {
       Sig[EqualNull](ExpressionNames.EQUAL_NULL),
       Sig[ILike](ExpressionNames.ILIKE),
       Sig[MapContainsKey](ExpressionNames.MAP_CONTAINS_KEY),
-      Sig[Get](ExpressionNames.GET)
+      Sig[Get](ExpressionNames.GET),
+      Sig[Luhncheck](ExpressionNames.LUHN_CHECK)
     )
   }
 


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

Reply via email to