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]