This is an automated email from the ASF dual-hosted git repository.
richox pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/auron.git
The following commit(s) were added to refs/heads/master by this push:
new 95cfd127 [AURON #1533] Implement native function of lpad, rpad. (#1534)
95cfd127 is described below
commit 95cfd12737a6bf505b8104b73981dede92b853b5
Author: slfan1989 <[email protected]>
AuthorDate: Wed Oct 29 13:37:55 2025 +0800
[AURON #1533] Implement native function of lpad, rpad. (#1534)
Signed-off-by: slfan1989 <[email protected]>
---
.../org/apache/spark/sql/auron/AuronQuerySuite.scala | 18 ++++++++++++++++++
.../org/apache/spark/sql/auron/NativeConverters.scala | 5 +++++
2 files changed, 23 insertions(+)
diff --git
a/spark-extension-shims-spark/src/test/scala/org/apache/spark/sql/auron/AuronQuerySuite.scala
b/spark-extension-shims-spark/src/test/scala/org/apache/spark/sql/auron/AuronQuerySuite.scala
index 5b9787d3..a31eaf7e 100644
---
a/spark-extension-shims-spark/src/test/scala/org/apache/spark/sql/auron/AuronQuerySuite.scala
+++
b/spark-extension-shims-spark/src/test/scala/org/apache/spark/sql/auron/AuronQuerySuite.scala
@@ -286,4 +286,22 @@ class AuronQuerySuite
}
}
}
+
+ test("lpad/rpad basic") {
+ Seq(
+ ("select lpad('abc', 5, '*')", Row("**abc")),
+ ("select rpad('abc', 5, '*')", Row("abc**")),
+ ("select lpad('spark', 2, '0')", Row("sp")),
+ ("select rpad('spark', 2, '0')", Row("sp")),
+ ("select lpad('9', 5, 'ab')", Row("abab9")),
+ ("select rpad('9', 5, 'ab')", Row("9abab")),
+ ("select lpad('hi', 5, '')", Row("hi")),
+ ("select rpad('hi', 5, '')", Row("hi")),
+ ("select lpad('x', 0, 'a')", Row("")),
+ ("select rpad('x', -1, 'a')", Row("")),
+ ("select lpad('Z', 3, '++')", Row("++Z")),
+ ("select rpad('Z', 3, 'AB')", Row("ZAB"))).foreach { case (q, expected)
=>
+ checkAnswer(sql(q), Seq(expected))
+ }
+ }
}
diff --git
a/spark-extension/src/main/scala/org/apache/spark/sql/auron/NativeConverters.scala
b/spark-extension/src/main/scala/org/apache/spark/sql/auron/NativeConverters.scala
index 5b3159e3..0566d5f6 100644
---
a/spark-extension/src/main/scala/org/apache/spark/sql/auron/NativeConverters.scala
+++
b/spark-extension/src/main/scala/org/apache/spark/sql/auron/NativeConverters.scala
@@ -930,6 +930,11 @@ object NativeConverters extends Logging {
val children = e.children.map(Cast(_, e.dataType))
buildScalarFunction(pb.ScalarFunction.Coalesce, children, e.dataType)
+ case e: StringLPad =>
+ buildScalarFunction(pb.ScalarFunction.Lpad, e.children, StringType)
+ case e: StringRPad =>
+ buildScalarFunction(pb.ScalarFunction.Rpad, e.children, StringType)
+
case e @ If(predicate, trueValue, falseValue) =>
val castedTrueValue = trueValue match {
case t if t.dataType != e.dataType => Cast(t, e.dataType)