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

comphead pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/main by this push:
     new 8cbec8e79 chore: Array literals tests enable (#3633)
8cbec8e79 is described below

commit 8cbec8e79a7e3f4d72a0b7357c6882d3e62722c2
Author: Oleks V <[email protected]>
AuthorDate: Sat Mar 7 11:56:56 2026 -0800

    chore: Array literals tests enable (#3633)
---
 .../main/scala/org/apache/comet/serde/arrays.scala |  7 ++-
 .../sql-tests/expressions/array/array_append.sql   | 10 +--
 .../sql-tests/expressions/array/array_except.sql   | 10 +--
 .../expressions/array/array_intersect.sql          |  9 +--
 .../sql-tests/expressions/array/array_max.sql      |  2 +-
 .../sql-tests/expressions/array/array_min.sql      |  2 +-
 .../sql-tests/expressions/array/array_remove.sql   |  2 +-
 .../sql-tests/expressions/array/array_union.sql    |  9 +--
 .../sql-tests/expressions/array/arrays_overlap.sql |  9 +--
 .../resources/sql-tests/expressions/array/size.sql |  2 +-
 .../org/apache/comet/CometSqlFileTestSuite.scala   | 71 +++++++++++++---------
 11 files changed, 77 insertions(+), 56 deletions(-)

diff --git a/spark/src/main/scala/org/apache/comet/serde/arrays.scala 
b/spark/src/main/scala/org/apache/comet/serde/arrays.scala
index b7ebb9ba7..79e995f2e 100644
--- a/spark/src/main/scala/org/apache/comet/serde/arrays.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/arrays.scala
@@ -95,7 +95,12 @@ object CometArrayAppend extends 
CometExpressionSerde[ArrayAppend] {
     val keyExprProto = exprToProto(expr.children(1), inputs, binding)
 
     val arrayAppendScalarExpr =
-      scalarFunctionExprToProto("array_append", arrayExprProto, keyExprProto)
+      scalarFunctionExprToProtoWithReturnType(
+        "array_append",
+        ArrayType(elementType = elementType),
+        false,
+        arrayExprProto,
+        keyExprProto)
 
     val isNotNullExpr = createUnaryExpr(
       expr,
diff --git 
a/spark/src/test/resources/sql-tests/expressions/array/array_append.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_append.sql
index 2efd13f1c..0020af3f3 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_append.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_append.sql
@@ -15,6 +15,8 @@
 -- specific language governing permissions and limitations
 -- under the License.
 
+-- Config: spark.comet.expression.ArrayInsert.allowIncompatible=true
+-- Config: spark.comet.expression.ArrayAppend.allowIncompatible=true
 -- ConfigMatrix: parquet.enable.dictionary=false,true
 
 statement
@@ -23,17 +25,17 @@ CREATE TABLE test_array_append(arr array<int>, val int) 
USING parquet
 statement
 INSERT INTO test_array_append VALUES (array(1, 2, 3), 4), (array(), 1), (NULL, 
1), (array(1, 2), NULL)
 
-query spark_answer_only
+query
 SELECT array_append(arr, val) FROM test_array_append
 
 -- column + literal
-query spark_answer_only
+query
 SELECT array_append(arr, 99) FROM test_array_append
 
 -- literal + column
-query spark_answer_only
+query
 SELECT array_append(array(1, 2, 3), val) FROM test_array_append
 
 -- literal + literal
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT array_append(array(1, 2, 3), 4), array_append(array(), 1), 
array_append(cast(NULL as array<int>), 1)
diff --git 
a/spark/src/test/resources/sql-tests/expressions/array/array_except.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_except.sql
index 110f798f9..3b3f45111 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_except.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_except.sql
@@ -14,7 +14,7 @@
 -- KIND, either express or implied.  See the License for the
 -- specific language governing permissions and limitations
 -- under the License.
-
+-- Config: spark.comet.expression.ArrayExcept.allowIncompatible=true
 -- ConfigMatrix: parquet.enable.dictionary=false,true
 
 statement
@@ -23,17 +23,17 @@ CREATE TABLE test_array_except(a array<int>, b array<int>) 
USING parquet
 statement
 INSERT INTO test_array_except VALUES (array(1, 2, 3), array(2, 3, 4)), 
(array(1, 2), array()), (array(), array(1)), (NULL, array(1)), (array(1, NULL), 
array(NULL))
 
-query spark_answer_only
+query
 SELECT array_except(a, b) FROM test_array_except
 
 -- column + literal
-query spark_answer_only
+query
 SELECT array_except(a, array(2, 3)) FROM test_array_except
 
 -- literal + column
-query spark_answer_only
+query
 SELECT array_except(array(1, 2, 3), b) FROM test_array_except
 
 -- literal + literal
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query ignore(https://github.com/apache/datafusion-comet/issues/3646)
 SELECT array_except(array(1, 2, 3), array(2, 3, 4)), array_except(array(1, 2), 
array()), array_except(array(), array(1)), array_except(cast(NULL as 
array<int>), array(1))
diff --git 
a/spark/src/test/resources/sql-tests/expressions/array/array_intersect.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_intersect.sql
index 379f16a64..d77cccd92 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_intersect.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_intersect.sql
@@ -15,6 +15,7 @@
 -- specific language governing permissions and limitations
 -- under the License.
 
+-- Config: spark.comet.expression.ArrayIntersect.allowIncompatible=true
 -- ConfigMatrix: parquet.enable.dictionary=false,true
 
 statement
@@ -23,17 +24,17 @@ CREATE TABLE test_array_intersect(a array<int>, b 
array<int>) USING parquet
 statement
 INSERT INTO test_array_intersect VALUES (array(1, 2, 3), array(2, 3, 4)), 
(array(1, 2), array(3, 4)), (array(), array(1)), (NULL, array(1)), (array(1, 
NULL), array(NULL, 2))
 
-query spark_answer_only
+query
 SELECT array_intersect(a, b) FROM test_array_intersect
 
 -- column + literal
-query spark_answer_only
+query
 SELECT array_intersect(a, array(2, 3)) FROM test_array_intersect
 
 -- literal + column
-query spark_answer_only
+query
 SELECT array_intersect(array(1, 2, 3), b) FROM test_array_intersect
 
 -- literal + literal
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT array_intersect(array(1, 2, 3), array(2, 3, 4)), 
array_intersect(array(1, 2), array(3, 4)), array_intersect(array(), array(1)), 
array_intersect(cast(NULL as array<int>), array(1))
diff --git a/spark/src/test/resources/sql-tests/expressions/array/array_max.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_max.sql
index 17c572b95..dd1211598 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_max.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_max.sql
@@ -27,5 +27,5 @@ query spark_answer_only
 SELECT array_max(arr) FROM test_array_max
 
 -- literal arguments
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT array_max(array(1, 2, 3)), array_max(array()), array_max(cast(NULL as 
array<int>))
diff --git a/spark/src/test/resources/sql-tests/expressions/array/array_min.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_min.sql
index eb86d6c15..da7f8f4d2 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_min.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_min.sql
@@ -27,5 +27,5 @@ query spark_answer_only
 SELECT array_min(arr) FROM test_array_min
 
 -- literal arguments
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT array_min(array(1, 2, 3)), array_min(array()), array_min(cast(NULL as 
array<int>))
diff --git 
a/spark/src/test/resources/sql-tests/expressions/array/array_remove.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_remove.sql
index bd1af4bc2..f91089d55 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_remove.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_remove.sql
@@ -35,5 +35,5 @@ query spark_answer_only
 SELECT array_remove(array(1, 2, 3, 2), val) FROM test_array_remove
 
 -- literal + literal
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT array_remove(array(1, 2, 3, 2), 2), array_remove(array(1, 2, 3), 4), 
array_remove(array(), 1), array_remove(cast(NULL as array<int>), 1)
diff --git 
a/spark/src/test/resources/sql-tests/expressions/array/array_union.sql 
b/spark/src/test/resources/sql-tests/expressions/array/array_union.sql
index 4c699ae54..cbff2dc67 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/array_union.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/array_union.sql
@@ -15,6 +15,7 @@
 -- specific language governing permissions and limitations
 -- under the License.
 
+-- Config: spark.comet.expression.ArrayUnion.allowIncompatible=true
 -- ConfigMatrix: parquet.enable.dictionary=false,true
 
 statement
@@ -23,17 +24,17 @@ CREATE TABLE test_array_union(a array<int>, b array<int>) 
USING parquet
 statement
 INSERT INTO test_array_union VALUES (array(1, 2, 3), array(3, 4, 5)), 
(array(1, 2), array()), (array(), array(1)), (NULL, array(1)), (array(1, NULL), 
array(NULL, 2))
 
-query spark_answer_only
+query ignore(https://github.com/apache/datafusion-comet/issues/3644)
 SELECT array_union(a, b) FROM test_array_union
 
 -- column + literal
-query spark_answer_only
+query ignore(https://github.com/apache/datafusion-comet/issues/3644)
 SELECT array_union(a, array(3, 4, 5)) FROM test_array_union
 
 -- literal + column
-query spark_answer_only
+query
 SELECT array_union(array(1, 2, 3), b) FROM test_array_union
 
 -- literal + literal
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT array_union(array(1, 2, 3), array(3, 4, 5)), array_union(array(1, 2), 
array()), array_union(array(), array(1)), array_union(cast(NULL as array<int>), 
array(1))
diff --git 
a/spark/src/test/resources/sql-tests/expressions/array/arrays_overlap.sql 
b/spark/src/test/resources/sql-tests/expressions/array/arrays_overlap.sql
index 6c28224ed..27d28a740 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/arrays_overlap.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/arrays_overlap.sql
@@ -15,6 +15,7 @@
 -- specific language governing permissions and limitations
 -- under the License.
 
+-- Config: spark.comet.expression.ArraysOverlap.allowIncompatible=true
 -- ConfigMatrix: parquet.enable.dictionary=false,true
 
 statement
@@ -23,17 +24,17 @@ CREATE TABLE test_arrays_overlap(a array<int>, b 
array<int>) USING parquet
 statement
 INSERT INTO test_arrays_overlap VALUES (array(1, 2, 3), array(3, 4, 5)), 
(array(1, 2), array(3, 4)), (array(), array(1)), (NULL, array(1)), (array(1, 
NULL), array(NULL, 2))
 
-query spark_answer_only
+query ignore(https://github.com/apache/datafusion-comet/issues/3645)
 SELECT arrays_overlap(a, b) FROM test_arrays_overlap
 
 -- column + literal
-query spark_answer_only
+query ignore(https://github.com/apache/datafusion-comet/issues/3645)
 SELECT arrays_overlap(a, array(3, 4, 5)) FROM test_arrays_overlap
 
 -- literal + column
-query spark_answer_only
+query
 SELECT arrays_overlap(array(1, 2, 3), b) FROM test_arrays_overlap
 
 -- literal + literal
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT arrays_overlap(array(1, 2, 3), array(3, 4, 5)), arrays_overlap(array(1, 
2), array(3, 4)), arrays_overlap(array(), array(1)), arrays_overlap(cast(NULL 
as array<int>), array(1))
diff --git a/spark/src/test/resources/sql-tests/expressions/array/size.sql 
b/spark/src/test/resources/sql-tests/expressions/array/size.sql
index a096502bc..de989337f 100644
--- a/spark/src/test/resources/sql-tests/expressions/array/size.sql
+++ b/spark/src/test/resources/sql-tests/expressions/array/size.sql
@@ -27,5 +27,5 @@ query spark_answer_only
 SELECT size(arr), size(m) FROM test_size
 
 -- literal arguments
-query ignore(https://github.com/apache/datafusion-comet/issues/3338)
+query
 SELECT size(array(1, 2, 3)), size(array()), size(cast(NULL as array<int>))
diff --git a/spark/src/test/scala/org/apache/comet/CometSqlFileTestSuite.scala 
b/spark/src/test/scala/org/apache/comet/CometSqlFileTestSuite.scala
index 4e3b9e045..8e78f9d0b 100644
--- a/spark/src/test/scala/org/apache/comet/CometSqlFileTestSuite.scala
+++ b/spark/src/test/scala/org/apache/comet/CometSqlFileTestSuite.scala
@@ -83,39 +83,50 @@ class CometSqlFileTestSuite extends CometTestBase with 
AdaptiveSparkPlanHelper {
       withTable(file.tables: _*) {
         file.records.foreach {
           case SqlStatement(sql, line) =>
-            val location = if (line > 0) s"$relativePath:$line" else 
relativePath
-            withClue(s"In SQL file $location, executing statement:\n$sql\n") {
-              spark.sql(sql)
+            try {
+              val location = if (line > 0) s"$relativePath:$line" else 
relativePath
+              withClue(s"In SQL file $location, executing statement:\n$sql\n") 
{
+                spark.sql(sql)
+              }
+            } catch {
+              case e: Exception =>
+                throw new RuntimeException(s"Error executing SQL '$sql'", e)
             }
           case SqlQuery(sql, mode, line) =>
-            val location = if (line > 0) s"$relativePath:$line" else 
relativePath
-            withClue(s"In SQL file $location, executing query:\n$sql\n") {
-              mode match {
-                case CheckCoverageAndAnswer =>
-                  checkSparkAnswerAndOperator(sql)
-                case SparkAnswerOnly =>
-                  checkSparkAnswer(sql)
-                case WithTolerance(tol) =>
-                  checkSparkAnswerWithTolerance(sql, tol)
-                case ExpectFallback(reason) =>
-                  checkSparkAnswerAndFallbackReason(sql, reason)
-                case Ignore(reason) =>
-                  logInfo(s"IGNORED query (${reason}): $sql")
-                case ExpectError(pattern) =>
-                  val (sparkError, cometError) = 
checkSparkAnswerMaybeThrows(spark.sql(sql))
-                  assert(
-                    sparkError.isDefined,
-                    s"Expected Spark to throw an error matching '$pattern' but 
query succeeded")
-                  assert(
-                    cometError.isDefined,
-                    s"Expected Comet to throw an error matching '$pattern' but 
query succeeded")
-                  assert(
-                    sparkError.get.getMessage.contains(pattern),
-                    s"Spark error '${sparkError.get.getMessage}' does not 
contain '$pattern'")
-                  assert(
-                    cometError.get.getMessage.contains(pattern),
-                    s"Comet error '${cometError.get.getMessage}' does not 
contain '$pattern'")
+            try {
+              val location = if (line > 0) s"$relativePath:$line" else 
relativePath
+              withClue(s"In SQL file $location, executing query:\n$sql\n") {
+                mode match {
+                  case CheckCoverageAndAnswer =>
+                    checkSparkAnswerAndOperator(sql)
+                  case SparkAnswerOnly =>
+                    checkSparkAnswer(sql)
+                  case WithTolerance(tol) =>
+                    checkSparkAnswerWithTolerance(sql, tol)
+                  case ExpectFallback(reason) =>
+                    checkSparkAnswerAndFallbackReason(sql, reason)
+                  case Ignore(reason) =>
+                    logInfo(s"IGNORED query ($reason): $sql")
+                  case ExpectError(pattern) =>
+                    val (sparkError, cometError) = 
checkSparkAnswerMaybeThrows(spark.sql(sql))
+                    assert(
+                      sparkError.isDefined,
+                      s"Expected Spark to throw an error matching '$pattern' 
but query succeeded")
+                    assert(
+                      cometError.isDefined,
+                      s"Expected Comet to throw an error matching '$pattern' 
but query succeeded")
+                    assert(
+                      sparkError.get.getMessage.contains(pattern),
+                      s"Spark error '${sparkError.get.getMessage}' does not 
contain '$pattern'")
+                    assert(
+                      cometError.get.getMessage.contains(pattern),
+                      s"Comet error '${cometError.get.getMessage}' does not 
contain '$pattern'")
+                }
               }
+
+            } catch {
+              case e: Exception =>
+                throw new RuntimeException(s"Error executing SQL '$sql'", e)
             }
         }
       }


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

Reply via email to