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]