diff --git a/dev/diffs/3.4.3.diff b/dev/diffs/3.4.3.diff index 487c5d1482..cd0e574fe0 100644 --- a/dev/diffs/3.4.3.diff +++ b/dev/diffs/3.4.3.diff @@ -1545,7 +1545,7 @@ index ac710c32296..2854b433dd3 100644 import testImplicits._ diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala -index 593bd7bb4ba..b327d84d5cc 100644 +index 593bd7bb4ba..a5811d8e10d 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala @@ -26,9 +26,11 @@ import org.scalatest.time.SpanSugar._ @@ -1852,7 +1852,15 @@ index 593bd7bb4ba..b327d84d5cc 100644 }.size == 1) checkAnswer(ds, testData) } -@@ -2028,7 +2064,8 @@ class AdaptiveQueryExecSuite +@@ -1901,6 +1937,7 @@ class AdaptiveQueryExecSuite + df.collect() + assert(collect(df.queryExecution.executedPlan) { + case u: UnionExec => u ++ case u: CometUnionExec => u + }.size == numUnion) + assert(collect(df.queryExecution.executedPlan) { + case r: AQEShuffleReadExec => r +@@ -2028,7 +2065,8 @@ class AdaptiveQueryExecSuite } } @@ -1862,7 +1870,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 withTempView("t1", "t2") { def checkJoinStrategy(shouldShuffleHashJoin: Boolean): Unit = { Seq("100", "100000").foreach { size => -@@ -2114,7 +2151,8 @@ class AdaptiveQueryExecSuite +@@ -2114,7 +2152,8 @@ class AdaptiveQueryExecSuite } } @@ -1872,7 +1880,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true", -@@ -2213,7 +2251,7 @@ class AdaptiveQueryExecSuite +@@ -2213,7 +2252,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2 GROUP BY key1") val shuffles1 = collect(adaptive1) { @@ -1881,7 +1889,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 } assert(shuffles1.size == 3) // shuffles1.head is the top-level shuffle under the Aggregate operator -@@ -2226,7 +2264,7 @@ class AdaptiveQueryExecSuite +@@ -2226,7 +2265,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2") val shuffles2 = collect(adaptive2) { @@ -1890,7 +1898,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 } if (hasRequiredDistribution) { assert(shuffles2.size == 3) -@@ -2260,7 +2298,8 @@ class AdaptiveQueryExecSuite +@@ -2260,7 +2299,8 @@ class AdaptiveQueryExecSuite } } @@ -1900,7 +1908,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 CostEvaluator.instantiate( classOf[SimpleShuffleSortCostEvaluator].getCanonicalName, spark.sparkContext.getConf) intercept[IllegalArgumentException] { -@@ -2404,6 +2443,7 @@ class AdaptiveQueryExecSuite +@@ -2404,6 +2444,7 @@ class AdaptiveQueryExecSuite val (_, adaptive) = runAdaptiveAndVerifyResult(query) assert(adaptive.collect { case sort: SortExec => sort @@ -1908,7 +1916,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 }.size == 1) val read = collect(adaptive) { case read: AQEShuffleReadExec => read -@@ -2421,7 +2461,8 @@ class AdaptiveQueryExecSuite +@@ -2421,7 +2462,8 @@ class AdaptiveQueryExecSuite } } @@ -1918,7 +1926,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_OPTIMIZE_SKEWS_IN_REBALANCE_PARTITIONS_ENABLED.key -> "true", -@@ -2533,7 +2574,7 @@ class AdaptiveQueryExecSuite +@@ -2533,7 +2575,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value2 = value3") val shuffles1 = collect(adaptive1) { @@ -1927,7 +1935,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 } assert(shuffles1.size == 4) val smj1 = findTopLevelSortMergeJoin(adaptive1) -@@ -2544,7 +2585,7 @@ class AdaptiveQueryExecSuite +@@ -2544,7 +2586,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value1 = value3") val shuffles2 = collect(adaptive2) { @@ -1936,7 +1944,7 @@ index 593bd7bb4ba..b327d84d5cc 100644 } assert(shuffles2.size == 4) val smj2 = findTopLevelSortMergeJoin(adaptive2) -@@ -2703,7 +2744,8 @@ class AdaptiveQueryExecSuite +@@ -2703,7 +2745,8 @@ class AdaptiveQueryExecSuite } } diff --git a/dev/diffs/3.5.8.diff b/dev/diffs/3.5.8.diff index fe87568b96..409dbfeea5 100644 --- a/dev/diffs/3.5.8.diff +++ b/dev/diffs/3.5.8.diff @@ -1511,7 +1511,7 @@ index 5a413c77754..207b66e1d7b 100644 import testImplicits._ diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala -index 2f8e401e743..7849c685b19 100644 +index 2f8e401e743..b6ccfe63778 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala @@ -27,9 +27,11 @@ import org.scalatest.time.SpanSugar._ @@ -1825,7 +1825,15 @@ index 2f8e401e743..7849c685b19 100644 }.size == 1) checkAnswer(ds, testData) } -@@ -2054,7 +2091,8 @@ class AdaptiveQueryExecSuite +@@ -1927,6 +1964,7 @@ class AdaptiveQueryExecSuite + df.collect() + assert(collect(df.queryExecution.executedPlan) { + case u: UnionExec => u ++ case u: CometUnionExec => u + }.size == numUnion) + assert(collect(df.queryExecution.executedPlan) { + case r: AQEShuffleReadExec => r +@@ -2054,7 +2092,8 @@ class AdaptiveQueryExecSuite } } @@ -1835,7 +1843,7 @@ index 2f8e401e743..7849c685b19 100644 withTempView("t1", "t2") { def checkJoinStrategy(shouldShuffleHashJoin: Boolean): Unit = { Seq("100", "100000").foreach { size => -@@ -2140,7 +2178,8 @@ class AdaptiveQueryExecSuite +@@ -2140,7 +2179,8 @@ class AdaptiveQueryExecSuite } } @@ -1845,7 +1853,7 @@ index 2f8e401e743..7849c685b19 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true", -@@ -2239,7 +2278,7 @@ class AdaptiveQueryExecSuite +@@ -2239,7 +2279,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2 GROUP BY key1") val shuffles1 = collect(adaptive1) { @@ -1854,7 +1862,7 @@ index 2f8e401e743..7849c685b19 100644 } assert(shuffles1.size == 3) // shuffles1.head is the top-level shuffle under the Aggregate operator -@@ -2252,7 +2291,7 @@ class AdaptiveQueryExecSuite +@@ -2252,7 +2292,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2") val shuffles2 = collect(adaptive2) { @@ -1863,7 +1871,7 @@ index 2f8e401e743..7849c685b19 100644 } if (hasRequiredDistribution) { assert(shuffles2.size == 3) -@@ -2286,7 +2325,8 @@ class AdaptiveQueryExecSuite +@@ -2286,7 +2326,8 @@ class AdaptiveQueryExecSuite } } @@ -1873,7 +1881,7 @@ index 2f8e401e743..7849c685b19 100644 CostEvaluator.instantiate( classOf[SimpleShuffleSortCostEvaluator].getCanonicalName, spark.sparkContext.getConf) intercept[IllegalArgumentException] { -@@ -2452,6 +2492,7 @@ class AdaptiveQueryExecSuite +@@ -2452,6 +2493,7 @@ class AdaptiveQueryExecSuite val (_, adaptive) = runAdaptiveAndVerifyResult(query) assert(adaptive.collect { case sort: SortExec => sort @@ -1881,7 +1889,7 @@ index 2f8e401e743..7849c685b19 100644 }.size == 1) val read = collect(adaptive) { case read: AQEShuffleReadExec => read -@@ -2469,7 +2510,8 @@ class AdaptiveQueryExecSuite +@@ -2469,7 +2511,8 @@ class AdaptiveQueryExecSuite } } @@ -1891,7 +1899,7 @@ index 2f8e401e743..7849c685b19 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_OPTIMIZE_SKEWS_IN_REBALANCE_PARTITIONS_ENABLED.key -> "true", -@@ -2581,7 +2623,7 @@ class AdaptiveQueryExecSuite +@@ -2581,7 +2624,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value2 = value3") val shuffles1 = collect(adaptive1) { @@ -1900,7 +1908,7 @@ index 2f8e401e743..7849c685b19 100644 } assert(shuffles1.size == 4) val smj1 = findTopLevelSortMergeJoin(adaptive1) -@@ -2592,7 +2634,7 @@ class AdaptiveQueryExecSuite +@@ -2592,7 +2635,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value1 = value3") val shuffles2 = collect(adaptive2) { @@ -1909,7 +1917,7 @@ index 2f8e401e743..7849c685b19 100644 } assert(shuffles2.size == 4) val smj2 = findTopLevelSortMergeJoin(adaptive2) -@@ -2850,6 +2892,7 @@ class AdaptiveQueryExecSuite +@@ -2850,6 +2893,7 @@ class AdaptiveQueryExecSuite }.size == (if (firstAccess) 1 else 0)) assert(collect(initialExecutedPlan) { case s: SortExec => s @@ -1917,7 +1925,7 @@ index 2f8e401e743..7849c685b19 100644 }.size == (if (firstAccess) 2 else 0)) assert(collect(initialExecutedPlan) { case i: InMemoryTableScanLike => i -@@ -2938,7 +2981,8 @@ class AdaptiveQueryExecSuite +@@ -2938,7 +2982,8 @@ class AdaptiveQueryExecSuite } } @@ -1927,7 +1935,7 @@ index 2f8e401e743..7849c685b19 100644 val emptyDf = spark.range(1).where("false") val aggDf1 = emptyDf.agg(sum("id").as("id")).withColumn("name", lit("df1")) val aggDf2 = emptyDf.agg(sum("id").as("id")).withColumn("name", lit("df2")) -@@ -2980,7 +3024,9 @@ class AdaptiveQueryExecSuite +@@ -2980,7 +3025,9 @@ class AdaptiveQueryExecSuite val plan = df.queryExecution.executedPlan.asInstanceOf[AdaptiveSparkPlanExec] assert(plan.inputPlan.isInstanceOf[TakeOrderedAndProjectExec]) diff --git a/dev/diffs/4.0.2.diff b/dev/diffs/4.0.2.diff index d8e506b631..2f5a8062c1 100644 --- a/dev/diffs/4.0.2.diff +++ b/dev/diffs/4.0.2.diff @@ -2135,7 +2135,7 @@ index a3cfdc5a240..3793b6191bf 100644 }) checkAnswer(distinctWithId, Seq(Row(1, 0), Row(1, 0))) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala -index 272be70f9fe..4a175083adf 100644 +index 272be70f9fe..0c38d555aaf 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala @@ -28,12 +28,14 @@ import org.apache.spark.SparkException @@ -2452,7 +2452,15 @@ index 272be70f9fe..4a175083adf 100644 }.size == 1) checkAnswer(ds, testData) } -@@ -2150,7 +2187,8 @@ class AdaptiveQueryExecSuite +@@ -2023,6 +2060,7 @@ class AdaptiveQueryExecSuite + df.collect() + assert(collect(df.queryExecution.executedPlan) { + case u: UnionExec => u ++ case u: CometUnionExec => u + }.size == numUnion) + assert(collect(df.queryExecution.executedPlan) { + case r: AQEShuffleReadExec => r +@@ -2150,7 +2188,8 @@ class AdaptiveQueryExecSuite } } @@ -2462,7 +2470,7 @@ index 272be70f9fe..4a175083adf 100644 withTempView("t1", "t2") { def checkJoinStrategy(shouldShuffleHashJoin: Boolean): Unit = { Seq("100", "100000").foreach { size => -@@ -2236,7 +2274,8 @@ class AdaptiveQueryExecSuite +@@ -2236,7 +2275,8 @@ class AdaptiveQueryExecSuite } } @@ -2472,7 +2480,7 @@ index 272be70f9fe..4a175083adf 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true", -@@ -2335,7 +2374,7 @@ class AdaptiveQueryExecSuite +@@ -2335,7 +2375,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2 GROUP BY key1") val shuffles1 = collect(adaptive1) { @@ -2481,7 +2489,7 @@ index 272be70f9fe..4a175083adf 100644 } assert(shuffles1.size == 3) // shuffles1.head is the top-level shuffle under the Aggregate operator -@@ -2348,7 +2387,7 @@ class AdaptiveQueryExecSuite +@@ -2348,7 +2388,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2") val shuffles2 = collect(adaptive2) { @@ -2490,7 +2498,7 @@ index 272be70f9fe..4a175083adf 100644 } if (hasRequiredDistribution) { assert(shuffles2.size == 3) -@@ -2382,7 +2421,8 @@ class AdaptiveQueryExecSuite +@@ -2382,7 +2422,8 @@ class AdaptiveQueryExecSuite } } @@ -2500,7 +2508,7 @@ index 272be70f9fe..4a175083adf 100644 CostEvaluator.instantiate( classOf[SimpleShuffleSortCostEvaluator].getCanonicalName, spark.sparkContext.getConf) intercept[IllegalArgumentException] { -@@ -2548,6 +2588,7 @@ class AdaptiveQueryExecSuite +@@ -2548,6 +2589,7 @@ class AdaptiveQueryExecSuite val (_, adaptive) = runAdaptiveAndVerifyResult(query) assert(adaptive.collect { case sort: SortExec => sort @@ -2508,7 +2516,7 @@ index 272be70f9fe..4a175083adf 100644 }.size == 1) val read = collect(adaptive) { case read: AQEShuffleReadExec => read -@@ -2565,7 +2606,8 @@ class AdaptiveQueryExecSuite +@@ -2565,7 +2607,8 @@ class AdaptiveQueryExecSuite } } @@ -2518,7 +2526,7 @@ index 272be70f9fe..4a175083adf 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_OPTIMIZE_SKEWS_IN_REBALANCE_PARTITIONS_ENABLED.key -> "true", -@@ -2677,7 +2719,7 @@ class AdaptiveQueryExecSuite +@@ -2677,7 +2720,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value2 = value3") val shuffles1 = collect(adaptive1) { @@ -2527,7 +2535,7 @@ index 272be70f9fe..4a175083adf 100644 } assert(shuffles1.size == 4) val smj1 = findTopLevelSortMergeJoin(adaptive1) -@@ -2688,7 +2730,7 @@ class AdaptiveQueryExecSuite +@@ -2688,7 +2731,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value1 = value3") val shuffles2 = collect(adaptive2) { @@ -2536,7 +2544,7 @@ index 272be70f9fe..4a175083adf 100644 } assert(shuffles2.size == 4) val smj2 = findTopLevelSortMergeJoin(adaptive2) -@@ -2946,6 +2988,7 @@ class AdaptiveQueryExecSuite +@@ -2946,6 +2989,7 @@ class AdaptiveQueryExecSuite }.size == (if (firstAccess) 1 else 0)) assert(collect(initialExecutedPlan) { case s: SortExec => s @@ -2544,7 +2552,7 @@ index 272be70f9fe..4a175083adf 100644 }.size == (if (firstAccess) 2 else 0)) assert(collect(initialExecutedPlan) { case i: InMemoryTableScanLike => i -@@ -2958,6 +3001,7 @@ class AdaptiveQueryExecSuite +@@ -2958,6 +3002,7 @@ class AdaptiveQueryExecSuite }.isEmpty) assert(collect(finalExecutedPlan) { case s: SortExec => s @@ -2552,7 +2560,7 @@ index 272be70f9fe..4a175083adf 100644 }.isEmpty) assert(collect(initialExecutedPlan) { case i: InMemoryTableScanLike => i -@@ -3039,7 +3083,8 @@ class AdaptiveQueryExecSuite +@@ -3039,7 +3084,8 @@ class AdaptiveQueryExecSuite } } @@ -2562,7 +2570,7 @@ index 272be70f9fe..4a175083adf 100644 val emptyDf = spark.range(1).where("false") val aggDf1 = emptyDf.agg(sum("id").as("id")).withColumn("name", lit("df1")) val aggDf2 = emptyDf.agg(sum("id").as("id")).withColumn("name", lit("df2")) -@@ -3129,7 +3174,8 @@ class AdaptiveQueryExecSuite +@@ -3129,7 +3175,8 @@ class AdaptiveQueryExecSuite val plan = df.queryExecution.executedPlan.asInstanceOf[AdaptiveSparkPlanExec] assert(plan.inputPlan.isInstanceOf[TakeOrderedAndProjectExec]) diff --git a/dev/diffs/4.1.2.diff b/dev/diffs/4.1.2.diff index 9a1b30b010..c5b2fd5e7c 100644 --- a/dev/diffs/4.1.2.diff +++ b/dev/diffs/4.1.2.diff @@ -2258,7 +2258,7 @@ index a3cfdc5a240..3793b6191bf 100644 }) checkAnswer(distinctWithId, Seq(Row(1, 0), Row(1, 0))) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala -index 3e7d26f74bd..79232dc3664 100644 +index 3e7d26f74bd..a769faf3557 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/adaptive/AdaptiveQueryExecSuite.scala @@ -27,12 +27,14 @@ import org.apache.spark.SparkException @@ -2575,7 +2575,15 @@ index 3e7d26f74bd..79232dc3664 100644 }.size == 1) checkAnswer(ds, testData) } -@@ -2331,7 +2368,8 @@ class AdaptiveQueryExecSuite +@@ -2196,6 +2233,7 @@ class AdaptiveQueryExecSuite + df.collect() + assert(collect(df.queryExecution.executedPlan) { + case u: UnionExec => u ++ case u: CometUnionExec => u + }.size == numUnion) + assert(collect(df.queryExecution.executedPlan) { + case r: AQEShuffleReadExec => r +@@ -2331,7 +2369,8 @@ class AdaptiveQueryExecSuite } } @@ -2585,7 +2593,7 @@ index 3e7d26f74bd..79232dc3664 100644 withTempView("t1", "t2") { def checkJoinStrategy(shouldShuffleHashJoin: Boolean): Unit = { Seq("100", "100000").foreach { size => -@@ -2417,7 +2455,8 @@ class AdaptiveQueryExecSuite +@@ -2417,7 +2456,8 @@ class AdaptiveQueryExecSuite } } @@ -2595,7 +2603,7 @@ index 3e7d26f74bd..79232dc3664 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true", -@@ -2516,7 +2555,7 @@ class AdaptiveQueryExecSuite +@@ -2516,7 +2556,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2 GROUP BY key1") val shuffles1 = collect(adaptive1) { @@ -2604,7 +2612,7 @@ index 3e7d26f74bd..79232dc3664 100644 } assert(shuffles1.size == 3) // shuffles1.head is the top-level shuffle under the Aggregate operator -@@ -2529,7 +2568,7 @@ class AdaptiveQueryExecSuite +@@ -2529,7 +2569,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult(s"SELECT $repartition key1 FROM skewData1 " + s"JOIN skewData2 ON key1 = key2") val shuffles2 = collect(adaptive2) { @@ -2613,7 +2621,7 @@ index 3e7d26f74bd..79232dc3664 100644 } if (hasRequiredDistribution) { assert(shuffles2.size == 3) -@@ -2563,7 +2602,8 @@ class AdaptiveQueryExecSuite +@@ -2563,7 +2603,8 @@ class AdaptiveQueryExecSuite } } @@ -2623,7 +2631,7 @@ index 3e7d26f74bd..79232dc3664 100644 CostEvaluator.instantiate( classOf[SimpleShuffleSortCostEvaluator].getCanonicalName, spark.sparkContext.getConf) intercept[IllegalArgumentException] { -@@ -2729,6 +2769,7 @@ class AdaptiveQueryExecSuite +@@ -2729,6 +2770,7 @@ class AdaptiveQueryExecSuite val (_, adaptive) = runAdaptiveAndVerifyResult(query) assert(adaptive.collect { case sort: SortExec => sort @@ -2631,7 +2639,7 @@ index 3e7d26f74bd..79232dc3664 100644 }.size == 1) val read = collect(adaptive) { case read: AQEShuffleReadExec => read -@@ -2746,7 +2787,8 @@ class AdaptiveQueryExecSuite +@@ -2746,7 +2788,8 @@ class AdaptiveQueryExecSuite } } @@ -2641,7 +2649,7 @@ index 3e7d26f74bd..79232dc3664 100644 withTempView("v") { withSQLConf( SQLConf.ADAPTIVE_OPTIMIZE_SKEWS_IN_REBALANCE_PARTITIONS_ENABLED.key -> "true", -@@ -2858,7 +2900,7 @@ class AdaptiveQueryExecSuite +@@ -2858,7 +2901,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value2 = value3") val shuffles1 = collect(adaptive1) { @@ -2650,7 +2658,7 @@ index 3e7d26f74bd..79232dc3664 100644 } assert(shuffles1.size == 4) val smj1 = findTopLevelSortMergeJoin(adaptive1) -@@ -2869,7 +2911,7 @@ class AdaptiveQueryExecSuite +@@ -2869,7 +2912,7 @@ class AdaptiveQueryExecSuite runAdaptiveAndVerifyResult("SELECT key1 FROM skewData1 JOIN skewData2 ON key1 = key2 " + "JOIN skewData3 ON value1 = value3") val shuffles2 = collect(adaptive2) { @@ -2659,7 +2667,7 @@ index 3e7d26f74bd..79232dc3664 100644 } assert(shuffles2.size == 4) val smj2 = findTopLevelSortMergeJoin(adaptive2) -@@ -3127,6 +3169,7 @@ class AdaptiveQueryExecSuite +@@ -3127,6 +3170,7 @@ class AdaptiveQueryExecSuite }.size == (if (firstAccess) 1 else 0)) assert(collect(initialExecutedPlan) { case s: SortExec => s @@ -2667,7 +2675,7 @@ index 3e7d26f74bd..79232dc3664 100644 }.size == (if (firstAccess) 2 else 0)) assert(collect(initialExecutedPlan) { case i: InMemoryTableScanLike => i -@@ -3139,6 +3182,7 @@ class AdaptiveQueryExecSuite +@@ -3139,6 +3183,7 @@ class AdaptiveQueryExecSuite }.isEmpty) assert(collect(finalExecutedPlan) { case s: SortExec => s @@ -2675,7 +2683,7 @@ index 3e7d26f74bd..79232dc3664 100644 }.isEmpty) assert(collect(initialExecutedPlan) { case i: InMemoryTableScanLike => i -@@ -3220,7 +3264,8 @@ class AdaptiveQueryExecSuite +@@ -3220,7 +3265,8 @@ class AdaptiveQueryExecSuite } } @@ -2685,7 +2693,7 @@ index 3e7d26f74bd..79232dc3664 100644 val emptyDf = spark.range(1).where("false") val aggDf1 = emptyDf.agg(sum("id").as("id")).withColumn("name", lit("df1")) val aggDf2 = emptyDf.agg(sum("id").as("id")).withColumn("name", lit("df2")) -@@ -3310,7 +3355,8 @@ class AdaptiveQueryExecSuite +@@ -3310,7 +3356,8 @@ class AdaptiveQueryExecSuite val plan = df.queryExecution.executedPlan.asInstanceOf[AdaptiveSparkPlanExec] assert(plan.inputPlan.isInstanceOf[TakeOrderedAndProjectExec]) @@ -2695,6 +2703,14 @@ index 3e7d26f74bd..79232dc3664 100644 plan.inputPlan.output.zip(plan.finalPhysicalPlan.output).foreach { case (o1, o2) => assert(o1.semanticEquals(o2), "Different output column order after AQE optimization") } +@@ -3381,6 +3428,7 @@ class AdaptiveQueryExecSuite + df.collect() + assert(collect(df.queryExecution.executedPlan) { + case u: UnionExec => u ++ case u: CometUnionExec => u + }.size == numUnion) + assert(collect(df.queryExecution.executedPlan) { + case r: AQEShuffleReadExec => r diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala index 47b935a2880..3e9b87f5c32 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/columnar/CachedBatchSerializerSuite.scala diff --git a/spark/src/main/scala/org/apache/comet/serde/CometAggregateExpressionSerde.scala b/spark/src/main/scala/org/apache/comet/serde/CometAggregateExpressionSerde.scala index a52d600821..84941ad4c0 100644 --- a/spark/src/main/scala/org/apache/comet/serde/CometAggregateExpressionSerde.scala +++ b/spark/src/main/scala/org/apache/comet/serde/CometAggregateExpressionSerde.scala @@ -84,12 +84,12 @@ trait CometAggregateExpressionSerde[T <: AggregateFunction] { /** * Whether this aggregate's intermediate buffer format is compatible between Spark and Comet for * the given function instance, making it safe to run the Partial in one engine and the Final in - * the other. Aggregates with simple single-value buffers (MIN, MAX, bitwise) are always safe; + * the other. Aggregates with simple single-value buffers (MIN, MAX, COUNT, bitwise) are safe; * SUM and non-decimal AVG match Spark's buffer and are safe except where noted per instance - * (e.g. TRY-mode SUM uses a Comet-internal flag column). COUNT is intentionally excluded - * despite a matching buffer: mixed COUNT partial/final regressed AQE's - * PropagateEmptyRelationAfterAQE pattern (which matches BaseAggregateExec only) and the Spark - * 4.0 count-bug decorrelation for correlated IN subqueries. + * (e.g. TRY-mode SUM uses a Comet-internal flag column). Mixed COUNT was previously excluded + * because of two Spark 4.0 regressions: AQE's `PropagateEmptyRelationAfterAQE` and the + * count-bug decorrelation for correlated IN subqueries. Both are fixed upstream in + * `CometBroadcastExchangeExec` canonicalization, so COUNT is again safe by default. */ def supportsMixedPartialFinal(fn: T): Boolean = false diff --git a/spark/src/main/scala/org/apache/comet/serde/aggregates.scala b/spark/src/main/scala/org/apache/comet/serde/aggregates.scala index 1fb676366c..6664958391 100644 --- a/spark/src/main/scala/org/apache/comet/serde/aggregates.scala +++ b/spark/src/main/scala/org/apache/comet/serde/aggregates.scala @@ -108,6 +108,9 @@ object CometMax extends CometAggregateExpressionSerde[Max] { } object CometCount extends CometAggregateExpressionSerde[Count] { + + override def supportsMixedPartialFinal(fn: Count): Boolean = true + override def convert( aggExpr: AggregateExpression, expr: Count, diff --git a/spark/src/main/scala/org/apache/spark/sql/comet/CometBroadcastExchangeExec.scala b/spark/src/main/scala/org/apache/spark/sql/comet/CometBroadcastExchangeExec.scala index 9e2296067b..a38da97f74 100644 --- a/spark/src/main/scala/org/apache/spark/sql/comet/CometBroadcastExchangeExec.scala +++ b/spark/src/main/scala/org/apache/spark/sql/comet/CometBroadcastExchangeExec.scala @@ -85,7 +85,20 @@ case class CometBroadcastExchangeExec( "number of coalesced rows for broadcast")) override def doCanonicalize(): SparkPlan = { - CometBroadcastExchangeExec(null, null, mode, child.canonicalized) + // originalPlan is the source-of-truth for the projection applied during broadcast + // (e.g. count+1 vs count-1 in correlated IN with count-bug decorrelation). Two + // CometBroadcastExchanges with identical Comet children but different originalPlans + // produce different broadcast values, so their canonical forms must differ to + // prevent AQE's ReusedExchange from incorrectly merging them. See issue #4242. + // Keying only on originalPlan.output is not sufficient — Spark canonicalization + // rewrites alias names to "none", so count+1 vs count-1 output attributes become + // indistinguishable; the discriminator lives in the Add/Subtract expression nodes + // deep inside the canonicalized plan tree. + // Canonicalize mode as well: HashedRelationBroadcastMode carries join-key expressions + // with non-canonical exprIds, so two semantically equivalent broadcasts would otherwise + // miss legitimate reuse opportunities (matches Spark's BroadcastExchangeExec). + val canonicalOriginal = if (originalPlan != null) originalPlan.canonicalized else null + CometBroadcastExchangeExec(canonicalOriginal, null, mode.canonicalized, child.canonicalized) } override def runtimeStatistics: Statistics = { @@ -245,13 +258,15 @@ case class CometBroadcastExchangeExec( obj match { case other: CometBroadcastExchangeExec => this.originalPlan == other.originalPlan && + this.output == other.output && + this.mode == other.mode && this.child == other.child case _ => false } } - override def hashCode(): Int = Objects.hashCode(child) + override def hashCode(): Int = Objects.hashCode(originalPlan, output, mode, child) override def stringArgs: Iterator[Any] = Iterator(output, child) diff --git a/spark/src/main/scala/org/apache/spark/sql/comet/operators.scala b/spark/src/main/scala/org/apache/spark/sql/comet/operators.scala index 4c9ca07bdf..3e546fd065 100644 --- a/spark/src/main/scala/org/apache/spark/sql/comet/operators.scala +++ b/spark/src/main/scala/org/apache/spark/sql/comet/operators.scala @@ -2069,6 +2069,12 @@ case class CometHashAggregateExec( this.output == other.output && this.groupingExpressions == other.groupingExpressions && this.aggregateExpressions == other.aggregateExpressions && + // resultExpressions carries any post-aggregate projection fused into the Final + // aggregate (e.g. count+1 vs count-1 in count-bug decorrelation). It must + // participate in identity, otherwise two aggregates differing only in that + // projection canonicalize identically and an enclosing broadcast exchange is + // wrongly deduplicated by exchange reuse. See issue #4242. + this.resultExpressions == other.resultExpressions && this.input == other.input && this.modes == other.modes && this.child == other.child && @@ -2079,7 +2085,14 @@ case class CometHashAggregateExec( } override def hashCode(): Int = - Objects.hashCode(output, groupingExpressions, aggregateExpressions, input, modes, child) + Objects.hashCode( + output, + groupingExpressions, + aggregateExpressions, + resultExpressions, + input, + modes, + child) override protected def outputExpressions: Seq[NamedExpression] = resultExpressions } diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark3_5/q35/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark3_5/q35/extended.txt new file mode 100644 index 0000000000..309ce2c012 --- /dev/null +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark3_5/q35/extended.txt @@ -0,0 +1,62 @@ +CometNativeColumnarToRow ++- CometTakeOrderedAndProject + +- CometHashAggregate + +- CometColumnarExchange + +- HashAggregate + +- Project + +- BroadcastHashJoin + :- Project + : +- BroadcastHashJoin + : :- Project + : : +- Filter + : : +- BroadcastHashJoin + : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] + : : : :- CometNativeColumnarToRow + : : : : +- CometBroadcastHashJoin + : : : : :- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.customer + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometBroadcastHashJoin + : : : : :- CometNativeScan parquet spark_catalog.default.store_sales + : : : : : +- CometSubqueryBroadcast + : : : : : +- CometBroadcastExchange + : : : : : +- CometProject + : : : : : +- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometFilter + : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- BroadcastExchange + : : : +- CometNativeColumnarToRow + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometNativeScan parquet spark_catalog.default.web_sales + : : : : +- ReusedSubquery + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- BroadcastExchange + : : +- CometNativeColumnarToRow + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.catalog_sales + : : : +- ReusedSubquery + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- BroadcastExchange + : +- CometNativeColumnarToRow + : +- CometProject + : +- CometFilter + : +- CometNativeScan parquet spark_catalog.default.customer_address + +- BroadcastExchange + +- CometNativeColumnarToRow + +- CometProject + +- CometFilter + +- CometNativeScan parquet spark_catalog.default.customer_demographics + +Comet accelerated 38 out of 54 eligible operators (70%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark3_5/q83/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark3_5/q83/extended.txt deleted file mode 100644 index 32adaba671..0000000000 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark3_5/q83/extended.txt +++ /dev/null @@ -1,104 +0,0 @@ -CometNativeColumnarToRow -+- CometTakeOrderedAndProject - +- CometProject - +- CometBroadcastHashJoin - :- CometProject - : +- CometBroadcastHashJoin - : :- CometHashAggregate - : : +- CometExchange - : : +- CometHashAggregate - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.store_returns - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.item - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometNativeScan parquet spark_catalog.default.date_dim - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- CometBroadcastExchange - : +- CometHashAggregate - : +- CometExchange - : +- CometHashAggregate - : +- CometProject - : +- CometBroadcastHashJoin - : :- CometProject - : : +- CometBroadcastHashJoin - : : :- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.catalog_returns - : : : +- ReusedSubquery - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.item - : +- CometBroadcastExchange - : +- CometProject - : +- CometBroadcastHashJoin - : :- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- CometBroadcastExchange - : +- CometProject - : +- CometBroadcastHashJoin - : :- CometNativeScan parquet spark_catalog.default.date_dim - : +- CometBroadcastExchange - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim - +- CometBroadcastExchange - +- CometHashAggregate - +- CometExchange - +- CometHashAggregate - +- CometProject - +- CometBroadcastHashJoin - :- CometProject - : +- CometBroadcastHashJoin - : :- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.web_returns - : : +- ReusedSubquery - : +- CometBroadcastExchange - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.item - +- CometBroadcastExchange - +- CometProject - +- CometBroadcastHashJoin - :- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim - +- CometBroadcastExchange - +- CometProject - +- CometBroadcastHashJoin - :- CometNativeScan parquet spark_catalog.default.date_dim - +- CometBroadcastExchange - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.date_dim - -Comet accelerated 98 out of 101 eligible operators (97%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q14b/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q14b/extended.txt index 85cda8b553..6824dac7bf 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q14b/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q14b/extended.txt @@ -132,11 +132,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -180,11 +176,7 @@ CometNativeColumnarToRow : +- CometFilter : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- ReusedSubquery +- CometBroadcastExchange +- CometFilter : +- ReusedSubquery @@ -225,11 +217,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -288,11 +276,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -336,10 +320,6 @@ CometNativeColumnarToRow +- CometFilter : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim - +- Subquery - +- CometNativeColumnarToRow - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.date_dim + +- ReusedSubquery -Comet accelerated 310 out of 337 eligible operators (91%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 292 out of 319 eligible operators (91%). Final plan contains 4 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q54/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q54/extended.txt index d262c6d56f..0c132a1621 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q54/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q54/extended.txt @@ -87,21 +87,7 @@ CometNativeColumnarToRow : :- ReusedSubquery : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim - :- Subquery - : +- CometNativeColumnarToRow - : +- CometHashAggregate - : +- CometExchange - : +- CometHashAggregate - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim - +- Subquery - +- CometNativeColumnarToRow - +- CometHashAggregate - +- CometExchange - +- CometHashAggregate - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.date_dim + :- ReusedSubquery + +- ReusedSubquery -Comet accelerated 89 out of 100 eligible operators (89%). Final plan contains 5 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 77 out of 88 eligible operators (87%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q6/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q6/extended.txt index dd68f2476e..2e15ba8e52 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q6/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q6/extended.txt @@ -40,14 +40,7 @@ CometNativeColumnarToRow : +- CometFilter : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometHashAggregate - : +- CometExchange - : +- CometHashAggregate - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- ReusedSubquery +- CometBroadcastExchange +- CometProject +- CometBroadcastHashJoin @@ -62,4 +55,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.item -Comet accelerated 55 out of 60 eligible operators (91%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 49 out of 54 eligible operators (90%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q83.ansi/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q83.ansi/extended.txt index 32adaba671..e4d1992492 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q83.ansi/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_0/q83.ansi/extended.txt @@ -54,7 +54,20 @@ CometNativeColumnarToRow : : +- CometBroadcastHashJoin : : :- CometFilter : : : +- CometNativeScan parquet spark_catalog.default.catalog_returns - : : : +- ReusedSubquery + : : : +- CometSubqueryBroadcast + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometFilter + : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim : : +- CometBroadcastExchange : : +- CometProject : : +- CometFilter @@ -82,7 +95,20 @@ CometNativeColumnarToRow : +- CometBroadcastHashJoin : :- CometFilter : : +- CometNativeScan parquet spark_catalog.default.web_returns - : : +- ReusedSubquery + : : +- CometSubqueryBroadcast + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.date_dim + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim : +- CometBroadcastExchange : +- CometProject : +- CometFilter @@ -101,4 +127,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 98 out of 101 eligible operators (97%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 124 out of 127 eligible operators (97%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_2/q54/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_2/q54/extended.txt index 3cabbbdf79..0f652be148 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_2/q54/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4-spark4_2/q54/extended.txt @@ -93,21 +93,7 @@ CometNativeColumnarToRow : :- ReusedSubquery : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim - :- Subquery - : +- CometNativeColumnarToRow - : +- CometHashAggregate - : +- CometExchange - : +- CometHashAggregate - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim - +- Subquery - +- CometNativeColumnarToRow - +- CometHashAggregate - +- CometExchange - +- CometHashAggregate - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.date_dim + :- ReusedSubquery + +- ReusedSubquery -Comet accelerated 95 out of 106 eligible operators (89%). Final plan contains 5 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 83 out of 94 eligible operators (88%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q10/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q10/extended.txt index 0354bdd3b2..309ce2c012 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q10/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q10/extended.txt @@ -1,61 +1,62 @@ -TakeOrderedAndProject -+- HashAggregate [COMET: Comet aggregate that merges intermediate buffers requires a Comet child aggregate when the intermediate buffer formats are incompatible with Spark. Incompatible aggregate function(s): count] - +- Exchange - +- HashAggregate - +- Project - +- BroadcastHashJoin - :- Project - : +- BroadcastHashJoin - : :- Project - : : +- Filter - : : +- BroadcastHashJoin - : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] - : : : :- CometNativeColumnarToRow - : : : : +- CometBroadcastHashJoin - : : : : :- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.customer - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- BroadcastExchange - : : : +- CometNativeColumnarToRow - : : : +- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : +- BroadcastExchange - : : +- CometNativeColumnarToRow - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : +- ReusedSubquery - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- BroadcastExchange - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.customer_address - +- BroadcastExchange - +- CometNativeColumnarToRow - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.customer_demographics +CometNativeColumnarToRow ++- CometTakeOrderedAndProject + +- CometHashAggregate + +- CometColumnarExchange + +- HashAggregate + +- Project + +- BroadcastHashJoin + :- Project + : +- BroadcastHashJoin + : :- Project + : : +- Filter + : : +- BroadcastHashJoin + : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] + : : : :- CometNativeColumnarToRow + : : : : +- CometBroadcastHashJoin + : : : : :- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.customer + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometBroadcastHashJoin + : : : : :- CometNativeScan parquet spark_catalog.default.store_sales + : : : : : +- CometSubqueryBroadcast + : : : : : +- CometBroadcastExchange + : : : : : +- CometProject + : : : : : +- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometFilter + : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- BroadcastExchange + : : : +- CometNativeColumnarToRow + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometNativeScan parquet spark_catalog.default.web_sales + : : : : +- ReusedSubquery + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- BroadcastExchange + : : +- CometNativeColumnarToRow + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.catalog_sales + : : : +- ReusedSubquery + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- BroadcastExchange + : +- CometNativeColumnarToRow + : +- CometProject + : +- CometFilter + : +- CometNativeScan parquet spark_catalog.default.customer_address + +- BroadcastExchange + +- CometNativeColumnarToRow + +- CometProject + +- CometFilter + +- CometNativeScan parquet spark_catalog.default.customer_demographics -Comet accelerated 35 out of 54 eligible operators (64%). Final plan contains 5 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 38 out of 54 eligible operators (70%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14a/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14a/extended.txt index 1ae3f23b40..cdaed038ce 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14a/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14a/extended.txt @@ -131,11 +131,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -208,11 +204,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -271,11 +263,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -348,11 +336,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -411,11 +395,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -459,4 +439,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 431 out of 458 eligible operators (94%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 411 out of 438 eligible operators (93%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14b/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14b/extended.txt index 1b9b46662f..11c6baeef0 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14b/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q14b/extended.txt @@ -131,11 +131,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -177,11 +173,7 @@ CometNativeColumnarToRow : +- CometBroadcastExchange : +- CometProject : +- CometFilter - : : +- Subquery - : : +- CometNativeColumnarToRow - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim +- CometBroadcastExchange +- CometFilter @@ -222,11 +214,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -285,11 +273,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -331,11 +315,7 @@ CometNativeColumnarToRow +- CometBroadcastExchange +- CometProject +- CometFilter - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 310 out of 333 eligible operators (93%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 292 out of 315 eligible operators (92%). Final plan contains 4 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q35/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q35/extended.txt index 0354bdd3b2..309ce2c012 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q35/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q35/extended.txt @@ -1,61 +1,62 @@ -TakeOrderedAndProject -+- HashAggregate [COMET: Comet aggregate that merges intermediate buffers requires a Comet child aggregate when the intermediate buffer formats are incompatible with Spark. Incompatible aggregate function(s): count] - +- Exchange - +- HashAggregate - +- Project - +- BroadcastHashJoin - :- Project - : +- BroadcastHashJoin - : :- Project - : : +- Filter - : : +- BroadcastHashJoin - : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] - : : : :- CometNativeColumnarToRow - : : : : +- CometBroadcastHashJoin - : : : : :- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.customer - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- BroadcastExchange - : : : +- CometNativeColumnarToRow - : : : +- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : +- BroadcastExchange - : : +- CometNativeColumnarToRow - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : +- ReusedSubquery - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- BroadcastExchange - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.customer_address - +- BroadcastExchange - +- CometNativeColumnarToRow - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.customer_demographics +CometNativeColumnarToRow ++- CometTakeOrderedAndProject + +- CometHashAggregate + +- CometColumnarExchange + +- HashAggregate + +- Project + +- BroadcastHashJoin + :- Project + : +- BroadcastHashJoin + : :- Project + : : +- Filter + : : +- BroadcastHashJoin + : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] + : : : :- CometNativeColumnarToRow + : : : : +- CometBroadcastHashJoin + : : : : :- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.customer + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometBroadcastHashJoin + : : : : :- CometNativeScan parquet spark_catalog.default.store_sales + : : : : : +- CometSubqueryBroadcast + : : : : : +- CometBroadcastExchange + : : : : : +- CometProject + : : : : : +- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometFilter + : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- BroadcastExchange + : : : +- CometNativeColumnarToRow + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometNativeScan parquet spark_catalog.default.web_sales + : : : : +- ReusedSubquery + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- BroadcastExchange + : : +- CometNativeColumnarToRow + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.catalog_sales + : : : +- ReusedSubquery + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- BroadcastExchange + : +- CometNativeColumnarToRow + : +- CometProject + : +- CometFilter + : +- CometNativeScan parquet spark_catalog.default.customer_address + +- BroadcastExchange + +- CometNativeColumnarToRow + +- CometProject + +- CometFilter + +- CometNativeScan parquet spark_catalog.default.customer_demographics -Comet accelerated 35 out of 54 eligible operators (64%). Final plan contains 5 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 38 out of 54 eligible operators (70%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q54/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q54/extended.txt index af2b39b224..afaa307e74 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q54/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q54/extended.txt @@ -82,22 +82,8 @@ CometNativeColumnarToRow +- CometBroadcastExchange +- CometProject +- CometFilter - : :- Subquery - : : +- CometNativeColumnarToRow - : : +- CometHashAggregate - : : +- CometExchange - : : +- CometHashAggregate - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometHashAggregate - : +- CometExchange - : +- CometHashAggregate - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : :- ReusedSubquery + : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 89 out of 96 eligible operators (92%). Final plan contains 5 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 77 out of 84 eligible operators (91%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q6/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q6/extended.txt index 4b31bf751a..83c510d373 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q6/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q6/extended.txt @@ -37,14 +37,7 @@ CometNativeColumnarToRow : +- CometBroadcastExchange : +- CometProject : +- CometFilter - : : +- Subquery - : : +- CometNativeColumnarToRow - : : +- CometHashAggregate - : : +- CometExchange - : : +- CometHashAggregate - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim +- CometBroadcastExchange +- CometProject @@ -60,4 +53,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.item -Comet accelerated 55 out of 58 eligible operators (94%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 49 out of 52 eligible operators (94%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q83/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q83/extended.txt index ef8debea9a..e4d1992492 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q83/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q83/extended.txt @@ -95,7 +95,20 @@ CometNativeColumnarToRow : +- CometBroadcastHashJoin : :- CometFilter : : +- CometNativeScan parquet spark_catalog.default.web_returns - : : +- ReusedSubquery + : : +- CometSubqueryBroadcast + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.date_dim + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim : +- CometBroadcastExchange : +- CometProject : +- CometFilter @@ -114,4 +127,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 111 out of 114 eligible operators (97%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 124 out of 127 eligible operators (97%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark3_5/q35/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark3_5/q35/extended.txt new file mode 100644 index 0000000000..309ce2c012 --- /dev/null +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark3_5/q35/extended.txt @@ -0,0 +1,62 @@ +CometNativeColumnarToRow ++- CometTakeOrderedAndProject + +- CometHashAggregate + +- CometColumnarExchange + +- HashAggregate + +- Project + +- BroadcastHashJoin + :- Project + : +- BroadcastHashJoin + : :- Project + : : +- Filter + : : +- BroadcastHashJoin + : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] + : : : :- CometNativeColumnarToRow + : : : : +- CometBroadcastHashJoin + : : : : :- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.customer + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometBroadcastHashJoin + : : : : :- CometNativeScan parquet spark_catalog.default.store_sales + : : : : : +- CometSubqueryBroadcast + : : : : : +- CometBroadcastExchange + : : : : : +- CometProject + : : : : : +- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometFilter + : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- BroadcastExchange + : : : +- CometNativeColumnarToRow + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometNativeScan parquet spark_catalog.default.web_sales + : : : : +- ReusedSubquery + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- BroadcastExchange + : : +- CometNativeColumnarToRow + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.catalog_sales + : : : +- ReusedSubquery + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- BroadcastExchange + : +- CometNativeColumnarToRow + : +- CometProject + : +- CometFilter + : +- CometNativeScan parquet spark_catalog.default.customer_address + +- BroadcastExchange + +- CometNativeColumnarToRow + +- CometProject + +- CometFilter + +- CometNativeScan parquet spark_catalog.default.customer_demographics + +Comet accelerated 38 out of 54 eligible operators (70%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q14/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q14/extended.txt index 85cda8b553..6824dac7bf 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q14/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q14/extended.txt @@ -132,11 +132,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -180,11 +176,7 @@ CometNativeColumnarToRow : +- CometFilter : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- ReusedSubquery +- CometBroadcastExchange +- CometFilter : +- ReusedSubquery @@ -225,11 +217,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -288,11 +276,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -336,10 +320,6 @@ CometNativeColumnarToRow +- CometFilter : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim - +- Subquery - +- CometNativeColumnarToRow - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.date_dim + +- ReusedSubquery -Comet accelerated 310 out of 337 eligible operators (91%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 292 out of 319 eligible operators (91%). Final plan contains 4 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q6/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q6/extended.txt index dd68f2476e..2e15ba8e52 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q6/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_0/q6/extended.txt @@ -40,14 +40,7 @@ CometNativeColumnarToRow : +- CometFilter : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometHashAggregate - : +- CometExchange - : +- CometHashAggregate - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- ReusedSubquery +- CometBroadcastExchange +- CometProject +- CometBroadcastHashJoin @@ -62,4 +55,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.item -Comet accelerated 55 out of 60 eligible operators (91%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 49 out of 54 eligible operators (90%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_1/q14a/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_1/q14a/extended.txt index dd43130d46..95bf1eef42 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_1/q14a/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7-spark4_1/q14a/extended.txt @@ -136,11 +136,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -212,11 +208,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -275,11 +267,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -351,11 +339,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -414,11 +398,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -479,11 +459,7 @@ CometNativeColumnarToRow : : : :- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometProject : : : : +- CometBroadcastHashJoin @@ -500,11 +476,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -563,11 +535,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -639,11 +607,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -702,11 +666,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -778,11 +738,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -841,11 +797,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -906,11 +858,7 @@ CometNativeColumnarToRow : : : :- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometProject : : : : +- CometBroadcastHashJoin @@ -927,11 +875,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -990,11 +934,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1066,11 +1006,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1129,11 +1065,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1205,11 +1137,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1268,11 +1196,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -1333,11 +1257,7 @@ CometNativeColumnarToRow : : : :- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometProject : : : : +- CometBroadcastHashJoin @@ -1354,11 +1274,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1417,11 +1333,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1493,11 +1405,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1556,11 +1464,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1632,11 +1536,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1695,11 +1595,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -1760,11 +1656,7 @@ CometNativeColumnarToRow : : :- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometProject : : : +- CometBroadcastHashJoin @@ -1781,11 +1673,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1844,11 +1732,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -1920,11 +1804,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1983,11 +1863,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -2059,11 +1935,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -2122,11 +1994,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -2170,4 +2038,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 2046 out of 2169 eligible operators (94%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 1914 out of 2037 eligible operators (93%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14/extended.txt index 1b9b46662f..11c6baeef0 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14/extended.txt @@ -131,11 +131,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -177,11 +173,7 @@ CometNativeColumnarToRow : +- CometBroadcastExchange : +- CometProject : +- CometFilter - : : +- Subquery - : : +- CometNativeColumnarToRow - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim +- CometBroadcastExchange +- CometFilter @@ -222,11 +214,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -285,11 +273,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -331,11 +315,7 @@ CometNativeColumnarToRow +- CometBroadcastExchange +- CometProject +- CometFilter - : +- Subquery - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- ReusedSubquery +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 310 out of 333 eligible operators (93%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 292 out of 315 eligible operators (92%). Final plan contains 4 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14a/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14a/extended.txt index 64d8fff5be..c11901f719 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14a/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q14a/extended.txt @@ -137,11 +137,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -213,11 +209,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -276,11 +268,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -352,11 +340,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -415,11 +399,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -470,40 +450,7 @@ CometNativeColumnarToRow : +- CometHashAggregate : +- CometUnion : :- CometFilter - : : : +- Subquery - : : : +- CometNativeColumnarToRow - : : : +- CometHashAggregate - : : : +- CometExchange - : : : +- CometHashAggregate - : : : +- CometUnion - : : : :- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- ReusedSubquery - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : :- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- ReusedSubquery : : +- CometHashAggregate : : +- CometExchange : : +- CometHashAggregate @@ -514,11 +461,7 @@ CometNativeColumnarToRow : : : :- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometProject : : : : +- CometBroadcastHashJoin @@ -535,11 +478,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -598,11 +537,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -674,11 +609,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -737,11 +668,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -813,11 +740,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -876,11 +799,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -931,40 +850,7 @@ CometNativeColumnarToRow : +- CometHashAggregate : +- CometUnion : :- CometFilter - : : : +- Subquery - : : : +- CometNativeColumnarToRow - : : : +- CometHashAggregate - : : : +- CometExchange - : : : +- CometHashAggregate - : : : +- CometUnion - : : : :- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- ReusedSubquery - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : :- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- ReusedSubquery : : +- CometHashAggregate : : +- CometExchange : : +- CometHashAggregate @@ -975,11 +861,7 @@ CometNativeColumnarToRow : : : :- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometProject : : : : +- CometBroadcastHashJoin @@ -996,11 +878,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1059,11 +937,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1135,11 +1009,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1198,11 +1068,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1274,11 +1140,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1337,11 +1199,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -1392,40 +1250,7 @@ CometNativeColumnarToRow : +- CometHashAggregate : +- CometUnion : :- CometFilter - : : : +- Subquery - : : : +- CometNativeColumnarToRow - : : : +- CometHashAggregate - : : : +- CometExchange - : : : +- CometHashAggregate - : : : +- CometUnion - : : : :- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- ReusedSubquery - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : :- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- ReusedSubquery : : +- CometHashAggregate : : +- CometExchange : : +- CometHashAggregate @@ -1436,11 +1261,7 @@ CometNativeColumnarToRow : : : :- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometProject : : : : +- CometBroadcastHashJoin @@ -1457,11 +1278,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1520,11 +1337,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1596,11 +1409,7 @@ CometNativeColumnarToRow : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter : : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : : +- CometSubqueryBroadcast - : : : : : : : +- CometBroadcastExchange - : : : : : : : +- CometProject - : : : : : : : +- CometFilter - : : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : : +- ReusedSubquery : : : : : : +- CometBroadcastExchange : : : : : : +- CometBroadcastHashJoin : : : : : : :- CometFilter @@ -1659,11 +1468,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1735,11 +1540,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1798,11 +1599,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -1853,40 +1650,7 @@ CometNativeColumnarToRow +- CometHashAggregate +- CometUnion :- CometFilter - : : +- Subquery - : : +- CometNativeColumnarToRow - : : +- CometHashAggregate - : : +- CometExchange - : : +- CometHashAggregate - : : +- CometUnion - : : :- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : :- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : +- ReusedSubquery - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- ReusedSubquery : +- CometHashAggregate : +- CometExchange : +- CometHashAggregate @@ -1897,11 +1661,7 @@ CometNativeColumnarToRow : : :- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometProject : : : +- CometBroadcastHashJoin @@ -1918,11 +1678,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -1981,11 +1737,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -2057,11 +1809,7 @@ CometNativeColumnarToRow : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter : : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : : +- CometSubqueryBroadcast - : : : : : : +- CometBroadcastExchange - : : : : : : +- CometProject - : : : : : : +- CometFilter - : : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : : +- ReusedSubquery : : : : : +- CometBroadcastExchange : : : : : +- CometBroadcastHashJoin : : : : : :- CometFilter @@ -2120,11 +1868,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -2196,11 +1940,7 @@ CometNativeColumnarToRow : : : : +- CometBroadcastHashJoin : : : : :- CometFilter : : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : : +- ReusedSubquery : : : : +- CometBroadcastExchange : : : : +- CometBroadcastHashJoin : : : : :- CometFilter @@ -2259,11 +1999,7 @@ CometNativeColumnarToRow : : : +- CometBroadcastHashJoin : : : :- CometFilter : : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : : +- CometSubqueryBroadcast - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- ReusedSubquery : : : +- CometBroadcastExchange : : : +- CometBroadcastHashJoin : : : :- CometFilter @@ -2307,4 +2043,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 2167 out of 2302 eligible operators (94%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 1919 out of 2042 eligible operators (93%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q35/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q35/extended.txt index 0354bdd3b2..309ce2c012 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q35/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q35/extended.txt @@ -1,61 +1,62 @@ -TakeOrderedAndProject -+- HashAggregate [COMET: Comet aggregate that merges intermediate buffers requires a Comet child aggregate when the intermediate buffer formats are incompatible with Spark. Incompatible aggregate function(s): count] - +- Exchange - +- HashAggregate - +- Project - +- BroadcastHashJoin - :- Project - : +- BroadcastHashJoin - : :- Project - : : +- Filter - : : +- BroadcastHashJoin - : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] - : : : :- CometNativeColumnarToRow - : : : : +- CometBroadcastHashJoin - : : : : :- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.customer - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometBroadcastHashJoin - : : : : :- CometNativeScan parquet spark_catalog.default.store_sales - : : : : : +- CometSubqueryBroadcast - : : : : : +- CometBroadcastExchange - : : : : : +- CometProject - : : : : : +- CometFilter - : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : : +- CometBroadcastExchange - : : : : +- CometProject - : : : : +- CometFilter - : : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : : +- BroadcastExchange - : : : +- CometNativeColumnarToRow - : : : +- CometProject - : : : +- CometBroadcastHashJoin - : : : :- CometNativeScan parquet spark_catalog.default.web_sales - : : : : +- ReusedSubquery - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim - : : +- BroadcastExchange - : : +- CometNativeColumnarToRow - : : +- CometProject - : : +- CometBroadcastHashJoin - : : :- CometNativeScan parquet spark_catalog.default.catalog_sales - : : : +- ReusedSubquery - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim - : +- BroadcastExchange - : +- CometNativeColumnarToRow - : +- CometProject - : +- CometFilter - : +- CometNativeScan parquet spark_catalog.default.customer_address - +- BroadcastExchange - +- CometNativeColumnarToRow - +- CometProject - +- CometFilter - +- CometNativeScan parquet spark_catalog.default.customer_demographics +CometNativeColumnarToRow ++- CometTakeOrderedAndProject + +- CometHashAggregate + +- CometColumnarExchange + +- HashAggregate + +- Project + +- BroadcastHashJoin + :- Project + : +- BroadcastHashJoin + : :- Project + : : +- Filter + : : +- BroadcastHashJoin + : : :- BroadcastHashJoin [COMET: Unsupported join type ExistenceJoin(exists#1)] + : : : :- CometNativeColumnarToRow + : : : : +- CometBroadcastHashJoin + : : : : :- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.customer + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometBroadcastHashJoin + : : : : :- CometNativeScan parquet spark_catalog.default.store_sales + : : : : : +- CometSubqueryBroadcast + : : : : : +- CometBroadcastExchange + : : : : : +- CometProject + : : : : : +- CometFilter + : : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : : +- CometBroadcastExchange + : : : : +- CometProject + : : : : +- CometFilter + : : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- BroadcastExchange + : : : +- CometNativeColumnarToRow + : : : +- CometProject + : : : +- CometBroadcastHashJoin + : : : :- CometNativeScan parquet spark_catalog.default.web_sales + : : : : +- ReusedSubquery + : : : +- CometBroadcastExchange + : : : +- CometProject + : : : +- CometFilter + : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- BroadcastExchange + : : +- CometNativeColumnarToRow + : : +- CometProject + : : +- CometBroadcastHashJoin + : : :- CometNativeScan parquet spark_catalog.default.catalog_sales + : : : +- ReusedSubquery + : : +- CometBroadcastExchange + : : +- CometProject + : : +- CometFilter + : : +- CometNativeScan parquet spark_catalog.default.date_dim + : +- BroadcastExchange + : +- CometNativeColumnarToRow + : +- CometProject + : +- CometFilter + : +- CometNativeScan parquet spark_catalog.default.customer_address + +- BroadcastExchange + +- CometNativeColumnarToRow + +- CometProject + +- CometFilter + +- CometNativeScan parquet spark_catalog.default.customer_demographics -Comet accelerated 35 out of 54 eligible operators (64%). Final plan contains 5 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 38 out of 54 eligible operators (70%). Final plan contains 6 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q6/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q6/extended.txt index 4b31bf751a..83c510d373 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q6/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q6/extended.txt @@ -37,14 +37,7 @@ CometNativeColumnarToRow : +- CometBroadcastExchange : +- CometProject : +- CometFilter - : : +- Subquery - : : +- CometNativeColumnarToRow - : : +- CometHashAggregate - : : +- CometExchange - : : +- CometHashAggregate - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- ReusedSubquery : +- CometNativeScan parquet spark_catalog.default.date_dim +- CometBroadcastExchange +- CometProject @@ -60,4 +53,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.item -Comet accelerated 55 out of 58 eligible operators (94%). Final plan contains 3 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 49 out of 52 eligible operators (94%). Final plan contains 2 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q70a/extended.txt b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q70a/extended.txt index 4e699a0b40..9b6a13dee2 100644 --- a/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q70a/extended.txt +++ b/spark/src/test/resources/tpcds-plan-stability/approved-plans-v2_7/q70a/extended.txt @@ -66,11 +66,7 @@ CometNativeColumnarToRow : : +- CometBroadcastHashJoin : : :- CometFilter : : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : : +- CometSubqueryBroadcast - : : : +- CometBroadcastExchange - : : : +- CometProject - : : : +- CometFilter - : : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : : +- ReusedSubquery : : +- CometBroadcastExchange : : +- CometProject : : +- CometFilter @@ -115,11 +111,7 @@ CometNativeColumnarToRow : +- CometBroadcastHashJoin : :- CometFilter : : +- CometNativeScan parquet spark_catalog.default.store_sales - : : +- CometSubqueryBroadcast - : : +- CometBroadcastExchange - : : +- CometProject - : : +- CometFilter - : : +- CometNativeScan parquet spark_catalog.default.date_dim + : : +- ReusedSubquery : +- CometBroadcastExchange : +- CometProject : +- CometFilter @@ -153,4 +145,4 @@ CometNativeColumnarToRow +- CometFilter +- CometNativeScan parquet spark_catalog.default.date_dim -Comet accelerated 147 out of 153 eligible operators (96%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file +Comet accelerated 139 out of 145 eligible operators (95%). Final plan contains 1 transitions between Spark and Comet. \ No newline at end of file diff --git a/spark/src/test/scala/org/apache/comet/exec/CometAggregateSuite.scala b/spark/src/test/scala/org/apache/comet/exec/CometAggregateSuite.scala index aaa27d2533..336e7ce2f3 100644 --- a/spark/src/test/scala/org/apache/comet/exec/CometAggregateSuite.scala +++ b/spark/src/test/scala/org/apache/comet/exec/CometAggregateSuite.scala @@ -2118,6 +2118,62 @@ class CometAggregateSuite extends CometTestBase with AdaptiveSparkPlanHelper { } } + // https://github.com/apache/datafusion-comet/issues/4242 + // AQE's PropagateEmptyRelationAfterAQE rule pattern-matches BaseAggregateExec only, not + // CometHashAggregateExec. With mixed Spark-Partial / Comet-Final COUNT, the Final escapes + // the rule and propagation of empty intermediate results stops, changing downstream results + // in some queries. + test("issue #4242: AQE PropagateEmptyRelation with mixed Spark Partial / Comet Final COUNT") { + withSQLConf( + SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "true", + SQLConf.AUTO_BROADCASTJOIN_THRESHOLD.key -> "-1") { + withTempDir { dir => + spark.range(10).toDF("a").write.parquet(dir.getCanonicalPath + "/t1") + spark.range(10).toDF("b").write.parquet(dir.getCanonicalPath + "/t2") + withTempView("t1", "t2") { + spark.read.parquet(dir.getCanonicalPath + "/t1").createOrReplaceTempView("t1") + spark.read.parquet(dir.getCanonicalPath + "/t2").createOrReplaceTempView("t2") + + // Empty left side joined with empty right side then grouped count. + val q1 = + """SELECT inner_a, COUNT(*) FROM ( + | SELECT t1.a AS inner_a FROM t1 LEFT OUTER JOIN t2 ON t1.a = t2.b + | WHERE t1.a > 100 AND t2.b > 100 + |) GROUP BY inner_a""".stripMargin + checkSparkAnswer(q1) + + // Global ungrouped count over an empty input should produce one row with COUNT = 0. + val q2 = "SELECT COUNT(*) FROM t1 WHERE a > 100" + checkSparkAnswer(q2) + } + } + } + } + + // https://github.com/apache/datafusion-comet/issues/4242 + // Mirrors the OR pattern in Spark's in-count-bug.sql. Decorrelating correlated IN with + // COUNT inside an OR is known to drop a row when partial/final aggregate stages are + // split between Spark and Comet. + test("issue #4242: count-bug decorrelation with correlated IN OR pattern") { + withTempView("t1", "t2") { + sql("CREATE TEMPORARY VIEW t1(c1, c2) AS VALUES (0, 1), (1, 2)") + sql("CREATE TEMPORARY VIEW t2(c1, c2) AS VALUES (0, 2), (0, 3)") + + val orQuery = + """SELECT * FROM t1 WHERE + | c1 IN (SELECT count(*) + 1 FROM t2 WHERE t2.c1 = t1.c1) OR + | c2 IN (SELECT count(*) - 1 FROM t2 WHERE t2.c1 = t1.c1)""".stripMargin + checkSparkAnswer(orQuery) + + val orAndNotInQuery = + """SELECT * FROM t1 WHERE + | (c1 IN (SELECT count(*) + 1 FROM t2 WHERE t2.c1 = t1.c1) OR + | c2 IN (SELECT count(*) - 1 FROM t2 WHERE t2.c1 = t1.c1)) AND + | c1 NOT IN (SELECT count(*) FROM t2 WHERE t2.c1 = t1.c2)""".stripMargin + checkSparkAnswer(orAndNotInQuery) + } + } + protected def checkSparkAnswerAndNumOfAggregates(query: String, numAggregates: Int): Unit = { val df = sql(query) checkSparkAnswer(df) diff --git a/spark/src/test/scala/org/apache/comet/rules/CometExecRuleSuite.scala b/spark/src/test/scala/org/apache/comet/rules/CometExecRuleSuite.scala index 603e9033a4..3779e7e204 100644 --- a/spark/src/test/scala/org/apache/comet/rules/CometExecRuleSuite.scala +++ b/spark/src/test/scala/org/apache/comet/rules/CometExecRuleSuite.scala @@ -136,7 +136,7 @@ class CometExecRuleSuite extends CometTestBase { } // Regression test for https://github.com/apache/datafusion-comet/issues/1389 - test("CometExecRule should not allow Comet partial and Spark final hash aggregate") { + test("CometExecRule should allow Comet partial and Spark final hash aggregate for COUNT") { withTempView("test_data") { createTestDataFrame.createOrReplaceTempView("test_data") @@ -152,16 +152,15 @@ class CometExecRuleSuite extends CometTestBase { CometConf.COMET_EXEC_LOCAL_TABLE_SCAN_ENABLED.key -> "true") { val transformedPlan = applyCometExecRule(sparkPlan) - // COUNT is intentionally excluded from mixed execution (AQE / count-bug reasons), so if - // the final aggregate cannot be converted to Comet, neither should the partial. - assert( - countOperators(transformedPlan, classOf[HashAggregateExec]) == originalHashAggCount) - assert(countOperators(transformedPlan, classOf[CometHashAggregateExec]) == 0) + // COUNT and SUM both support mixed partial/final execution, so the partial converts to + // Comet while the final stays on Spark. + assert(countOperators(transformedPlan, classOf[HashAggregateExec]) == 1) + assert(countOperators(transformedPlan, classOf[CometHashAggregateExec]) == 1) } } } - test("CometExecRule should not allow Spark partial and Comet final hash aggregate") { + test("CometExecRule should allow Spark partial and Comet final hash aggregate for COUNT") { withTempView("test_data") { createTestDataFrame.createOrReplaceTempView("test_data") @@ -177,11 +176,10 @@ class CometExecRuleSuite extends CometTestBase { CometConf.COMET_EXEC_LOCAL_TABLE_SCAN_ENABLED.key -> "true") { val transformedPlan = applyCometExecRule(sparkPlan) - // COUNT blocks mixed execution, so if the partial cannot be converted, neither should - // the final. - assert( - countOperators(transformedPlan, classOf[HashAggregateExec]) == originalHashAggCount) - assert(countOperators(transformedPlan, classOf[CometHashAggregateExec]) == 0) + // COUNT and SUM both support mixed partial/final execution, so the final converts to + // Comet while the partial stays on Spark. + assert(countOperators(transformedPlan, classOf[HashAggregateExec]) == 1) + assert(countOperators(transformedPlan, classOf[CometHashAggregateExec]) == 1) } } }