From e718b12064a61e7db1f99b08b58c1aa77d3640c2 Mon Sep 17 00:00:00 2001 From: panmingyi Date: Fri, 18 Jul 2025 10:58:37 +0800 Subject: [PATCH] support trim --- .../spark/expression/OmniExpressionAdaptor.scala | 3 +++ .../sql/execution/forsql/ColumnarFuncSuite.scala | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala b/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala index ff34f63ad..e0a2359e0 100644 --- a/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala +++ b/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala @@ -530,6 +530,9 @@ object OmniExpressionAdaptor extends Logging { case regExpReplace: RegExpReplace => getRegExpReplaceStr(regExpReplace, exprsIndexMap) + case trim: StringTrim => + getTrimStr(trim, exprsIndexMap) + case floor: Floor => new JsonObject().put("exprType", "FUNCTION") .addOmniExpJsonType("returnType", floor.dataType) diff --git a/omnioperator/omniop-spark-extension/java/src/test/scala/org/apache/spark/sql/execution/forsql/ColumnarFuncSuite.scala b/omnioperator/omniop-spark-extension/java/src/test/scala/org/apache/spark/sql/execution/forsql/ColumnarFuncSuite.scala index 99602b541..ae401004e 100644 --- a/omnioperator/omniop-spark-extension/java/src/test/scala/org/apache/spark/sql/execution/forsql/ColumnarFuncSuite.scala +++ b/omnioperator/omniop-spark-extension/java/src/test/scala/org/apache/spark/sql/execution/forsql/ColumnarFuncSuite.scala @@ -158,6 +158,17 @@ class ColumnarFuncSuite extends ColumnarSparkPlanTest { checkAnswer(res2, Seq(Row("你差世界"))) } + test("Test trim Function") { + spark.conf.set("spark.sql.optimizer.excludedRules", "org.apache.spark.sql.catalyst.optimizer.ConstantFolding") + val res1 = spark.sql("select trim(' hello ')") + assertOmniProjectHappened(res1) + checkAnswer(res1, Seq(Row("hello"))) + + val res2 = spark.sql("select trim(both '空' from '空稀少珍稀空')") + assertOmniProjectHappened(res2) + checkAnswer(res2, Seq(Row("稀少珍稀"))) + } + test("Test floor Function") { spark.conf.set("spark.sql.optimizer.excludedRules", "org.apache.spark.sql.catalyst.optimizer.ConstantFolding") val res1 = spark.sql("select floor(1.9)") -- Gitee