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

chengchengjin 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 88886d9dc5 [GLUTEN][Function] Support btrim function (#8903)
88886d9dc5 is described below

commit 88886d9dc53485a50b7d017cb55c9543483fab5f
Author: xinghuayu007 <[email protected]>
AuthorDate: Thu Mar 6 17:30:15 2025 +0800

    [GLUTEN][Function] Support btrim function (#8903)
    
    Co-authored-by: 汪细勖(WangXixu)-顺丰科技技术集团 <[email protected]>
---
 .../apache/gluten/execution/VeloxStringFunctionsSuite.scala | 13 +++++++++++++
 .../org/apache/gluten/expression/ExpressionConverter.scala  | 12 +++++++++++-
 .../org/apache/gluten/expression/ExpressionMappings.scala   |  3 ++-
 .../org/apache/gluten/expression/ExpressionNames.scala      |  1 +
 4 files changed, 27 insertions(+), 2 deletions(-)

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 f1e5a42bc0..ff2967b1c3 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
@@ -316,6 +316,19 @@ class VeloxStringFunctionsSuite extends 
VeloxWholeStageTransformerSuite {
         s"from $LINEITEM_TABLE limit 
$LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
   }
 
+  test("btrim") {
+    runQueryAndCompare(
+      s"select l_orderkey, btrim(l_comment) " +
+        s"from $LINEITEM_TABLE limit 
$LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
+    runQueryAndCompare(
+      s"select l_orderkey, btrim('. abcdefg', l_comment) " +
+        s"from $LINEITEM_TABLE limit 
$LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
+    runQueryAndCompare(
+      s"select l_orderkey, btrim($NULL_STR_COL), " +
+        s"btrim($NULL_STR_COL, l_comment), btrim('. abcdefg', $NULL_STR_COL) " 
+
+        s"from $LINEITEM_TABLE limit 
$LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
+  }
+
   test("lpad") {
     runQueryAndCompare(
       s"select l_orderkey, lpad($NULL_STR_COL, 80) " +
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 62d304dfff..48f33c3d50 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
@@ -25,7 +25,7 @@ import org.apache.gluten.utils.DecimalArithmeticUtil
 import org.apache.spark.{SPARK_REVISION, SPARK_VERSION_SHORT}
 import org.apache.spark.internal.Logging
 import org.apache.spark.sql.catalyst.SQLConfHelper
-import org.apache.spark.sql.catalyst.expressions._
+import org.apache.spark.sql.catalyst.expressions.{StringTrimBoth, _}
 import org.apache.spark.sql.catalyst.expressions.objects.StaticInvoke
 import org.apache.spark.sql.catalyst.optimizer.NormalizeNaNAndZero
 import org.apache.spark.sql.execution.ScalarSubquery
@@ -359,6 +359,16 @@ object ExpressionConverter extends SQLConfHelper with 
Logging {
           children,
           s
         )
+      case s: StringTrimBoth =>
+        val children = s.trimStr
+          .map(replaceWithExpressionTransformer0(_, attributeSeq, 
expressionsMap))
+          .toSeq ++
+          Seq(replaceWithExpressionTransformer0(s.srcStr, attributeSeq, 
expressionsMap))
+        GenericExpressionTransformer(
+          substraitExprName,
+          children,
+          s
+        )
       case m: HashExpression[_] =>
         
BackendsApiManager.getSparkPlanExecApiInstance.genHashExpressionTransformer(
           substraitExprName,
diff --git 
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
 
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
index 106df7037c..dc41bd0629 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala
@@ -21,7 +21,7 @@ import org.apache.gluten.config.GlutenConfig
 import org.apache.gluten.expression.ExpressionNames._
 import org.apache.gluten.sql.shims.SparkShimLoader
 
-import org.apache.spark.sql.catalyst.expressions._
+import org.apache.spark.sql.catalyst.expressions.{StringTrimBoth, _}
 import org.apache.spark.sql.catalyst.expressions.aggregate._
 import org.apache.spark.sql.catalyst.optimizer.NormalizeNaNAndZero
 import org.apache.spark.sql.execution.ScalarSubquery
@@ -80,6 +80,7 @@ object ExpressionMappings {
     Sig[StringTrimLeft](LTRIM),
     Sig[StringTrimRight](RTRIM),
     Sig[StringTrim](TRIM),
+    Sig[StringTrimBoth](BTRIM),
     Sig[StringLPad](LPAD),
     Sig[StringRPad](RPAD),
     Sig[StringReplace](REPLACE),
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 4ea3227b45..ed4de623ca 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
@@ -107,6 +107,7 @@ object ExpressionNames {
   final val LTRIM = "ltrim"
   final val RTRIM = "rtrim"
   final val TRIM = "trim"
+  final val BTRIM = "btrim"
   final val LPAD = "lpad"
   final val RPAD = "rpad"
   final val REPLACE = "replace"


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

Reply via email to