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)

Reply via email to