Skip to content

Commit 88886d9

Browse files
xinghuayu007汪细勖(WangXixu)-顺丰科技技术集团
and
汪细勖(WangXixu)-顺丰科技技术集团
authored
[GLUTEN][Function] Support btrim function (#8903)
Co-authored-by: 汪细勖(WangXixu)-顺丰科技技术集团 <wangxixu@sf-express.com>
1 parent f5d0269 commit 88886d9

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

backends-velox/src/test/scala/org/apache/gluten/execution/VeloxStringFunctionsSuite.scala

+13
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,19 @@ class VeloxStringFunctionsSuite extends VeloxWholeStageTransformerSuite {
316316
s"from $LINEITEM_TABLE limit $LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
317317
}
318318

319+
test("btrim") {
320+
runQueryAndCompare(
321+
s"select l_orderkey, btrim(l_comment) " +
322+
s"from $LINEITEM_TABLE limit $LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
323+
runQueryAndCompare(
324+
s"select l_orderkey, btrim('. abcdefg', l_comment) " +
325+
s"from $LINEITEM_TABLE limit $LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
326+
runQueryAndCompare(
327+
s"select l_orderkey, btrim($NULL_STR_COL), " +
328+
s"btrim($NULL_STR_COL, l_comment), btrim('. abcdefg', $NULL_STR_COL) " +
329+
s"from $LINEITEM_TABLE limit $LENGTH")(checkGlutenOperatorMatch[ProjectExecTransformer])
330+
}
331+
319332
test("lpad") {
320333
runQueryAndCompare(
321334
s"select l_orderkey, lpad($NULL_STR_COL, 80) " +

gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala

+11-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import org.apache.gluten.utils.DecimalArithmeticUtil
2525
import org.apache.spark.{SPARK_REVISION, SPARK_VERSION_SHORT}
2626
import org.apache.spark.internal.Logging
2727
import org.apache.spark.sql.catalyst.SQLConfHelper
28-
import org.apache.spark.sql.catalyst.expressions._
28+
import org.apache.spark.sql.catalyst.expressions.{StringTrimBoth, _}
2929
import org.apache.spark.sql.catalyst.expressions.objects.StaticInvoke
3030
import org.apache.spark.sql.catalyst.optimizer.NormalizeNaNAndZero
3131
import org.apache.spark.sql.execution.ScalarSubquery
@@ -359,6 +359,16 @@ object ExpressionConverter extends SQLConfHelper with Logging {
359359
children,
360360
s
361361
)
362+
case s: StringTrimBoth =>
363+
val children = s.trimStr
364+
.map(replaceWithExpressionTransformer0(_, attributeSeq, expressionsMap))
365+
.toSeq ++
366+
Seq(replaceWithExpressionTransformer0(s.srcStr, attributeSeq, expressionsMap))
367+
GenericExpressionTransformer(
368+
substraitExprName,
369+
children,
370+
s
371+
)
362372
case m: HashExpression[_] =>
363373
BackendsApiManager.getSparkPlanExecApiInstance.genHashExpressionTransformer(
364374
substraitExprName,

gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionMappings.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import org.apache.gluten.config.GlutenConfig
2121
import org.apache.gluten.expression.ExpressionNames._
2222
import org.apache.gluten.sql.shims.SparkShimLoader
2323

24-
import org.apache.spark.sql.catalyst.expressions._
24+
import org.apache.spark.sql.catalyst.expressions.{StringTrimBoth, _}
2525
import org.apache.spark.sql.catalyst.expressions.aggregate._
2626
import org.apache.spark.sql.catalyst.optimizer.NormalizeNaNAndZero
2727
import org.apache.spark.sql.execution.ScalarSubquery
@@ -80,6 +80,7 @@ object ExpressionMappings {
8080
Sig[StringTrimLeft](LTRIM),
8181
Sig[StringTrimRight](RTRIM),
8282
Sig[StringTrim](TRIM),
83+
Sig[StringTrimBoth](BTRIM),
8384
Sig[StringLPad](LPAD),
8485
Sig[StringRPad](RPAD),
8586
Sig[StringReplace](REPLACE),

shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ object ExpressionNames {
107107
final val LTRIM = "ltrim"
108108
final val RTRIM = "rtrim"
109109
final val TRIM = "trim"
110+
final val BTRIM = "btrim"
110111
final val LPAD = "lpad"
111112
final val RPAD = "rpad"
112113
final val REPLACE = "replace"

0 commit comments

Comments
 (0)