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

yao 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 bb021e0319 feat(VL): Add Spark randstr function mapping for Velox 
backend (#11607)
bb021e0319 is described below

commit bb021e031955d309bf4d95dcca72974cadb94919
Author: Kent Yao <[email protected]>
AuthorDate: Sat Feb 28 00:55:35 2026 +0800

    feat(VL): Add Spark randstr function mapping for Velox backend (#11607)
    
    Add expression mapping for Spark's randstr function (Spark 4.0+) to
    enable offloading to Velox native execution.
    
    Changes:
    - Add RANDSTR constant to ExpressionNames.scala
    - Add Sig[RandStr] to Spark40Shims and Spark41Shims scalar expression
      mappings
    
    The Velox implementation was merged in facebookincubator/velox#16014.
    randstr(length, seed) generates a random string of specified length
    using characters from 0-9, a-z, A-Z.
---
 .../org/apache/gluten/functions/MathFunctionsValidateSuite.scala   | 7 +++++++
 .../main/scala/org/apache/gluten/expression/ExpressionNames.scala  | 1 +
 .../scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala   | 3 ++-
 .../scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala   | 3 ++-
 4 files changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/backends-velox/src/test/scala/org/apache/gluten/functions/MathFunctionsValidateSuite.scala
 
b/backends-velox/src/test/scala/org/apache/gluten/functions/MathFunctionsValidateSuite.scala
index c41804f10f..248dad0df8 100644
--- 
a/backends-velox/src/test/scala/org/apache/gluten/functions/MathFunctionsValidateSuite.scala
+++ 
b/backends-velox/src/test/scala/org/apache/gluten/functions/MathFunctionsValidateSuite.scala
@@ -302,6 +302,13 @@ abstract class MathFunctionsValidateSuite extends 
FunctionsValidateSuite {
     }
   }
 
+  testWithMinSparkVersion("randstr", "4.0") {
+    // randstr generates random strings, so we only verify native execution, 
not result equality.
+    runQueryAndCompare("SELECT randstr(5, 0) from lineitem limit 100", 
compareResult = false) {
+      checkGlutenPlan[ProjectExecTransformer]
+    }
+  }
+
   test("rint") {
     withTempPath {
       path =>
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 2542e54adb..f2ae5647b1 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
@@ -194,6 +194,7 @@ object ExpressionNames {
   final val REMAINDER = "modulus"
   final val FACTORIAL = "factorial"
   final val RAND = "rand"
+  final val RANDSTR = "randstr"
   final val RINT = "rint"
   final val RIGHT = "right"
 
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 fbe69ecc73..bbbad38010 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
@@ -98,7 +98,8 @@ class Spark40Shims extends SparkShims {
       Sig[UrlEncode](ExpressionNames.URL_ENCODE),
       Sig[KnownNotContainsNull](ExpressionNames.KNOWN_NOT_CONTAINS_NULL),
       Sig[UrlDecode](ExpressionNames.URL_DECODE),
-      Sig[ToPrettyString](ExpressionNames.TO_PRETTY_STRING)
+      Sig[ToPrettyString](ExpressionNames.TO_PRETTY_STRING),
+      Sig[RandStr](ExpressionNames.RANDSTR)
     )
   }
 
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 62f6b4d398..a031becdb0 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
@@ -97,7 +97,8 @@ class Spark41Shims extends SparkShims {
       Sig[UrlEncode](ExpressionNames.URL_ENCODE),
       Sig[KnownNotContainsNull](ExpressionNames.KNOWN_NOT_CONTAINS_NULL),
       Sig[UrlDecode](ExpressionNames.URL_DECODE),
-      Sig[ToPrettyString](ExpressionNames.TO_PRETTY_STRING)
+      Sig[ToPrettyString](ExpressionNames.TO_PRETTY_STRING),
+      Sig[RandStr](ExpressionNames.RANDSTR)
     )
   }
 


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

Reply via email to