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

marong 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 83a3c0f79 [GLUTEN-5248][VL] Directly pass legacySizeOfNull to native 
size function (#6014)
83a3c0f79 is described below

commit 83a3c0f79854f2cc855482da4a48ed9dcf333809
Author: PHILO-HE <[email protected]>
AuthorDate: Tue Jul 2 12:55:28 2024 +0800

    [GLUTEN-5248][VL] Directly pass legacySizeOfNull to native size function 
(#6014)
---
 .../gluten/backendsapi/clickhouse/CHSparkPlanExecApi.scala   |  7 -------
 .../apache/gluten/expression/CHExpressionTransformer.scala   | 10 ----------
 .../gluten/execution/ScalarFunctionsValidateSuite.scala      |  6 ++++++
 .../scala/org/apache/gluten/execution/TestOperator.scala     |  8 ++++----
 .../org/apache/gluten/backendsapi/SparkPlanExecApi.scala     |  7 -------
 .../org/apache/gluten/expression/ExpressionConverter.scala   | 12 +++++-------
 6 files changed, 15 insertions(+), 35 deletions(-)

diff --git 
a/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHSparkPlanExecApi.scala
 
b/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHSparkPlanExecApi.scala
index ac3ea61ff..7ed333aec 100644
--- 
a/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHSparkPlanExecApi.scala
+++ 
b/backends-clickhouse/src/main/scala/org/apache/gluten/backendsapi/clickhouse/CHSparkPlanExecApi.scala
@@ -612,13 +612,6 @@ class CHSparkPlanExecApi extends SparkPlanExecApi {
     CHStringTranslateTransformer(substraitExprName, srcExpr, matchingExpr, 
replaceExpr, original)
   }
 
-  override def genSizeExpressionTransformer(
-      substraitExprName: String,
-      child: ExpressionTransformer,
-      original: Size): ExpressionTransformer = {
-    CHSizeExpressionTransformer(substraitExprName, child, original)
-  }
-
   override def genLikeTransformer(
       substraitExprName: String,
       left: ExpressionTransformer,
diff --git 
a/backends-clickhouse/src/main/scala/org/apache/gluten/expression/CHExpressionTransformer.scala
 
b/backends-clickhouse/src/main/scala/org/apache/gluten/expression/CHExpressionTransformer.scala
index 5ca4e0233..7b389ead0 100644
--- 
a/backends-clickhouse/src/main/scala/org/apache/gluten/expression/CHExpressionTransformer.scala
+++ 
b/backends-clickhouse/src/main/scala/org/apache/gluten/expression/CHExpressionTransformer.scala
@@ -30,16 +30,6 @@ import com.google.common.collect.Lists
 
 import java.util.Locale
 
-case class CHSizeExpressionTransformer(
-    substraitExprName: String,
-    expr: ExpressionTransformer,
-    original: Size)
-  extends BinaryExpressionTransformer {
-  override def left: ExpressionTransformer = expr
-  // Pass legacyLiteral as second argument in substrait function
-  override def right: ExpressionTransformer = 
LiteralTransformer(original.legacySizeOfNull)
-}
-
 case class CHTruncTimestampTransformer(
     substraitExprName: String,
     format: ExpressionTransformer,
diff --git 
a/backends-velox/src/test/scala/org/apache/gluten/execution/ScalarFunctionsValidateSuite.scala
 
b/backends-velox/src/test/scala/org/apache/gluten/execution/ScalarFunctionsValidateSuite.scala
index bd32a799c..3db0f5e79 100644
--- 
a/backends-velox/src/test/scala/org/apache/gluten/execution/ScalarFunctionsValidateSuite.scala
+++ 
b/backends-velox/src/test/scala/org/apache/gluten/execution/ScalarFunctionsValidateSuite.scala
@@ -101,6 +101,12 @@ class ScalarFunctionsValidateSuite extends 
FunctionsValidateTest {
     }
   }
 
+  testWithSpecifiedSparkVersion("null input for array_size", Some("3.3")) {
+    runQueryAndCompare("SELECT array_size(null)") {
+      checkGlutenOperatorMatch[ProjectExecTransformer]
+    }
+  }
+
   test("chr function") {
     val df = runQueryAndCompare(
       "SELECT chr(l_orderkey + 64) " +
diff --git 
a/backends-velox/src/test/scala/org/apache/gluten/execution/TestOperator.scala 
b/backends-velox/src/test/scala/org/apache/gluten/execution/TestOperator.scala
index d84f5e7cc..9b47a519c 100644
--- 
a/backends-velox/src/test/scala/org/apache/gluten/execution/TestOperator.scala
+++ 
b/backends-velox/src/test/scala/org/apache/gluten/execution/TestOperator.scala
@@ -1017,7 +1017,7 @@ class TestOperator extends 
VeloxWholeStageTransformerSuite with AdaptiveSparkPla
     }
   }
 
-  ignore("test explode/posexplode function") {
+  test("test explode/posexplode function") {
     Seq("explode", "posexplode").foreach {
       func =>
         // Literal: func(literal)
@@ -1190,7 +1190,7 @@ class TestOperator extends 
VeloxWholeStageTransformerSuite with AdaptiveSparkPla
                           |""".stripMargin)(_)
   }
 
-  ignore("test multi-generate") {
+  test("test multi-generate") {
     withTable("t") {
       sql("CREATE TABLE t (col1 array<struct<a int, b string>>, col2 
array<int>) using parquet")
       sql("INSERT INTO t VALUES (array(struct(1, 'a'), struct(2, 'b')), 
array(1, 2))")
@@ -1588,7 +1588,7 @@ class TestOperator extends 
VeloxWholeStageTransformerSuite with AdaptiveSparkPla
     }
   }
 
-  ignore("test array literal") {
+  test("test array literal") {
     withTable("array_table") {
       sql("create table array_table(a array<bigint>) using parquet")
       sql("insert into table array_table select array(1)")
@@ -1601,7 +1601,7 @@ class TestOperator extends 
VeloxWholeStageTransformerSuite with AdaptiveSparkPla
     }
   }
 
-  ignore("test map literal") {
+  test("test map literal") {
     withTable("map_table") {
       sql("create table map_table(a map<bigint, string>) using parquet")
       sql("insert into table map_table select map(1, 'hello')")
diff --git 
a/gluten-core/src/main/scala/org/apache/gluten/backendsapi/SparkPlanExecApi.scala
 
b/gluten-core/src/main/scala/org/apache/gluten/backendsapi/SparkPlanExecApi.scala
index 3ca5e0313..ff7449e2d 100644
--- 
a/gluten-core/src/main/scala/org/apache/gluten/backendsapi/SparkPlanExecApi.scala
+++ 
b/gluten-core/src/main/scala/org/apache/gluten/backendsapi/SparkPlanExecApi.scala
@@ -464,13 +464,6 @@ trait SparkPlanExecApi {
       original)
   }
 
-  def genSizeExpressionTransformer(
-      substraitExprName: String,
-      child: ExpressionTransformer,
-      original: Size): ExpressionTransformer = {
-    GenericExpressionTransformer(substraitExprName, Seq(child), original)
-  }
-
   def genLikeTransformer(
       substraitExprName: String,
       left: ExpressionTransformer,
diff --git 
a/gluten-core/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
 
b/gluten-core/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
index d5222cfc6..b5bcb6876 100644
--- 
a/gluten-core/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
+++ 
b/gluten-core/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
@@ -396,14 +396,12 @@ object ExpressionConverter extends SQLConfHelper with 
Logging {
           r
         )
       case size: Size =>
-        if (size.legacySizeOfNull != SQLConf.get.legacySizeOfNull) {
-          throw new GlutenNotSupportException(
-            "The value of legacySizeOfNull field of size is " +
-              "not equals to legacySizeOfNull of SQLConf, this case is not 
supported yet")
-        }
-        
BackendsApiManager.getSparkPlanExecApiInstance.genSizeExpressionTransformer(
+        // Covers Spark ArraySize which is replaced by Size(child, false).
+        val child =
+          replaceWithExpressionTransformerInternal(size.child, attributeSeq, 
expressionsMap)
+        GenericExpressionTransformer(
           substraitExprName,
-          replaceWithExpressionTransformerInternal(size.child, attributeSeq, 
expressionsMap),
+          Seq(child, LiteralTransformer(size.legacySizeOfNull)),
           size)
       case namedStruct: CreateNamedStruct =>
         
BackendsApiManager.getSparkPlanExecApiInstance.genNamedStructTransformer(


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

Reply via email to