From 8b1f3b95029d6119bbdcb6272bb0fe16a8f21296 Mon Sep 17 00:00:00 2001 From: rich7420 Date: Fri, 11 Sep 2026 17:37:29 +0800 Subject: [PATCH] test: cover array_intersect expression routing configurations --- .../expressions/array/array_intersect.sql | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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 fd5ac89a11e..9995d78b5b9 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 @@ -16,6 +16,7 @@ -- under the License. -- Config: spark.comet.expression.ArrayIntersect.allowIncompatible=true +-- Config: spark.comet.exec.scalaUDF.codegen.enabled=true -- DataFusion's array_intersect emits elements in the order of the longer input -- (it uses the shorter side as the hash lookup), while Spark emits elements in @@ -30,7 +31,7 @@ CREATE TABLE test_array_intersect(a array, b array) 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 +query expect_native(array_intersect) SELECT array_intersect(a, b) FROM test_array_intersect -- column + literal @@ -257,3 +258,26 @@ SELECT array_intersect(array(1, NULL, 3), b) FROM test_array_intersect -- conditional (CASE WHEN) arrays query SELECT array_intersect(CASE WHEN a IS NOT NULL THEN a ELSE array(0) END, b) FROM test_array_intersect + +-- Without native opt-in, preserve Spark's left-input order even when the right array is longer. +statement +INSERT INTO test_array_intersect VALUES (array(2, 1), array(3, 1, 2)) + +statement +SET spark.comet.expression.ArrayIntersect.allowIncompatible=false + +query expect_dispatch(array_intersect) +SELECT array_intersect(a, b) FROM test_array_intersect + +statement +SET spark.comet.exec.scalaUDF.codegen.enabled=false + +query expect_fallback(array_intersect: spark.comet.exec.scalaUDF.codegen.enabled=false) +SELECT array_intersect(a, b) FROM test_array_intersect + +-- Native opt-in works even with the dispatcher disabled. Normalize the permitted order difference. +statement +SET spark.comet.expression.ArrayIntersect.allowIncompatible=true + +query expect_native(array_intersect) +SELECT sort_array(array_intersect(a, b)) FROM test_array_intersect