You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ul...@apache.org on 2026/07/27 01:31:29 UTC
(spark) branch master updated: [SPARK-58210][SQL] Enable ReplaceHashWithSortAgg and CombineAdjacentAggregation by default
This is an automated email from the ASF dual-hosted git repository.
ulysses-you pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new ef9cc16ed52d [SPARK-58210][SQL] Enable ReplaceHashWithSortAgg and CombineAdjacentAggregation by default
ef9cc16ed52d is described below
commit ef9cc16ed52d141dca580c0a9d8ed14e35e95ead
Author: Xiduo You <ul...@gmail.com>
AuthorDate: Mon Jul 27 09:31:14 2026 +0800
[SPARK-58210][SQL] Enable ReplaceHashWithSortAgg and CombineAdjacentAggregation by default
### What changes were proposed in this pull request?
This PR enables two physical aggregate rules by default and decouples their configurations:
- `spark.sql.execution.replaceHashWithSortAgg` now defaults to `true`. It replaces a hash-based aggregate with a sort aggregate when the aggregate's child already satisfies the grouping-key sort order.
- `spark.sql.execution.combineAdjacentAggregation` now defaults to `true` and is no longer a `fallbackConf` of `replaceHashWithSortAgg`; it is an independent config. It merges an adjacent partial/final aggregate pair (with no shuffle between them) into a single complete-mode aggregate.
- `ReplaceHashWithSortAgg` switches its plan traversal from `transformDown` to `transformUp`. `HashAggregateExec` does not expose a grouping-key output ordering (`outputOrdering = Nil`), while `SortAggregateExec` does (it is order-preserving on the grouping keys). With `transformDown`, an outer (final) aggregate inspected before its inner (partial) aggregate sees the partial's `Nil` ordering and is not replaced; with `transformUp`, the partial is replaced first, so its sort-aggregate [...]
Affected tests and golden files are updated, and migration-guide entries are added under "Upgrading from Spark SQL 4.2 to 4.3".
Two correctness fixes that enabling combining by default depends on were split out and merged separately as prerequisites:
- #57464 (SPARK-58294) makes `HiveUDAFFunction` Complete-safe, so a Complete-mode `ObjectHashAggregateExec` (produced by combining) does not crash mode-aware Hive UDAFs.
- #57460 (SPARK-58291) fixes the empty-buffer merge overflow in the statistical aggregates (`CentralMomentAgg` / `Covariance` / `Corr`), so the partial/final merge path returns the same finite result as the combined Complete-mode path.
This PR is rebased on top of both, so its diff no longer contains those source changes.
### Why are the changes needed?
Both rules improve aggregate execution and have been available but off by default. `CombineAdjacentAggregation` was introduced (SPARK-43317) as a `fallbackConf` of `replaceHashWithSortAgg`, so enabling one enabled both. They are logically independent (one reuses existing ordering, the other merges an adjacent pair), so this PR turns each on by default and gives each its own config, letting users enable/disable them separately.
### Does this PR introduce _any_ user-facing change?
Yes. On default config, Spark may now plan a sort aggregate instead of a hash aggregate (when the child is already sorted on the grouping keys) and may merge an adjacent partial/final aggregate pair into a single complete-mode aggregate. The physical plan of some queries changes as a result. To restore the previous behavior, set `spark.sql.execution.replaceHashWithSortAgg` and/or `spark.sql.execution.combineAdjacentAggregation` to `false` (both must be `false` to fully restore the pre [...]
### How was this patch tested?
Updated existing tests:
- `ReplaceHashWithSortAggSuite` / `CombineAdjacentAggregationSuite`: the `checkAggs` helper now toggles both configs together; the former "falls back to replaceHashWithSortAgg" test is replaced by an independence test. A new `SPARK-58210: bottom-up traversal replaces both partial and final hash aggregate` case exercises the `transformDown` -> `transformUp` change directly (SMJ -> partial -> final, combining disabled), expecting both aggregates replaced (0 hash, 2 sort) where top-down [...]
- `SQLMetricsSuite` (SPARK-25497): pins `combineAdjacentAggregation=false` so the single-partition query keeps its partial/final structure for the limit/codegen metric assertions.
- `PlannerSuite` (SPARK-40086): accepts a sort aggregate for the single-partition sorted-input queries while still asserting no extra shuffle.
- `HiveUDAFSuite` (SPARK-24935): pins `combineAdjacentAggregation=false` to keep the partial/final staging this test targets (the combined Complete-mode path is covered separately by the SPARK-58294 test added in #57464).
Regenerated golden files via `SPARK_GENERATE_GOLDEN_FILES=1`:
- `sql-tests/results/explain-cbo.sql.out`
- `tpcds-plan-stability` approved plans for the affected TPC-DS queries.
A total of **34** golden plans changed, all caused by the two rules enabled in this PR, with **no regressions**.
| Type | Queries |
|---|---|
| Pure combine | q14a, q14a.sf100, q22a, q22a.sf100, q33, q33.sf100, q46.sf100 (modified & v1_4), q49, q49.sf100, q49.sf100 (v2_7), q51a, q51a.sf100, q56, q56.sf100, q60, q60.sf100, q66, q66.sf100, q68.sf100, q77a.sf100 |
| Pure replace | q16, q16.sf100, q64.sf100, q94, q94.sf100, q95, q95.sf100, q64.sf100 (v2_7) |
| Both | q23a.sf100, q23b.sf100, q64, q64 (v2_7) |
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code
Closes #57363 from ulysses-you/enable-hashtosort.
Authored-by: Xiduo You <ul...@gmail.com>
Signed-off-by: Xiduo You <ul...@apache.org>
---
docs/sql-migration-guide.md | 2 +
.../org/apache/spark/sql/internal/SQLConf.scala | 9 +-
.../TPCDSQueryBenchmark-jdk21-results.txt | 540 ++++-----
.../TPCDSQueryBenchmark-jdk25-results.txt | 540 ++++-----
.../benchmarks/TPCDSQueryBenchmark-results.txt | 540 ++++-----
.../sql/execution/ReplaceHashWithSortAgg.scala | 2 +-
.../sql-tests/results/explain-cbo.sql.out | 26 +-
.../approved-plans-modified/q46.sf100/explain.txt | 222 ++--
.../q46.sf100/simplified.txt | 111 +-
.../approved-plans-v1_4/q16.sf100/explain.txt | 8 +-
.../approved-plans-v1_4/q16.sf100/simplified.txt | 4 +-
.../approved-plans-v1_4/q16/explain.txt | 8 +-
.../approved-plans-v1_4/q16/simplified.txt | 4 +-
.../approved-plans-v1_4/q23a.sf100/explain.txt | 840 +++++++-------
.../approved-plans-v1_4/q23a.sf100/simplified.txt | 239 ++--
.../approved-plans-v1_4/q23b.sf100/explain.txt | 1166 +++++++++----------
.../approved-plans-v1_4/q23b.sf100/simplified.txt | 307 +++--
.../approved-plans-v1_4/q33.sf100/explain.txt | 176 ++-
.../approved-plans-v1_4/q33.sf100/simplified.txt | 199 ++--
.../approved-plans-v1_4/q33/explain.txt | 176 ++-
.../approved-plans-v1_4/q33/simplified.txt | 199 ++--
.../approved-plans-v1_4/q46.sf100/explain.txt | 132 +--
.../approved-plans-v1_4/q46.sf100/simplified.txt | 101 +-
.../approved-plans-v1_4/q49.sf100/explain.txt | 204 ++--
.../approved-plans-v1_4/q49.sf100/simplified.txt | 301 +++--
.../approved-plans-v1_4/q49/explain.txt | 186 ++-
.../approved-plans-v1_4/q49/simplified.txt | 253 ++--
.../approved-plans-v1_4/q56.sf100/explain.txt | 176 ++-
.../approved-plans-v1_4/q56.sf100/simplified.txt | 199 ++--
.../approved-plans-v1_4/q56/explain.txt | 176 ++-
.../approved-plans-v1_4/q56/simplified.txt | 199 ++--
.../approved-plans-v1_4/q60.sf100/explain.txt | 176 ++-
.../approved-plans-v1_4/q60.sf100/simplified.txt | 199 ++--
.../approved-plans-v1_4/q60/explain.txt | 176 ++-
.../approved-plans-v1_4/q60/simplified.txt | 199 ++--
.../approved-plans-v1_4/q64.sf100/explain.txt | 4 +-
.../approved-plans-v1_4/q64.sf100/simplified.txt | 2 +-
.../approved-plans-v1_4/q64/explain.txt | 852 +++++++-------
.../approved-plans-v1_4/q64/simplified.txt | 516 +++++----
.../approved-plans-v1_4/q66.sf100/explain.txt | 138 ++-
.../approved-plans-v1_4/q66.sf100/simplified.txt | 157 ++-
.../approved-plans-v1_4/q66/explain.txt | 138 ++-
.../approved-plans-v1_4/q66/simplified.txt | 161 ++-
.../approved-plans-v1_4/q68.sf100/explain.txt | 132 +--
.../approved-plans-v1_4/q68.sf100/simplified.txt | 101 +-
.../approved-plans-v1_4/q94.sf100/explain.txt | 8 +-
.../approved-plans-v1_4/q94.sf100/simplified.txt | 4 +-
.../approved-plans-v1_4/q94/explain.txt | 8 +-
.../approved-plans-v1_4/q94/simplified.txt | 4 +-
.../approved-plans-v1_4/q95.sf100/explain.txt | 8 +-
.../approved-plans-v1_4/q95.sf100/simplified.txt | 4 +-
.../approved-plans-v1_4/q95/explain.txt | 8 +-
.../approved-plans-v1_4/q95/simplified.txt | 4 +-
.../approved-plans-v2_7/q14a.sf100/explain.txt | 1216 ++++++++++----------
.../approved-plans-v2_7/q14a.sf100/simplified.txt | 593 +++++-----
.../approved-plans-v2_7/q14a/explain.txt | 1204 ++++++++++---------
.../approved-plans-v2_7/q14a/simplified.txt | 565 +++++----
.../approved-plans-v2_7/q22a.sf100/explain.txt | 342 +++---
.../approved-plans-v2_7/q22a.sf100/simplified.txt | 99 +-
.../approved-plans-v2_7/q22a/explain.txt | 336 +++---
.../approved-plans-v2_7/q22a/simplified.txt | 75 +-
.../approved-plans-v2_7/q49.sf100/explain.txt | 204 ++--
.../approved-plans-v2_7/q49.sf100/simplified.txt | 301 +++--
.../approved-plans-v2_7/q49/explain.txt | 186 ++-
.../approved-plans-v2_7/q49/simplified.txt | 253 ++--
.../approved-plans-v2_7/q51a.sf100/explain.txt | 518 ++++-----
.../approved-plans-v2_7/q51a.sf100/simplified.txt | 257 ++---
.../approved-plans-v2_7/q51a/explain.txt | 190 ++-
.../approved-plans-v2_7/q51a/simplified.txt | 229 ++--
.../approved-plans-v2_7/q64.sf100/explain.txt | 4 +-
.../approved-plans-v2_7/q64.sf100/simplified.txt | 2 +-
.../approved-plans-v2_7/q64/explain.txt | 852 +++++++-------
.../approved-plans-v2_7/q64/simplified.txt | 516 +++++----
.../approved-plans-v2_7/q77a.sf100/explain.txt | 694 ++++++-----
.../approved-plans-v2_7/q77a.sf100/simplified.txt | 357 +++---
.../CombineAdjacentAggregationSuite.scala | 24 +-
.../apache/spark/sql/execution/PlannerSuite.scala | 14 +-
.../execution/ReplaceHashWithSortAggSuite.scala | 56 +-
.../sql/execution/metric/SQLMetricsSuite.scala | 4 +-
.../spark/sql/hive/execution/HiveUDAFSuite.scala | 41 +-
80 files changed, 9483 insertions(+), 9893 deletions(-)
diff --git a/docs/sql-migration-guide.md b/docs/sql-migration-guide.md
index ce49184bcb77..423c2fdd0d88 100644
--- a/docs/sql-migration-guide.md
+++ b/docs/sql-migration-guide.md
@@ -30,6 +30,8 @@ license: |
- Since Spark 4.3, the configuration key `spark.sql.sources.v2.bucketing.allowJoinKeysSubsetOfPartitionKeys.enabled` has been renamed to `spark.sql.sources.v2.bucketing.allowKeysSubsetOfPartitionKeys.enabled` to reflect that it now applies to storage-partitioned joins, aggregates, and windows. The old key continues to work as an alias.
- Since Spark 4.3, the Spark Thrift Server rejects setting JVM system properties through the `set:system:` session configuration overlay (for example, in a JDBC connection string). To restore the previous behavior, set `spark.sql.legacy.hive.thriftServer.allowSettingSystemProperties` to `true`.
- Since Spark 4.3, the adaptive execution rule `org.apache.spark.sql.execution.adaptive.DynamicJoinSelection` has been renamed to `DemoteBroadcastHashJoin`, which now only demotes broadcast hash joins (emitting `NO_BROADCAST_HASH`). Its selection of shuffled hash join over sort merge join has moved to a new physical rule gated by `spark.sql.adaptive.convertSortMergeJoinToShuffledHashJoin.enabled` (default `true`). If you previously disabled the shuffled-hash-join preference by listing `o [...]
+- Since Spark 4.3, `spark.sql.execution.replaceHashWithSortAgg` defaults to `true`. Spark now replaces a hash-based aggregate with a sort aggregate when the aggregate's child is already sorted on the grouping keys. To restore the previous behavior, set `spark.sql.execution.replaceHashWithSortAgg` to `false`.
+- Since Spark 4.3, `spark.sql.execution.combineAdjacentAggregation` defaults to `true`. Spark now merges an adjacent partial/final aggregate pair (with no shuffle between them) into a single complete-mode aggregate. This setting is independent of `spark.sql.execution.replaceHashWithSortAgg`, so disabling only `replaceHashWithSortAgg` still leaves adjacent aggregation combined; to fully restore the previous partial/final staging, set both `spark.sql.execution.replaceHashWithSortAgg` and ` [...]
- Since Spark 4.3, the exact `percentile`, `percentile_cont`, and `median` aggregate functions (including their `WITHIN GROUP (ORDER BY ...)` forms) compute the linear interpolation between two neighboring values as `lower + fraction * (higher - lower)` instead of `(1 - fraction) * lower + fraction * higher`. The two are equal in exact arithmetic, but the new form is monotonically non-decreasing in the requested percentage and avoids a rounding error the old form could introduce. As a re [...]
- Since Spark 4.3, non-deterministic filters (for example predicates involving `rand()`) are no longer pushed down to DataSource V2 sources that implement `SupportsPushDownV2Filters`; they are evaluated by Spark after the scan instead. This prevents a source from evaluating such a predicate a different number of times than Spark, or using it for pruning while also returning it for post-scan re-evaluation.
- Since Spark 4.3, the new `COMMENT ON COLUMN ... IS NULL` syntax removes a column comment by passing a `null` comment to `TableChange.updateColumnComment(String[], String)`, so a `UpdateColumnComment` table change may now carry a `null` `newComment()`. Previously `newComment()` was always non-null. DataSource V2 catalogs that handle `UpdateColumnComment` should null-check `newComment()` and treat `null` as "remove the column comment" (mirroring how `UpdateColumnDefaultValue` already car [...]
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
index edb99889f3b4..77c69494a15a 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
@@ -3043,18 +3043,17 @@ object SQLConf {
.doc("Whether to replace hash aggregate node with sort aggregate based on children's ordering")
.version("3.3.0")
.booleanConf
- .createWithDefault(false)
+ .createWithDefault(true)
val COMBINE_ADJACENT_AGGREGATION_ENABLED =
buildConf("spark.sql.execution.combineAdjacentAggregation")
.internal()
.doc("When true, combine adjacent aggregation with `Partial` and `Final` to `Complete` " +
- "mode. This defaults to the value of `spark.sql.execution.replaceHashWithSortAgg` since " +
- "combining adjacent aggregation subsumes the partial-and-final merge that " +
- "`replaceHashWithSortAgg` used to perform on its own.")
+ "mode.")
.version("4.3.0")
.withBindingPolicy(ConfigBindingPolicy.NOT_APPLICABLE)
- .fallbackConf(REPLACE_HASH_WITH_SORT_AGG_ENABLED)
+ .booleanConf
+ .createWithDefault(true)
val USE_PARTITION_EVALUATOR = buildConf("spark.sql.execution.usePartitionEvaluator")
.internal()
diff --git a/sql/core/benchmarks/TPCDSQueryBenchmark-jdk21-results.txt b/sql/core/benchmarks/TPCDSQueryBenchmark-jdk21-results.txt
index 7dba07b66446..0c67b9d15c2d 100644
--- a/sql/core/benchmarks/TPCDSQueryBenchmark-jdk21-results.txt
+++ b/sql/core/benchmarks/TPCDSQueryBenchmark-jdk21-results.txt
@@ -1,810 +1,810 @@
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q1 758 878 175 0.6 1642.8 1.0X
+q1 750 865 106 0.6 1625.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q2 913 922 8 2.4 409.2 1.0X
+q2 829 907 71 2.7 371.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q3 236 279 43 12.6 79.6 1.0X
+q3 255 303 36 11.7 85.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q4 5230 5238 12 1.0 1003.5 1.0X
+q4 3952 4315 514 1.3 758.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q5 960 1244 402 5.9 170.6 1.0X
+q5 904 1152 351 6.2 160.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q6 1190 1233 62 2.6 381.2 1.0X
+q6 1107 1145 54 2.8 354.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q7 552 597 31 8.9 112.7 1.0X
+q7 591 642 46 8.3 120.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q8 431 483 43 7.2 139.0 1.0X
+q8 501 532 46 6.2 161.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q9 858 880 35 0.0 24509699.0 1.0X
+q9 835 880 43 0.0 23862956.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q10 2389 2476 123 0.9 1153.6 1.0X
+q10 2083 2087 6 1.0 1005.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q11 1817 2202 545 2.1 481.8 1.0X
+q11 1820 1943 174 2.1 482.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q12 169 221 35 4.8 209.0 1.0X
+q12 184 225 39 4.4 227.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q13 766 823 64 6.4 155.4 1.0X
+q13 899 932 47 5.5 182.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14a 5697 5763 93 0.9 1110.6 1.0X
+q14a 4687 4798 157 1.1 913.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14b 4268 4388 171 1.2 831.9 1.0X
+q14b 3764 4038 388 1.4 733.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q15 379 422 47 4.4 228.0 1.0X
+q15 390 424 37 4.3 234.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q16 661 745 90 2.4 422.9 1.0X
+q16 610 692 95 2.6 390.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q17 1428 1446 26 3.3 303.9 1.0X
+q17 1514 1542 39 3.1 322.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q18 1231 1270 54 2.9 341.9 1.0X
+q18 1013 1251 336 3.6 281.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q19 307 337 38 10.2 98.4 1.0X
+q19 304 349 48 10.3 97.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q20 194 206 15 7.9 127.0 1.0X
+q20 190 228 37 8.0 124.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q21 697 707 12 17.0 58.9 1.0X
+q21 727 738 19 16.3 61.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22 3356 3386 42 3.5 283.5 1.0X
+q22 3421 3469 69 3.5 289.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q23a 5478 5772 416 1.0 1047.4 1.0X
+q23a 5200 5331 186 1.0 994.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q23b 5687 5858 240 0.9 1087.5 1.0X
+q23b 5220 5434 303 1.0 998.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24a 223 260 50 15.0 66.9 1.0X
+q24a 238 280 57 14.0 71.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24b 231 261 43 14.4 69.3 1.0X
+q24b 226 270 29 14.8 67.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q25 1420 1451 43 3.3 302.3 1.0X
+q25 1256 1278 31 3.7 267.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q26 345 365 33 10.0 99.8 1.0X
+q26 348 370 29 9.9 100.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q27 530 553 23 9.2 108.4 1.0X
+q27 547 563 31 8.9 111.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q28 1180 1269 127 2.4 409.7 1.0X
+q28 1234 1278 62 2.3 428.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q29 1417 1428 16 3.3 301.5 1.0X
+q29 1545 1686 199 3.0 328.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q30 441 481 39 0.7 1494.3 1.0X
+q30 416 451 26 0.7 1410.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q31 841 1080 338 4.4 225.9 1.0X
+q31 960 1010 71 3.9 257.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q32 219 253 52 7.0 143.2 1.0X
+q32 216 266 95 7.1 140.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q33 388 419 37 13.3 75.0 1.0X
+q33 398 465 67 13.0 76.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q34 373 397 36 8.2 121.9 1.0X
+q34 398 430 28 7.7 129.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35 1510 1549 54 1.4 729.4 1.0X
+q35 1330 1358 41 1.6 642.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q36 524 559 45 5.7 176.2 1.0X
+q36 555 587 38 5.4 186.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q37 852 887 45 15.6 64.2 1.0X
+q37 816 847 49 16.3 61.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q38 701 736 48 7.4 134.5 1.0X
+q38 754 805 74 6.9 144.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q39a 1501 1615 161 7.9 126.8 1.0X
+q39a 1583 1636 76 7.5 133.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q39b 1554 1558 5 7.6 131.3 1.0X
+q39b 1570 1591 29 7.5 132.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q40 328 359 41 5.1 195.7 1.0X
+q40 345 386 48 4.8 206.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q41 142 156 22 0.1 7864.1 1.0X
+q41 118 152 32 0.2 6578.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q42 152 180 28 19.5 51.2 1.0X
+q42 164 185 28 18.2 55.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q43 315 332 27 9.4 106.6 1.0X
+q43 320 352 44 9.2 108.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q44 323 365 51 9.0 111.3 1.0X
+q44 345 379 36 8.4 119.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q45 199 239 45 4.8 206.9 1.0X
+q45 212 287 65 4.5 220.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q46 454 491 42 6.8 146.1 1.0X
+q46 532 560 40 5.8 171.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q47 1657 1701 62 1.8 557.8 1.0X
+q47 1461 1606 204 2.0 491.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q48 860 901 36 5.7 174.6 1.0X
+q48 979 982 3 5.0 198.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q49 517 571 37 10.9 92.0 1.0X
+q49 559 646 113 10.0 99.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q50 645 715 101 5.0 198.9 1.0X
+q50 756 839 80 4.3 233.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q51 2938 3036 139 1.2 800.0 1.0X
+q51 2684 2765 114 1.4 731.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q52 153 171 19 19.4 51.6 1.0X
+q52 164 183 24 18.1 55.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q53 289 312 34 10.3 97.3 1.0X
+q53 325 365 54 9.1 109.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q54 1414 1451 53 3.7 267.9 1.0X
+q54 1316 1344 39 4.0 249.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q55 152 164 18 19.6 51.0 1.0X
+q55 165 182 22 18.1 55.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q56 390 418 39 13.3 75.3 1.0X
+q56 426 510 96 12.2 82.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q57 824 870 39 1.9 538.3 1.0X
+q57 804 851 53 1.9 525.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q58 403 452 54 12.7 78.6 1.0X
+q58 445 494 54 11.5 86.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q59 670 728 60 4.4 226.8 1.0X
+q59 665 713 41 4.4 225.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q60 398 428 54 13.0 76.8 1.0X
+q60 419 448 29 12.4 80.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q61 551 586 46 5.7 176.6 1.0X
+q61 608 624 18 5.1 194.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q62 177 191 27 4.5 223.3 1.0X
+q62 182 199 21 4.4 229.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q63 285 293 11 10.4 96.0 1.0X
+q63 304 340 38 9.8 102.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q64 2284 2518 332 3.0 330.0 1.0X
+q64 2233 2512 395 3.1 322.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q65 599 639 39 5.0 201.5 1.0X
+q65 597 648 44 5.0 200.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q66 455 494 41 5.1 196.1 1.0X
+q66 446 506 59 5.2 192.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q67 5572 5591 27 0.5 1875.6 1.0X
+q67 5443 5515 101 0.5 1832.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q68 450 502 46 6.9 144.8 1.0X
+q68 487 532 35 6.4 156.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q69 1892 1955 89 1.1 913.8 1.0X
+q69 1770 1827 80 1.2 854.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q70 595 601 4 5.0 201.6 1.0X
+q70 621 656 35 4.8 210.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q71 353 370 16 14.8 67.7 1.0X
+q71 374 417 36 14.0 71.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q72 122390 122740 495 0.1 7974.4 1.0X
+q72 107579 113733 8703 0.1 7009.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q73 337 374 41 9.1 110.2 1.0X
+q73 355 387 27 8.6 116.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q74 1287 1601 444 2.9 341.2 1.0X
+q74 1276 1556 396 3.0 338.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q75 1450 1671 312 3.9 257.5 1.0X
+q75 1437 1662 319 3.9 255.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q76 296 316 35 17.3 57.7 1.0X
+q76 296 322 34 17.3 57.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q77 493 556 44 11.4 87.8 1.0X
+q77 546 737 181 10.3 97.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q78 1975 2143 237 2.8 351.8 1.0X
+q78 2453 2549 136 2.3 436.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q79 418 451 38 7.3 136.7 1.0X
+q79 444 481 44 6.9 145.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q80 1243 1487 345 4.5 220.1 1.0X
+q80 1347 1368 30 4.2 238.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q81 355 406 61 1.0 968.7 1.0X
+q81 405 443 39 0.9 1103.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q82 1103 1144 59 13.3 74.9 1.0X
+q82 1103 1144 58 13.3 75.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q83 248 293 38 2.4 416.1 1.0X
+q83 268 308 27 2.2 450.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q84 757 796 47 3.1 320.0 1.0X
+q84 724 753 26 3.3 306.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q85 1806 2162 504 1.6 637.1 1.0X
+q85 1915 1977 88 1.5 675.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q86 191 217 30 4.2 235.7 1.0X
+q86 194 219 26 4.2 239.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q87 674 767 155 7.7 129.3 1.0X
+q87 744 814 76 7.0 142.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q88 1332 1446 160 2.2 448.1 1.0X
+q88 1403 1504 142 2.1 471.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q89 296 336 42 10.0 99.8 1.0X
+q89 337 382 42 8.8 113.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q90 128 146 20 6.3 157.5 1.0X
+q90 139 167 22 5.8 171.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q91 341 370 34 6.7 148.4 1.0X
+q91 445 467 24 5.2 194.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q92 142 167 27 5.7 175.3 1.0X
+q92 140 175 28 5.8 173.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q93 445 463 21 7.1 140.5 1.0X
+q93 425 463 38 7.4 134.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q94 345 377 35 2.4 409.7 1.0X
+q94 334 355 19 2.5 396.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q95 5655 5751 136 0.1 6716.0 1.0X
+q95 5491 5574 117 0.2 6521.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q96 172 188 20 17.3 57.8 1.0X
+q96 187 203 19 15.9 63.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q97 1187 1192 8 3.7 270.2 1.0X
+q97 1187 1191 5 3.7 270.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q98 283 301 20 10.5 95.4 1.0X
+q98 287 361 50 10.3 96.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q99 255 279 27 5.9 168.2 1.0X
+q99 266 305 48 5.7 176.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q5a-v2.7 1563 1603 58 3.6 277.7 1.0X
+q5a-v2.7 871 928 79 6.5 154.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q6-v2.7 1101 1119 24 2.8 352.9 1.0X
+q6-v2.7 1006 1036 42 3.1 322.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q10a-v2.7 2175 2222 67 1.0 1050.2 1.0X
+q10a-v2.7 1931 1974 61 1.1 932.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q11-v2.7 1694 1964 382 2.2 449.1 1.0X
+q11-v2.7 1772 2016 344 2.1 469.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q12-v2.7 136 157 26 5.9 168.2 1.0X
+q12-v2.7 135 161 24 6.0 166.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14-v2.7 3832 4049 307 1.3 746.9 1.0X
+q14-v2.7 3653 3829 249 1.4 712.1 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14a-v2.7 7743 7916 244 0.7 1509.4 1.0X
+q14a-v2.7 8535 8565 43 0.6 1663.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q18a-v2.7 1860 2032 243 1.9 516.3 1.0X
+q18a-v2.7 2074 2557 683 1.7 575.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q20-v2.7 168 193 28 9.1 109.5 1.0X
+q20-v2.7 179 210 42 8.6 116.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22-v2.7 13706 13743 52 0.9 1157.9 1.0X
+q22-v2.7 14034 14105 101 0.8 1185.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22a-v2.7 2033 2046 18 5.8 171.8 1.0X
+q22a-v2.7 2121 2232 158 5.6 179.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24-v2.7 182 252 48 18.3 54.6 1.0X
+q24-v2.7 221 268 33 15.1 66.2 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q27a-v2.7 1284 1560 391 3.8 262.5 1.0X
+q27a-v2.7 1236 1440 288 4.0 252.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q34-v2.7 368 397 45 8.3 120.2 1.0X
+q34-v2.7 392 424 44 7.8 127.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35-v2.7 1507 1512 7 1.4 727.8 1.0X
+q35-v2.7 1440 1456 23 1.4 695.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35a-v2.7 1451 1486 49 1.4 700.8 1.0X
+q35a-v2.7 1358 1400 60 1.5 656.0 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q36a-v2.7 502 520 22 5.9 168.8 1.0X
+q36a-v2.7 557 596 53 5.3 187.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q47-v2.7 1407 1502 134 2.1 473.7 1.0X
+q47-v2.7 1620 1627 10 1.8 545.5 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q49-v2.7 493 554 45 11.4 87.8 1.0X
+q49-v2.7 526 606 54 10.7 93.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q51a-v2.7 15775 15878 147 0.2 4296.2 1.0X
+q51a-v2.7 15197 15459 371 0.2 4138.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q57-v2.7 768 852 88 2.0 501.4 1.0X
+q57-v2.7 726 821 125 2.1 474.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q64-v2.7 2440 2586 207 2.8 352.5 1.0X
+q64-v2.7 2238 2488 353 3.1 323.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q67a-v2.7 8070 8259 267 0.4 2716.3 1.0X
+q67a-v2.7 7244 7536 413 0.4 2438.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q70a-v2.7 620 687 89 4.8 210.1 1.0X
+q70a-v2.7 668 713 61 4.4 226.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q72-v2.7 115806 121567 8147 0.1 7545.3 1.0X
+q72-v2.7 114276 121639 10413 0.1 7445.7 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q74-v2.7 1213 1531 449 3.1 321.7 1.0X
+q74-v2.7 1300 1587 406 2.9 344.6 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q75-v2.7 1466 1546 114 3.8 260.2 1.0X
+q75-v2.7 1405 1648 344 4.0 249.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q77a-v2.7 819 932 100 6.9 145.9 1.0X
+q77a-v2.7 917 1088 241 6.1 163.3 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q78-v2.7 1782 1926 203 3.2 317.4 1.0X
+q78-v2.7 2571 2598 37 2.2 457.9 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q80a-v2.7 1710 1744 47 3.3 303.0 1.0X
+q80a-v2.7 1719 1866 209 3.3 304.4 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q86a-v2.7 243 275 33 3.3 300.1 1.0X
+q86a-v2.7 239 278 35 3.4 294.8 1.0X
-OpenJDK 64-Bit Server VM 21.0.10+7-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 21.0.11+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q98-v2.7 275 315 33 10.8 92.7 1.0X
+q98-v2.7 278 332 48 10.7 93.4 1.0X
diff --git a/sql/core/benchmarks/TPCDSQueryBenchmark-jdk25-results.txt b/sql/core/benchmarks/TPCDSQueryBenchmark-jdk25-results.txt
index 11e141f016f3..6a97ad211254 100644
--- a/sql/core/benchmarks/TPCDSQueryBenchmark-jdk25-results.txt
+++ b/sql/core/benchmarks/TPCDSQueryBenchmark-jdk25-results.txt
@@ -1,810 +1,810 @@
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q1 662 784 152 0.7 1433.9 1.0X
+q1 630 829 180 0.7 1365.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q2 788 868 92 2.8 353.3 1.0X
+q2 831 856 39 2.7 372.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q3 235 259 21 12.6 79.2 1.0X
+q3 238 263 29 12.5 80.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q4 4361 4641 395 1.2 836.8 1.0X
+q4 3475 3663 265 1.5 666.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q5 952 1139 265 5.9 169.1 1.0X
+q5 943 1082 198 6.0 167.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q6 1229 1234 6 2.5 393.9 1.0X
+q6 1128 1130 3 2.8 361.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q7 556 619 52 8.8 113.7 1.0X
+q7 545 589 35 9.0 111.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q8 414 449 35 7.5 133.4 1.0X
+q8 444 485 47 7.0 143.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q9 879 890 10 0.0 25120719.0 1.0X
+q9 840 849 15 0.0 24002549.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q10 2185 2258 102 0.9 1055.3 1.0X
+q10 1926 2054 180 1.1 930.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q11 1812 2018 291 2.1 480.4 1.0X
+q11 1620 1901 397 2.3 429.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q12 169 190 27 4.8 208.8 1.0X
+q12 188 227 46 4.3 232.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q13 754 812 61 6.5 153.0 1.0X
+q13 870 874 5 5.7 176.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14a 5756 5787 44 0.9 1122.2 1.0X
+q14a 4566 4857 411 1.1 890.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14b 4132 4216 120 1.2 805.5 1.0X
+q14b 3579 3726 208 1.4 697.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q15 372 404 53 4.5 223.4 1.0X
+q15 389 420 29 4.3 233.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q16 628 681 67 2.5 401.9 1.0X
+q16 605 623 29 2.6 386.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q17 1425 1523 139 3.3 303.2 1.0X
+q17 1421 1427 8 3.3 302.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q18 1159 1178 27 3.1 321.8 1.0X
+q18 1189 1294 150 3.0 330.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q19 289 335 54 10.8 92.6 1.0X
+q19 311 347 44 10.0 99.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q20 191 208 22 8.0 124.4 1.0X
+q20 189 231 61 8.1 123.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q21 713 741 42 16.6 60.2 1.0X
+q21 678 709 36 17.5 57.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22 3254 3301 67 3.6 274.9 1.0X
+q22 3358 3365 10 3.5 283.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q23a 5470 5729 366 1.0 1046.0 1.0X
+q23a 5218 5409 271 1.0 997.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q23b 5539 5809 382 0.9 1059.1 1.0X
+q23b 5275 5490 303 1.0 1008.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24a 225 266 33 14.8 67.4 1.0X
+q24a 225 284 44 14.8 67.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24b 220 243 31 15.2 65.8 1.0X
+q24b 217 254 33 15.4 65.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q25 1382 1416 47 3.4 294.1 1.0X
+q25 1407 1427 28 3.3 299.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q26 329 357 24 10.5 95.3 1.0X
+q26 319 346 33 10.8 92.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q27 525 551 34 9.3 107.3 1.0X
+q27 492 550 47 10.0 100.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q28 1225 1274 69 2.4 425.5 1.0X
+q28 1114 1233 169 2.6 386.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q29 1371 1419 68 3.4 291.7 1.0X
+q29 1459 1508 69 3.2 310.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q30 412 450 42 0.7 1397.0 1.0X
+q30 415 462 30 0.7 1407.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q31 789 928 223 4.7 212.0 1.0X
+q31 809 885 67 4.6 217.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q32 208 230 29 7.4 135.9 1.0X
+q32 216 256 66 7.1 141.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q33 383 414 41 13.5 74.0 1.0X
+q33 388 451 70 13.4 74.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q34 381 405 42 8.0 124.6 1.0X
+q34 391 414 33 7.8 127.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35 1420 1460 56 1.5 685.9 1.0X
+q35 1306 1344 54 1.6 630.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q36 520 553 34 5.7 174.9 1.0X
+q36 520 559 53 5.7 175.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q37 853 879 31 15.6 64.2 1.0X
+q37 801 829 33 16.6 60.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q38 681 718 45 7.7 130.6 1.0X
+q38 648 693 39 8.0 124.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q39a 1583 1623 57 7.5 133.7 1.0X
+q39a 1535 1579 61 7.7 129.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q39b 1563 1570 10 7.6 132.1 1.0X
+q39b 1460 1524 91 8.1 123.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q40 325 362 57 5.2 194.1 1.0X
+q40 353 409 42 4.7 210.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q41 131 146 17 0.1 7285.9 1.0X
+q41 120 147 26 0.1 6687.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q42 158 172 16 18.8 53.1 1.0X
+q42 152 171 20 19.5 51.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q43 309 334 39 9.5 104.8 1.0X
+q43 304 327 21 9.7 103.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q44 315 347 33 9.2 108.5 1.0X
+q44 317 372 44 9.1 109.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q45 195 223 29 4.9 203.5 1.0X
+q45 200 235 32 4.8 208.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q46 478 509 34 6.5 153.7 1.0X
+q46 464 486 28 6.7 149.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q47 1501 1552 72 2.0 505.3 1.0X
+q47 1431 1598 236 2.1 481.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q48 860 878 19 5.7 174.6 1.0X
+q48 990 1013 33 5.0 201.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q49 518 543 42 10.8 92.2 1.0X
+q49 519 580 59 10.8 92.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q50 596 640 69 5.4 183.9 1.0X
+q50 635 668 33 5.1 195.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q51 2853 2875 30 1.3 777.1 1.0X
+q51 2697 2702 6 1.4 734.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q52 155 170 18 19.1 52.3 1.0X
+q52 149 175 31 19.9 50.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q53 295 335 35 10.1 99.3 1.0X
+q53 292 313 33 10.2 98.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q54 1392 1438 64 3.8 263.7 1.0X
+q54 1165 1298 188 4.5 220.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q55 151 163 12 19.7 50.7 1.0X
+q55 151 175 22 19.7 50.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q56 382 416 40 13.5 73.8 1.0X
+q56 390 444 50 13.3 75.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q57 764 816 45 2.0 499.1 1.0X
+q57 735 811 128 2.1 479.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q58 403 442 45 12.7 78.5 1.0X
+q58 416 451 45 12.3 81.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q59 634 668 47 4.7 214.6 1.0X
+q59 613 656 43 4.8 207.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q60 396 428 51 13.1 76.4 1.0X
+q60 388 430 52 13.4 74.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q61 580 598 31 5.4 185.7 1.0X
+q61 569 610 46 5.5 182.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q62 176 191 22 4.5 221.8 1.0X
+q62 174 196 24 4.5 219.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q63 286 300 19 10.4 96.2 1.0X
+q63 288 313 31 10.3 96.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q64 2250 2476 319 3.1 325.0 1.0X
+q64 2120 2379 365 3.3 306.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q65 609 718 123 4.9 205.1 1.0X
+q65 588 687 99 5.0 198.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q66 440 487 52 5.3 189.7 1.0X
+q66 443 505 46 5.2 191.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q67 5342 5400 82 0.6 1798.1 1.0X
+q67 5524 5537 18 0.5 1859.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q68 469 501 43 6.6 150.7 1.0X
+q68 481 506 17 6.5 154.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q69 1907 1917 14 1.1 920.8 1.0X
+q69 1585 1633 69 1.3 765.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q70 564 598 48 5.2 191.0 1.0X
+q70 574 641 64 5.1 194.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q71 358 382 35 14.6 68.6 1.0X
+q71 370 414 51 14.1 70.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q72 108641 111915 4630 0.1 7078.5 1.0X
+q72 124483 127117 3726 0.1 8110.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q73 327 353 31 9.3 107.0 1.0X
+q73 344 364 29 8.9 112.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q74 1088 1339 355 3.5 288.5 1.0X
+q74 1166 1512 489 3.2 309.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q75 1501 1667 234 3.8 266.5 1.0X
+q75 1388 1710 456 4.1 246.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q76 292 315 40 17.6 57.0 1.0X
+q76 278 303 37 18.5 54.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q77 439 633 186 12.8 78.1 1.0X
+q77 673 775 88 8.3 119.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q78 2340 2358 25 2.4 416.7 1.0X
+q78 2080 2393 442 2.7 370.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q79 415 450 36 7.4 135.8 1.0X
+q79 412 435 24 7.4 134.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q80 1067 1101 49 5.3 189.0 1.0X
+q80 1215 1501 404 4.6 215.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q81 314 366 36 1.2 855.2 1.0X
+q81 325 402 71 1.1 886.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q82 1157 1161 5 12.7 78.7 1.0X
+q82 1116 1148 46 13.2 75.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q83 226 261 34 2.6 380.2 1.0X
+q83 286 322 29 2.1 481.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q84 694 706 21 3.4 293.2 1.0X
+q84 714 760 40 3.3 301.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q85 2064 2100 51 1.4 728.3 1.0X
+q85 1538 1560 31 1.8 542.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q86 188 203 18 4.3 231.8 1.0X
+q86 189 221 30 4.3 233.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q87 673 706 37 7.7 129.2 1.0X
+q87 657 720 68 7.9 126.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q88 1284 1437 217 2.3 431.9 1.0X
+q88 1253 1478 318 2.4 421.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q89 316 350 58 9.4 106.3 1.0X
+q89 333 371 45 8.9 112.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q90 122 143 20 6.6 150.6 1.0X
+q90 139 173 28 5.8 171.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q91 336 364 33 6.8 146.5 1.0X
+q91 478 497 15 4.8 208.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q92 134 153 23 6.1 164.9 1.0X
+q92 142 170 25 5.7 175.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q93 437 482 47 7.3 137.8 1.0X
+q93 501 584 109 6.3 158.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q94 336 363 30 2.5 399.0 1.0X
+q94 312 347 34 2.7 370.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q95 5387 5539 215 0.2 6398.2 1.0X
+q95 5166 5266 141 0.2 6135.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q96 177 195 16 16.8 59.6 1.0X
+q96 174 192 19 17.1 58.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q97 1137 1149 17 3.9 258.9 1.0X
+q97 1147 1243 136 3.8 261.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q98 272 294 25 10.9 91.6 1.0X
+q98 280 318 39 10.6 94.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q99 261 290 36 5.8 172.6 1.0X
+q99 253 276 22 6.0 167.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q5a-v2.7 980 1110 184 5.7 174.2 1.0X
+q5a-v2.7 1064 1198 190 5.3 189.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q6-v2.7 1065 1098 46 2.9 341.2 1.0X
+q6-v2.7 1002 1040 53 3.1 321.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q10a-v2.7 2112 2125 17 1.0 1020.1 1.0X
+q10a-v2.7 1792 1867 106 1.2 865.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q11-v2.7 1764 1896 188 2.1 467.6 1.0X
+q11-v2.7 1612 2006 557 2.3 427.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q12-v2.7 133 148 17 6.1 163.6 1.0X
+q12-v2.7 131 155 21 6.2 161.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14-v2.7 3972 4195 315 1.3 774.4 1.0X
+q14-v2.7 3356 3585 324 1.5 654.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14a-v2.7 8217 8258 58 0.6 1601.9 1.0X
+q14a-v2.7 8354 8442 125 0.6 1628.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q18a-v2.7 2007 2179 243 1.8 557.3 1.0X
+q18a-v2.7 1908 2107 280 1.9 529.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q20-v2.7 171 182 15 9.0 111.4 1.0X
+q20-v2.7 170 190 23 9.0 110.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22-v2.7 12545 12594 69 0.9 1059.9 1.0X
+q22-v2.7 13076 13207 185 0.9 1104.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22a-v2.7 1918 1963 64 6.2 162.0 1.0X
+q22a-v2.7 2092 2156 90 5.7 176.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24-v2.7 207 254 44 16.1 62.2 1.0X
+q24-v2.7 211 245 22 15.8 63.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q27a-v2.7 1398 1552 218 3.5 285.8 1.0X
+q27a-v2.7 1496 1720 318 3.3 305.8 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q34-v2.7 360 391 37 8.5 117.6 1.0X
+q34-v2.7 358 384 30 8.5 117.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35-v2.7 1393 1418 36 1.5 672.5 1.0X
+q35-v2.7 1272 1306 47 1.6 614.3 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35a-v2.7 1369 1413 62 1.5 661.1 1.0X
+q35a-v2.7 1243 1272 40 1.7 600.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q36a-v2.7 499 505 9 5.9 168.1 1.0X
+q36a-v2.7 498 531 38 6.0 167.7 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q47-v2.7 1510 1574 90 2.0 508.3 1.0X
+q47-v2.7 1562 1585 33 1.9 525.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q49-v2.7 500 520 32 11.2 89.1 1.0X
+q49-v2.7 486 601 120 11.6 86.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q51a-v2.7 14836 15122 405 0.2 4040.6 1.0X
+q51a-v2.7 15903 16252 494 0.2 4331.2 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q57-v2.7 773 819 60 2.0 505.2 1.0X
+q57-v2.7 740 811 96 2.1 483.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q64-v2.7 2251 2518 378 3.1 325.3 1.0X
+q64-v2.7 2131 2381 353 3.2 308.0 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q67a-v2.7 8356 8485 182 0.4 2812.7 1.0X
+q67a-v2.7 7233 7425 272 0.4 2434.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q70a-v2.7 642 688 71 4.6 217.5 1.0X
+q70a-v2.7 651 688 53 4.5 220.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q72-v2.7 111246 113281 2878 0.1 7248.3 1.0X
+q72-v2.7 105250 110217 7025 0.1 6857.6 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q74-v2.7 1222 1265 61 3.1 323.9 1.0X
+q74-v2.7 1190 1394 289 3.2 315.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q75-v2.7 1443 1724 398 3.9 256.1 1.0X
+q75-v2.7 1334 1645 439 4.2 236.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q77a-v2.7 1069 1149 113 5.3 190.4 1.0X
+q77a-v2.7 826 1063 335 6.8 147.1 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q78-v2.7 2149 2390 341 2.6 382.6 1.0X
+q78-v2.7 2058 2291 329 2.7 366.5 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q80a-v2.7 1624 1699 106 3.5 287.6 1.0X
+q80a-v2.7 1588 1694 149 3.6 281.4 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q86a-v2.7 232 261 34 3.5 286.1 1.0X
+q86a-v2.7 239 269 26 3.4 294.9 1.0X
-OpenJDK 64-Bit Server VM 25.0.2+10-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 25.0.3+9-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q98-v2.7 280 300 24 10.6 94.4 1.0X
+q98-v2.7 261 307 51 11.4 87.9 1.0X
diff --git a/sql/core/benchmarks/TPCDSQueryBenchmark-results.txt b/sql/core/benchmarks/TPCDSQueryBenchmark-results.txt
index 0141227684d2..f026d3b61995 100644
--- a/sql/core/benchmarks/TPCDSQueryBenchmark-results.txt
+++ b/sql/core/benchmarks/TPCDSQueryBenchmark-results.txt
@@ -1,810 +1,810 @@
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q1 883 1109 320 0.5 1914.3 1.0X
+q1 913 1033 170 0.5 1978.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q2 852 946 82 2.6 381.8 1.0X
+q2 827 838 13 2.7 370.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q3 252 277 26 11.8 84.8 1.0X
+q3 266 292 18 11.2 89.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q4 4508 4920 583 1.2 864.9 1.0X
+q4 3650 4006 504 1.4 700.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q5 1075 1344 380 5.2 191.1 1.0X
+q5 1202 1383 255 4.7 213.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q6 1239 1266 39 2.5 397.0 1.0X
+q6 1123 1141 26 2.8 359.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q7 595 606 8 8.2 121.6 1.0X
+q7 587 607 23 8.3 119.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q8 478 508 23 6.5 154.2 1.0X
+q8 507 534 28 6.1 163.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q9 854 888 46 0.0 24390718.2 1.0X
+q9 868 918 53 0.0 24796048.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q10 2386 2573 264 0.9 1152.3 1.0X
+q10 1985 2153 238 1.0 958.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q11 1825 2169 486 2.1 483.8 1.0X
+q11 2328 2516 266 1.6 617.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q12 182 225 53 4.5 224.2 1.0X
+q12 237 290 28 3.4 292.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q13 831 872 36 5.9 168.6 1.0X
+q13 984 1031 67 5.0 199.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14a 5238 5775 760 1.0 1021.1 1.0X
+q14a 4845 5326 680 1.1 944.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14b 4236 4408 242 1.2 825.9 1.0X
+q14b 3740 3927 263 1.4 729.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q15 462 477 13 3.6 277.9 1.0X
+q15 381 401 24 4.4 229.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q16 768 859 93 2.0 491.2 1.0X
+q16 751 823 80 2.1 480.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q17 1774 1879 148 2.6 377.5 1.0X
+q17 1493 1620 180 3.1 317.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q18 1453 1570 165 2.5 403.4 1.0X
+q18 1499 1604 148 2.4 416.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q19 361 382 16 8.6 115.7 1.0X
+q19 383 430 43 8.1 122.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q20 247 271 46 6.2 161.1 1.0X
+q20 246 274 23 6.2 160.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q21 715 743 31 16.5 60.4 1.0X
+q21 759 780 26 15.6 64.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22 3611 3715 148 3.3 305.1 1.0X
+q22 3674 3782 153 3.2 310.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q23a 5781 5975 275 0.9 1105.3 1.0X
+q23a 4975 5372 562 1.1 951.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q23b 6258 6405 208 0.8 1196.7 1.0X
+q23b 5140 5349 296 1.0 982.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24a 329 377 37 10.1 98.7 1.0X
+q24a 161 335 108 20.7 48.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24b 222 265 36 15.0 66.6 1.0X
+q24b 224 267 48 14.9 67.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q25 1616 1720 147 2.9 343.9 1.0X
+q25 1516 1587 100 3.1 322.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q26 410 471 65 8.4 118.9 1.0X
+q26 450 479 45 7.7 130.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q27 614 628 17 8.0 125.5 1.0X
+q27 671 691 20 7.3 137.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q28 1368 1559 271 2.1 474.9 1.0X
+q28 1333 1582 353 2.2 462.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q29 1611 1755 204 2.9 342.7 1.0X
+q29 1471 1544 104 3.2 313.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q30 497 556 83 0.6 1687.3 1.0X
+q30 504 532 24 0.6 1707.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q31 988 1488 707 3.8 265.4 1.0X
+q31 1194 1466 385 3.1 320.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q32 273 337 92 5.6 178.1 1.0X
+q32 271 335 59 5.6 177.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q33 500 509 8 10.4 96.6 1.0X
+q33 536 562 26 9.7 103.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q34 434 454 16 7.0 141.9 1.0X
+q34 457 478 14 6.7 149.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35 1778 1780 3 1.2 858.4 1.0X
+q35 1490 1491 1 1.4 719.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q36 584 602 20 5.1 196.5 1.0X
+q36 594 623 23 5.0 199.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q37 919 920 1 14.4 69.2 1.0X
+q37 901 912 14 14.7 67.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q38 759 1001 343 6.9 145.6 1.0X
+q38 937 1219 400 5.6 179.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q39a 1635 1845 297 7.2 138.1 1.0X
+q39a 1671 1784 161 7.1 141.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q39b 1602 1602 0 7.4 135.3 1.0X
+q39b 1624 1643 27 7.3 137.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q40 396 410 11 4.2 236.7 1.0X
+q40 400 425 17 4.2 238.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q41 153 182 19 0.1 8513.5 1.0X
+q41 143 177 28 0.1 7968.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q42 174 192 11 17.0 58.7 1.0X
+q42 178 205 22 16.7 60.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q43 348 364 23 8.5 118.0 1.0X
+q43 360 369 9 8.2 121.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q44 401 435 42 7.2 138.4 1.0X
+q44 416 445 21 7.0 143.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q45 243 283 21 3.9 253.3 1.0X
+q45 265 309 36 3.6 275.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q46 544 575 23 5.7 174.8 1.0X
+q46 599 622 21 5.2 192.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q47 1747 1879 188 1.7 587.9 1.0X
+q47 1611 1742 186 1.8 542.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q48 921 942 25 5.3 187.0 1.0X
+q48 1043 1044 2 4.7 211.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q49 661 731 94 8.5 117.7 1.0X
+q49 678 725 57 8.3 120.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q50 724 755 44 4.5 223.3 1.0X
+q50 749 787 40 4.3 231.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q51 2830 3009 254 1.3 770.6 1.0X
+q51 2678 2752 104 1.4 729.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q52 166 187 10 17.9 55.8 1.0X
+q52 179 200 20 16.6 60.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q53 339 346 6 8.8 114.1 1.0X
+q53 365 379 11 8.1 122.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q54 1569 1610 58 3.4 297.2 1.0X
+q54 1397 1520 174 3.8 264.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q55 169 184 9 17.5 57.0 1.0X
+q55 185 209 28 16.0 62.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q56 486 501 14 10.7 93.9 1.0X
+q56 491 501 8 10.5 94.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q57 1072 1217 205 1.4 700.5 1.0X
+q57 1014 1149 191 1.5 662.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q58 528 569 38 9.7 103.0 1.0X
+q58 537 588 36 9.6 104.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q59 719 756 38 4.1 243.4 1.0X
+q59 703 743 40 4.2 238.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q60 504 597 122 10.3 97.2 1.0X
+q60 531 683 251 9.8 102.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q61 640 669 31 4.9 205.2 1.0X
+q61 668 690 28 4.7 214.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q62 208 221 8 3.8 262.4 1.0X
+q62 215 235 13 3.7 271.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q63 338 356 14 8.8 113.7 1.0X
+q63 363 375 10 8.2 122.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q64 2626 3082 645 2.6 379.4 1.0X
+q64 3101 3194 131 2.2 448.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q65 717 799 73 4.1 241.2 1.0X
+q65 762 803 36 3.9 256.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q66 602 681 110 3.9 259.7 1.0X
+q66 593 690 87 3.9 256.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q67 5627 5685 82 0.5 1893.9 1.0X
+q67 5531 5649 166 0.5 1861.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q68 457 526 47 6.8 146.8 1.0X
+q68 494 565 57 6.3 158.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q69 2047 2182 191 1.0 988.6 1.0X
+q69 1833 1899 93 1.1 885.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q70 698 703 6 4.2 236.3 1.0X
+q70 688 694 9 4.3 233.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q71 431 465 34 12.1 82.7 1.0X
+q71 435 442 7 12.0 83.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q72 115739 117938 3110 0.1 7541.0 1.0X
+q72 118008 118845 1184 0.1 7688.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q73 401 415 17 7.6 131.1 1.0X
+q73 408 431 17 7.5 133.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q74 1350 1640 411 2.8 357.8 1.0X
+q74 1480 1946 659 2.5 392.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q75 1790 1958 237 3.1 317.7 1.0X
+q75 1573 2051 675 3.6 279.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q76 348 368 27 14.7 67.9 1.0X
+q76 339 396 44 15.1 66.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q77 590 866 252 9.5 105.0 1.0X
+q77 894 1019 177 6.3 159.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q78 2225 2487 370 2.5 396.2 1.0X
+q78 2336 2673 476 2.4 416.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q79 452 466 10 6.8 147.8 1.0X
+q79 503 511 9 6.1 164.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q80 1623 1799 249 3.5 287.5 1.0X
+q80 1239 1577 478 4.6 219.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q81 391 439 54 0.9 1065.7 1.0X
+q81 390 442 57 0.9 1064.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q82 1280 1291 15 11.5 87.0 1.0X
+q82 1166 1193 37 12.6 79.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q83 303 342 37 2.0 509.6 1.0X
+q83 345 363 19 1.7 579.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q84 833 848 14 2.8 352.0 1.0X
+q84 818 835 17 2.9 345.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q85 2272 2641 521 1.2 801.6 1.0X
+q85 1830 2042 299 1.5 645.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q86 230 240 10 3.5 284.4 1.0X
+q86 224 256 34 3.6 276.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q87 794 841 44 6.6 152.4 1.0X
+q87 781 808 41 6.7 149.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q88 1307 1629 455 2.3 439.5 1.0X
+q88 1443 1725 399 2.1 485.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q89 370 418 59 8.0 124.5 1.0X
+q89 370 410 64 8.0 124.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q90 142 170 15 5.7 174.7 1.0X
+q90 155 193 26 5.3 190.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q91 399 427 22 5.8 173.7 1.0X
+q91 483 518 26 4.8 210.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q92 162 187 15 5.0 200.0 1.0X
+q92 167 189 13 4.8 206.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q93 511 524 15 6.2 161.4 1.0X
+q93 507 534 19 6.2 160.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q94 401 450 50 2.1 476.3 1.0X
+q94 388 406 16 2.2 460.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q95 5797 5906 155 0.1 6884.3 1.0X
+q95 5596 5704 153 0.2 6645.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q96 186 204 11 16.0 62.4 1.0X
+q96 198 214 11 15.0 66.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q97 1343 1421 109 3.3 305.8 1.0X
+q97 1304 1378 105 3.4 296.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q98 326 352 31 9.1 109.6 1.0X
+q98 330 360 38 9.0 111.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q99 274 320 30 5.5 180.9 1.0X
+q99 308 330 22 4.9 203.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q5a-v2.7 1620 1798 251 3.5 287.9 1.0X
+q5a-v2.7 1708 1778 98 3.3 303.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q6-v2.7 1192 1193 1 2.6 381.9 1.0X
+q6-v2.7 1091 1104 19 2.9 349.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q10a-v2.7 2217 2339 171 0.9 1070.8 1.0X
+q10a-v2.7 1968 2039 100 1.1 950.5 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q11-v2.7 2063 2286 315 1.8 546.9 1.0X
+q11-v2.7 1926 2270 487 2.0 510.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q12-v2.7 162 185 22 5.0 200.1 1.0X
+q12-v2.7 155 178 17 5.2 191.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14-v2.7 4380 4711 469 1.2 853.8 1.0X
+q14-v2.7 3861 4087 320 1.3 752.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q14a-v2.7 9268 9547 394 0.6 1806.8 1.0X
+q14a-v2.7 8714 8716 1 0.6 1698.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q18a-v2.7 2312 2591 395 1.6 641.8 1.0X
+q18a-v2.7 1833 2154 454 2.0 508.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q20-v2.7 193 231 40 7.9 126.2 1.0X
+q20-v2.7 191 217 21 8.0 124.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22-v2.7 13844 13978 189 0.9 1169.7 1.0X
+q22-v2.7 14372 14657 403 0.8 1214.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q22a-v2.7 2295 2307 17 5.2 193.9 1.0X
+q22a-v2.7 2275 2351 108 5.2 192.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q24-v2.7 268 294 23 12.5 80.2 1.0X
+q24-v2.7 239 288 34 14.0 71.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q27a-v2.7 1850 2067 307 2.6 378.2 1.0X
+q27a-v2.7 1434 1695 370 3.4 293.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q34-v2.7 416 432 10 7.4 136.0 1.0X
+q34-v2.7 431 444 17 7.1 141.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35-v2.7 1702 1713 16 1.2 821.8 1.0X
+q35-v2.7 1432 1478 65 1.4 691.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q35a-v2.7 1565 1620 77 1.3 756.0 1.0X
+q35a-v2.7 1460 1481 30 1.4 705.1 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q36a-v2.7 592 605 13 5.0 199.3 1.0X
+q36a-v2.7 615 624 7 4.8 206.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q47-v2.7 1671 1876 290 1.8 562.5 1.0X
+q47-v2.7 1641 1756 164 1.8 552.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q49-v2.7 600 710 185 9.4 106.9 1.0X
+q49-v2.7 662 722 54 8.5 117.9 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q51a-v2.7 14309 14690 539 0.3 3897.0 1.0X
+q51a-v2.7 13421 13571 213 0.3 3655.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q57-v2.7 774 864 89 2.0 505.3 1.0X
+q57-v2.7 904 1062 223 1.7 590.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q64-v2.7 2719 3125 575 2.5 392.8 1.0X
+q64-v2.7 2411 2831 593 2.9 348.4 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q67a-v2.7 7993 8252 365 0.4 2690.6 1.0X
+q67a-v2.7 7133 7277 203 0.4 2401.0 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q70a-v2.7 725 761 50 4.1 245.7 1.0X
+q70a-v2.7 767 816 59 3.8 259.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q72-v2.7 117141 117742 849 0.1 7632.4 1.0X
+q72-v2.7 120490 120499 13 0.1 7850.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q74-v2.7 1317 1644 463 2.9 349.2 1.0X
+q74-v2.7 1469 1865 561 2.6 389.3 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q75-v2.7 1569 1966 561 3.6 278.6 1.0X
+q75-v2.7 1480 1971 694 3.8 262.7 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q77a-v2.7 1129 1420 412 5.0 201.1 1.0X
+q77a-v2.7 1307 1371 90 4.3 232.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q78-v2.7 2940 2947 10 1.9 523.5 1.0X
+q78-v2.7 2278 2697 593 2.5 405.6 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q80a-v2.7 2046 2078 45 2.8 362.5 1.0X
+q80a-v2.7 2122 2248 179 2.7 375.8 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q86a-v2.7 287 305 17 2.8 354.6 1.0X
+q86a-v2.7 283 302 15 2.9 349.2 1.0X
-OpenJDK 64-Bit Server VM 17.0.18+8-LTS on Linux 6.14.0-1017-azure
+OpenJDK 64-Bit Server VM 17.0.19+10-LTS on Linux 6.17.0-1020-azure
AMD EPYC 7763 64-Core Processor
TPCDS: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
------------------------------------------------------------------------------------------------------------------------
-q98-v2.7 301 326 16 9.9 101.2 1.0X
+q98-v2.7 289 315 18 10.3 97.4 1.0X
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/ReplaceHashWithSortAgg.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/ReplaceHashWithSortAgg.scala
index ca913a19019d..db783cb78863 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/ReplaceHashWithSortAgg.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/ReplaceHashWithSortAgg.scala
@@ -54,7 +54,7 @@ object ReplaceHashWithSortAgg extends Rule[SparkPlan] {
* Replace [[HashAggregateExec]] and [[ObjectHashAggregateExec]] with [[SortAggregateExec]].
*/
private def replaceHashAgg(plan: SparkPlan): SparkPlan = {
- plan.transformDown {
+ plan.transformUp {
case hashAgg: BaseAggregateExec if isHashBasedAggWithKeys(hashAgg) =>
val sortAgg = hashAgg.toSortAggregate
if (SortOrder.orderingSatisfies(
diff --git a/sql/core/src/test/resources/sql-tests/results/explain-cbo.sql.out b/sql/core/src/test/resources/sql-tests/results/explain-cbo.sql.out
index 634c6b93d878..3aac19ce3224 100644
--- a/sql/core/src/test/resources/sql-tests/results/explain-cbo.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/explain-cbo.sql.out
@@ -67,24 +67,22 @@ AdaptiveSparkPlan isFinalPlan=false
: +- Subquery subquery#x, [id=#x]
: +- AdaptiveSparkPlan isFinalPlan=false
: +- HashAggregate(keys=[], functions=[max(csales#xL)], output=[tpcds_cmax#xL])
- : +- HashAggregate(keys=[], functions=[partial_max(csales#xL)], output=[max#xL])
- : +- HashAggregate(keys=[], functions=[sum(b#x)], output=[csales#xL])
- : +- Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=x]
- : +- HashAggregate(keys=[], functions=[partial_sum(b#x)], output=[sum#xL])
- : +- Project [b#x]
- : +- Filter (isnotnull(a#x) AND (a#x < 100))
- : +- FileScan parquet spark_catalog.default.explain_temp1[a#x,b#x] Batched: true, DataFilters: [isnotnull(a#x), (a#x < 100)], Format: Parquet, Location [not included in comparison]/{warehouse_dir}/explain_temp1], PartitionFilters: [], PushedFilters: [IsNotNull(a), LessThan(a,100)], ReadSchema: struct<a:int,b:int>
+ : +- HashAggregate(keys=[], functions=[sum(b#x)], output=[csales#xL])
+ : +- Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=x]
+ : +- HashAggregate(keys=[], functions=[partial_sum(b#x)], output=[sum#xL])
+ : +- Project [b#x]
+ : +- Filter (isnotnull(a#x) AND (a#x < 100))
+ : +- FileScan parquet spark_catalog.default.explain_temp1[a#x,b#x] Batched: true, DataFilters: [isnotnull(a#x), (a#x < 100)], Format: Parquet, Location [not included in comparison]/{warehouse_dir}/explain_temp1], PartitionFilters: [], PushedFilters: [IsNotNull(a), LessThan(a,100)], ReadSchema: struct<a:int,b:int>
+- FileScan parquet spark_catalog.default.explain_temp2[c#x,d#x] Batched: true, DataFilters: [isnotnull(d#x), (cast(d#x as bigint) > Subquery subquery#x, [id=#x])], Format: Parquet, Location [not included in comparison]/{warehouse_dir}/explain_temp2], PartitionFilters: [], PushedFilters: [IsNotNull(d)], ReadSchema: struct<c:int,d:int>
+- Subquery subquery#x, [id=#x]
+- AdaptiveSparkPlan isFinalPlan=false
+- HashAggregate(keys=[], functions=[max(csales#xL)], output=[tpcds_cmax#xL])
- +- HashAggregate(keys=[], functions=[partial_max(csales#xL)], output=[max#xL])
- +- HashAggregate(keys=[], functions=[sum(b#x)], output=[csales#xL])
- +- Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=x]
- +- HashAggregate(keys=[], functions=[partial_sum(b#x)], output=[sum#xL])
- +- Project [b#x]
- +- Filter (isnotnull(a#x) AND (a#x < 100))
- +- FileScan parquet spark_catalog.default.explain_temp1[a#x,b#x] Batched: true, DataFilters: [isnotnull(a#x), (a#x < 100)], Format: Parquet, Location [not included in comparison]/{warehouse_dir}/explain_temp1], PartitionFilters: [], PushedFilters: [IsNotNull(a), LessThan(a,100)], ReadSchema: struct<a:int,b:int>
+ +- HashAggregate(keys=[], functions=[sum(b#x)], output=[csales#xL])
+ +- Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=x]
+ +- HashAggregate(keys=[], functions=[partial_sum(b#x)], output=[sum#xL])
+ +- Project [b#x]
+ +- Filter (isnotnull(a#x) AND (a#x < 100))
+ +- FileScan parquet spark_catalog.default.explain_temp1[a#x,b#x] Batched: true, DataFilters: [isnotnull(a#x), (a#x < 100)], Format: Parquet, Location [not included in comparison]/{warehouse_dir}/explain_temp1], PartitionFilters: [], PushedFilters: [IsNotNull(a), LessThan(a,100)], ReadSchema: struct<a:int,b:int>
-- !query
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/explain.txt
index 15028b8cdbe8..41772c010171 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/explain.txt
@@ -1,51 +1,50 @@
== Physical Plan ==
-TakeOrderedAndProject (47)
-+- * Project (46)
- +- * SortMergeJoin Inner (45)
- :- * Sort (42)
- : +- Exchange (41)
- : +- * Project (40)
- : +- * SortMergeJoin Inner (39)
- : :- * Sort (33)
- : : +- Exchange (32)
- : : +- * HashAggregate (31)
- : : +- * HashAggregate (30)
- : : +- * Project (29)
- : : +- * SortMergeJoin Inner (28)
- : : :- * Sort (22)
- : : : +- Exchange (21)
- : : : +- * Project (20)
- : : : +- * BroadcastHashJoin Inner BuildRight (19)
- : : : :- * Project (13)
- : : : : +- * BroadcastHashJoin Inner BuildRight (12)
- : : : : :- * Project (6)
- : : : : : +- * BroadcastHashJoin Inner BuildRight (5)
- : : : : : :- * Filter (3)
- : : : : : : +- * ColumnarToRow (2)
- : : : : : : +- Scan parquet spark_catalog.default.store_sales (1)
- : : : : : +- ReusedExchange (4)
- : : : : +- BroadcastExchange (11)
- : : : : +- * Project (10)
- : : : : +- * Filter (9)
- : : : : +- * ColumnarToRow (8)
- : : : : +- Scan parquet spark_catalog.default.store (7)
- : : : +- BroadcastExchange (18)
- : : : +- * Project (17)
- : : : +- * Filter (16)
- : : : +- * ColumnarToRow (15)
- : : : +- Scan parquet spark_catalog.default.household_demographics (14)
- : : +- * Sort (27)
- : : +- Exchange (26)
- : : +- * Filter (25)
- : : +- * ColumnarToRow (24)
- : : +- Scan parquet spark_catalog.default.customer_address (23)
- : +- * Sort (38)
- : +- Exchange (37)
- : +- * Filter (36)
- : +- * ColumnarToRow (35)
- : +- Scan parquet spark_catalog.default.customer (34)
- +- * Sort (44)
- +- ReusedExchange (43)
+TakeOrderedAndProject (46)
++- * Project (45)
+ +- * SortMergeJoin Inner (44)
+ :- * Sort (41)
+ : +- Exchange (40)
+ : +- * Project (39)
+ : +- * SortMergeJoin Inner (38)
+ : :- * Sort (32)
+ : : +- Exchange (31)
+ : : +- * HashAggregate (30)
+ : : +- * Project (29)
+ : : +- * SortMergeJoin Inner (28)
+ : : :- * Sort (22)
+ : : : +- Exchange (21)
+ : : : +- * Project (20)
+ : : : +- * BroadcastHashJoin Inner BuildRight (19)
+ : : : :- * Project (13)
+ : : : : +- * BroadcastHashJoin Inner BuildRight (12)
+ : : : : :- * Project (6)
+ : : : : : +- * BroadcastHashJoin Inner BuildRight (5)
+ : : : : : :- * Filter (3)
+ : : : : : : +- * ColumnarToRow (2)
+ : : : : : : +- Scan parquet spark_catalog.default.store_sales (1)
+ : : : : : +- ReusedExchange (4)
+ : : : : +- BroadcastExchange (11)
+ : : : : +- * Project (10)
+ : : : : +- * Filter (9)
+ : : : : +- * ColumnarToRow (8)
+ : : : : +- Scan parquet spark_catalog.default.store (7)
+ : : : +- BroadcastExchange (18)
+ : : : +- * Project (17)
+ : : : +- * Filter (16)
+ : : : +- * ColumnarToRow (15)
+ : : : +- Scan parquet spark_catalog.default.household_demographics (14)
+ : : +- * Sort (27)
+ : : +- Exchange (26)
+ : : +- * Filter (25)
+ : : +- * ColumnarToRow (24)
+ : : +- Scan parquet spark_catalog.default.customer_address (23)
+ : +- * Sort (37)
+ : +- Exchange (36)
+ : +- * Filter (35)
+ : +- * ColumnarToRow (34)
+ : +- Scan parquet spark_catalog.default.customer (33)
+ +- * Sort (43)
+ +- ReusedExchange (42)
(1) Scan parquet spark_catalog.default.store_sales
@@ -63,7 +62,7 @@ Input [8]: [ss_customer_sk#1, ss_hdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_tic
Input [8]: [ss_customer_sk#1, ss_hdemo_sk#2, ss_addr_sk#3, ss_store_sk#4, ss_ticket_number#5, ss_coupon_amt#6, ss_net_profit#7, ss_sold_date_sk#8]
Condition : (((isnotnull(ss_store_sk#4) AND isnotnull(ss_hdemo_sk#2)) AND isnotnull(ss_addr_sk#3)) AND isnotnull(ss_customer_sk#1))
-(4) ReusedExchange [Reuses operator id: 52]
+(4) ReusedExchange [Reuses operator id: 51]
Output [1]: [d_date_sk#10]
(5) BroadcastHashJoin [codegen id : 4]
@@ -183,115 +182,108 @@ Input [7]: [ss_customer_sk#1, ss_addr_sk#3, ss_ticket_number#5, ss_coupon_amt#6,
(30) HashAggregate [codegen id : 8]
Input [6]: [ss_customer_sk#1, ss_addr_sk#3, ss_ticket_number#5, ss_coupon_amt#6, ss_net_profit#7, ca_city#17]
Keys [4]: [ss_ticket_number#5, ss_customer_sk#1, ss_addr_sk#3, ca_city#17]
-Functions [2]: [partial_sum(UnscaledValue(ss_coupon_amt#6)), partial_sum(UnscaledValue(ss_net_profit#7))]
-Aggregate Attributes [2]: [sum#18, sum#19]
-Results [6]: [ss_ticket_number#5, ss_customer_sk#1, ss_addr_sk#3, ca_city#17, sum#20, sum#21]
-
-(31) HashAggregate [codegen id : 8]
-Input [6]: [ss_ticket_number#5, ss_customer_sk#1, ss_addr_sk#3, ca_city#17, sum#20, sum#21]
-Keys [4]: [ss_ticket_number#5, ss_customer_sk#1, ss_addr_sk#3, ca_city#17]
Functions [2]: [sum(UnscaledValue(ss_coupon_amt#6)), sum(UnscaledValue(ss_net_profit#7))]
-Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#6))#22, sum(UnscaledValue(ss_net_profit#7))#23]
-Results [5]: [ss_ticket_number#5, ss_customer_sk#1, ca_city#17 AS bought_city#24, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#6))#22,17,2) AS amt#25, MakeDecimal(sum(UnscaledValue(ss_net_profit#7))#23,17,2) AS profit#26]
+Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#6))#18, sum(UnscaledValue(ss_net_profit#7))#19]
+Results [5]: [ss_ticket_number#5, ss_customer_sk#1, ca_city#17 AS bought_city#20, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#6))#18,17,2) AS amt#21, MakeDecimal(sum(UnscaledValue(ss_net_profit#7))#19,17,2) AS profit#22]
-(32) Exchange
-Input [5]: [ss_ticket_number#5, ss_customer_sk#1, bought_city#24, amt#25, profit#26]
+(31) Exchange
+Input [5]: [ss_ticket_number#5, ss_customer_sk#1, bought_city#20, amt#21, profit#22]
Arguments: hashpartitioning(ss_customer_sk#1, 5), ENSURE_REQUIREMENTS, [plan_id=5]
-(33) Sort [codegen id : 9]
-Input [5]: [ss_ticket_number#5, ss_customer_sk#1, bought_city#24, amt#25, profit#26]
+(32) Sort [codegen id : 9]
+Input [5]: [ss_ticket_number#5, ss_customer_sk#1, bought_city#20, amt#21, profit#22]
Arguments: [ss_customer_sk#1 ASC NULLS FIRST], false, 0
-(34) Scan parquet spark_catalog.default.customer
-Output [4]: [c_customer_sk#27, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
+(33) Scan parquet spark_catalog.default.customer
+Output [4]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk), IsNotNull(c_current_addr_sk)]
ReadSchema: struct<c_customer_sk:int,c_current_addr_sk:int,c_first_name:string,c_last_name:string>
-(35) ColumnarToRow [codegen id : 10]
-Input [4]: [c_customer_sk#27, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
+(34) ColumnarToRow [codegen id : 10]
+Input [4]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
-(36) Filter [codegen id : 10]
-Input [4]: [c_customer_sk#27, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
-Condition : (isnotnull(c_customer_sk#27) AND isnotnull(c_current_addr_sk#28))
+(35) Filter [codegen id : 10]
+Input [4]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
+Condition : (isnotnull(c_customer_sk#23) AND isnotnull(c_current_addr_sk#24))
-(37) Exchange
-Input [4]: [c_customer_sk#27, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
-Arguments: hashpartitioning(c_customer_sk#27, 5), ENSURE_REQUIREMENTS, [plan_id=6]
+(36) Exchange
+Input [4]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
+Arguments: hashpartitioning(c_customer_sk#23, 5), ENSURE_REQUIREMENTS, [plan_id=6]
-(38) Sort [codegen id : 11]
-Input [4]: [c_customer_sk#27, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
-Arguments: [c_customer_sk#27 ASC NULLS FIRST], false, 0
+(37) Sort [codegen id : 11]
+Input [4]: [c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
+Arguments: [c_customer_sk#23 ASC NULLS FIRST], false, 0
-(39) SortMergeJoin [codegen id : 12]
+(38) SortMergeJoin [codegen id : 12]
Left keys [1]: [ss_customer_sk#1]
-Right keys [1]: [c_customer_sk#27]
+Right keys [1]: [c_customer_sk#23]
Join type: Inner
Join condition: None
-(40) Project [codegen id : 12]
-Output [7]: [ss_ticket_number#5, bought_city#24, amt#25, profit#26, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
-Input [9]: [ss_ticket_number#5, ss_customer_sk#1, bought_city#24, amt#25, profit#26, c_customer_sk#27, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
+(39) Project [codegen id : 12]
+Output [7]: [ss_ticket_number#5, bought_city#20, amt#21, profit#22, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
+Input [9]: [ss_ticket_number#5, ss_customer_sk#1, bought_city#20, amt#21, profit#22, c_customer_sk#23, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
-(41) Exchange
-Input [7]: [ss_ticket_number#5, bought_city#24, amt#25, profit#26, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
-Arguments: hashpartitioning(c_current_addr_sk#28, 5), ENSURE_REQUIREMENTS, [plan_id=7]
+(40) Exchange
+Input [7]: [ss_ticket_number#5, bought_city#20, amt#21, profit#22, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
+Arguments: hashpartitioning(c_current_addr_sk#24, 5), ENSURE_REQUIREMENTS, [plan_id=7]
-(42) Sort [codegen id : 13]
-Input [7]: [ss_ticket_number#5, bought_city#24, amt#25, profit#26, c_current_addr_sk#28, c_first_name#29, c_last_name#30]
-Arguments: [c_current_addr_sk#28 ASC NULLS FIRST], false, 0
+(41) Sort [codegen id : 13]
+Input [7]: [ss_ticket_number#5, bought_city#20, amt#21, profit#22, c_current_addr_sk#24, c_first_name#25, c_last_name#26]
+Arguments: [c_current_addr_sk#24 ASC NULLS FIRST], false, 0
-(43) ReusedExchange [Reuses operator id: 26]
-Output [2]: [ca_address_sk#31, ca_city#32]
+(42) ReusedExchange [Reuses operator id: 26]
+Output [2]: [ca_address_sk#27, ca_city#28]
-(44) Sort [codegen id : 15]
-Input [2]: [ca_address_sk#31, ca_city#32]
-Arguments: [ca_address_sk#31 ASC NULLS FIRST], false, 0
+(43) Sort [codegen id : 15]
+Input [2]: [ca_address_sk#27, ca_city#28]
+Arguments: [ca_address_sk#27 ASC NULLS FIRST], false, 0
-(45) SortMergeJoin [codegen id : 16]
-Left keys [1]: [c_current_addr_sk#28]
-Right keys [1]: [ca_address_sk#31]
+(44) SortMergeJoin [codegen id : 16]
+Left keys [1]: [c_current_addr_sk#24]
+Right keys [1]: [ca_address_sk#27]
Join type: Inner
-Join condition: NOT (ca_city#32 = bought_city#24)
+Join condition: NOT (ca_city#28 = bought_city#20)
-(46) Project [codegen id : 16]
-Output [7]: [c_last_name#30, c_first_name#29, ca_city#32, bought_city#24, ss_ticket_number#5, amt#25, profit#26]
-Input [9]: [ss_ticket_number#5, bought_city#24, amt#25, profit#26, c_current_addr_sk#28, c_first_name#29, c_last_name#30, ca_address_sk#31, ca_city#32]
+(45) Project [codegen id : 16]
+Output [7]: [c_last_name#26, c_first_name#25, ca_city#28, bought_city#20, ss_ticket_number#5, amt#21, profit#22]
+Input [9]: [ss_ticket_number#5, bought_city#20, amt#21, profit#22, c_current_addr_sk#24, c_first_name#25, c_last_name#26, ca_address_sk#27, ca_city#28]
-(47) TakeOrderedAndProject
-Input [7]: [c_last_name#30, c_first_name#29, ca_city#32, bought_city#24, ss_ticket_number#5, amt#25, profit#26]
-Arguments: 100, [c_last_name#30 ASC NULLS FIRST, c_first_name#29 ASC NULLS FIRST, ca_city#32 ASC NULLS FIRST, bought_city#24 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], [c_last_name#30, c_first_name#29, ca_city#32, bought_city#24, ss_ticket_number#5, amt#25, profit#26]
+(46) TakeOrderedAndProject
+Input [7]: [c_last_name#26, c_first_name#25, ca_city#28, bought_city#20, ss_ticket_number#5, amt#21, profit#22]
+Arguments: 100, [c_last_name#26 ASC NULLS FIRST, c_first_name#25 ASC NULLS FIRST, ca_city#28 ASC NULLS FIRST, bought_city#20 ASC NULLS FIRST, ss_ticket_number#5 ASC NULLS FIRST], [c_last_name#26, c_first_name#25, ca_city#28, bought_city#20, ss_ticket_number#5, amt#21, profit#22]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#8 IN dynamicpruning#9
-BroadcastExchange (52)
-+- * Project (51)
- +- * Filter (50)
- +- * ColumnarToRow (49)
- +- Scan parquet spark_catalog.default.date_dim (48)
+BroadcastExchange (51)
++- * Project (50)
+ +- * Filter (49)
+ +- * ColumnarToRow (48)
+ +- Scan parquet spark_catalog.default.date_dim (47)
-(48) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#10, d_year#33, d_dow#34]
+(47) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#10, d_year#29, d_dow#30]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [In(d_dow, [0,6]), In(d_year, [1999,2000,2001]), In(d_date_sk, [2451181,2451182,2451188,2451189,2451195,2451196,2451202,2451203,2451209,2451210,2451216,2451217,2451223,2451224,2451230,2451231,2451237,2451238,2451244,2451245,2451251,2451252,2451258,2451259,2451265,2451266,2451272,2451273,2451279,2451280,2451286,2451287,2451293,2451294,2451300,2451301,2451307,2451308,2451314,2451315,2451321,2451322,2451328,2451329,2451335,2451336,2451342,2451343,2451349,2451350,2451356,24513 [...]
ReadSchema: struct<d_date_sk:int,d_year:int,d_dow:int>
-(49) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#10, d_year#33, d_dow#34]
+(48) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#10, d_year#29, d_dow#30]
-(50) Filter [codegen id : 1]
-Input [3]: [d_date_sk#10, d_year#33, d_dow#34]
-Condition : (((d_dow#34 IN (6,0) AND d_year#33 IN (1999,2000,2001)) AND d_date_sk#10 INSET 2451181, 2451182, 2451188, 2451189, 2451195, 2451196, 2451202, 2451203, 2451209, 2451210, 2451216, 2451217, 2451223, 2451224, 2451230, 2451231, 2451237, 2451238, 2451244, 2451245, 2451251, 2451252, 2451258, 2451259, 2451265, 2451266, 2451272, 2451273, 2451279, 2451280, 2451286, 2451287, 2451293, 2451294, 2451300, 2451301, 2451307, 2451308, 2451314, 2451315, 2451321, 2451322, 2451328, 2451329, 24513 [...]
+(49) Filter [codegen id : 1]
+Input [3]: [d_date_sk#10, d_year#29, d_dow#30]
+Condition : (((d_dow#30 IN (6,0) AND d_year#29 IN (1999,2000,2001)) AND d_date_sk#10 INSET 2451181, 2451182, 2451188, 2451189, 2451195, 2451196, 2451202, 2451203, 2451209, 2451210, 2451216, 2451217, 2451223, 2451224, 2451230, 2451231, 2451237, 2451238, 2451244, 2451245, 2451251, 2451252, 2451258, 2451259, 2451265, 2451266, 2451272, 2451273, 2451279, 2451280, 2451286, 2451287, 2451293, 2451294, 2451300, 2451301, 2451307, 2451308, 2451314, 2451315, 2451321, 2451322, 2451328, 2451329, 24513 [...]
-(51) Project [codegen id : 1]
+(50) Project [codegen id : 1]
Output [1]: [d_date_sk#10]
-Input [3]: [d_date_sk#10, d_year#33, d_dow#34]
+Input [3]: [d_date_sk#10, d_year#29, d_dow#30]
-(52) BroadcastExchange
+(51) BroadcastExchange
Input [1]: [d_date_sk#10]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=8]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/simplified.txt
index 44514d319d8e..42f73eda8666 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-modified/q46.sf100/simplified.txt
@@ -16,62 +16,61 @@ TakeOrderedAndProject [c_last_name,c_first_name,ca_city,bought_city,ss_ticket_nu
InputAdapter
Exchange [ss_customer_sk] #2
WholeStageCodegen (8)
- HashAggregate [ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city,sum,sum] [sum(UnscaledValue(ss_coupon_amt)),sum(UnscaledValue(ss_net_profit)),bought_city,amt,profit,sum,sum]
- HashAggregate [ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city,ss_coupon_amt,ss_net_profit] [sum,sum,sum,sum]
- Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ca_city]
- SortMergeJoin [ss_addr_sk,ca_address_sk]
- InputAdapter
- WholeStageCodegen (5)
- Sort [ss_addr_sk]
- InputAdapter
- Exchange [ss_addr_sk] #3
- WholeStageCodegen (4)
- Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
- BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
- Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
- BroadcastHashJoin [ss_store_sk,s_store_sk]
- Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_store_sk,ss_hdemo_sk,ss_addr_sk,ss_customer_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #4
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_dow,d_year,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_dow]
- InputAdapter
- ReusedExchange [d_date_sk] #4
- InputAdapter
- BroadcastExchange #5
- WholeStageCodegen (2)
- Project [s_store_sk]
- Filter [s_city,s_store_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store [s_store_sk,s_city]
- InputAdapter
- BroadcastExchange #6
- WholeStageCodegen (3)
- Project [hd_demo_sk]
- Filter [hd_dep_count,hd_vehicle_count,hd_demo_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.household_demographics [hd_demo_sk,hd_dep_count,hd_vehicle_count]
- InputAdapter
- WholeStageCodegen (7)
- Sort [ca_address_sk]
- InputAdapter
- Exchange [ca_address_sk] #7
- WholeStageCodegen (6)
- Filter [ca_address_sk,ca_city]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_city]
+ HashAggregate [ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city,ss_coupon_amt,ss_net_profit] [sum(UnscaledValue(ss_coupon_amt)),sum(UnscaledValue(ss_net_profit)),bought_city,amt,profit,sum,sum]
+ Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ca_city]
+ SortMergeJoin [ss_addr_sk,ca_address_sk]
+ InputAdapter
+ WholeStageCodegen (5)
+ Sort [ss_addr_sk]
+ InputAdapter
+ Exchange [ss_addr_sk] #3
+ WholeStageCodegen (4)
+ Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
+ BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
+ Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
+ BroadcastHashJoin [ss_store_sk,s_store_sk]
+ Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_store_sk,ss_hdemo_sk,ss_addr_sk,ss_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #4
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_dow,d_year,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_dow]
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
+ InputAdapter
+ BroadcastExchange #5
+ WholeStageCodegen (2)
+ Project [s_store_sk]
+ Filter [s_city,s_store_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store [s_store_sk,s_city]
+ InputAdapter
+ BroadcastExchange #6
+ WholeStageCodegen (3)
+ Project [hd_demo_sk]
+ Filter [hd_dep_count,hd_vehicle_count,hd_demo_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.household_demographics [hd_demo_sk,hd_dep_count,hd_vehicle_count]
+ InputAdapter
+ WholeStageCodegen (7)
+ Sort [ca_address_sk]
+ InputAdapter
+ Exchange [ca_address_sk] #7
+ WholeStageCodegen (6)
+ Filter [ca_address_sk,ca_city]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_city]
InputAdapter
WholeStageCodegen (11)
Sort [c_customer_sk]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/explain.txt
index 8e9f3b2379bc..a7a4377dec7c 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/explain.txt
@@ -2,8 +2,8 @@
* HashAggregate (45)
+- Exchange (44)
+- * HashAggregate (43)
- +- * HashAggregate (42)
- +- * HashAggregate (41)
+ +- * SortAggregate (42)
+ +- * SortAggregate (41)
+- * Project (40)
+- * BroadcastHashJoin Inner BuildRight (39)
:- * Project (33)
@@ -226,14 +226,14 @@ Join condition: None
Output [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7]
Input [5]: [cs_ship_date_sk#1, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, d_date_sk#21]
-(41) HashAggregate [codegen id : 11]
+(41) SortAggregate [codegen id : 11]
Input [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7]
Keys [1]: [cs_order_number#5]
Functions [2]: [partial_sum(UnscaledValue(cs_ext_ship_cost#6)), partial_sum(UnscaledValue(cs_net_profit#7))]
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#23, sum(UnscaledValue(cs_net_profit#7))#24]
Results [3]: [cs_order_number#5, sum#25, sum#26]
-(42) HashAggregate [codegen id : 11]
+(42) SortAggregate [codegen id : 11]
Input [3]: [cs_order_number#5, sum#25, sum#26]
Keys [1]: [cs_order_number#5]
Functions [2]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(UnscaledValue(cs_net_profit#7))]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/simplified.txt
index 4b656606e58d..425bbcc694a9 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16.sf100/simplified.txt
@@ -4,8 +4,8 @@ WholeStageCodegen (12)
Exchange #1
WholeStageCodegen (11)
HashAggregate [sum,sum,cs_order_number] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),count,sum,sum,count]
- HashAggregate [cs_order_number,sum,sum] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum]
- HashAggregate [cs_order_number,cs_ext_ship_cost,cs_net_profit] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
+ SortAggregate [cs_order_number,sum,sum] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum]
+ SortAggregate [cs_order_number,cs_ext_ship_cost,cs_net_profit] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
Project [cs_order_number,cs_ext_ship_cost,cs_net_profit]
BroadcastHashJoin [cs_ship_date_sk,d_date_sk]
Project [cs_ship_date_sk,cs_order_number,cs_ext_ship_cost,cs_net_profit]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/explain.txt
index 70a5c5bed4e9..ac07800e9f5d 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/explain.txt
@@ -2,8 +2,8 @@
* HashAggregate (45)
+- Exchange (44)
+- * HashAggregate (43)
- +- * HashAggregate (42)
- +- * HashAggregate (41)
+ +- * SortAggregate (42)
+ +- * SortAggregate (41)
+- * Project (40)
+- * BroadcastHashJoin Inner BuildRight (39)
:- * Project (33)
@@ -226,14 +226,14 @@ Join condition: None
Output [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7]
Input [5]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7, cc_call_center_sk#18]
-(41) HashAggregate [codegen id : 11]
+(41) SortAggregate [codegen id : 11]
Input [3]: [cs_order_number#5, cs_ext_ship_cost#6, cs_net_profit#7]
Keys [1]: [cs_order_number#5]
Functions [2]: [partial_sum(UnscaledValue(cs_ext_ship_cost#6)), partial_sum(UnscaledValue(cs_net_profit#7))]
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#20, sum(UnscaledValue(cs_net_profit#7))#21]
Results [3]: [cs_order_number#5, sum#22, sum#23]
-(42) HashAggregate [codegen id : 11]
+(42) SortAggregate [codegen id : 11]
Input [3]: [cs_order_number#5, sum#22, sum#23]
Keys [1]: [cs_order_number#5]
Functions [2]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(UnscaledValue(cs_net_profit#7))]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/simplified.txt
index 89eda335dd4a..9c033ba1bdcd 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q16/simplified.txt
@@ -4,8 +4,8 @@ WholeStageCodegen (12)
Exchange #1
WholeStageCodegen (11)
HashAggregate [sum,sum,cs_order_number] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),count,sum,sum,count]
- HashAggregate [cs_order_number,sum,sum] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum]
- HashAggregate [cs_order_number,cs_ext_ship_cost,cs_net_profit] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
+ SortAggregate [cs_order_number,sum,sum] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum]
+ SortAggregate [cs_order_number,cs_ext_ship_cost,cs_net_profit] [sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
Project [cs_order_number,cs_ext_ship_cost,cs_net_profit]
BroadcastHashJoin [cs_call_center_sk,cc_call_center_sk]
Project [cs_call_center_sk,cs_order_number,cs_ext_ship_cost,cs_net_profit]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/explain.txt
index bfc1aa32c7ce..6544d3d96d31 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/explain.txt
@@ -1,94 +1,88 @@
== Physical Plan ==
-* HashAggregate (90)
-+- Exchange (89)
- +- * HashAggregate (88)
- +- Union (87)
- :- * Project (51)
- : +- * BroadcastHashJoin Inner BuildRight (50)
- : :- * Project (48)
- : : +- * SortMergeJoin LeftSemi (47)
- : : :- * Sort (28)
- : : : +- Exchange (27)
- : : : +- * Project (26)
- : : : +- * SortMergeJoin LeftSemi (25)
+* HashAggregate (84)
++- Exchange (83)
+ +- * HashAggregate (82)
+ +- Union (81)
+ :- * Project (48)
+ : +- * BroadcastHashJoin Inner BuildRight (47)
+ : :- * Project (45)
+ : : +- * SortMergeJoin LeftSemi (44)
+ : : :- * Sort (27)
+ : : : +- Exchange (26)
+ : : : +- * Project (25)
+ : : : +- * SortMergeJoin LeftSemi (24)
: : : :- * Sort (4)
: : : : +- Exchange (3)
: : : : +- * ColumnarToRow (2)
: : : : +- Scan parquet spark_catalog.default.catalog_sales (1)
- : : : +- * Sort (24)
- : : : +- * Project (23)
- : : : +- * Filter (22)
- : : : +- * HashAggregate (21)
- : : : +- * HashAggregate (20)
- : : : +- * Project (19)
- : : : +- * SortMergeJoin Inner (18)
- : : : :- * Sort (12)
- : : : : +- Exchange (11)
- : : : : +- * Project (10)
- : : : : +- * BroadcastHashJoin Inner BuildRight (9)
- : : : : :- * Filter (7)
- : : : : : +- * ColumnarToRow (6)
- : : : : : +- Scan parquet spark_catalog.default.store_sales (5)
- : : : : +- ReusedExchange (8)
- : : : +- * Sort (17)
- : : : +- Exchange (16)
- : : : +- * Filter (15)
- : : : +- * ColumnarToRow (14)
- : : : +- Scan parquet spark_catalog.default.item (13)
- : : +- * Sort (46)
- : : +- * Project (45)
- : : +- * Filter (44)
- : : +- * HashAggregate (43)
- : : +- * HashAggregate (42)
- : : +- * Project (41)
- : : +- * SortMergeJoin Inner (40)
- : : :- * Sort (34)
- : : : +- Exchange (33)
- : : : +- * Project (32)
- : : : +- * Filter (31)
- : : : +- * ColumnarToRow (30)
- : : : +- Scan parquet spark_catalog.default.store_sales (29)
- : : +- * Sort (39)
- : : +- Exchange (38)
- : : +- * Filter (37)
- : : +- * ColumnarToRow (36)
- : : +- Scan parquet spark_catalog.default.customer (35)
- : +- ReusedExchange (49)
- +- * Project (86)
- +- * BroadcastHashJoin Inner BuildRight (85)
- :- * Project (83)
- : +- * SortMergeJoin LeftSemi (82)
- : :- * Sort (70)
- : : +- Exchange (69)
- : : +- * Project (68)
- : : +- * SortMergeJoin LeftSemi (67)
- : : :- * Sort (55)
- : : : +- Exchange (54)
- : : : +- * ColumnarToRow (53)
- : : : +- Scan parquet spark_catalog.default.web_sales (52)
- : : +- * Sort (66)
- : : +- * Project (65)
- : : +- * Filter (64)
- : : +- * HashAggregate (63)
- : : +- * HashAggregate (62)
- : : +- * Project (61)
- : : +- * SortMergeJoin Inner (60)
- : : :- * Sort (57)
- : : : +- ReusedExchange (56)
- : : +- * Sort (59)
- : : +- ReusedExchange (58)
- : +- * Sort (81)
- : +- * Project (80)
- : +- * Filter (79)
- : +- * HashAggregate (78)
- : +- * HashAggregate (77)
- : +- * Project (76)
- : +- * SortMergeJoin Inner (75)
- : :- * Sort (72)
- : : +- ReusedExchange (71)
- : +- * Sort (74)
- : +- ReusedExchange (73)
- +- ReusedExchange (84)
+ : : : +- * Sort (23)
+ : : : +- * Project (22)
+ : : : +- * Filter (21)
+ : : : +- * HashAggregate (20)
+ : : : +- * Project (19)
+ : : : +- * SortMergeJoin Inner (18)
+ : : : :- * Sort (12)
+ : : : : +- Exchange (11)
+ : : : : +- * Project (10)
+ : : : : +- * BroadcastHashJoin Inner BuildRight (9)
+ : : : : :- * Filter (7)
+ : : : : : +- * ColumnarToRow (6)
+ : : : : : +- Scan parquet spark_catalog.default.store_sales (5)
+ : : : : +- ReusedExchange (8)
+ : : : +- * Sort (17)
+ : : : +- Exchange (16)
+ : : : +- * Filter (15)
+ : : : +- * ColumnarToRow (14)
+ : : : +- Scan parquet spark_catalog.default.item (13)
+ : : +- * Project (43)
+ : : +- * Filter (42)
+ : : +- * SortAggregate (41)
+ : : +- * Project (40)
+ : : +- * SortMergeJoin Inner (39)
+ : : :- * Sort (33)
+ : : : +- Exchange (32)
+ : : : +- * Project (31)
+ : : : +- * Filter (30)
+ : : : +- * ColumnarToRow (29)
+ : : : +- Scan parquet spark_catalog.default.store_sales (28)
+ : : +- * Sort (38)
+ : : +- Exchange (37)
+ : : +- * Filter (36)
+ : : +- * ColumnarToRow (35)
+ : : +- Scan parquet spark_catalog.default.customer (34)
+ : +- ReusedExchange (46)
+ +- * Project (80)
+ +- * BroadcastHashJoin Inner BuildRight (79)
+ :- * Project (77)
+ : +- * SortMergeJoin LeftSemi (76)
+ : :- * Sort (66)
+ : : +- Exchange (65)
+ : : +- * Project (64)
+ : : +- * SortMergeJoin LeftSemi (63)
+ : : :- * Sort (52)
+ : : : +- Exchange (51)
+ : : : +- * ColumnarToRow (50)
+ : : : +- Scan parquet spark_catalog.default.web_sales (49)
+ : : +- * Sort (62)
+ : : +- * Project (61)
+ : : +- * Filter (60)
+ : : +- * HashAggregate (59)
+ : : +- * Project (58)
+ : : +- * SortMergeJoin Inner (57)
+ : : :- * Sort (54)
+ : : : +- ReusedExchange (53)
+ : : +- * Sort (56)
+ : : +- ReusedExchange (55)
+ : +- * Project (75)
+ : +- * Filter (74)
+ : +- * SortAggregate (73)
+ : +- * Project (72)
+ : +- * SortMergeJoin Inner (71)
+ : :- * Sort (68)
+ : : +- ReusedExchange (67)
+ : +- * Sort (70)
+ : +- ReusedExchange (69)
+ +- ReusedExchange (78)
(1) Scan parquet spark_catalog.default.catalog_sales
@@ -124,7 +118,7 @@ Input [2]: [ss_item_sk#7, ss_sold_date_sk#8]
Input [2]: [ss_item_sk#7, ss_sold_date_sk#8]
Condition : isnotnull(ss_item_sk#7)
-(8) ReusedExchange [Reuses operator id: 100]
+(8) ReusedExchange [Reuses operator id: 94]
Output [2]: [d_date_sk#10, d_date#11]
(9) BroadcastHashJoin [codegen id : 4]
@@ -180,532 +174,488 @@ Input [4]: [ss_item_sk#7, d_date#11, i_item_sk#12, i_item_desc#13]
(20) HashAggregate [codegen id : 8]
Input [3]: [d_date#11, i_item_sk#12, _groupingexpression#14]
Keys [3]: [_groupingexpression#14, i_item_sk#12, d_date#11]
-Functions [1]: [partial_count(1)]
-Aggregate Attributes [1]: [count#15]
-Results [4]: [_groupingexpression#14, i_item_sk#12, d_date#11, count#16]
-
-(21) HashAggregate [codegen id : 8]
-Input [4]: [_groupingexpression#14, i_item_sk#12, d_date#11, count#16]
-Keys [3]: [_groupingexpression#14, i_item_sk#12, d_date#11]
Functions [1]: [count(1)]
-Aggregate Attributes [1]: [count(1)#17]
-Results [2]: [i_item_sk#12 AS item_sk#18, count(1)#17 AS cnt#19]
+Aggregate Attributes [1]: [count(1)#15]
+Results [2]: [i_item_sk#12 AS item_sk#16, count(1)#15 AS cnt#17]
-(22) Filter [codegen id : 8]
-Input [2]: [item_sk#18, cnt#19]
-Condition : (cnt#19 > 4)
+(21) Filter [codegen id : 8]
+Input [2]: [item_sk#16, cnt#17]
+Condition : (cnt#17 > 4)
-(23) Project [codegen id : 8]
-Output [1]: [item_sk#18]
-Input [2]: [item_sk#18, cnt#19]
+(22) Project [codegen id : 8]
+Output [1]: [item_sk#16]
+Input [2]: [item_sk#16, cnt#17]
-(24) Sort [codegen id : 8]
-Input [1]: [item_sk#18]
-Arguments: [item_sk#18 ASC NULLS FIRST], false, 0
+(23) Sort [codegen id : 8]
+Input [1]: [item_sk#16]
+Arguments: [item_sk#16 ASC NULLS FIRST], false, 0
-(25) SortMergeJoin [codegen id : 9]
+(24) SortMergeJoin [codegen id : 9]
Left keys [1]: [cs_item_sk#2]
-Right keys [1]: [item_sk#18]
+Right keys [1]: [item_sk#16]
Join type: LeftSemi
Join condition: None
-(26) Project [codegen id : 9]
+(25) Project [codegen id : 9]
Output [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Input [5]: [cs_bill_customer_sk#1, cs_item_sk#2, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
-(27) Exchange
+(26) Exchange
Input [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Arguments: hashpartitioning(cs_bill_customer_sk#1, 5), ENSURE_REQUIREMENTS, [plan_id=4]
-(28) Sort [codegen id : 10]
+(27) Sort [codegen id : 10]
Input [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Arguments: [cs_bill_customer_sk#1 ASC NULLS FIRST], false, 0
-(29) Scan parquet spark_catalog.default.store_sales
-Output [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
+(28) Scan parquet spark_catalog.default.store_sales
+Output [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_customer_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2)>
-(30) ColumnarToRow [codegen id : 11]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
+(29) ColumnarToRow [codegen id : 11]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
-(31) Filter [codegen id : 11]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
-Condition : isnotnull(ss_customer_sk#20)
+(30) Filter [codegen id : 11]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
+Condition : isnotnull(ss_customer_sk#18)
-(32) Project [codegen id : 11]
-Output [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
+(31) Project [codegen id : 11]
+Output [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
-(33) Exchange
-Input [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Arguments: hashpartitioning(ss_customer_sk#20, 5), ENSURE_REQUIREMENTS, [plan_id=5]
+(32) Exchange
+Input [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Arguments: hashpartitioning(ss_customer_sk#18, 5), ENSURE_REQUIREMENTS, [plan_id=5]
-(34) Sort [codegen id : 12]
-Input [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Arguments: [ss_customer_sk#20 ASC NULLS FIRST], false, 0
+(33) Sort [codegen id : 12]
+Input [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Arguments: [ss_customer_sk#18 ASC NULLS FIRST], false, 0
-(35) Scan parquet spark_catalog.default.customer
-Output [1]: [c_customer_sk#24]
+(34) Scan parquet spark_catalog.default.customer
+Output [1]: [c_customer_sk#22]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int>
-(36) ColumnarToRow [codegen id : 13]
-Input [1]: [c_customer_sk#24]
+(35) ColumnarToRow [codegen id : 13]
+Input [1]: [c_customer_sk#22]
-(37) Filter [codegen id : 13]
-Input [1]: [c_customer_sk#24]
-Condition : isnotnull(c_customer_sk#24)
+(36) Filter [codegen id : 13]
+Input [1]: [c_customer_sk#22]
+Condition : isnotnull(c_customer_sk#22)
-(38) Exchange
-Input [1]: [c_customer_sk#24]
-Arguments: hashpartitioning(c_customer_sk#24, 5), ENSURE_REQUIREMENTS, [plan_id=6]
+(37) Exchange
+Input [1]: [c_customer_sk#22]
+Arguments: hashpartitioning(c_customer_sk#22, 5), ENSURE_REQUIREMENTS, [plan_id=6]
-(39) Sort [codegen id : 14]
-Input [1]: [c_customer_sk#24]
-Arguments: [c_customer_sk#24 ASC NULLS FIRST], false, 0
+(38) Sort [codegen id : 14]
+Input [1]: [c_customer_sk#22]
+Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0
-(40) SortMergeJoin [codegen id : 15]
-Left keys [1]: [ss_customer_sk#20]
-Right keys [1]: [c_customer_sk#24]
+(39) SortMergeJoin [codegen id : 15]
+Left keys [1]: [ss_customer_sk#18]
+Right keys [1]: [c_customer_sk#22]
Join type: Inner
Join condition: None
-(41) Project [codegen id : 15]
-Output [3]: [ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-
-(42) HashAggregate [codegen id : 15]
-Input [3]: [ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-Keys [1]: [c_customer_sk#24]
-Functions [1]: [partial_sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))]
-Aggregate Attributes [2]: [sum#25, isEmpty#26]
-Results [3]: [c_customer_sk#24, sum#27, isEmpty#28]
-
-(43) HashAggregate [codegen id : 15]
-Input [3]: [c_customer_sk#24, sum#27, isEmpty#28]
-Keys [1]: [c_customer_sk#24]
-Functions [1]: [sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))#29]
-Results [2]: [c_customer_sk#24, sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))#29 AS ssales#30]
-
-(44) Filter [codegen id : 15]
-Input [2]: [c_customer_sk#24, ssales#30]
-Condition : (isnotnull(ssales#30) AND (cast(ssales#30 as decimal(38,8)) > (0.500000 * Subquery scalar-subquery#31, [id=#7])))
-
-(45) Project [codegen id : 15]
-Output [1]: [c_customer_sk#24]
-Input [2]: [c_customer_sk#24, ssales#30]
-
-(46) Sort [codegen id : 15]
-Input [1]: [c_customer_sk#24]
-Arguments: [c_customer_sk#24 ASC NULLS FIRST], false, 0
-
-(47) SortMergeJoin [codegen id : 17]
+(40) Project [codegen id : 15]
+Output [3]: [ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+
+(41) SortAggregate [codegen id : 15]
+Input [3]: [ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+Keys [1]: [c_customer_sk#22]
+Functions [1]: [sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))#23]
+Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))#23 AS ssales#24]
+
+(42) Filter [codegen id : 15]
+Input [2]: [c_customer_sk#22, ssales#24]
+Condition : (isnotnull(ssales#24) AND (cast(ssales#24 as decimal(38,8)) > (0.500000 * Subquery scalar-subquery#25, [id=#7])))
+
+(43) Project [codegen id : 15]
+Output [1]: [c_customer_sk#22]
+Input [2]: [c_customer_sk#22, ssales#24]
+
+(44) SortMergeJoin [codegen id : 17]
Left keys [1]: [cs_bill_customer_sk#1]
-Right keys [1]: [c_customer_sk#24]
+Right keys [1]: [c_customer_sk#22]
Join type: LeftSemi
Join condition: None
-(48) Project [codegen id : 17]
+(45) Project [codegen id : 17]
Output [3]: [cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Input [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
-(49) ReusedExchange [Reuses operator id: 95]
-Output [1]: [d_date_sk#32]
+(46) ReusedExchange [Reuses operator id: 89]
+Output [1]: [d_date_sk#26]
-(50) BroadcastHashJoin [codegen id : 17]
+(47) BroadcastHashJoin [codegen id : 17]
Left keys [1]: [cs_sold_date_sk#5]
-Right keys [1]: [d_date_sk#32]
+Right keys [1]: [d_date_sk#26]
Join type: Inner
Join condition: None
-(51) Project [codegen id : 17]
-Output [1]: [(cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4) AS sales#33]
-Input [4]: [cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5, d_date_sk#32]
+(48) Project [codegen id : 17]
+Output [1]: [(cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4) AS sales#27]
+Input [4]: [cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5, d_date_sk#26]
-(52) Scan parquet spark_catalog.default.web_sales
-Output [5]: [ws_item_sk#34, ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
+(49) Scan parquet spark_catalog.default.web_sales
+Output [5]: [ws_item_sk#28, ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
Batched: true
Location: InMemoryFileIndex []
-PartitionFilters: [isnotnull(ws_sold_date_sk#38), dynamicpruningexpression(ws_sold_date_sk#38 IN dynamicpruning#6)]
+PartitionFilters: [isnotnull(ws_sold_date_sk#32), dynamicpruningexpression(ws_sold_date_sk#32 IN dynamicpruning#6)]
ReadSchema: struct<ws_item_sk:int,ws_bill_customer_sk:int,ws_quantity:int,ws_list_price:decimal(7,2)>
-(53) ColumnarToRow [codegen id : 18]
-Input [5]: [ws_item_sk#34, ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
+(50) ColumnarToRow [codegen id : 18]
+Input [5]: [ws_item_sk#28, ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
-(54) Exchange
-Input [5]: [ws_item_sk#34, ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
-Arguments: hashpartitioning(ws_item_sk#34, 5), ENSURE_REQUIREMENTS, [plan_id=8]
+(51) Exchange
+Input [5]: [ws_item_sk#28, ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
+Arguments: hashpartitioning(ws_item_sk#28, 5), ENSURE_REQUIREMENTS, [plan_id=8]
-(55) Sort [codegen id : 19]
-Input [5]: [ws_item_sk#34, ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
-Arguments: [ws_item_sk#34 ASC NULLS FIRST], false, 0
+(52) Sort [codegen id : 19]
+Input [5]: [ws_item_sk#28, ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
+Arguments: [ws_item_sk#28 ASC NULLS FIRST], false, 0
-(56) ReusedExchange [Reuses operator id: 11]
-Output [2]: [ss_item_sk#39, d_date#40]
+(53) ReusedExchange [Reuses operator id: 11]
+Output [2]: [ss_item_sk#33, d_date#34]
-(57) Sort [codegen id : 22]
-Input [2]: [ss_item_sk#39, d_date#40]
-Arguments: [ss_item_sk#39 ASC NULLS FIRST], false, 0
+(54) Sort [codegen id : 22]
+Input [2]: [ss_item_sk#33, d_date#34]
+Arguments: [ss_item_sk#33 ASC NULLS FIRST], false, 0
-(58) ReusedExchange [Reuses operator id: 16]
-Output [2]: [i_item_sk#41, i_item_desc#42]
+(55) ReusedExchange [Reuses operator id: 16]
+Output [2]: [i_item_sk#35, i_item_desc#36]
-(59) Sort [codegen id : 24]
-Input [2]: [i_item_sk#41, i_item_desc#42]
-Arguments: [i_item_sk#41 ASC NULLS FIRST], false, 0
+(56) Sort [codegen id : 24]
+Input [2]: [i_item_sk#35, i_item_desc#36]
+Arguments: [i_item_sk#35 ASC NULLS FIRST], false, 0
-(60) SortMergeJoin [codegen id : 25]
-Left keys [1]: [ss_item_sk#39]
-Right keys [1]: [i_item_sk#41]
+(57) SortMergeJoin [codegen id : 25]
+Left keys [1]: [ss_item_sk#33]
+Right keys [1]: [i_item_sk#35]
Join type: Inner
Join condition: None
-(61) Project [codegen id : 25]
-Output [3]: [d_date#40, i_item_sk#41, substr(i_item_desc#42, 1, 30) AS _groupingexpression#43]
-Input [4]: [ss_item_sk#39, d_date#40, i_item_sk#41, i_item_desc#42]
-
-(62) HashAggregate [codegen id : 25]
-Input [3]: [d_date#40, i_item_sk#41, _groupingexpression#43]
-Keys [3]: [_groupingexpression#43, i_item_sk#41, d_date#40]
-Functions [1]: [partial_count(1)]
-Aggregate Attributes [1]: [count#15]
-Results [4]: [_groupingexpression#43, i_item_sk#41, d_date#40, count#16]
-
-(63) HashAggregate [codegen id : 25]
-Input [4]: [_groupingexpression#43, i_item_sk#41, d_date#40, count#16]
-Keys [3]: [_groupingexpression#43, i_item_sk#41, d_date#40]
+(58) Project [codegen id : 25]
+Output [3]: [d_date#34, i_item_sk#35, substr(i_item_desc#36, 1, 30) AS _groupingexpression#37]
+Input [4]: [ss_item_sk#33, d_date#34, i_item_sk#35, i_item_desc#36]
+
+(59) HashAggregate [codegen id : 25]
+Input [3]: [d_date#34, i_item_sk#35, _groupingexpression#37]
+Keys [3]: [_groupingexpression#37, i_item_sk#35, d_date#34]
Functions [1]: [count(1)]
-Aggregate Attributes [1]: [count(1)#17]
-Results [2]: [i_item_sk#41 AS item_sk#44, count(1)#17 AS cnt#45]
+Aggregate Attributes [1]: [count(1)#15]
+Results [2]: [i_item_sk#35 AS item_sk#38, count(1)#15 AS cnt#39]
-(64) Filter [codegen id : 25]
-Input [2]: [item_sk#44, cnt#45]
-Condition : (cnt#45 > 4)
+(60) Filter [codegen id : 25]
+Input [2]: [item_sk#38, cnt#39]
+Condition : (cnt#39 > 4)
-(65) Project [codegen id : 25]
-Output [1]: [item_sk#44]
-Input [2]: [item_sk#44, cnt#45]
+(61) Project [codegen id : 25]
+Output [1]: [item_sk#38]
+Input [2]: [item_sk#38, cnt#39]
-(66) Sort [codegen id : 25]
-Input [1]: [item_sk#44]
-Arguments: [item_sk#44 ASC NULLS FIRST], false, 0
+(62) Sort [codegen id : 25]
+Input [1]: [item_sk#38]
+Arguments: [item_sk#38 ASC NULLS FIRST], false, 0
-(67) SortMergeJoin [codegen id : 26]
-Left keys [1]: [ws_item_sk#34]
-Right keys [1]: [item_sk#44]
+(63) SortMergeJoin [codegen id : 26]
+Left keys [1]: [ws_item_sk#28]
+Right keys [1]: [item_sk#38]
Join type: LeftSemi
Join condition: None
-(68) Project [codegen id : 26]
-Output [4]: [ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
-Input [5]: [ws_item_sk#34, ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
+(64) Project [codegen id : 26]
+Output [4]: [ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
+Input [5]: [ws_item_sk#28, ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
-(69) Exchange
-Input [4]: [ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
-Arguments: hashpartitioning(ws_bill_customer_sk#35, 5), ENSURE_REQUIREMENTS, [plan_id=9]
+(65) Exchange
+Input [4]: [ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
+Arguments: hashpartitioning(ws_bill_customer_sk#29, 5), ENSURE_REQUIREMENTS, [plan_id=9]
-(70) Sort [codegen id : 27]
-Input [4]: [ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
-Arguments: [ws_bill_customer_sk#35 ASC NULLS FIRST], false, 0
+(66) Sort [codegen id : 27]
+Input [4]: [ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
+Arguments: [ws_bill_customer_sk#29 ASC NULLS FIRST], false, 0
-(71) ReusedExchange [Reuses operator id: 33]
-Output [3]: [ss_customer_sk#46, ss_quantity#47, ss_sales_price#48]
+(67) ReusedExchange [Reuses operator id: 32]
+Output [3]: [ss_customer_sk#40, ss_quantity#41, ss_sales_price#42]
-(72) Sort [codegen id : 29]
-Input [3]: [ss_customer_sk#46, ss_quantity#47, ss_sales_price#48]
-Arguments: [ss_customer_sk#46 ASC NULLS FIRST], false, 0
+(68) Sort [codegen id : 29]
+Input [3]: [ss_customer_sk#40, ss_quantity#41, ss_sales_price#42]
+Arguments: [ss_customer_sk#40 ASC NULLS FIRST], false, 0
-(73) ReusedExchange [Reuses operator id: 38]
-Output [1]: [c_customer_sk#49]
+(69) ReusedExchange [Reuses operator id: 37]
+Output [1]: [c_customer_sk#43]
-(74) Sort [codegen id : 31]
-Input [1]: [c_customer_sk#49]
-Arguments: [c_customer_sk#49 ASC NULLS FIRST], false, 0
+(70) Sort [codegen id : 31]
+Input [1]: [c_customer_sk#43]
+Arguments: [c_customer_sk#43 ASC NULLS FIRST], false, 0
-(75) SortMergeJoin [codegen id : 32]
-Left keys [1]: [ss_customer_sk#46]
-Right keys [1]: [c_customer_sk#49]
+(71) SortMergeJoin [codegen id : 32]
+Left keys [1]: [ss_customer_sk#40]
+Right keys [1]: [c_customer_sk#43]
Join type: Inner
Join condition: None
-(76) Project [codegen id : 32]
-Output [3]: [ss_quantity#47, ss_sales_price#48, c_customer_sk#49]
-Input [4]: [ss_customer_sk#46, ss_quantity#47, ss_sales_price#48, c_customer_sk#49]
-
-(77) HashAggregate [codegen id : 32]
-Input [3]: [ss_quantity#47, ss_sales_price#48, c_customer_sk#49]
-Keys [1]: [c_customer_sk#49]
-Functions [1]: [partial_sum((cast(ss_quantity#47 as decimal(10,0)) * ss_sales_price#48))]
-Aggregate Attributes [2]: [sum#50, isEmpty#51]
-Results [3]: [c_customer_sk#49, sum#52, isEmpty#53]
-
-(78) HashAggregate [codegen id : 32]
-Input [3]: [c_customer_sk#49, sum#52, isEmpty#53]
-Keys [1]: [c_customer_sk#49]
-Functions [1]: [sum((cast(ss_quantity#47 as decimal(10,0)) * ss_sales_price#48))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#47 as decimal(10,0)) * ss_sales_price#48))#29]
-Results [2]: [c_customer_sk#49, sum((cast(ss_quantity#47 as decimal(10,0)) * ss_sales_price#48))#29 AS ssales#54]
-
-(79) Filter [codegen id : 32]
-Input [2]: [c_customer_sk#49, ssales#54]
-Condition : (isnotnull(ssales#54) AND (cast(ssales#54 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#31, [id=#7])))
-
-(80) Project [codegen id : 32]
-Output [1]: [c_customer_sk#49]
-Input [2]: [c_customer_sk#49, ssales#54]
-
-(81) Sort [codegen id : 32]
-Input [1]: [c_customer_sk#49]
-Arguments: [c_customer_sk#49 ASC NULLS FIRST], false, 0
-
-(82) SortMergeJoin [codegen id : 34]
-Left keys [1]: [ws_bill_customer_sk#35]
-Right keys [1]: [c_customer_sk#49]
+(72) Project [codegen id : 32]
+Output [3]: [ss_quantity#41, ss_sales_price#42, c_customer_sk#43]
+Input [4]: [ss_customer_sk#40, ss_quantity#41, ss_sales_price#42, c_customer_sk#43]
+
+(73) SortAggregate [codegen id : 32]
+Input [3]: [ss_quantity#41, ss_sales_price#42, c_customer_sk#43]
+Keys [1]: [c_customer_sk#43]
+Functions [1]: [sum((cast(ss_quantity#41 as decimal(10,0)) * ss_sales_price#42))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#41 as decimal(10,0)) * ss_sales_price#42))#23]
+Results [2]: [c_customer_sk#43, sum((cast(ss_quantity#41 as decimal(10,0)) * ss_sales_price#42))#23 AS ssales#44]
+
+(74) Filter [codegen id : 32]
+Input [2]: [c_customer_sk#43, ssales#44]
+Condition : (isnotnull(ssales#44) AND (cast(ssales#44 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#25, [id=#7])))
+
+(75) Project [codegen id : 32]
+Output [1]: [c_customer_sk#43]
+Input [2]: [c_customer_sk#43, ssales#44]
+
+(76) SortMergeJoin [codegen id : 34]
+Left keys [1]: [ws_bill_customer_sk#29]
+Right keys [1]: [c_customer_sk#43]
Join type: LeftSemi
Join condition: None
-(83) Project [codegen id : 34]
-Output [3]: [ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
-Input [4]: [ws_bill_customer_sk#35, ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38]
+(77) Project [codegen id : 34]
+Output [3]: [ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
+Input [4]: [ws_bill_customer_sk#29, ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32]
-(84) ReusedExchange [Reuses operator id: 95]
-Output [1]: [d_date_sk#55]
+(78) ReusedExchange [Reuses operator id: 89]
+Output [1]: [d_date_sk#45]
-(85) BroadcastHashJoin [codegen id : 34]
-Left keys [1]: [ws_sold_date_sk#38]
-Right keys [1]: [d_date_sk#55]
+(79) BroadcastHashJoin [codegen id : 34]
+Left keys [1]: [ws_sold_date_sk#32]
+Right keys [1]: [d_date_sk#45]
Join type: Inner
Join condition: None
-(86) Project [codegen id : 34]
-Output [1]: [(cast(ws_quantity#36 as decimal(10,0)) * ws_list_price#37) AS sales#56]
-Input [4]: [ws_quantity#36, ws_list_price#37, ws_sold_date_sk#38, d_date_sk#55]
+(80) Project [codegen id : 34]
+Output [1]: [(cast(ws_quantity#30 as decimal(10,0)) * ws_list_price#31) AS sales#46]
+Input [4]: [ws_quantity#30, ws_list_price#31, ws_sold_date_sk#32, d_date_sk#45]
-(87) Union
+(81) Union
-(88) HashAggregate [codegen id : 35]
-Input [1]: [sales#33]
+(82) HashAggregate [codegen id : 35]
+Input [1]: [sales#27]
Keys: []
-Functions [1]: [partial_sum(sales#33)]
-Aggregate Attributes [2]: [sum#57, isEmpty#58]
-Results [2]: [sum#59, isEmpty#60]
+Functions [1]: [partial_sum(sales#27)]
+Aggregate Attributes [2]: [sum#47, isEmpty#48]
+Results [2]: [sum#49, isEmpty#50]
-(89) Exchange
-Input [2]: [sum#59, isEmpty#60]
+(83) Exchange
+Input [2]: [sum#49, isEmpty#50]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=10]
-(90) HashAggregate [codegen id : 36]
-Input [2]: [sum#59, isEmpty#60]
+(84) HashAggregate [codegen id : 36]
+Input [2]: [sum#49, isEmpty#50]
Keys: []
-Functions [1]: [sum(sales#33)]
-Aggregate Attributes [1]: [sum(sales#33)#61]
-Results [1]: [sum(sales#33)#61 AS sum(sales)#62]
+Functions [1]: [sum(sales#27)]
+Aggregate Attributes [1]: [sum(sales#27)#51]
+Results [1]: [sum(sales#27)#51 AS sum(sales)#52]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#5 IN dynamicpruning#6
-BroadcastExchange (95)
-+- * Project (94)
- +- * Filter (93)
- +- * ColumnarToRow (92)
- +- Scan parquet spark_catalog.default.date_dim (91)
+BroadcastExchange (89)
++- * Project (88)
+ +- * Filter (87)
+ +- * ColumnarToRow (86)
+ +- Scan parquet spark_catalog.default.date_dim (85)
-(91) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#32, d_year#63, d_moy#64]
+(85) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#26, d_year#53, d_moy#54]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(92) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#32, d_year#63, d_moy#64]
+(86) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#26, d_year#53, d_moy#54]
-(93) Filter [codegen id : 1]
-Input [3]: [d_date_sk#32, d_year#63, d_moy#64]
-Condition : ((((isnotnull(d_year#63) AND isnotnull(d_moy#64)) AND (d_year#63 = 2000)) AND (d_moy#64 = 2)) AND isnotnull(d_date_sk#32))
+(87) Filter [codegen id : 1]
+Input [3]: [d_date_sk#26, d_year#53, d_moy#54]
+Condition : ((((isnotnull(d_year#53) AND isnotnull(d_moy#54)) AND (d_year#53 = 2000)) AND (d_moy#54 = 2)) AND isnotnull(d_date_sk#26))
-(94) Project [codegen id : 1]
-Output [1]: [d_date_sk#32]
-Input [3]: [d_date_sk#32, d_year#63, d_moy#64]
+(88) Project [codegen id : 1]
+Output [1]: [d_date_sk#26]
+Input [3]: [d_date_sk#26, d_year#53, d_moy#54]
-(95) BroadcastExchange
-Input [1]: [d_date_sk#32]
+(89) BroadcastExchange
+Input [1]: [d_date_sk#26]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=11]
Subquery:2 Hosting operator id = 5 Hosting Expression = ss_sold_date_sk#8 IN dynamicpruning#9
-BroadcastExchange (100)
-+- * Project (99)
- +- * Filter (98)
- +- * ColumnarToRow (97)
- +- Scan parquet spark_catalog.default.date_dim (96)
+BroadcastExchange (94)
++- * Project (93)
+ +- * Filter (92)
+ +- * ColumnarToRow (91)
+ +- Scan parquet spark_catalog.default.date_dim (90)
-(96) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#10, d_date#11, d_year#65]
+(90) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#10, d_date#11, d_year#55]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_year:int>
-(97) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#10, d_date#11, d_year#65]
+(91) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#10, d_date#11, d_year#55]
-(98) Filter [codegen id : 1]
-Input [3]: [d_date_sk#10, d_date#11, d_year#65]
-Condition : (d_year#65 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#10))
+(92) Filter [codegen id : 1]
+Input [3]: [d_date_sk#10, d_date#11, d_year#55]
+Condition : (d_year#55 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#10))
-(99) Project [codegen id : 1]
+(93) Project [codegen id : 1]
Output [2]: [d_date_sk#10, d_date#11]
-Input [3]: [d_date_sk#10, d_date#11, d_year#65]
+Input [3]: [d_date_sk#10, d_date#11, d_year#55]
-(100) BroadcastExchange
+(94) BroadcastExchange
Input [2]: [d_date_sk#10, d_date#11]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=12]
-Subquery:3 Hosting operator id = 44 Hosting Expression = Subquery scalar-subquery#31, [id=#7]
-* HashAggregate (117)
-+- Exchange (116)
- +- * HashAggregate (115)
- +- * HashAggregate (114)
- +- * HashAggregate (113)
- +- * Project (112)
- +- * SortMergeJoin Inner (111)
- :- * Sort (108)
- : +- Exchange (107)
- : +- * Project (106)
- : +- * BroadcastHashJoin Inner BuildRight (105)
- : :- * Filter (103)
- : : +- * ColumnarToRow (102)
- : : +- Scan parquet spark_catalog.default.store_sales (101)
- : +- ReusedExchange (104)
- +- * Sort (110)
- +- ReusedExchange (109)
-
-
-(101) Scan parquet spark_catalog.default.store_sales
-Output [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69]
+Subquery:3 Hosting operator id = 42 Hosting Expression = Subquery scalar-subquery#25, [id=#7]
+* HashAggregate (110)
++- Exchange (109)
+ +- * HashAggregate (108)
+ +- * SortAggregate (107)
+ +- * Project (106)
+ +- * SortMergeJoin Inner (105)
+ :- * Sort (102)
+ : +- Exchange (101)
+ : +- * Project (100)
+ : +- * BroadcastHashJoin Inner BuildRight (99)
+ : :- * Filter (97)
+ : : +- * ColumnarToRow (96)
+ : : +- Scan parquet spark_catalog.default.store_sales (95)
+ : +- ReusedExchange (98)
+ +- * Sort (104)
+ +- ReusedExchange (103)
+
+
+(95) Scan parquet spark_catalog.default.store_sales
+Output [4]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58, ss_sold_date_sk#59]
Batched: true
Location: InMemoryFileIndex []
-PartitionFilters: [isnotnull(ss_sold_date_sk#69), dynamicpruningexpression(ss_sold_date_sk#69 IN dynamicpruning#70)]
+PartitionFilters: [isnotnull(ss_sold_date_sk#59), dynamicpruningexpression(ss_sold_date_sk#59 IN dynamicpruning#60)]
PushedFilters: [IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_customer_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2)>
-(102) ColumnarToRow [codegen id : 2]
-Input [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69]
+(96) ColumnarToRow [codegen id : 2]
+Input [4]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58, ss_sold_date_sk#59]
-(103) Filter [codegen id : 2]
-Input [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69]
-Condition : isnotnull(ss_customer_sk#66)
+(97) Filter [codegen id : 2]
+Input [4]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58, ss_sold_date_sk#59]
+Condition : isnotnull(ss_customer_sk#56)
-(104) ReusedExchange [Reuses operator id: 122]
-Output [1]: [d_date_sk#71]
+(98) ReusedExchange [Reuses operator id: 115]
+Output [1]: [d_date_sk#61]
-(105) BroadcastHashJoin [codegen id : 2]
-Left keys [1]: [ss_sold_date_sk#69]
-Right keys [1]: [d_date_sk#71]
+(99) BroadcastHashJoin [codegen id : 2]
+Left keys [1]: [ss_sold_date_sk#59]
+Right keys [1]: [d_date_sk#61]
Join type: Inner
Join condition: None
-(106) Project [codegen id : 2]
-Output [3]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68]
-Input [5]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69, d_date_sk#71]
+(100) Project [codegen id : 2]
+Output [3]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58]
+Input [5]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58, ss_sold_date_sk#59, d_date_sk#61]
-(107) Exchange
-Input [3]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68]
-Arguments: hashpartitioning(ss_customer_sk#66, 5), ENSURE_REQUIREMENTS, [plan_id=13]
+(101) Exchange
+Input [3]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58]
+Arguments: hashpartitioning(ss_customer_sk#56, 5), ENSURE_REQUIREMENTS, [plan_id=13]
-(108) Sort [codegen id : 3]
-Input [3]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68]
-Arguments: [ss_customer_sk#66 ASC NULLS FIRST], false, 0
+(102) Sort [codegen id : 3]
+Input [3]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58]
+Arguments: [ss_customer_sk#56 ASC NULLS FIRST], false, 0
-(109) ReusedExchange [Reuses operator id: 38]
-Output [1]: [c_customer_sk#72]
+(103) ReusedExchange [Reuses operator id: 37]
+Output [1]: [c_customer_sk#62]
-(110) Sort [codegen id : 5]
-Input [1]: [c_customer_sk#72]
-Arguments: [c_customer_sk#72 ASC NULLS FIRST], false, 0
+(104) Sort [codegen id : 5]
+Input [1]: [c_customer_sk#62]
+Arguments: [c_customer_sk#62 ASC NULLS FIRST], false, 0
-(111) SortMergeJoin [codegen id : 6]
-Left keys [1]: [ss_customer_sk#66]
-Right keys [1]: [c_customer_sk#72]
+(105) SortMergeJoin [codegen id : 6]
+Left keys [1]: [ss_customer_sk#56]
+Right keys [1]: [c_customer_sk#62]
Join type: Inner
Join condition: None
-(112) Project [codegen id : 6]
-Output [3]: [ss_quantity#67, ss_sales_price#68, c_customer_sk#72]
-Input [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, c_customer_sk#72]
-
-(113) HashAggregate [codegen id : 6]
-Input [3]: [ss_quantity#67, ss_sales_price#68, c_customer_sk#72]
-Keys [1]: [c_customer_sk#72]
-Functions [1]: [partial_sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))]
-Aggregate Attributes [2]: [sum#73, isEmpty#74]
-Results [3]: [c_customer_sk#72, sum#75, isEmpty#76]
-
-(114) HashAggregate [codegen id : 6]
-Input [3]: [c_customer_sk#72, sum#75, isEmpty#76]
-Keys [1]: [c_customer_sk#72]
-Functions [1]: [sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))#77]
-Results [1]: [sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))#77 AS csales#78]
-
-(115) HashAggregate [codegen id : 6]
-Input [1]: [csales#78]
+(106) Project [codegen id : 6]
+Output [3]: [ss_quantity#57, ss_sales_price#58, c_customer_sk#62]
+Input [4]: [ss_customer_sk#56, ss_quantity#57, ss_sales_price#58, c_customer_sk#62]
+
+(107) SortAggregate [codegen id : 6]
+Input [3]: [ss_quantity#57, ss_sales_price#58, c_customer_sk#62]
+Keys [1]: [c_customer_sk#62]
+Functions [1]: [sum((cast(ss_quantity#57 as decimal(10,0)) * ss_sales_price#58))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#57 as decimal(10,0)) * ss_sales_price#58))#63]
+Results [1]: [sum((cast(ss_quantity#57 as decimal(10,0)) * ss_sales_price#58))#63 AS csales#64]
+
+(108) HashAggregate [codegen id : 6]
+Input [1]: [csales#64]
Keys: []
-Functions [1]: [partial_max(csales#78)]
-Aggregate Attributes [1]: [max#79]
-Results [1]: [max#80]
+Functions [1]: [partial_max(csales#64)]
+Aggregate Attributes [1]: [max#65]
+Results [1]: [max#66]
-(116) Exchange
-Input [1]: [max#80]
+(109) Exchange
+Input [1]: [max#66]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=14]
-(117) HashAggregate [codegen id : 7]
-Input [1]: [max#80]
+(110) HashAggregate [codegen id : 7]
+Input [1]: [max#66]
Keys: []
-Functions [1]: [max(csales#78)]
-Aggregate Attributes [1]: [max(csales#78)#81]
-Results [1]: [max(csales#78)#81 AS tpcds_cmax#82]
+Functions [1]: [max(csales#64)]
+Aggregate Attributes [1]: [max(csales#64)#67]
+Results [1]: [max(csales#64)#67 AS tpcds_cmax#68]
-Subquery:4 Hosting operator id = 101 Hosting Expression = ss_sold_date_sk#69 IN dynamicpruning#70
-BroadcastExchange (122)
-+- * Project (121)
- +- * Filter (120)
- +- * ColumnarToRow (119)
- +- Scan parquet spark_catalog.default.date_dim (118)
+Subquery:4 Hosting operator id = 95 Hosting Expression = ss_sold_date_sk#59 IN dynamicpruning#60
+BroadcastExchange (115)
++- * Project (114)
+ +- * Filter (113)
+ +- * ColumnarToRow (112)
+ +- Scan parquet spark_catalog.default.date_dim (111)
-(118) Scan parquet spark_catalog.default.date_dim
-Output [2]: [d_date_sk#71, d_year#83]
+(111) Scan parquet spark_catalog.default.date_dim
+Output [2]: [d_date_sk#61, d_year#69]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>
-(119) ColumnarToRow [codegen id : 1]
-Input [2]: [d_date_sk#71, d_year#83]
+(112) ColumnarToRow [codegen id : 1]
+Input [2]: [d_date_sk#61, d_year#69]
-(120) Filter [codegen id : 1]
-Input [2]: [d_date_sk#71, d_year#83]
-Condition : (d_year#83 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#71))
+(113) Filter [codegen id : 1]
+Input [2]: [d_date_sk#61, d_year#69]
+Condition : (d_year#69 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#61))
-(121) Project [codegen id : 1]
-Output [1]: [d_date_sk#71]
-Input [2]: [d_date_sk#71, d_year#83]
+(114) Project [codegen id : 1]
+Output [1]: [d_date_sk#61]
+Input [2]: [d_date_sk#61, d_year#69]
-(122) BroadcastExchange
-Input [1]: [d_date_sk#71]
+(115) BroadcastExchange
+Input [1]: [d_date_sk#61]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=15]
-Subquery:5 Hosting operator id = 52 Hosting Expression = ws_sold_date_sk#38 IN dynamicpruning#6
+Subquery:5 Hosting operator id = 49 Hosting Expression = ws_sold_date_sk#32 IN dynamicpruning#6
-Subquery:6 Hosting operator id = 79 Hosting Expression = ReusedSubquery Subquery scalar-subquery#31, [id=#7]
+Subquery:6 Hosting operator id = 74 Hosting Expression = ReusedSubquery Subquery scalar-subquery#25, [id=#7]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/simplified.txt
index 1e863dd5b1b4..8d31a28fe0a5 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23a.sf100/simplified.txt
@@ -41,110 +41,106 @@ WholeStageCodegen (36)
Sort [item_sk]
Project [item_sk]
Filter [cnt]
- HashAggregate [_groupingexpression,i_item_sk,d_date,count] [count(1),item_sk,cnt,count]
- HashAggregate [_groupingexpression,i_item_sk,d_date] [count,count]
- Project [d_date,i_item_sk,i_item_desc]
- SortMergeJoin [ss_item_sk,i_item_sk]
- InputAdapter
- WholeStageCodegen (5)
- Sort [ss_item_sk]
- InputAdapter
- Exchange [ss_item_sk] #5
- WholeStageCodegen (4)
- Project [ss_item_sk,d_date]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #2
- BroadcastExchange #6
- WholeStageCodegen (1)
- Project [d_date_sk,d_date]
- Filter [d_year,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_date,d_year]
- InputAdapter
- ReusedExchange [d_date_sk,d_date] #6
- InputAdapter
- WholeStageCodegen (7)
- Sort [i_item_sk]
- InputAdapter
- Exchange [i_item_sk] #7
- WholeStageCodegen (6)
- Filter [i_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_item_sk,i_item_desc]
- InputAdapter
- WholeStageCodegen (15)
- Sort [c_customer_sk]
- Project [c_customer_sk]
- Filter [ssales]
- Subquery #3
- WholeStageCodegen (7)
- HashAggregate [max] [max(csales),tpcds_cmax,max]
- InputAdapter
- Exchange #10
- WholeStageCodegen (6)
- HashAggregate [csales] [max,max]
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),csales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
+ HashAggregate [_groupingexpression,i_item_sk,d_date] [count(1),item_sk,cnt,count]
+ Project [d_date,i_item_sk,i_item_desc]
+ SortMergeJoin [ss_item_sk,i_item_sk]
InputAdapter
- WholeStageCodegen (3)
- Sort [ss_customer_sk]
+ WholeStageCodegen (5)
+ Sort [ss_item_sk]
InputAdapter
- Exchange [ss_customer_sk] #11
- WholeStageCodegen (2)
- Project [ss_customer_sk,ss_quantity,ss_sales_price]
+ Exchange [ss_item_sk] #5
+ WholeStageCodegen (4)
+ Project [ss_item_sk,d_date]
BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_customer_sk]
+ Filter [ss_item_sk]
ColumnarToRow
InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #4
- BroadcastExchange #12
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #2
+ BroadcastExchange #6
WholeStageCodegen (1)
- Project [d_date_sk]
+ Project [d_date_sk,d_date]
Filter [d_year,d_date_sk]
ColumnarToRow
InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year]
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_date,d_year]
InputAdapter
- ReusedExchange [d_date_sk] #12
+ ReusedExchange [d_date_sk,d_date] #6
InputAdapter
- WholeStageCodegen (5)
- Sort [c_customer_sk]
+ WholeStageCodegen (7)
+ Sort [i_item_sk]
InputAdapter
- ReusedExchange [c_customer_sk] #9
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
- InputAdapter
- WholeStageCodegen (12)
- Sort [ss_customer_sk]
- InputAdapter
- Exchange [ss_customer_sk] #8
- WholeStageCodegen (11)
- Project [ss_customer_sk,ss_quantity,ss_sales_price]
- Filter [ss_customer_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
- InputAdapter
- WholeStageCodegen (14)
- Sort [c_customer_sk]
- InputAdapter
- Exchange [c_customer_sk] #9
- WholeStageCodegen (13)
- Filter [c_customer_sk]
- ColumnarToRow
+ Exchange [i_item_sk] #7
+ WholeStageCodegen (6)
+ Filter [i_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_item_sk,i_item_desc]
+ InputAdapter
+ WholeStageCodegen (15)
+ Project [c_customer_sk]
+ Filter [ssales]
+ Subquery #3
+ WholeStageCodegen (7)
+ HashAggregate [max] [max(csales),tpcds_cmax,max]
+ InputAdapter
+ Exchange #10
+ WholeStageCodegen (6)
+ HashAggregate [csales] [max,max]
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),csales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (3)
+ Sort [ss_customer_sk]
InputAdapter
- Scan parquet spark_catalog.default.customer [c_customer_sk]
+ Exchange [ss_customer_sk] #11
+ WholeStageCodegen (2)
+ Project [ss_customer_sk,ss_quantity,ss_sales_price]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #4
+ BroadcastExchange #12
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year]
+ InputAdapter
+ ReusedExchange [d_date_sk] #12
+ InputAdapter
+ WholeStageCodegen (5)
+ Sort [c_customer_sk]
+ InputAdapter
+ ReusedExchange [c_customer_sk] #9
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (12)
+ Sort [ss_customer_sk]
+ InputAdapter
+ Exchange [ss_customer_sk] #8
+ WholeStageCodegen (11)
+ Project [ss_customer_sk,ss_quantity,ss_sales_price]
+ Filter [ss_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
+ InputAdapter
+ WholeStageCodegen (14)
+ Sort [c_customer_sk]
+ InputAdapter
+ Exchange [c_customer_sk] #9
+ WholeStageCodegen (13)
+ Filter [c_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.customer [c_customer_sk]
InputAdapter
ReusedExchange [d_date_sk] #4
WholeStageCodegen (34)
@@ -175,39 +171,36 @@ WholeStageCodegen (36)
Sort [item_sk]
Project [item_sk]
Filter [cnt]
- HashAggregate [_groupingexpression,i_item_sk,d_date,count] [count(1),item_sk,cnt,count]
- HashAggregate [_groupingexpression,i_item_sk,d_date] [count,count]
- Project [d_date,i_item_sk,i_item_desc]
- SortMergeJoin [ss_item_sk,i_item_sk]
- InputAdapter
- WholeStageCodegen (22)
- Sort [ss_item_sk]
- InputAdapter
- ReusedExchange [ss_item_sk,d_date] #5
- InputAdapter
- WholeStageCodegen (24)
- Sort [i_item_sk]
- InputAdapter
- ReusedExchange [i_item_sk,i_item_desc] #7
+ HashAggregate [_groupingexpression,i_item_sk,d_date] [count(1),item_sk,cnt,count]
+ Project [d_date,i_item_sk,i_item_desc]
+ SortMergeJoin [ss_item_sk,i_item_sk]
+ InputAdapter
+ WholeStageCodegen (22)
+ Sort [ss_item_sk]
+ InputAdapter
+ ReusedExchange [ss_item_sk,d_date] #5
+ InputAdapter
+ WholeStageCodegen (24)
+ Sort [i_item_sk]
+ InputAdapter
+ ReusedExchange [i_item_sk,i_item_desc] #7
InputAdapter
WholeStageCodegen (32)
- Sort [c_customer_sk]
- Project [c_customer_sk]
- Filter [ssales]
- ReusedSubquery [tpcds_cmax] #3
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
- InputAdapter
- WholeStageCodegen (29)
- Sort [ss_customer_sk]
- InputAdapter
- ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
- InputAdapter
- WholeStageCodegen (31)
- Sort [c_customer_sk]
- InputAdapter
- ReusedExchange [c_customer_sk] #9
+ Project [c_customer_sk]
+ Filter [ssales]
+ ReusedSubquery [tpcds_cmax] #3
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (29)
+ Sort [ss_customer_sk]
+ InputAdapter
+ ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
+ InputAdapter
+ WholeStageCodegen (31)
+ Sort [c_customer_sk]
+ InputAdapter
+ ReusedExchange [c_customer_sk] #9
InputAdapter
ReusedExchange [d_date_sk] #4
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/explain.txt
index 768eab873ac6..5cde839ff9fe 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/explain.txt
@@ -1,133 +1,123 @@
== Physical Plan ==
-TakeOrderedAndProject (129)
-+- Union (128)
- :- * HashAggregate (73)
- : +- Exchange (72)
- : +- * HashAggregate (71)
- : +- * Project (70)
- : +- * SortMergeJoin Inner (69)
- : :- * Project (51)
- : : +- * BroadcastHashJoin Inner BuildRight (50)
- : : :- * SortMergeJoin LeftSemi (48)
- : : : :- * Sort (29)
- : : : : +- Exchange (28)
- : : : : +- * Project (27)
- : : : : +- * SortMergeJoin LeftSemi (26)
+TakeOrderedAndProject (119)
++- Union (118)
+ :- * HashAggregate (68)
+ : +- Exchange (67)
+ : +- * HashAggregate (66)
+ : +- * Project (65)
+ : +- * SortMergeJoin Inner (64)
+ : :- * Project (48)
+ : : +- * BroadcastHashJoin Inner BuildRight (47)
+ : : :- * SortMergeJoin LeftSemi (45)
+ : : : :- * Sort (28)
+ : : : : +- Exchange (27)
+ : : : : +- * Project (26)
+ : : : : +- * SortMergeJoin LeftSemi (25)
: : : : :- * Sort (5)
: : : : : +- Exchange (4)
: : : : : +- * Filter (3)
: : : : : +- * ColumnarToRow (2)
: : : : : +- Scan parquet spark_catalog.default.catalog_sales (1)
- : : : : +- * Sort (25)
- : : : : +- * Project (24)
- : : : : +- * Filter (23)
- : : : : +- * HashAggregate (22)
- : : : : +- * HashAggregate (21)
- : : : : +- * Project (20)
- : : : : +- * SortMergeJoin Inner (19)
- : : : : :- * Sort (13)
- : : : : : +- Exchange (12)
- : : : : : +- * Project (11)
- : : : : : +- * BroadcastHashJoin Inner BuildRight (10)
- : : : : : :- * Filter (8)
- : : : : : : +- * ColumnarToRow (7)
- : : : : : : +- Scan parquet spark_catalog.default.store_sales (6)
- : : : : : +- ReusedExchange (9)
- : : : : +- * Sort (18)
- : : : : +- Exchange (17)
- : : : : +- * Filter (16)
- : : : : +- * ColumnarToRow (15)
- : : : : +- Scan parquet spark_catalog.default.item (14)
- : : : +- * Sort (47)
- : : : +- * Project (46)
- : : : +- * Filter (45)
- : : : +- * HashAggregate (44)
- : : : +- * HashAggregate (43)
- : : : +- * Project (42)
- : : : +- * SortMergeJoin Inner (41)
- : : : :- * Sort (35)
- : : : : +- Exchange (34)
- : : : : +- * Project (33)
- : : : : +- * Filter (32)
- : : : : +- * ColumnarToRow (31)
- : : : : +- Scan parquet spark_catalog.default.store_sales (30)
- : : : +- * Sort (40)
- : : : +- Exchange (39)
- : : : +- * Filter (38)
- : : : +- * ColumnarToRow (37)
- : : : +- Scan parquet spark_catalog.default.customer (36)
- : : +- ReusedExchange (49)
- : +- * SortMergeJoin LeftSemi (68)
- : :- * Sort (56)
- : : +- Exchange (55)
- : : +- * Filter (54)
- : : +- * ColumnarToRow (53)
- : : +- Scan parquet spark_catalog.default.customer (52)
- : +- * Sort (67)
- : +- * Project (66)
- : +- * Filter (65)
- : +- * HashAggregate (64)
- : +- * HashAggregate (63)
- : +- * Project (62)
- : +- * SortMergeJoin Inner (61)
- : :- * Sort (58)
- : : +- ReusedExchange (57)
- : +- * Sort (60)
- : +- ReusedExchange (59)
- +- * HashAggregate (127)
- +- Exchange (126)
- +- * HashAggregate (125)
- +- * Project (124)
- +- * SortMergeJoin Inner (123)
- :- * Project (108)
- : +- * BroadcastHashJoin Inner BuildRight (107)
- : :- * SortMergeJoin LeftSemi (105)
- : : :- * Sort (93)
- : : : +- Exchange (92)
- : : : +- * Project (91)
- : : : +- * SortMergeJoin LeftSemi (90)
- : : : :- * Sort (78)
- : : : : +- Exchange (77)
- : : : : +- * Filter (76)
- : : : : +- * ColumnarToRow (75)
- : : : : +- Scan parquet spark_catalog.default.web_sales (74)
- : : : +- * Sort (89)
- : : : +- * Project (88)
- : : : +- * Filter (87)
- : : : +- * HashAggregate (86)
- : : : +- * HashAggregate (85)
- : : : +- * Project (84)
- : : : +- * SortMergeJoin Inner (83)
- : : : :- * Sort (80)
- : : : : +- ReusedExchange (79)
- : : : +- * Sort (82)
- : : : +- ReusedExchange (81)
- : : +- * Sort (104)
- : : +- * Project (103)
- : : +- * Filter (102)
- : : +- * HashAggregate (101)
- : : +- * HashAggregate (100)
- : : +- * Project (99)
- : : +- * SortMergeJoin Inner (98)
- : : :- * Sort (95)
- : : : +- ReusedExchange (94)
- : : +- * Sort (97)
- : : +- ReusedExchange (96)
- : +- ReusedExchange (106)
- +- * SortMergeJoin LeftSemi (122)
- :- * Sort (110)
- : +- ReusedExchange (109)
- +- * Sort (121)
- +- * Project (120)
- +- * Filter (119)
- +- * HashAggregate (118)
- +- * HashAggregate (117)
- +- * Project (116)
- +- * SortMergeJoin Inner (115)
- :- * Sort (112)
- : +- ReusedExchange (111)
- +- * Sort (114)
- +- ReusedExchange (113)
+ : : : : +- * Sort (24)
+ : : : : +- * Project (23)
+ : : : : +- * Filter (22)
+ : : : : +- * HashAggregate (21)
+ : : : : +- * Project (20)
+ : : : : +- * SortMergeJoin Inner (19)
+ : : : : :- * Sort (13)
+ : : : : : +- Exchange (12)
+ : : : : : +- * Project (11)
+ : : : : : +- * BroadcastHashJoin Inner BuildRight (10)
+ : : : : : :- * Filter (8)
+ : : : : : : +- * ColumnarToRow (7)
+ : : : : : : +- Scan parquet spark_catalog.default.store_sales (6)
+ : : : : : +- ReusedExchange (9)
+ : : : : +- * Sort (18)
+ : : : : +- Exchange (17)
+ : : : : +- * Filter (16)
+ : : : : +- * ColumnarToRow (15)
+ : : : : +- Scan parquet spark_catalog.default.item (14)
+ : : : +- * Project (44)
+ : : : +- * Filter (43)
+ : : : +- * SortAggregate (42)
+ : : : +- * Project (41)
+ : : : +- * SortMergeJoin Inner (40)
+ : : : :- * Sort (34)
+ : : : : +- Exchange (33)
+ : : : : +- * Project (32)
+ : : : : +- * Filter (31)
+ : : : : +- * ColumnarToRow (30)
+ : : : : +- Scan parquet spark_catalog.default.store_sales (29)
+ : : : +- * Sort (39)
+ : : : +- Exchange (38)
+ : : : +- * Filter (37)
+ : : : +- * ColumnarToRow (36)
+ : : : +- Scan parquet spark_catalog.default.customer (35)
+ : : +- ReusedExchange (46)
+ : +- * SortMergeJoin LeftSemi (63)
+ : :- * Sort (53)
+ : : +- Exchange (52)
+ : : +- * Filter (51)
+ : : +- * ColumnarToRow (50)
+ : : +- Scan parquet spark_catalog.default.customer (49)
+ : +- * Project (62)
+ : +- * Filter (61)
+ : +- * SortAggregate (60)
+ : +- * Project (59)
+ : +- * SortMergeJoin Inner (58)
+ : :- * Sort (55)
+ : : +- ReusedExchange (54)
+ : +- * Sort (57)
+ : +- ReusedExchange (56)
+ +- * HashAggregate (117)
+ +- Exchange (116)
+ +- * HashAggregate (115)
+ +- * Project (114)
+ +- * SortMergeJoin Inner (113)
+ :- * Project (100)
+ : +- * BroadcastHashJoin Inner BuildRight (99)
+ : :- * SortMergeJoin LeftSemi (97)
+ : : :- * Sort (87)
+ : : : +- Exchange (86)
+ : : : +- * Project (85)
+ : : : +- * SortMergeJoin LeftSemi (84)
+ : : : :- * Sort (73)
+ : : : : +- Exchange (72)
+ : : : : +- * Filter (71)
+ : : : : +- * ColumnarToRow (70)
+ : : : : +- Scan parquet spark_catalog.default.web_sales (69)
+ : : : +- * Sort (83)
+ : : : +- * Project (82)
+ : : : +- * Filter (81)
+ : : : +- * HashAggregate (80)
+ : : : +- * Project (79)
+ : : : +- * SortMergeJoin Inner (78)
+ : : : :- * Sort (75)
+ : : : : +- ReusedExchange (74)
+ : : : +- * Sort (77)
+ : : : +- ReusedExchange (76)
+ : : +- * Project (96)
+ : : +- * Filter (95)
+ : : +- * SortAggregate (94)
+ : : +- * Project (93)
+ : : +- * SortMergeJoin Inner (92)
+ : : :- * Sort (89)
+ : : : +- ReusedExchange (88)
+ : : +- * Sort (91)
+ : : +- ReusedExchange (90)
+ : +- ReusedExchange (98)
+ +- * SortMergeJoin LeftSemi (112)
+ :- * Sort (102)
+ : +- ReusedExchange (101)
+ +- * Project (111)
+ +- * Filter (110)
+ +- * SortAggregate (109)
+ +- * Project (108)
+ +- * SortMergeJoin Inner (107)
+ :- * Sort (104)
+ : +- ReusedExchange (103)
+ +- * Sort (106)
+ +- ReusedExchange (105)
(1) Scan parquet spark_catalog.default.catalog_sales
@@ -168,7 +158,7 @@ Input [2]: [ss_item_sk#7, ss_sold_date_sk#8]
Input [2]: [ss_item_sk#7, ss_sold_date_sk#8]
Condition : isnotnull(ss_item_sk#7)
-(9) ReusedExchange [Reuses operator id: 139]
+(9) ReusedExchange [Reuses operator id: 129]
Output [2]: [d_date_sk#10, d_date#11]
(10) BroadcastHashJoin [codegen id : 4]
@@ -224,716 +214,650 @@ Input [4]: [ss_item_sk#7, d_date#11, i_item_sk#12, i_item_desc#13]
(21) HashAggregate [codegen id : 8]
Input [3]: [d_date#11, i_item_sk#12, _groupingexpression#14]
Keys [3]: [_groupingexpression#14, i_item_sk#12, d_date#11]
-Functions [1]: [partial_count(1)]
-Aggregate Attributes [1]: [count#15]
-Results [4]: [_groupingexpression#14, i_item_sk#12, d_date#11, count#16]
-
-(22) HashAggregate [codegen id : 8]
-Input [4]: [_groupingexpression#14, i_item_sk#12, d_date#11, count#16]
-Keys [3]: [_groupingexpression#14, i_item_sk#12, d_date#11]
Functions [1]: [count(1)]
-Aggregate Attributes [1]: [count(1)#17]
-Results [2]: [i_item_sk#12 AS item_sk#18, count(1)#17 AS cnt#19]
+Aggregate Attributes [1]: [count(1)#15]
+Results [2]: [i_item_sk#12 AS item_sk#16, count(1)#15 AS cnt#17]
-(23) Filter [codegen id : 8]
-Input [2]: [item_sk#18, cnt#19]
-Condition : (cnt#19 > 4)
+(22) Filter [codegen id : 8]
+Input [2]: [item_sk#16, cnt#17]
+Condition : (cnt#17 > 4)
-(24) Project [codegen id : 8]
-Output [1]: [item_sk#18]
-Input [2]: [item_sk#18, cnt#19]
+(23) Project [codegen id : 8]
+Output [1]: [item_sk#16]
+Input [2]: [item_sk#16, cnt#17]
-(25) Sort [codegen id : 8]
-Input [1]: [item_sk#18]
-Arguments: [item_sk#18 ASC NULLS FIRST], false, 0
+(24) Sort [codegen id : 8]
+Input [1]: [item_sk#16]
+Arguments: [item_sk#16 ASC NULLS FIRST], false, 0
-(26) SortMergeJoin [codegen id : 9]
+(25) SortMergeJoin [codegen id : 9]
Left keys [1]: [cs_item_sk#2]
-Right keys [1]: [item_sk#18]
+Right keys [1]: [item_sk#16]
Join type: LeftSemi
Join condition: None
-(27) Project [codegen id : 9]
+(26) Project [codegen id : 9]
Output [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Input [5]: [cs_bill_customer_sk#1, cs_item_sk#2, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
-(28) Exchange
+(27) Exchange
Input [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Arguments: hashpartitioning(cs_bill_customer_sk#1, 5), ENSURE_REQUIREMENTS, [plan_id=4]
-(29) Sort [codegen id : 10]
+(28) Sort [codegen id : 10]
Input [4]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5]
Arguments: [cs_bill_customer_sk#1 ASC NULLS FIRST], false, 0
-(30) Scan parquet spark_catalog.default.store_sales
-Output [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
+(29) Scan parquet spark_catalog.default.store_sales
+Output [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
Batched: true
Location [not included in comparison]/{warehouse_dir}/store_sales]
PushedFilters: [IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_customer_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2)>
-(31) ColumnarToRow [codegen id : 11]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
+(30) ColumnarToRow [codegen id : 11]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
-(32) Filter [codegen id : 11]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
-Condition : isnotnull(ss_customer_sk#20)
+(31) Filter [codegen id : 11]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
+Condition : isnotnull(ss_customer_sk#18)
-(33) Project [codegen id : 11]
-Output [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, ss_sold_date_sk#23]
+(32) Project [codegen id : 11]
+Output [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, ss_sold_date_sk#21]
-(34) Exchange
-Input [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Arguments: hashpartitioning(ss_customer_sk#20, 5), ENSURE_REQUIREMENTS, [plan_id=5]
+(33) Exchange
+Input [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Arguments: hashpartitioning(ss_customer_sk#18, 5), ENSURE_REQUIREMENTS, [plan_id=5]
-(35) Sort [codegen id : 12]
-Input [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Arguments: [ss_customer_sk#20 ASC NULLS FIRST], false, 0
+(34) Sort [codegen id : 12]
+Input [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Arguments: [ss_customer_sk#18 ASC NULLS FIRST], false, 0
-(36) Scan parquet spark_catalog.default.customer
-Output [1]: [c_customer_sk#24]
+(35) Scan parquet spark_catalog.default.customer
+Output [1]: [c_customer_sk#22]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int>
-(37) ColumnarToRow [codegen id : 13]
-Input [1]: [c_customer_sk#24]
+(36) ColumnarToRow [codegen id : 13]
+Input [1]: [c_customer_sk#22]
-(38) Filter [codegen id : 13]
-Input [1]: [c_customer_sk#24]
-Condition : isnotnull(c_customer_sk#24)
+(37) Filter [codegen id : 13]
+Input [1]: [c_customer_sk#22]
+Condition : isnotnull(c_customer_sk#22)
-(39) Exchange
-Input [1]: [c_customer_sk#24]
-Arguments: hashpartitioning(c_customer_sk#24, 5), ENSURE_REQUIREMENTS, [plan_id=6]
+(38) Exchange
+Input [1]: [c_customer_sk#22]
+Arguments: hashpartitioning(c_customer_sk#22, 5), ENSURE_REQUIREMENTS, [plan_id=6]
-(40) Sort [codegen id : 14]
-Input [1]: [c_customer_sk#24]
-Arguments: [c_customer_sk#24 ASC NULLS FIRST], false, 0
+(39) Sort [codegen id : 14]
+Input [1]: [c_customer_sk#22]
+Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0
-(41) SortMergeJoin [codegen id : 15]
-Left keys [1]: [ss_customer_sk#20]
-Right keys [1]: [c_customer_sk#24]
+(40) SortMergeJoin [codegen id : 15]
+Left keys [1]: [ss_customer_sk#18]
+Right keys [1]: [c_customer_sk#22]
Join type: Inner
Join condition: None
-(42) Project [codegen id : 15]
-Output [3]: [ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-
-(43) HashAggregate [codegen id : 15]
-Input [3]: [ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-Keys [1]: [c_customer_sk#24]
-Functions [1]: [partial_sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))]
-Aggregate Attributes [2]: [sum#25, isEmpty#26]
-Results [3]: [c_customer_sk#24, sum#27, isEmpty#28]
-
-(44) HashAggregate [codegen id : 15]
-Input [3]: [c_customer_sk#24, sum#27, isEmpty#28]
-Keys [1]: [c_customer_sk#24]
-Functions [1]: [sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))#29]
-Results [2]: [c_customer_sk#24, sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))#29 AS ssales#30]
-
-(45) Filter [codegen id : 15]
-Input [2]: [c_customer_sk#24, ssales#30]
-Condition : (isnotnull(ssales#30) AND (cast(ssales#30 as decimal(38,8)) > (0.500000 * Subquery scalar-subquery#31, [id=#7])))
-
-(46) Project [codegen id : 15]
-Output [1]: [c_customer_sk#24]
-Input [2]: [c_customer_sk#24, ssales#30]
-
-(47) Sort [codegen id : 15]
-Input [1]: [c_customer_sk#24]
-Arguments: [c_customer_sk#24 ASC NULLS FIRST], false, 0
-
-(48) SortMergeJoin [codegen id : 17]
+(41) Project [codegen id : 15]
+Output [3]: [ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+
+(42) SortAggregate [codegen id : 15]
+Input [3]: [ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+Keys [1]: [c_customer_sk#22]
+Functions [1]: [sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))#23]
+Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))#23 AS ssales#24]
+
+(43) Filter [codegen id : 15]
+Input [2]: [c_customer_sk#22, ssales#24]
+Condition : (isnotnull(ssales#24) AND (cast(ssales#24 as decimal(38,8)) > (0.500000 * Subquery scalar-subquery#25, [id=#7])))
+
+(44) Project [codegen id : 15]
+Output [1]: [c_customer_sk#22]
+Input [2]: [c_customer_sk#22, ssales#24]
+
+(45) SortMergeJoin [codegen id : 17]
Left keys [1]: [cs_bill_customer_sk#1]
-Right keys [1]: [c_customer_sk#24]
+Right keys [1]: [c_customer_sk#22]
Join type: LeftSemi
Join condition: None
-(49) ReusedExchange [Reuses operator id: 134]
-Output [1]: [d_date_sk#32]
+(46) ReusedExchange [Reuses operator id: 124]
+Output [1]: [d_date_sk#26]
-(50) BroadcastHashJoin [codegen id : 17]
+(47) BroadcastHashJoin [codegen id : 17]
Left keys [1]: [cs_sold_date_sk#5]
-Right keys [1]: [d_date_sk#32]
+Right keys [1]: [d_date_sk#26]
Join type: Inner
Join condition: None
-(51) Project [codegen id : 17]
+(48) Project [codegen id : 17]
Output [3]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4]
-Input [5]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5, d_date_sk#32]
+Input [5]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, cs_sold_date_sk#5, d_date_sk#26]
-(52) Scan parquet spark_catalog.default.customer
-Output [3]: [c_customer_sk#33, c_first_name#34, c_last_name#35]
+(49) Scan parquet spark_catalog.default.customer
+Output [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29]
Batched: true
Location [not included in comparison]/{warehouse_dir}/customer]
PushedFilters: [IsNotNull(c_customer_sk)]
ReadSchema: struct<c_customer_sk:int,c_first_name:string,c_last_name:string>
-(53) ColumnarToRow [codegen id : 18]
-Input [3]: [c_customer_sk#33, c_first_name#34, c_last_name#35]
+(50) ColumnarToRow [codegen id : 18]
+Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29]
-(54) Filter [codegen id : 18]
-Input [3]: [c_customer_sk#33, c_first_name#34, c_last_name#35]
-Condition : isnotnull(c_customer_sk#33)
+(51) Filter [codegen id : 18]
+Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29]
+Condition : isnotnull(c_customer_sk#27)
-(55) Exchange
-Input [3]: [c_customer_sk#33, c_first_name#34, c_last_name#35]
-Arguments: hashpartitioning(c_customer_sk#33, 5), ENSURE_REQUIREMENTS, [plan_id=8]
+(52) Exchange
+Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29]
+Arguments: hashpartitioning(c_customer_sk#27, 5), ENSURE_REQUIREMENTS, [plan_id=8]
-(56) Sort [codegen id : 19]
-Input [3]: [c_customer_sk#33, c_first_name#34, c_last_name#35]
-Arguments: [c_customer_sk#33 ASC NULLS FIRST], false, 0
+(53) Sort [codegen id : 19]
+Input [3]: [c_customer_sk#27, c_first_name#28, c_last_name#29]
+Arguments: [c_customer_sk#27 ASC NULLS FIRST], false, 0
-(57) ReusedExchange [Reuses operator id: 34]
-Output [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
+(54) ReusedExchange [Reuses operator id: 33]
+Output [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
-(58) Sort [codegen id : 21]
-Input [3]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22]
-Arguments: [ss_customer_sk#20 ASC NULLS FIRST], false, 0
+(55) Sort [codegen id : 21]
+Input [3]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20]
+Arguments: [ss_customer_sk#18 ASC NULLS FIRST], false, 0
-(59) ReusedExchange [Reuses operator id: 39]
-Output [1]: [c_customer_sk#24]
+(56) ReusedExchange [Reuses operator id: 38]
+Output [1]: [c_customer_sk#22]
-(60) Sort [codegen id : 23]
-Input [1]: [c_customer_sk#24]
-Arguments: [c_customer_sk#24 ASC NULLS FIRST], false, 0
+(57) Sort [codegen id : 23]
+Input [1]: [c_customer_sk#22]
+Arguments: [c_customer_sk#22 ASC NULLS FIRST], false, 0
-(61) SortMergeJoin [codegen id : 24]
-Left keys [1]: [ss_customer_sk#20]
-Right keys [1]: [c_customer_sk#24]
+(58) SortMergeJoin [codegen id : 24]
+Left keys [1]: [ss_customer_sk#18]
+Right keys [1]: [c_customer_sk#22]
Join type: Inner
Join condition: None
+(59) Project [codegen id : 24]
+Output [3]: [ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+Input [4]: [ss_customer_sk#18, ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+
+(60) SortAggregate [codegen id : 24]
+Input [3]: [ss_quantity#19, ss_sales_price#20, c_customer_sk#22]
+Keys [1]: [c_customer_sk#22]
+Functions [1]: [sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))#23]
+Results [2]: [c_customer_sk#22, sum((cast(ss_quantity#19 as decimal(10,0)) * ss_sales_price#20))#23 AS ssales#24]
+
+(61) Filter [codegen id : 24]
+Input [2]: [c_customer_sk#22, ssales#24]
+Condition : (isnotnull(ssales#24) AND (cast(ssales#24 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#25, [id=#7])))
+
(62) Project [codegen id : 24]
-Output [3]: [ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-Input [4]: [ss_customer_sk#20, ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-
-(63) HashAggregate [codegen id : 24]
-Input [3]: [ss_quantity#21, ss_sales_price#22, c_customer_sk#24]
-Keys [1]: [c_customer_sk#24]
-Functions [1]: [partial_sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))]
-Aggregate Attributes [2]: [sum#25, isEmpty#26]
-Results [3]: [c_customer_sk#24, sum#27, isEmpty#28]
-
-(64) HashAggregate [codegen id : 24]
-Input [3]: [c_customer_sk#24, sum#27, isEmpty#28]
-Keys [1]: [c_customer_sk#24]
-Functions [1]: [sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))#29]
-Results [2]: [c_customer_sk#24, sum((cast(ss_quantity#21 as decimal(10,0)) * ss_sales_price#22))#29 AS ssales#30]
-
-(65) Filter [codegen id : 24]
-Input [2]: [c_customer_sk#24, ssales#30]
-Condition : (isnotnull(ssales#30) AND (cast(ssales#30 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#31, [id=#7])))
-
-(66) Project [codegen id : 24]
-Output [1]: [c_customer_sk#24]
-Input [2]: [c_customer_sk#24, ssales#30]
-
-(67) Sort [codegen id : 24]
-Input [1]: [c_customer_sk#24]
-Arguments: [c_customer_sk#24 ASC NULLS FIRST], false, 0
-
-(68) SortMergeJoin [codegen id : 25]
-Left keys [1]: [c_customer_sk#33]
-Right keys [1]: [c_customer_sk#24]
+Output [1]: [c_customer_sk#22]
+Input [2]: [c_customer_sk#22, ssales#24]
+
+(63) SortMergeJoin [codegen id : 25]
+Left keys [1]: [c_customer_sk#27]
+Right keys [1]: [c_customer_sk#22]
Join type: LeftSemi
Join condition: None
-(69) SortMergeJoin [codegen id : 26]
+(64) SortMergeJoin [codegen id : 26]
Left keys [1]: [cs_bill_customer_sk#1]
-Right keys [1]: [c_customer_sk#33]
+Right keys [1]: [c_customer_sk#27]
Join type: Inner
Join condition: None
-(70) Project [codegen id : 26]
-Output [4]: [cs_quantity#3, cs_list_price#4, c_first_name#34, c_last_name#35]
-Input [6]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, c_customer_sk#33, c_first_name#34, c_last_name#35]
+(65) Project [codegen id : 26]
+Output [4]: [cs_quantity#3, cs_list_price#4, c_first_name#28, c_last_name#29]
+Input [6]: [cs_bill_customer_sk#1, cs_quantity#3, cs_list_price#4, c_customer_sk#27, c_first_name#28, c_last_name#29]
-(71) HashAggregate [codegen id : 26]
-Input [4]: [cs_quantity#3, cs_list_price#4, c_first_name#34, c_last_name#35]
-Keys [2]: [c_last_name#35, c_first_name#34]
+(66) HashAggregate [codegen id : 26]
+Input [4]: [cs_quantity#3, cs_list_price#4, c_first_name#28, c_last_name#29]
+Keys [2]: [c_last_name#29, c_first_name#28]
Functions [1]: [partial_sum((cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4))]
-Aggregate Attributes [2]: [sum#36, isEmpty#37]
-Results [4]: [c_last_name#35, c_first_name#34, sum#38, isEmpty#39]
+Aggregate Attributes [2]: [sum#30, isEmpty#31]
+Results [4]: [c_last_name#29, c_first_name#28, sum#32, isEmpty#33]
-(72) Exchange
-Input [4]: [c_last_name#35, c_first_name#34, sum#38, isEmpty#39]
-Arguments: hashpartitioning(c_last_name#35, c_first_name#34, 5), ENSURE_REQUIREMENTS, [plan_id=9]
+(67) Exchange
+Input [4]: [c_last_name#29, c_first_name#28, sum#32, isEmpty#33]
+Arguments: hashpartitioning(c_last_name#29, c_first_name#28, 5), ENSURE_REQUIREMENTS, [plan_id=9]
-(73) HashAggregate [codegen id : 27]
-Input [4]: [c_last_name#35, c_first_name#34, sum#38, isEmpty#39]
-Keys [2]: [c_last_name#35, c_first_name#34]
+(68) HashAggregate [codegen id : 27]
+Input [4]: [c_last_name#29, c_first_name#28, sum#32, isEmpty#33]
+Keys [2]: [c_last_name#29, c_first_name#28]
Functions [1]: [sum((cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4))]
-Aggregate Attributes [1]: [sum((cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4))#40]
-Results [3]: [c_last_name#35, c_first_name#34, sum((cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4))#40 AS sales#41]
+Aggregate Attributes [1]: [sum((cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4))#34]
+Results [3]: [c_last_name#29, c_first_name#28, sum((cast(cs_quantity#3 as decimal(10,0)) * cs_list_price#4))#34 AS sales#35]
-(74) Scan parquet spark_catalog.default.web_sales
-Output [5]: [ws_item_sk#42, ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
+(69) Scan parquet spark_catalog.default.web_sales
+Output [5]: [ws_item_sk#36, ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
Batched: true
Location: InMemoryFileIndex []
-PartitionFilters: [isnotnull(ws_sold_date_sk#46), dynamicpruningexpression(ws_sold_date_sk#46 IN dynamicpruning#6)]
+PartitionFilters: [isnotnull(ws_sold_date_sk#40), dynamicpruningexpression(ws_sold_date_sk#40 IN dynamicpruning#6)]
PushedFilters: [IsNotNull(ws_bill_customer_sk)]
ReadSchema: struct<ws_item_sk:int,ws_bill_customer_sk:int,ws_quantity:int,ws_list_price:decimal(7,2)>
-(75) ColumnarToRow [codegen id : 28]
-Input [5]: [ws_item_sk#42, ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
+(70) ColumnarToRow [codegen id : 28]
+Input [5]: [ws_item_sk#36, ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
-(76) Filter [codegen id : 28]
-Input [5]: [ws_item_sk#42, ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
-Condition : isnotnull(ws_bill_customer_sk#43)
+(71) Filter [codegen id : 28]
+Input [5]: [ws_item_sk#36, ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
+Condition : isnotnull(ws_bill_customer_sk#37)
-(77) Exchange
-Input [5]: [ws_item_sk#42, ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
-Arguments: hashpartitioning(ws_item_sk#42, 5), ENSURE_REQUIREMENTS, [plan_id=10]
+(72) Exchange
+Input [5]: [ws_item_sk#36, ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
+Arguments: hashpartitioning(ws_item_sk#36, 5), ENSURE_REQUIREMENTS, [plan_id=10]
-(78) Sort [codegen id : 29]
-Input [5]: [ws_item_sk#42, ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
-Arguments: [ws_item_sk#42 ASC NULLS FIRST], false, 0
+(73) Sort [codegen id : 29]
+Input [5]: [ws_item_sk#36, ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
+Arguments: [ws_item_sk#36 ASC NULLS FIRST], false, 0
-(79) ReusedExchange [Reuses operator id: 12]
-Output [2]: [ss_item_sk#47, d_date#48]
+(74) ReusedExchange [Reuses operator id: 12]
+Output [2]: [ss_item_sk#41, d_date#42]
-(80) Sort [codegen id : 32]
-Input [2]: [ss_item_sk#47, d_date#48]
-Arguments: [ss_item_sk#47 ASC NULLS FIRST], false, 0
+(75) Sort [codegen id : 32]
+Input [2]: [ss_item_sk#41, d_date#42]
+Arguments: [ss_item_sk#41 ASC NULLS FIRST], false, 0
-(81) ReusedExchange [Reuses operator id: 17]
-Output [2]: [i_item_sk#49, i_item_desc#50]
+(76) ReusedExchange [Reuses operator id: 17]
+Output [2]: [i_item_sk#43, i_item_desc#44]
-(82) Sort [codegen id : 34]
-Input [2]: [i_item_sk#49, i_item_desc#50]
-Arguments: [i_item_sk#49 ASC NULLS FIRST], false, 0
+(77) Sort [codegen id : 34]
+Input [2]: [i_item_sk#43, i_item_desc#44]
+Arguments: [i_item_sk#43 ASC NULLS FIRST], false, 0
-(83) SortMergeJoin [codegen id : 35]
-Left keys [1]: [ss_item_sk#47]
-Right keys [1]: [i_item_sk#49]
+(78) SortMergeJoin [codegen id : 35]
+Left keys [1]: [ss_item_sk#41]
+Right keys [1]: [i_item_sk#43]
Join type: Inner
Join condition: None
-(84) Project [codegen id : 35]
-Output [3]: [d_date#48, i_item_sk#49, substr(i_item_desc#50, 1, 30) AS _groupingexpression#51]
-Input [4]: [ss_item_sk#47, d_date#48, i_item_sk#49, i_item_desc#50]
+(79) Project [codegen id : 35]
+Output [3]: [d_date#42, i_item_sk#43, substr(i_item_desc#44, 1, 30) AS _groupingexpression#45]
+Input [4]: [ss_item_sk#41, d_date#42, i_item_sk#43, i_item_desc#44]
-(85) HashAggregate [codegen id : 35]
-Input [3]: [d_date#48, i_item_sk#49, _groupingexpression#51]
-Keys [3]: [_groupingexpression#51, i_item_sk#49, d_date#48]
-Functions [1]: [partial_count(1)]
-Aggregate Attributes [1]: [count#15]
-Results [4]: [_groupingexpression#51, i_item_sk#49, d_date#48, count#16]
-
-(86) HashAggregate [codegen id : 35]
-Input [4]: [_groupingexpression#51, i_item_sk#49, d_date#48, count#16]
-Keys [3]: [_groupingexpression#51, i_item_sk#49, d_date#48]
+(80) HashAggregate [codegen id : 35]
+Input [3]: [d_date#42, i_item_sk#43, _groupingexpression#45]
+Keys [3]: [_groupingexpression#45, i_item_sk#43, d_date#42]
Functions [1]: [count(1)]
-Aggregate Attributes [1]: [count(1)#17]
-Results [2]: [i_item_sk#49 AS item_sk#52, count(1)#17 AS cnt#53]
+Aggregate Attributes [1]: [count(1)#15]
+Results [2]: [i_item_sk#43 AS item_sk#46, count(1)#15 AS cnt#47]
-(87) Filter [codegen id : 35]
-Input [2]: [item_sk#52, cnt#53]
-Condition : (cnt#53 > 4)
+(81) Filter [codegen id : 35]
+Input [2]: [item_sk#46, cnt#47]
+Condition : (cnt#47 > 4)
-(88) Project [codegen id : 35]
-Output [1]: [item_sk#52]
-Input [2]: [item_sk#52, cnt#53]
+(82) Project [codegen id : 35]
+Output [1]: [item_sk#46]
+Input [2]: [item_sk#46, cnt#47]
-(89) Sort [codegen id : 35]
-Input [1]: [item_sk#52]
-Arguments: [item_sk#52 ASC NULLS FIRST], false, 0
+(83) Sort [codegen id : 35]
+Input [1]: [item_sk#46]
+Arguments: [item_sk#46 ASC NULLS FIRST], false, 0
-(90) SortMergeJoin [codegen id : 36]
-Left keys [1]: [ws_item_sk#42]
-Right keys [1]: [item_sk#52]
+(84) SortMergeJoin [codegen id : 36]
+Left keys [1]: [ws_item_sk#36]
+Right keys [1]: [item_sk#46]
Join type: LeftSemi
Join condition: None
-(91) Project [codegen id : 36]
-Output [4]: [ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
-Input [5]: [ws_item_sk#42, ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
+(85) Project [codegen id : 36]
+Output [4]: [ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
+Input [5]: [ws_item_sk#36, ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
-(92) Exchange
-Input [4]: [ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
-Arguments: hashpartitioning(ws_bill_customer_sk#43, 5), ENSURE_REQUIREMENTS, [plan_id=11]
+(86) Exchange
+Input [4]: [ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
+Arguments: hashpartitioning(ws_bill_customer_sk#37, 5), ENSURE_REQUIREMENTS, [plan_id=11]
-(93) Sort [codegen id : 37]
-Input [4]: [ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46]
-Arguments: [ws_bill_customer_sk#43 ASC NULLS FIRST], false, 0
+(87) Sort [codegen id : 37]
+Input [4]: [ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40]
+Arguments: [ws_bill_customer_sk#37 ASC NULLS FIRST], false, 0
-(94) ReusedExchange [Reuses operator id: 34]
-Output [3]: [ss_customer_sk#54, ss_quantity#55, ss_sales_price#56]
+(88) ReusedExchange [Reuses operator id: 33]
+Output [3]: [ss_customer_sk#48, ss_quantity#49, ss_sales_price#50]
-(95) Sort [codegen id : 39]
-Input [3]: [ss_customer_sk#54, ss_quantity#55, ss_sales_price#56]
-Arguments: [ss_customer_sk#54 ASC NULLS FIRST], false, 0
+(89) Sort [codegen id : 39]
+Input [3]: [ss_customer_sk#48, ss_quantity#49, ss_sales_price#50]
+Arguments: [ss_customer_sk#48 ASC NULLS FIRST], false, 0
-(96) ReusedExchange [Reuses operator id: 39]
-Output [1]: [c_customer_sk#57]
+(90) ReusedExchange [Reuses operator id: 38]
+Output [1]: [c_customer_sk#51]
-(97) Sort [codegen id : 41]
-Input [1]: [c_customer_sk#57]
-Arguments: [c_customer_sk#57 ASC NULLS FIRST], false, 0
+(91) Sort [codegen id : 41]
+Input [1]: [c_customer_sk#51]
+Arguments: [c_customer_sk#51 ASC NULLS FIRST], false, 0
-(98) SortMergeJoin [codegen id : 42]
-Left keys [1]: [ss_customer_sk#54]
-Right keys [1]: [c_customer_sk#57]
+(92) SortMergeJoin [codegen id : 42]
+Left keys [1]: [ss_customer_sk#48]
+Right keys [1]: [c_customer_sk#51]
Join type: Inner
Join condition: None
-(99) Project [codegen id : 42]
-Output [3]: [ss_quantity#55, ss_sales_price#56, c_customer_sk#57]
-Input [4]: [ss_customer_sk#54, ss_quantity#55, ss_sales_price#56, c_customer_sk#57]
-
-(100) HashAggregate [codegen id : 42]
-Input [3]: [ss_quantity#55, ss_sales_price#56, c_customer_sk#57]
-Keys [1]: [c_customer_sk#57]
-Functions [1]: [partial_sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))]
-Aggregate Attributes [2]: [sum#58, isEmpty#59]
-Results [3]: [c_customer_sk#57, sum#60, isEmpty#61]
-
-(101) HashAggregate [codegen id : 42]
-Input [3]: [c_customer_sk#57, sum#60, isEmpty#61]
-Keys [1]: [c_customer_sk#57]
-Functions [1]: [sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))#29]
-Results [2]: [c_customer_sk#57, sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))#29 AS ssales#62]
-
-(102) Filter [codegen id : 42]
-Input [2]: [c_customer_sk#57, ssales#62]
-Condition : (isnotnull(ssales#62) AND (cast(ssales#62 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#31, [id=#7])))
-
-(103) Project [codegen id : 42]
-Output [1]: [c_customer_sk#57]
-Input [2]: [c_customer_sk#57, ssales#62]
-
-(104) Sort [codegen id : 42]
-Input [1]: [c_customer_sk#57]
-Arguments: [c_customer_sk#57 ASC NULLS FIRST], false, 0
-
-(105) SortMergeJoin [codegen id : 44]
-Left keys [1]: [ws_bill_customer_sk#43]
-Right keys [1]: [c_customer_sk#57]
+(93) Project [codegen id : 42]
+Output [3]: [ss_quantity#49, ss_sales_price#50, c_customer_sk#51]
+Input [4]: [ss_customer_sk#48, ss_quantity#49, ss_sales_price#50, c_customer_sk#51]
+
+(94) SortAggregate [codegen id : 42]
+Input [3]: [ss_quantity#49, ss_sales_price#50, c_customer_sk#51]
+Keys [1]: [c_customer_sk#51]
+Functions [1]: [sum((cast(ss_quantity#49 as decimal(10,0)) * ss_sales_price#50))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#49 as decimal(10,0)) * ss_sales_price#50))#23]
+Results [2]: [c_customer_sk#51, sum((cast(ss_quantity#49 as decimal(10,0)) * ss_sales_price#50))#23 AS ssales#52]
+
+(95) Filter [codegen id : 42]
+Input [2]: [c_customer_sk#51, ssales#52]
+Condition : (isnotnull(ssales#52) AND (cast(ssales#52 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#25, [id=#7])))
+
+(96) Project [codegen id : 42]
+Output [1]: [c_customer_sk#51]
+Input [2]: [c_customer_sk#51, ssales#52]
+
+(97) SortMergeJoin [codegen id : 44]
+Left keys [1]: [ws_bill_customer_sk#37]
+Right keys [1]: [c_customer_sk#51]
Join type: LeftSemi
Join condition: None
-(106) ReusedExchange [Reuses operator id: 134]
-Output [1]: [d_date_sk#63]
+(98) ReusedExchange [Reuses operator id: 124]
+Output [1]: [d_date_sk#53]
-(107) BroadcastHashJoin [codegen id : 44]
-Left keys [1]: [ws_sold_date_sk#46]
-Right keys [1]: [d_date_sk#63]
+(99) BroadcastHashJoin [codegen id : 44]
+Left keys [1]: [ws_sold_date_sk#40]
+Right keys [1]: [d_date_sk#53]
Join type: Inner
Join condition: None
-(108) Project [codegen id : 44]
-Output [3]: [ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45]
-Input [5]: [ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, ws_sold_date_sk#46, d_date_sk#63]
+(100) Project [codegen id : 44]
+Output [3]: [ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39]
+Input [5]: [ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, ws_sold_date_sk#40, d_date_sk#53]
-(109) ReusedExchange [Reuses operator id: 55]
-Output [3]: [c_customer_sk#64, c_first_name#65, c_last_name#66]
+(101) ReusedExchange [Reuses operator id: 52]
+Output [3]: [c_customer_sk#54, c_first_name#55, c_last_name#56]
-(110) Sort [codegen id : 46]
-Input [3]: [c_customer_sk#64, c_first_name#65, c_last_name#66]
-Arguments: [c_customer_sk#64 ASC NULLS FIRST], false, 0
+(102) Sort [codegen id : 46]
+Input [3]: [c_customer_sk#54, c_first_name#55, c_last_name#56]
+Arguments: [c_customer_sk#54 ASC NULLS FIRST], false, 0
-(111) ReusedExchange [Reuses operator id: 34]
-Output [3]: [ss_customer_sk#54, ss_quantity#55, ss_sales_price#56]
+(103) ReusedExchange [Reuses operator id: 33]
+Output [3]: [ss_customer_sk#48, ss_quantity#49, ss_sales_price#50]
-(112) Sort [codegen id : 48]
-Input [3]: [ss_customer_sk#54, ss_quantity#55, ss_sales_price#56]
-Arguments: [ss_customer_sk#54 ASC NULLS FIRST], false, 0
+(104) Sort [codegen id : 48]
+Input [3]: [ss_customer_sk#48, ss_quantity#49, ss_sales_price#50]
+Arguments: [ss_customer_sk#48 ASC NULLS FIRST], false, 0
-(113) ReusedExchange [Reuses operator id: 39]
-Output [1]: [c_customer_sk#57]
+(105) ReusedExchange [Reuses operator id: 38]
+Output [1]: [c_customer_sk#51]
-(114) Sort [codegen id : 50]
-Input [1]: [c_customer_sk#57]
-Arguments: [c_customer_sk#57 ASC NULLS FIRST], false, 0
+(106) Sort [codegen id : 50]
+Input [1]: [c_customer_sk#51]
+Arguments: [c_customer_sk#51 ASC NULLS FIRST], false, 0
-(115) SortMergeJoin [codegen id : 51]
-Left keys [1]: [ss_customer_sk#54]
-Right keys [1]: [c_customer_sk#57]
+(107) SortMergeJoin [codegen id : 51]
+Left keys [1]: [ss_customer_sk#48]
+Right keys [1]: [c_customer_sk#51]
Join type: Inner
Join condition: None
-(116) Project [codegen id : 51]
-Output [3]: [ss_quantity#55, ss_sales_price#56, c_customer_sk#57]
-Input [4]: [ss_customer_sk#54, ss_quantity#55, ss_sales_price#56, c_customer_sk#57]
-
-(117) HashAggregate [codegen id : 51]
-Input [3]: [ss_quantity#55, ss_sales_price#56, c_customer_sk#57]
-Keys [1]: [c_customer_sk#57]
-Functions [1]: [partial_sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))]
-Aggregate Attributes [2]: [sum#58, isEmpty#59]
-Results [3]: [c_customer_sk#57, sum#60, isEmpty#61]
-
-(118) HashAggregate [codegen id : 51]
-Input [3]: [c_customer_sk#57, sum#60, isEmpty#61]
-Keys [1]: [c_customer_sk#57]
-Functions [1]: [sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))#29]
-Results [2]: [c_customer_sk#57, sum((cast(ss_quantity#55 as decimal(10,0)) * ss_sales_price#56))#29 AS ssales#62]
-
-(119) Filter [codegen id : 51]
-Input [2]: [c_customer_sk#57, ssales#62]
-Condition : (isnotnull(ssales#62) AND (cast(ssales#62 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#31, [id=#7])))
-
-(120) Project [codegen id : 51]
-Output [1]: [c_customer_sk#57]
-Input [2]: [c_customer_sk#57, ssales#62]
-
-(121) Sort [codegen id : 51]
-Input [1]: [c_customer_sk#57]
-Arguments: [c_customer_sk#57 ASC NULLS FIRST], false, 0
-
-(122) SortMergeJoin [codegen id : 52]
-Left keys [1]: [c_customer_sk#64]
-Right keys [1]: [c_customer_sk#57]
+(108) Project [codegen id : 51]
+Output [3]: [ss_quantity#49, ss_sales_price#50, c_customer_sk#51]
+Input [4]: [ss_customer_sk#48, ss_quantity#49, ss_sales_price#50, c_customer_sk#51]
+
+(109) SortAggregate [codegen id : 51]
+Input [3]: [ss_quantity#49, ss_sales_price#50, c_customer_sk#51]
+Keys [1]: [c_customer_sk#51]
+Functions [1]: [sum((cast(ss_quantity#49 as decimal(10,0)) * ss_sales_price#50))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#49 as decimal(10,0)) * ss_sales_price#50))#23]
+Results [2]: [c_customer_sk#51, sum((cast(ss_quantity#49 as decimal(10,0)) * ss_sales_price#50))#23 AS ssales#52]
+
+(110) Filter [codegen id : 51]
+Input [2]: [c_customer_sk#51, ssales#52]
+Condition : (isnotnull(ssales#52) AND (cast(ssales#52 as decimal(38,8)) > (0.500000 * ReusedSubquery Subquery scalar-subquery#25, [id=#7])))
+
+(111) Project [codegen id : 51]
+Output [1]: [c_customer_sk#51]
+Input [2]: [c_customer_sk#51, ssales#52]
+
+(112) SortMergeJoin [codegen id : 52]
+Left keys [1]: [c_customer_sk#54]
+Right keys [1]: [c_customer_sk#51]
Join type: LeftSemi
Join condition: None
-(123) SortMergeJoin [codegen id : 53]
-Left keys [1]: [ws_bill_customer_sk#43]
-Right keys [1]: [c_customer_sk#64]
+(113) SortMergeJoin [codegen id : 53]
+Left keys [1]: [ws_bill_customer_sk#37]
+Right keys [1]: [c_customer_sk#54]
Join type: Inner
Join condition: None
-(124) Project [codegen id : 53]
-Output [4]: [ws_quantity#44, ws_list_price#45, c_first_name#65, c_last_name#66]
-Input [6]: [ws_bill_customer_sk#43, ws_quantity#44, ws_list_price#45, c_customer_sk#64, c_first_name#65, c_last_name#66]
+(114) Project [codegen id : 53]
+Output [4]: [ws_quantity#38, ws_list_price#39, c_first_name#55, c_last_name#56]
+Input [6]: [ws_bill_customer_sk#37, ws_quantity#38, ws_list_price#39, c_customer_sk#54, c_first_name#55, c_last_name#56]
-(125) HashAggregate [codegen id : 53]
-Input [4]: [ws_quantity#44, ws_list_price#45, c_first_name#65, c_last_name#66]
-Keys [2]: [c_last_name#66, c_first_name#65]
-Functions [1]: [partial_sum((cast(ws_quantity#44 as decimal(10,0)) * ws_list_price#45))]
-Aggregate Attributes [2]: [sum#67, isEmpty#68]
-Results [4]: [c_last_name#66, c_first_name#65, sum#69, isEmpty#70]
+(115) HashAggregate [codegen id : 53]
+Input [4]: [ws_quantity#38, ws_list_price#39, c_first_name#55, c_last_name#56]
+Keys [2]: [c_last_name#56, c_first_name#55]
+Functions [1]: [partial_sum((cast(ws_quantity#38 as decimal(10,0)) * ws_list_price#39))]
+Aggregate Attributes [2]: [sum#57, isEmpty#58]
+Results [4]: [c_last_name#56, c_first_name#55, sum#59, isEmpty#60]
-(126) Exchange
-Input [4]: [c_last_name#66, c_first_name#65, sum#69, isEmpty#70]
-Arguments: hashpartitioning(c_last_name#66, c_first_name#65, 5), ENSURE_REQUIREMENTS, [plan_id=12]
+(116) Exchange
+Input [4]: [c_last_name#56, c_first_name#55, sum#59, isEmpty#60]
+Arguments: hashpartitioning(c_last_name#56, c_first_name#55, 5), ENSURE_REQUIREMENTS, [plan_id=12]
-(127) HashAggregate [codegen id : 54]
-Input [4]: [c_last_name#66, c_first_name#65, sum#69, isEmpty#70]
-Keys [2]: [c_last_name#66, c_first_name#65]
-Functions [1]: [sum((cast(ws_quantity#44 as decimal(10,0)) * ws_list_price#45))]
-Aggregate Attributes [1]: [sum((cast(ws_quantity#44 as decimal(10,0)) * ws_list_price#45))#71]
-Results [3]: [c_last_name#66, c_first_name#65, sum((cast(ws_quantity#44 as decimal(10,0)) * ws_list_price#45))#71 AS sales#72]
+(117) HashAggregate [codegen id : 54]
+Input [4]: [c_last_name#56, c_first_name#55, sum#59, isEmpty#60]
+Keys [2]: [c_last_name#56, c_first_name#55]
+Functions [1]: [sum((cast(ws_quantity#38 as decimal(10,0)) * ws_list_price#39))]
+Aggregate Attributes [1]: [sum((cast(ws_quantity#38 as decimal(10,0)) * ws_list_price#39))#61]
+Results [3]: [c_last_name#56, c_first_name#55, sum((cast(ws_quantity#38 as decimal(10,0)) * ws_list_price#39))#61 AS sales#62]
-(128) Union
+(118) Union
-(129) TakeOrderedAndProject
-Input [3]: [c_last_name#35, c_first_name#34, sales#41]
-Arguments: 100, [c_last_name#35 ASC NULLS FIRST, c_first_name#34 ASC NULLS FIRST, sales#41 ASC NULLS FIRST], [c_last_name#35, c_first_name#34, sales#41]
+(119) TakeOrderedAndProject
+Input [3]: [c_last_name#29, c_first_name#28, sales#35]
+Arguments: 100, [c_last_name#29 ASC NULLS FIRST, c_first_name#28 ASC NULLS FIRST, sales#35 ASC NULLS FIRST], [c_last_name#29, c_first_name#28, sales#35]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = cs_sold_date_sk#5 IN dynamicpruning#6
-BroadcastExchange (134)
-+- * Project (133)
- +- * Filter (132)
- +- * ColumnarToRow (131)
- +- Scan parquet spark_catalog.default.date_dim (130)
+BroadcastExchange (124)
++- * Project (123)
+ +- * Filter (122)
+ +- * ColumnarToRow (121)
+ +- Scan parquet spark_catalog.default.date_dim (120)
-(130) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#32, d_year#73, d_moy#74]
+(120) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#26, d_year#63, d_moy#64]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2000), EqualTo(d_moy,2), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(131) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#32, d_year#73, d_moy#74]
+(121) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#26, d_year#63, d_moy#64]
-(132) Filter [codegen id : 1]
-Input [3]: [d_date_sk#32, d_year#73, d_moy#74]
-Condition : ((((isnotnull(d_year#73) AND isnotnull(d_moy#74)) AND (d_year#73 = 2000)) AND (d_moy#74 = 2)) AND isnotnull(d_date_sk#32))
+(122) Filter [codegen id : 1]
+Input [3]: [d_date_sk#26, d_year#63, d_moy#64]
+Condition : ((((isnotnull(d_year#63) AND isnotnull(d_moy#64)) AND (d_year#63 = 2000)) AND (d_moy#64 = 2)) AND isnotnull(d_date_sk#26))
-(133) Project [codegen id : 1]
-Output [1]: [d_date_sk#32]
-Input [3]: [d_date_sk#32, d_year#73, d_moy#74]
+(123) Project [codegen id : 1]
+Output [1]: [d_date_sk#26]
+Input [3]: [d_date_sk#26, d_year#63, d_moy#64]
-(134) BroadcastExchange
-Input [1]: [d_date_sk#32]
+(124) BroadcastExchange
+Input [1]: [d_date_sk#26]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=13]
Subquery:2 Hosting operator id = 6 Hosting Expression = ss_sold_date_sk#8 IN dynamicpruning#9
-BroadcastExchange (139)
-+- * Project (138)
- +- * Filter (137)
- +- * ColumnarToRow (136)
- +- Scan parquet spark_catalog.default.date_dim (135)
+BroadcastExchange (129)
++- * Project (128)
+ +- * Filter (127)
+ +- * ColumnarToRow (126)
+ +- Scan parquet spark_catalog.default.date_dim (125)
-(135) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#10, d_date#11, d_year#75]
+(125) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#10, d_date#11, d_year#65]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_date:date,d_year:int>
-(136) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#10, d_date#11, d_year#75]
+(126) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#10, d_date#11, d_year#65]
-(137) Filter [codegen id : 1]
-Input [3]: [d_date_sk#10, d_date#11, d_year#75]
-Condition : (d_year#75 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#10))
+(127) Filter [codegen id : 1]
+Input [3]: [d_date_sk#10, d_date#11, d_year#65]
+Condition : (d_year#65 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#10))
-(138) Project [codegen id : 1]
+(128) Project [codegen id : 1]
Output [2]: [d_date_sk#10, d_date#11]
-Input [3]: [d_date_sk#10, d_date#11, d_year#75]
+Input [3]: [d_date_sk#10, d_date#11, d_year#65]
-(139) BroadcastExchange
+(129) BroadcastExchange
Input [2]: [d_date_sk#10, d_date#11]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=14]
-Subquery:3 Hosting operator id = 45 Hosting Expression = Subquery scalar-subquery#31, [id=#7]
-* HashAggregate (156)
-+- Exchange (155)
- +- * HashAggregate (154)
- +- * HashAggregate (153)
- +- * HashAggregate (152)
- +- * Project (151)
- +- * SortMergeJoin Inner (150)
- :- * Sort (147)
- : +- Exchange (146)
- : +- * Project (145)
- : +- * BroadcastHashJoin Inner BuildRight (144)
- : :- * Filter (142)
- : : +- * ColumnarToRow (141)
- : : +- Scan parquet spark_catalog.default.store_sales (140)
- : +- ReusedExchange (143)
- +- * Sort (149)
- +- ReusedExchange (148)
-
-
-(140) Scan parquet spark_catalog.default.store_sales
-Output [4]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78, ss_sold_date_sk#79]
+Subquery:3 Hosting operator id = 43 Hosting Expression = Subquery scalar-subquery#25, [id=#7]
+* HashAggregate (145)
++- Exchange (144)
+ +- * HashAggregate (143)
+ +- * SortAggregate (142)
+ +- * Project (141)
+ +- * SortMergeJoin Inner (140)
+ :- * Sort (137)
+ : +- Exchange (136)
+ : +- * Project (135)
+ : +- * BroadcastHashJoin Inner BuildRight (134)
+ : :- * Filter (132)
+ : : +- * ColumnarToRow (131)
+ : : +- Scan parquet spark_catalog.default.store_sales (130)
+ : +- ReusedExchange (133)
+ +- * Sort (139)
+ +- ReusedExchange (138)
+
+
+(130) Scan parquet spark_catalog.default.store_sales
+Output [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69]
Batched: true
Location: InMemoryFileIndex []
-PartitionFilters: [isnotnull(ss_sold_date_sk#79), dynamicpruningexpression(ss_sold_date_sk#79 IN dynamicpruning#80)]
+PartitionFilters: [isnotnull(ss_sold_date_sk#69), dynamicpruningexpression(ss_sold_date_sk#69 IN dynamicpruning#70)]
PushedFilters: [IsNotNull(ss_customer_sk)]
ReadSchema: struct<ss_customer_sk:int,ss_quantity:int,ss_sales_price:decimal(7,2)>
-(141) ColumnarToRow [codegen id : 2]
-Input [4]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78, ss_sold_date_sk#79]
+(131) ColumnarToRow [codegen id : 2]
+Input [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69]
-(142) Filter [codegen id : 2]
-Input [4]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78, ss_sold_date_sk#79]
-Condition : isnotnull(ss_customer_sk#76)
+(132) Filter [codegen id : 2]
+Input [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69]
+Condition : isnotnull(ss_customer_sk#66)
-(143) ReusedExchange [Reuses operator id: 161]
-Output [1]: [d_date_sk#81]
+(133) ReusedExchange [Reuses operator id: 150]
+Output [1]: [d_date_sk#71]
-(144) BroadcastHashJoin [codegen id : 2]
-Left keys [1]: [ss_sold_date_sk#79]
-Right keys [1]: [d_date_sk#81]
+(134) BroadcastHashJoin [codegen id : 2]
+Left keys [1]: [ss_sold_date_sk#69]
+Right keys [1]: [d_date_sk#71]
Join type: Inner
Join condition: None
-(145) Project [codegen id : 2]
-Output [3]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78]
-Input [5]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78, ss_sold_date_sk#79, d_date_sk#81]
+(135) Project [codegen id : 2]
+Output [3]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68]
+Input [5]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, ss_sold_date_sk#69, d_date_sk#71]
-(146) Exchange
-Input [3]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78]
-Arguments: hashpartitioning(ss_customer_sk#76, 5), ENSURE_REQUIREMENTS, [plan_id=15]
+(136) Exchange
+Input [3]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68]
+Arguments: hashpartitioning(ss_customer_sk#66, 5), ENSURE_REQUIREMENTS, [plan_id=15]
-(147) Sort [codegen id : 3]
-Input [3]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78]
-Arguments: [ss_customer_sk#76 ASC NULLS FIRST], false, 0
+(137) Sort [codegen id : 3]
+Input [3]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68]
+Arguments: [ss_customer_sk#66 ASC NULLS FIRST], false, 0
-(148) ReusedExchange [Reuses operator id: 39]
-Output [1]: [c_customer_sk#82]
+(138) ReusedExchange [Reuses operator id: 38]
+Output [1]: [c_customer_sk#72]
-(149) Sort [codegen id : 5]
-Input [1]: [c_customer_sk#82]
-Arguments: [c_customer_sk#82 ASC NULLS FIRST], false, 0
+(139) Sort [codegen id : 5]
+Input [1]: [c_customer_sk#72]
+Arguments: [c_customer_sk#72 ASC NULLS FIRST], false, 0
-(150) SortMergeJoin [codegen id : 6]
-Left keys [1]: [ss_customer_sk#76]
-Right keys [1]: [c_customer_sk#82]
+(140) SortMergeJoin [codegen id : 6]
+Left keys [1]: [ss_customer_sk#66]
+Right keys [1]: [c_customer_sk#72]
Join type: Inner
Join condition: None
-(151) Project [codegen id : 6]
-Output [3]: [ss_quantity#77, ss_sales_price#78, c_customer_sk#82]
-Input [4]: [ss_customer_sk#76, ss_quantity#77, ss_sales_price#78, c_customer_sk#82]
-
-(152) HashAggregate [codegen id : 6]
-Input [3]: [ss_quantity#77, ss_sales_price#78, c_customer_sk#82]
-Keys [1]: [c_customer_sk#82]
-Functions [1]: [partial_sum((cast(ss_quantity#77 as decimal(10,0)) * ss_sales_price#78))]
-Aggregate Attributes [2]: [sum#83, isEmpty#84]
-Results [3]: [c_customer_sk#82, sum#85, isEmpty#86]
-
-(153) HashAggregate [codegen id : 6]
-Input [3]: [c_customer_sk#82, sum#85, isEmpty#86]
-Keys [1]: [c_customer_sk#82]
-Functions [1]: [sum((cast(ss_quantity#77 as decimal(10,0)) * ss_sales_price#78))]
-Aggregate Attributes [1]: [sum((cast(ss_quantity#77 as decimal(10,0)) * ss_sales_price#78))#87]
-Results [1]: [sum((cast(ss_quantity#77 as decimal(10,0)) * ss_sales_price#78))#87 AS csales#88]
-
-(154) HashAggregate [codegen id : 6]
-Input [1]: [csales#88]
+(141) Project [codegen id : 6]
+Output [3]: [ss_quantity#67, ss_sales_price#68, c_customer_sk#72]
+Input [4]: [ss_customer_sk#66, ss_quantity#67, ss_sales_price#68, c_customer_sk#72]
+
+(142) SortAggregate [codegen id : 6]
+Input [3]: [ss_quantity#67, ss_sales_price#68, c_customer_sk#72]
+Keys [1]: [c_customer_sk#72]
+Functions [1]: [sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))]
+Aggregate Attributes [1]: [sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))#73]
+Results [1]: [sum((cast(ss_quantity#67 as decimal(10,0)) * ss_sales_price#68))#73 AS csales#74]
+
+(143) HashAggregate [codegen id : 6]
+Input [1]: [csales#74]
Keys: []
-Functions [1]: [partial_max(csales#88)]
-Aggregate Attributes [1]: [max#89]
-Results [1]: [max#90]
+Functions [1]: [partial_max(csales#74)]
+Aggregate Attributes [1]: [max#75]
+Results [1]: [max#76]
-(155) Exchange
-Input [1]: [max#90]
+(144) Exchange
+Input [1]: [max#76]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=16]
-(156) HashAggregate [codegen id : 7]
-Input [1]: [max#90]
+(145) HashAggregate [codegen id : 7]
+Input [1]: [max#76]
Keys: []
-Functions [1]: [max(csales#88)]
-Aggregate Attributes [1]: [max(csales#88)#91]
-Results [1]: [max(csales#88)#91 AS tpcds_cmax#92]
+Functions [1]: [max(csales#74)]
+Aggregate Attributes [1]: [max(csales#74)#77]
+Results [1]: [max(csales#74)#77 AS tpcds_cmax#78]
-Subquery:4 Hosting operator id = 140 Hosting Expression = ss_sold_date_sk#79 IN dynamicpruning#80
-BroadcastExchange (161)
-+- * Project (160)
- +- * Filter (159)
- +- * ColumnarToRow (158)
- +- Scan parquet spark_catalog.default.date_dim (157)
+Subquery:4 Hosting operator id = 130 Hosting Expression = ss_sold_date_sk#69 IN dynamicpruning#70
+BroadcastExchange (150)
++- * Project (149)
+ +- * Filter (148)
+ +- * ColumnarToRow (147)
+ +- Scan parquet spark_catalog.default.date_dim (146)
-(157) Scan parquet spark_catalog.default.date_dim
-Output [2]: [d_date_sk#81, d_year#93]
+(146) Scan parquet spark_catalog.default.date_dim
+Output [2]: [d_date_sk#71, d_year#79]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [In(d_year, [2000,2001,2002,2003]), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int>
-(158) ColumnarToRow [codegen id : 1]
-Input [2]: [d_date_sk#81, d_year#93]
+(147) ColumnarToRow [codegen id : 1]
+Input [2]: [d_date_sk#71, d_year#79]
-(159) Filter [codegen id : 1]
-Input [2]: [d_date_sk#81, d_year#93]
-Condition : (d_year#93 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#81))
+(148) Filter [codegen id : 1]
+Input [2]: [d_date_sk#71, d_year#79]
+Condition : (d_year#79 IN (2000,2001,2002,2003) AND isnotnull(d_date_sk#71))
-(160) Project [codegen id : 1]
-Output [1]: [d_date_sk#81]
-Input [2]: [d_date_sk#81, d_year#93]
+(149) Project [codegen id : 1]
+Output [1]: [d_date_sk#71]
+Input [2]: [d_date_sk#71, d_year#79]
-(161) BroadcastExchange
-Input [1]: [d_date_sk#81]
+(150) BroadcastExchange
+Input [1]: [d_date_sk#71]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=17]
-Subquery:5 Hosting operator id = 65 Hosting Expression = ReusedSubquery Subquery scalar-subquery#31, [id=#7]
+Subquery:5 Hosting operator id = 61 Hosting Expression = ReusedSubquery Subquery scalar-subquery#25, [id=#7]
-Subquery:6 Hosting operator id = 74 Hosting Expression = ws_sold_date_sk#46 IN dynamicpruning#6
+Subquery:6 Hosting operator id = 69 Hosting Expression = ws_sold_date_sk#40 IN dynamicpruning#6
-Subquery:7 Hosting operator id = 102 Hosting Expression = ReusedSubquery Subquery scalar-subquery#31, [id=#7]
+Subquery:7 Hosting operator id = 95 Hosting Expression = ReusedSubquery Subquery scalar-subquery#25, [id=#7]
-Subquery:8 Hosting operator id = 119 Hosting Expression = ReusedSubquery Subquery scalar-subquery#31, [id=#7]
+Subquery:8 Hosting operator id = 110 Hosting Expression = ReusedSubquery Subquery scalar-subquery#25, [id=#7]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/simplified.txt
index 5789b1293678..4f38b6862f85 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q23b.sf100/simplified.txt
@@ -44,110 +44,106 @@ TakeOrderedAndProject [c_last_name,c_first_name,sales]
Sort [item_sk]
Project [item_sk]
Filter [cnt]
- HashAggregate [_groupingexpression,i_item_sk,d_date,count] [count(1),item_sk,cnt,count]
- HashAggregate [_groupingexpression,i_item_sk,d_date] [count,count]
- Project [d_date,i_item_sk,i_item_desc]
- SortMergeJoin [ss_item_sk,i_item_sk]
- InputAdapter
- WholeStageCodegen (5)
- Sort [ss_item_sk]
- InputAdapter
- Exchange [ss_item_sk] #5
- WholeStageCodegen (4)
- Project [ss_item_sk,d_date]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #2
- BroadcastExchange #6
- WholeStageCodegen (1)
- Project [d_date_sk,d_date]
- Filter [d_year,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_date,d_year]
- InputAdapter
- ReusedExchange [d_date_sk,d_date] #6
- InputAdapter
- WholeStageCodegen (7)
- Sort [i_item_sk]
- InputAdapter
- Exchange [i_item_sk] #7
- WholeStageCodegen (6)
- Filter [i_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_item_sk,i_item_desc]
- InputAdapter
- WholeStageCodegen (15)
- Sort [c_customer_sk]
- Project [c_customer_sk]
- Filter [ssales]
- Subquery #3
- WholeStageCodegen (7)
- HashAggregate [max] [max(csales),tpcds_cmax,max]
- InputAdapter
- Exchange #10
- WholeStageCodegen (6)
- HashAggregate [csales] [max,max]
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),csales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
+ HashAggregate [_groupingexpression,i_item_sk,d_date] [count(1),item_sk,cnt,count]
+ Project [d_date,i_item_sk,i_item_desc]
+ SortMergeJoin [ss_item_sk,i_item_sk]
InputAdapter
- WholeStageCodegen (3)
- Sort [ss_customer_sk]
+ WholeStageCodegen (5)
+ Sort [ss_item_sk]
InputAdapter
- Exchange [ss_customer_sk] #11
- WholeStageCodegen (2)
- Project [ss_customer_sk,ss_quantity,ss_sales_price]
+ Exchange [ss_item_sk] #5
+ WholeStageCodegen (4)
+ Project [ss_item_sk,d_date]
BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_customer_sk]
+ Filter [ss_item_sk]
ColumnarToRow
InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #4
- BroadcastExchange #12
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #2
+ BroadcastExchange #6
WholeStageCodegen (1)
- Project [d_date_sk]
+ Project [d_date_sk,d_date]
Filter [d_year,d_date_sk]
ColumnarToRow
InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year]
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_date,d_year]
InputAdapter
- ReusedExchange [d_date_sk] #12
+ ReusedExchange [d_date_sk,d_date] #6
InputAdapter
- WholeStageCodegen (5)
- Sort [c_customer_sk]
+ WholeStageCodegen (7)
+ Sort [i_item_sk]
InputAdapter
- ReusedExchange [c_customer_sk] #9
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
- InputAdapter
- WholeStageCodegen (12)
- Sort [ss_customer_sk]
- InputAdapter
- Exchange [ss_customer_sk] #8
- WholeStageCodegen (11)
- Project [ss_customer_sk,ss_quantity,ss_sales_price]
- Filter [ss_customer_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
- InputAdapter
- WholeStageCodegen (14)
- Sort [c_customer_sk]
- InputAdapter
- Exchange [c_customer_sk] #9
- WholeStageCodegen (13)
- Filter [c_customer_sk]
- ColumnarToRow
+ Exchange [i_item_sk] #7
+ WholeStageCodegen (6)
+ Filter [i_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_item_sk,i_item_desc]
+ InputAdapter
+ WholeStageCodegen (15)
+ Project [c_customer_sk]
+ Filter [ssales]
+ Subquery #3
+ WholeStageCodegen (7)
+ HashAggregate [max] [max(csales),tpcds_cmax,max]
+ InputAdapter
+ Exchange #10
+ WholeStageCodegen (6)
+ HashAggregate [csales] [max,max]
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),csales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (3)
+ Sort [ss_customer_sk]
+ InputAdapter
+ Exchange [ss_customer_sk] #11
+ WholeStageCodegen (2)
+ Project [ss_customer_sk,ss_quantity,ss_sales_price]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #4
+ BroadcastExchange #12
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year]
+ InputAdapter
+ ReusedExchange [d_date_sk] #12
+ InputAdapter
+ WholeStageCodegen (5)
+ Sort [c_customer_sk]
InputAdapter
- Scan parquet spark_catalog.default.customer [c_customer_sk]
+ ReusedExchange [c_customer_sk] #9
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (12)
+ Sort [ss_customer_sk]
+ InputAdapter
+ Exchange [ss_customer_sk] #8
+ WholeStageCodegen (11)
+ Project [ss_customer_sk,ss_quantity,ss_sales_price]
+ Filter [ss_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_quantity,ss_sales_price,ss_sold_date_sk]
+ InputAdapter
+ WholeStageCodegen (14)
+ Sort [c_customer_sk]
+ InputAdapter
+ Exchange [c_customer_sk] #9
+ WholeStageCodegen (13)
+ Filter [c_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.customer [c_customer_sk]
InputAdapter
ReusedExchange [d_date_sk] #4
InputAdapter
@@ -165,24 +161,22 @@ TakeOrderedAndProject [c_last_name,c_first_name,sales]
Scan parquet spark_catalog.default.customer [c_customer_sk,c_first_name,c_last_name]
InputAdapter
WholeStageCodegen (24)
- Sort [c_customer_sk]
- Project [c_customer_sk]
- Filter [ssales]
- ReusedSubquery [tpcds_cmax] #3
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
- InputAdapter
- WholeStageCodegen (21)
- Sort [ss_customer_sk]
- InputAdapter
- ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
- InputAdapter
- WholeStageCodegen (23)
- Sort [c_customer_sk]
- InputAdapter
- ReusedExchange [c_customer_sk] #9
+ Project [c_customer_sk]
+ Filter [ssales]
+ ReusedSubquery [tpcds_cmax] #3
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (21)
+ Sort [ss_customer_sk]
+ InputAdapter
+ ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
+ InputAdapter
+ WholeStageCodegen (23)
+ Sort [c_customer_sk]
+ InputAdapter
+ ReusedExchange [c_customer_sk] #9
WholeStageCodegen (54)
HashAggregate [c_last_name,c_first_name,sum,isEmpty] [sum((cast(ws_quantity as decimal(10,0)) * ws_list_price)),sales,sum,isEmpty]
InputAdapter
@@ -220,40 +214,37 @@ TakeOrderedAndProject [c_last_name,c_first_name,sales]
Sort [item_sk]
Project [item_sk]
Filter [cnt]
- HashAggregate [_groupingexpression,i_item_sk,d_date,count] [count(1),item_sk,cnt,count]
- HashAggregate [_groupingexpression,i_item_sk,d_date] [count,count]
- Project [d_date,i_item_sk,i_item_desc]
- SortMergeJoin [ss_item_sk,i_item_sk]
- InputAdapter
- WholeStageCodegen (32)
- Sort [ss_item_sk]
- InputAdapter
- ReusedExchange [ss_item_sk,d_date] #5
- InputAdapter
- WholeStageCodegen (34)
- Sort [i_item_sk]
- InputAdapter
- ReusedExchange [i_item_sk,i_item_desc] #7
+ HashAggregate [_groupingexpression,i_item_sk,d_date] [count(1),item_sk,cnt,count]
+ Project [d_date,i_item_sk,i_item_desc]
+ SortMergeJoin [ss_item_sk,i_item_sk]
+ InputAdapter
+ WholeStageCodegen (32)
+ Sort [ss_item_sk]
+ InputAdapter
+ ReusedExchange [ss_item_sk,d_date] #5
+ InputAdapter
+ WholeStageCodegen (34)
+ Sort [i_item_sk]
+ InputAdapter
+ ReusedExchange [i_item_sk,i_item_desc] #7
InputAdapter
WholeStageCodegen (42)
- Sort [c_customer_sk]
- Project [c_customer_sk]
- Filter [ssales]
- ReusedSubquery [tpcds_cmax] #3
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
- InputAdapter
- WholeStageCodegen (39)
- Sort [ss_customer_sk]
- InputAdapter
- ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
- InputAdapter
- WholeStageCodegen (41)
- Sort [c_customer_sk]
- InputAdapter
- ReusedExchange [c_customer_sk] #9
+ Project [c_customer_sk]
+ Filter [ssales]
+ ReusedSubquery [tpcds_cmax] #3
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (39)
+ Sort [ss_customer_sk]
+ InputAdapter
+ ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
+ InputAdapter
+ WholeStageCodegen (41)
+ Sort [c_customer_sk]
+ InputAdapter
+ ReusedExchange [c_customer_sk] #9
InputAdapter
ReusedExchange [d_date_sk] #4
InputAdapter
@@ -266,21 +257,19 @@ TakeOrderedAndProject [c_last_name,c_first_name,sales]
ReusedExchange [c_customer_sk,c_first_name,c_last_name] #13
InputAdapter
WholeStageCodegen (51)
- Sort [c_customer_sk]
- Project [c_customer_sk]
- Filter [ssales]
- ReusedSubquery [tpcds_cmax] #3
- HashAggregate [c_customer_sk,sum,isEmpty] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
- HashAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum,isEmpty,sum,isEmpty]
- Project [ss_quantity,ss_sales_price,c_customer_sk]
- SortMergeJoin [ss_customer_sk,c_customer_sk]
- InputAdapter
- WholeStageCodegen (48)
- Sort [ss_customer_sk]
- InputAdapter
- ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
- InputAdapter
- WholeStageCodegen (50)
- Sort [c_customer_sk]
- InputAdapter
- ReusedExchange [c_customer_sk] #9
+ Project [c_customer_sk]
+ Filter [ssales]
+ ReusedSubquery [tpcds_cmax] #3
+ SortAggregate [c_customer_sk,ss_quantity,ss_sales_price] [sum((cast(ss_quantity as decimal(10,0)) * ss_sales_price)),ssales,sum,isEmpty]
+ Project [ss_quantity,ss_sales_price,c_customer_sk]
+ SortMergeJoin [ss_customer_sk,c_customer_sk]
+ InputAdapter
+ WholeStageCodegen (48)
+ Sort [ss_customer_sk]
+ InputAdapter
+ ReusedExchange [ss_customer_sk,ss_quantity,ss_sales_price] #8
+ InputAdapter
+ WholeStageCodegen (50)
+ Sort [c_customer_sk]
+ InputAdapter
+ ReusedExchange [c_customer_sk] #9
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/explain.txt
index d2c4f70ff777..45e5e705a90e 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/explain.txt
@@ -1,66 +1,65 @@
== Physical Plan ==
-TakeOrderedAndProject (62)
-+- * HashAggregate (61)
- +- * HashAggregate (60)
- +- Union (59)
- :- * HashAggregate (28)
- : +- Exchange (27)
- : +- * HashAggregate (26)
- : +- * Project (25)
- : +- * BroadcastHashJoin Inner BuildRight (24)
- : :- * Project (18)
- : : +- * BroadcastHashJoin Inner BuildRight (17)
- : : :- * Project (6)
- : : : +- * BroadcastHashJoin Inner BuildRight (5)
- : : : :- * Filter (3)
- : : : : +- * ColumnarToRow (2)
- : : : : +- Scan parquet spark_catalog.default.store_sales (1)
- : : : +- ReusedExchange (4)
- : : +- BroadcastExchange (16)
- : : +- * BroadcastHashJoin LeftSemi BuildRight (15)
- : : :- * Filter (9)
- : : : +- * ColumnarToRow (8)
- : : : +- Scan parquet spark_catalog.default.item (7)
- : : +- BroadcastExchange (14)
- : : +- * Project (13)
- : : +- * Filter (12)
- : : +- * ColumnarToRow (11)
- : : +- Scan parquet spark_catalog.default.item (10)
- : +- BroadcastExchange (23)
- : +- * Project (22)
- : +- * Filter (21)
- : +- * ColumnarToRow (20)
- : +- Scan parquet spark_catalog.default.customer_address (19)
- :- * HashAggregate (43)
- : +- Exchange (42)
- : +- * HashAggregate (41)
- : +- * Project (40)
- : +- * BroadcastHashJoin Inner BuildRight (39)
- : :- * Project (37)
- : : +- * BroadcastHashJoin Inner BuildRight (36)
- : : :- * Project (34)
- : : : +- * BroadcastHashJoin Inner BuildRight (33)
- : : : :- * Filter (31)
- : : : : +- * ColumnarToRow (30)
- : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
- : : : +- ReusedExchange (32)
- : : +- ReusedExchange (35)
- : +- ReusedExchange (38)
- +- * HashAggregate (58)
- +- Exchange (57)
- +- * HashAggregate (56)
- +- * Project (55)
- +- * BroadcastHashJoin Inner BuildRight (54)
- :- * Project (52)
- : +- * BroadcastHashJoin Inner BuildRight (51)
- : :- * Project (49)
- : : +- * BroadcastHashJoin Inner BuildRight (48)
- : : :- * Filter (46)
- : : : +- * ColumnarToRow (45)
- : : : +- Scan parquet spark_catalog.default.web_sales (44)
- : : +- ReusedExchange (47)
- : +- ReusedExchange (50)
- +- ReusedExchange (53)
+TakeOrderedAndProject (61)
++- * HashAggregate (60)
+ +- Union (59)
+ :- * HashAggregate (28)
+ : +- Exchange (27)
+ : +- * HashAggregate (26)
+ : +- * Project (25)
+ : +- * BroadcastHashJoin Inner BuildRight (24)
+ : :- * Project (18)
+ : : +- * BroadcastHashJoin Inner BuildRight (17)
+ : : :- * Project (6)
+ : : : +- * BroadcastHashJoin Inner BuildRight (5)
+ : : : :- * Filter (3)
+ : : : : +- * ColumnarToRow (2)
+ : : : : +- Scan parquet spark_catalog.default.store_sales (1)
+ : : : +- ReusedExchange (4)
+ : : +- BroadcastExchange (16)
+ : : +- * BroadcastHashJoin LeftSemi BuildRight (15)
+ : : :- * Filter (9)
+ : : : +- * ColumnarToRow (8)
+ : : : +- Scan parquet spark_catalog.default.item (7)
+ : : +- BroadcastExchange (14)
+ : : +- * Project (13)
+ : : +- * Filter (12)
+ : : +- * ColumnarToRow (11)
+ : : +- Scan parquet spark_catalog.default.item (10)
+ : +- BroadcastExchange (23)
+ : +- * Project (22)
+ : +- * Filter (21)
+ : +- * ColumnarToRow (20)
+ : +- Scan parquet spark_catalog.default.customer_address (19)
+ :- * HashAggregate (43)
+ : +- Exchange (42)
+ : +- * HashAggregate (41)
+ : +- * Project (40)
+ : +- * BroadcastHashJoin Inner BuildRight (39)
+ : :- * Project (37)
+ : : +- * BroadcastHashJoin Inner BuildRight (36)
+ : : :- * Project (34)
+ : : : +- * BroadcastHashJoin Inner BuildRight (33)
+ : : : :- * Filter (31)
+ : : : : +- * ColumnarToRow (30)
+ : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
+ : : : +- ReusedExchange (32)
+ : : +- ReusedExchange (35)
+ : +- ReusedExchange (38)
+ +- * HashAggregate (58)
+ +- Exchange (57)
+ +- * HashAggregate (56)
+ +- * Project (55)
+ +- * BroadcastHashJoin Inner BuildRight (54)
+ :- * Project (52)
+ : +- * BroadcastHashJoin Inner BuildRight (51)
+ : :- * Project (49)
+ : : +- * BroadcastHashJoin Inner BuildRight (48)
+ : : :- * Filter (46)
+ : : : +- * ColumnarToRow (45)
+ : : : +- Scan parquet spark_catalog.default.web_sales (44)
+ : : +- ReusedExchange (47)
+ : +- ReusedExchange (50)
+ +- ReusedExchange (53)
(1) Scan parquet spark_catalog.default.store_sales
@@ -78,7 +77,7 @@ Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Condition : (isnotnull(ss_addr_sk#2) AND isnotnull(ss_item_sk#1))
-(4) ReusedExchange [Reuses operator id: 67]
+(4) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#6]
(5) BroadcastHashJoin [codegen id : 5]
@@ -212,7 +211,7 @@ Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_da
Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_date_sk#20]
Condition : (isnotnull(cs_bill_addr_sk#17) AND isnotnull(cs_item_sk#18))
-(32) ReusedExchange [Reuses operator id: 67]
+(32) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#21]
(33) BroadcastHashJoin [codegen id : 11]
@@ -284,7 +283,7 @@ Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_da
Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_date_sk#32]
Condition : (isnotnull(ws_bill_addr_sk#30) AND isnotnull(ws_item_sk#29))
-(47) ReusedExchange [Reuses operator id: 67]
+(47) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#33]
(48) BroadcastHashJoin [codegen id : 17]
@@ -346,50 +345,43 @@ Results [2]: [i_manufact_id#35, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price
(60) HashAggregate [codegen id : 19]
Input [2]: [i_manufact_id#8, total_sales#16]
Keys [1]: [i_manufact_id#8]
-Functions [1]: [partial_sum(total_sales#16)]
-Aggregate Attributes [2]: [sum#41, isEmpty#42]
-Results [3]: [i_manufact_id#8, sum#43, isEmpty#44]
-
-(61) HashAggregate [codegen id : 19]
-Input [3]: [i_manufact_id#8, sum#43, isEmpty#44]
-Keys [1]: [i_manufact_id#8]
Functions [1]: [sum(total_sales#16)]
-Aggregate Attributes [1]: [sum(total_sales#16)#45]
-Results [2]: [i_manufact_id#8, sum(total_sales#16)#45 AS total_sales#46]
+Aggregate Attributes [1]: [sum(total_sales#16)#41]
+Results [2]: [i_manufact_id#8, sum(total_sales#16)#41 AS total_sales#42]
-(62) TakeOrderedAndProject
-Input [2]: [i_manufact_id#8, total_sales#46]
-Arguments: 100, [total_sales#46 ASC NULLS FIRST], [i_manufact_id#8, total_sales#46]
+(61) TakeOrderedAndProject
+Input [2]: [i_manufact_id#8, total_sales#42]
+Arguments: 100, [total_sales#42 ASC NULLS FIRST], [i_manufact_id#8, total_sales#42]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
-BroadcastExchange (67)
-+- * Project (66)
- +- * Filter (65)
- +- * ColumnarToRow (64)
- +- Scan parquet spark_catalog.default.date_dim (63)
+BroadcastExchange (66)
++- * Project (65)
+ +- * Filter (64)
+ +- * ColumnarToRow (63)
+ +- Scan parquet spark_catalog.default.date_dim (62)
-(63) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(62) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#6, d_year#43, d_moy#44]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(64) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(63) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(65) Filter [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
-Condition : ((((isnotnull(d_year#47) AND isnotnull(d_moy#48)) AND (d_year#47 = 1998)) AND (d_moy#48 = 5)) AND isnotnull(d_date_sk#6))
+(64) Filter [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
+Condition : ((((isnotnull(d_year#43) AND isnotnull(d_moy#44)) AND (d_year#43 = 1998)) AND (d_moy#44 = 5)) AND isnotnull(d_date_sk#6))
-(66) Project [codegen id : 1]
+(65) Project [codegen id : 1]
Output [1]: [d_date_sk#6]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(67) BroadcastExchange
+(66) BroadcastExchange
Input [1]: [d_date_sk#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/simplified.txt
index 70139c5caa7d..7e5208ad92ac 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33.sf100/simplified.txt
@@ -1,102 +1,101 @@
TakeOrderedAndProject [total_sales,i_manufact_id]
WholeStageCodegen (19)
- HashAggregate [i_manufact_id,sum,isEmpty] [sum(total_sales),total_sales,sum,isEmpty]
- HashAggregate [i_manufact_id,total_sales] [sum,isEmpty,sum,isEmpty]
- InputAdapter
- Union
- WholeStageCodegen (6)
- HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_manufact_id] #1
- WholeStageCodegen (5)
- HashAggregate [i_manufact_id,ss_ext_sales_price] [sum,sum]
- Project [ss_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [ss_addr_sk,ca_address_sk]
- Project [ss_addr_sk,ss_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [ss_item_sk,i_item_sk]
- Project [ss_item_sk,ss_addr_sk,ss_ext_sales_price]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_addr_sk,ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_addr_sk,ss_ext_sales_price,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #2
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_year,d_moy,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- BroadcastExchange #3
- WholeStageCodegen (3)
- BroadcastHashJoin [i_manufact_id,i_manufact_id]
- Filter [i_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_item_sk,i_manufact_id]
- InputAdapter
- BroadcastExchange #4
- WholeStageCodegen (2)
- Project [i_manufact_id]
- Filter [i_category]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_category,i_manufact_id]
- InputAdapter
- BroadcastExchange #5
- WholeStageCodegen (4)
- Project [ca_address_sk]
- Filter [ca_gmt_offset,ca_address_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_gmt_offset]
- WholeStageCodegen (12)
- HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(cs_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_manufact_id] #6
- WholeStageCodegen (11)
- HashAggregate [i_manufact_id,cs_ext_sales_price] [sum,sum]
- Project [cs_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [cs_bill_addr_sk,ca_address_sk]
- Project [cs_bill_addr_sk,cs_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [cs_item_sk,i_item_sk]
- Project [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price]
- BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
- Filter [cs_bill_addr_sk,cs_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_sales [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,cs_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- ReusedExchange [i_item_sk,i_manufact_id] #3
- InputAdapter
- ReusedExchange [ca_address_sk] #5
- WholeStageCodegen (18)
- HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ws_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_manufact_id] #7
- WholeStageCodegen (17)
- HashAggregate [i_manufact_id,ws_ext_sales_price] [sum,sum]
- Project [ws_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [ws_bill_addr_sk,ca_address_sk]
- Project [ws_bill_addr_sk,ws_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [ws_item_sk,i_item_sk]
- Project [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price]
- BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
- Filter [ws_bill_addr_sk,ws_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,ws_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- ReusedExchange [i_item_sk,i_manufact_id] #3
- InputAdapter
- ReusedExchange [ca_address_sk] #5
+ HashAggregate [i_manufact_id,total_sales] [sum(total_sales),total_sales,sum,isEmpty]
+ InputAdapter
+ Union
+ WholeStageCodegen (6)
+ HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_manufact_id] #1
+ WholeStageCodegen (5)
+ HashAggregate [i_manufact_id,ss_ext_sales_price] [sum,sum]
+ Project [ss_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [ss_addr_sk,ca_address_sk]
+ Project [ss_addr_sk,ss_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [ss_item_sk,i_item_sk]
+ Project [ss_item_sk,ss_addr_sk,ss_ext_sales_price]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_addr_sk,ss_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_addr_sk,ss_ext_sales_price,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #2
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_moy,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ BroadcastExchange #3
+ WholeStageCodegen (3)
+ BroadcastHashJoin [i_manufact_id,i_manufact_id]
+ Filter [i_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_item_sk,i_manufact_id]
+ InputAdapter
+ BroadcastExchange #4
+ WholeStageCodegen (2)
+ Project [i_manufact_id]
+ Filter [i_category]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_category,i_manufact_id]
+ InputAdapter
+ BroadcastExchange #5
+ WholeStageCodegen (4)
+ Project [ca_address_sk]
+ Filter [ca_gmt_offset,ca_address_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_gmt_offset]
+ WholeStageCodegen (12)
+ HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(cs_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_manufact_id] #6
+ WholeStageCodegen (11)
+ HashAggregate [i_manufact_id,cs_ext_sales_price] [sum,sum]
+ Project [cs_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [cs_bill_addr_sk,ca_address_sk]
+ Project [cs_bill_addr_sk,cs_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [cs_item_sk,i_item_sk]
+ Project [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price]
+ BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
+ Filter [cs_bill_addr_sk,cs_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.catalog_sales [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,cs_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ ReusedExchange [i_item_sk,i_manufact_id] #3
+ InputAdapter
+ ReusedExchange [ca_address_sk] #5
+ WholeStageCodegen (18)
+ HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ws_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_manufact_id] #7
+ WholeStageCodegen (17)
+ HashAggregate [i_manufact_id,ws_ext_sales_price] [sum,sum]
+ Project [ws_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [ws_bill_addr_sk,ca_address_sk]
+ Project [ws_bill_addr_sk,ws_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [ws_item_sk,i_item_sk]
+ Project [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price]
+ BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
+ Filter [ws_bill_addr_sk,ws_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,ws_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ ReusedExchange [i_item_sk,i_manufact_id] #3
+ InputAdapter
+ ReusedExchange [ca_address_sk] #5
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/explain.txt
index 9b64c961a5e9..b8f92f48510e 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/explain.txt
@@ -1,66 +1,65 @@
== Physical Plan ==
-TakeOrderedAndProject (62)
-+- * HashAggregate (61)
- +- * HashAggregate (60)
- +- Union (59)
- :- * HashAggregate (28)
- : +- Exchange (27)
- : +- * HashAggregate (26)
- : +- * Project (25)
- : +- * BroadcastHashJoin Inner BuildRight (24)
- : :- * Project (13)
- : : +- * BroadcastHashJoin Inner BuildRight (12)
- : : :- * Project (6)
- : : : +- * BroadcastHashJoin Inner BuildRight (5)
- : : : :- * Filter (3)
- : : : : +- * ColumnarToRow (2)
- : : : : +- Scan parquet spark_catalog.default.store_sales (1)
- : : : +- ReusedExchange (4)
- : : +- BroadcastExchange (11)
- : : +- * Project (10)
- : : +- * Filter (9)
- : : +- * ColumnarToRow (8)
- : : +- Scan parquet spark_catalog.default.customer_address (7)
- : +- BroadcastExchange (23)
- : +- * BroadcastHashJoin LeftSemi BuildRight (22)
- : :- * Filter (16)
- : : +- * ColumnarToRow (15)
- : : +- Scan parquet spark_catalog.default.item (14)
- : +- BroadcastExchange (21)
- : +- * Project (20)
- : +- * Filter (19)
- : +- * ColumnarToRow (18)
- : +- Scan parquet spark_catalog.default.item (17)
- :- * HashAggregate (43)
- : +- Exchange (42)
- : +- * HashAggregate (41)
- : +- * Project (40)
- : +- * BroadcastHashJoin Inner BuildRight (39)
- : :- * Project (37)
- : : +- * BroadcastHashJoin Inner BuildRight (36)
- : : :- * Project (34)
- : : : +- * BroadcastHashJoin Inner BuildRight (33)
- : : : :- * Filter (31)
- : : : : +- * ColumnarToRow (30)
- : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
- : : : +- ReusedExchange (32)
- : : +- ReusedExchange (35)
- : +- ReusedExchange (38)
- +- * HashAggregate (58)
- +- Exchange (57)
- +- * HashAggregate (56)
- +- * Project (55)
- +- * BroadcastHashJoin Inner BuildRight (54)
- :- * Project (52)
- : +- * BroadcastHashJoin Inner BuildRight (51)
- : :- * Project (49)
- : : +- * BroadcastHashJoin Inner BuildRight (48)
- : : :- * Filter (46)
- : : : +- * ColumnarToRow (45)
- : : : +- Scan parquet spark_catalog.default.web_sales (44)
- : : +- ReusedExchange (47)
- : +- ReusedExchange (50)
- +- ReusedExchange (53)
+TakeOrderedAndProject (61)
++- * HashAggregate (60)
+ +- Union (59)
+ :- * HashAggregate (28)
+ : +- Exchange (27)
+ : +- * HashAggregate (26)
+ : +- * Project (25)
+ : +- * BroadcastHashJoin Inner BuildRight (24)
+ : :- * Project (13)
+ : : +- * BroadcastHashJoin Inner BuildRight (12)
+ : : :- * Project (6)
+ : : : +- * BroadcastHashJoin Inner BuildRight (5)
+ : : : :- * Filter (3)
+ : : : : +- * ColumnarToRow (2)
+ : : : : +- Scan parquet spark_catalog.default.store_sales (1)
+ : : : +- ReusedExchange (4)
+ : : +- BroadcastExchange (11)
+ : : +- * Project (10)
+ : : +- * Filter (9)
+ : : +- * ColumnarToRow (8)
+ : : +- Scan parquet spark_catalog.default.customer_address (7)
+ : +- BroadcastExchange (23)
+ : +- * BroadcastHashJoin LeftSemi BuildRight (22)
+ : :- * Filter (16)
+ : : +- * ColumnarToRow (15)
+ : : +- Scan parquet spark_catalog.default.item (14)
+ : +- BroadcastExchange (21)
+ : +- * Project (20)
+ : +- * Filter (19)
+ : +- * ColumnarToRow (18)
+ : +- Scan parquet spark_catalog.default.item (17)
+ :- * HashAggregate (43)
+ : +- Exchange (42)
+ : +- * HashAggregate (41)
+ : +- * Project (40)
+ : +- * BroadcastHashJoin Inner BuildRight (39)
+ : :- * Project (37)
+ : : +- * BroadcastHashJoin Inner BuildRight (36)
+ : : :- * Project (34)
+ : : : +- * BroadcastHashJoin Inner BuildRight (33)
+ : : : :- * Filter (31)
+ : : : : +- * ColumnarToRow (30)
+ : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
+ : : : +- ReusedExchange (32)
+ : : +- ReusedExchange (35)
+ : +- ReusedExchange (38)
+ +- * HashAggregate (58)
+ +- Exchange (57)
+ +- * HashAggregate (56)
+ +- * Project (55)
+ +- * BroadcastHashJoin Inner BuildRight (54)
+ :- * Project (52)
+ : +- * BroadcastHashJoin Inner BuildRight (51)
+ : :- * Project (49)
+ : : +- * BroadcastHashJoin Inner BuildRight (48)
+ : : :- * Filter (46)
+ : : : +- * ColumnarToRow (45)
+ : : : +- Scan parquet spark_catalog.default.web_sales (44)
+ : : +- ReusedExchange (47)
+ : +- ReusedExchange (50)
+ +- ReusedExchange (53)
(1) Scan parquet spark_catalog.default.store_sales
@@ -78,7 +77,7 @@ Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Condition : (isnotnull(ss_addr_sk#2) AND isnotnull(ss_item_sk#1))
-(4) ReusedExchange [Reuses operator id: 67]
+(4) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#6]
(5) BroadcastHashJoin [codegen id : 5]
@@ -212,7 +211,7 @@ Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_da
Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_date_sk#20]
Condition : (isnotnull(cs_bill_addr_sk#17) AND isnotnull(cs_item_sk#18))
-(32) ReusedExchange [Reuses operator id: 67]
+(32) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#21]
(33) BroadcastHashJoin [codegen id : 11]
@@ -284,7 +283,7 @@ Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_da
Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_date_sk#32]
Condition : (isnotnull(ws_bill_addr_sk#30) AND isnotnull(ws_item_sk#29))
-(47) ReusedExchange [Reuses operator id: 67]
+(47) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#33]
(48) BroadcastHashJoin [codegen id : 17]
@@ -346,50 +345,43 @@ Results [2]: [i_manufact_id#36, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price
(60) HashAggregate [codegen id : 19]
Input [2]: [i_manufact_id#10, total_sales#16]
Keys [1]: [i_manufact_id#10]
-Functions [1]: [partial_sum(total_sales#16)]
-Aggregate Attributes [2]: [sum#41, isEmpty#42]
-Results [3]: [i_manufact_id#10, sum#43, isEmpty#44]
-
-(61) HashAggregate [codegen id : 19]
-Input [3]: [i_manufact_id#10, sum#43, isEmpty#44]
-Keys [1]: [i_manufact_id#10]
Functions [1]: [sum(total_sales#16)]
-Aggregate Attributes [1]: [sum(total_sales#16)#45]
-Results [2]: [i_manufact_id#10, sum(total_sales#16)#45 AS total_sales#46]
+Aggregate Attributes [1]: [sum(total_sales#16)#41]
+Results [2]: [i_manufact_id#10, sum(total_sales#16)#41 AS total_sales#42]
-(62) TakeOrderedAndProject
-Input [2]: [i_manufact_id#10, total_sales#46]
-Arguments: 100, [total_sales#46 ASC NULLS FIRST], [i_manufact_id#10, total_sales#46]
+(61) TakeOrderedAndProject
+Input [2]: [i_manufact_id#10, total_sales#42]
+Arguments: 100, [total_sales#42 ASC NULLS FIRST], [i_manufact_id#10, total_sales#42]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
-BroadcastExchange (67)
-+- * Project (66)
- +- * Filter (65)
- +- * ColumnarToRow (64)
- +- Scan parquet spark_catalog.default.date_dim (63)
+BroadcastExchange (66)
++- * Project (65)
+ +- * Filter (64)
+ +- * ColumnarToRow (63)
+ +- Scan parquet spark_catalog.default.date_dim (62)
-(63) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(62) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#6, d_year#43, d_moy#44]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,1998), EqualTo(d_moy,5), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(64) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(63) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(65) Filter [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
-Condition : ((((isnotnull(d_year#47) AND isnotnull(d_moy#48)) AND (d_year#47 = 1998)) AND (d_moy#48 = 5)) AND isnotnull(d_date_sk#6))
+(64) Filter [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
+Condition : ((((isnotnull(d_year#43) AND isnotnull(d_moy#44)) AND (d_year#43 = 1998)) AND (d_moy#44 = 5)) AND isnotnull(d_date_sk#6))
-(66) Project [codegen id : 1]
+(65) Project [codegen id : 1]
Output [1]: [d_date_sk#6]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(67) BroadcastExchange
+(66) BroadcastExchange
Input [1]: [d_date_sk#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/simplified.txt
index b423d06e2cc4..23ea6a1f3b21 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q33/simplified.txt
@@ -1,102 +1,101 @@
TakeOrderedAndProject [total_sales,i_manufact_id]
WholeStageCodegen (19)
- HashAggregate [i_manufact_id,sum,isEmpty] [sum(total_sales),total_sales,sum,isEmpty]
- HashAggregate [i_manufact_id,total_sales] [sum,isEmpty,sum,isEmpty]
- InputAdapter
- Union
- WholeStageCodegen (6)
- HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_manufact_id] #1
- WholeStageCodegen (5)
- HashAggregate [i_manufact_id,ss_ext_sales_price] [sum,sum]
- Project [ss_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [ss_item_sk,i_item_sk]
- Project [ss_item_sk,ss_ext_sales_price]
- BroadcastHashJoin [ss_addr_sk,ca_address_sk]
- Project [ss_item_sk,ss_addr_sk,ss_ext_sales_price]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_addr_sk,ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_addr_sk,ss_ext_sales_price,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #2
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_year,d_moy,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- BroadcastExchange #3
- WholeStageCodegen (2)
- Project [ca_address_sk]
- Filter [ca_gmt_offset,ca_address_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_gmt_offset]
- InputAdapter
- BroadcastExchange #4
- WholeStageCodegen (4)
- BroadcastHashJoin [i_manufact_id,i_manufact_id]
- Filter [i_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_item_sk,i_manufact_id]
- InputAdapter
- BroadcastExchange #5
- WholeStageCodegen (3)
- Project [i_manufact_id]
- Filter [i_category]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_category,i_manufact_id]
- WholeStageCodegen (12)
- HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(cs_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_manufact_id] #6
- WholeStageCodegen (11)
- HashAggregate [i_manufact_id,cs_ext_sales_price] [sum,sum]
- Project [cs_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [cs_item_sk,i_item_sk]
- Project [cs_item_sk,cs_ext_sales_price]
- BroadcastHashJoin [cs_bill_addr_sk,ca_address_sk]
- Project [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price]
- BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
- Filter [cs_bill_addr_sk,cs_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_sales [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,cs_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- ReusedExchange [ca_address_sk] #3
- InputAdapter
- ReusedExchange [i_item_sk,i_manufact_id] #4
- WholeStageCodegen (18)
- HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ws_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_manufact_id] #7
- WholeStageCodegen (17)
- HashAggregate [i_manufact_id,ws_ext_sales_price] [sum,sum]
- Project [ws_ext_sales_price,i_manufact_id]
- BroadcastHashJoin [ws_item_sk,i_item_sk]
- Project [ws_item_sk,ws_ext_sales_price]
- BroadcastHashJoin [ws_bill_addr_sk,ca_address_sk]
- Project [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price]
- BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
- Filter [ws_bill_addr_sk,ws_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,ws_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- ReusedExchange [ca_address_sk] #3
- InputAdapter
- ReusedExchange [i_item_sk,i_manufact_id] #4
+ HashAggregate [i_manufact_id,total_sales] [sum(total_sales),total_sales,sum,isEmpty]
+ InputAdapter
+ Union
+ WholeStageCodegen (6)
+ HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_manufact_id] #1
+ WholeStageCodegen (5)
+ HashAggregate [i_manufact_id,ss_ext_sales_price] [sum,sum]
+ Project [ss_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [ss_item_sk,i_item_sk]
+ Project [ss_item_sk,ss_ext_sales_price]
+ BroadcastHashJoin [ss_addr_sk,ca_address_sk]
+ Project [ss_item_sk,ss_addr_sk,ss_ext_sales_price]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_addr_sk,ss_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_addr_sk,ss_ext_sales_price,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #2
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_moy,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ BroadcastExchange #3
+ WholeStageCodegen (2)
+ Project [ca_address_sk]
+ Filter [ca_gmt_offset,ca_address_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_gmt_offset]
+ InputAdapter
+ BroadcastExchange #4
+ WholeStageCodegen (4)
+ BroadcastHashJoin [i_manufact_id,i_manufact_id]
+ Filter [i_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_item_sk,i_manufact_id]
+ InputAdapter
+ BroadcastExchange #5
+ WholeStageCodegen (3)
+ Project [i_manufact_id]
+ Filter [i_category]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_category,i_manufact_id]
+ WholeStageCodegen (12)
+ HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(cs_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_manufact_id] #6
+ WholeStageCodegen (11)
+ HashAggregate [i_manufact_id,cs_ext_sales_price] [sum,sum]
+ Project [cs_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [cs_item_sk,i_item_sk]
+ Project [cs_item_sk,cs_ext_sales_price]
+ BroadcastHashJoin [cs_bill_addr_sk,ca_address_sk]
+ Project [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price]
+ BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
+ Filter [cs_bill_addr_sk,cs_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.catalog_sales [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,cs_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ ReusedExchange [ca_address_sk] #3
+ InputAdapter
+ ReusedExchange [i_item_sk,i_manufact_id] #4
+ WholeStageCodegen (18)
+ HashAggregate [i_manufact_id,sum] [sum(UnscaledValue(ws_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_manufact_id] #7
+ WholeStageCodegen (17)
+ HashAggregate [i_manufact_id,ws_ext_sales_price] [sum,sum]
+ Project [ws_ext_sales_price,i_manufact_id]
+ BroadcastHashJoin [ws_item_sk,i_item_sk]
+ Project [ws_item_sk,ws_ext_sales_price]
+ BroadcastHashJoin [ws_bill_addr_sk,ca_address_sk]
+ Project [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price]
+ BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
+ Filter [ws_bill_addr_sk,ws_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,ws_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ ReusedExchange [ca_address_sk] #3
+ InputAdapter
+ ReusedExchange [i_item_sk,i_manufact_id] #4
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/explain.txt
index 2b7cc51820c8..c9a2f9627880 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/explain.txt
@@ -1,7 +1,7 @@
== Physical Plan ==
-TakeOrderedAndProject (47)
-+- * Project (46)
- +- * SortMergeJoin Inner (45)
+TakeOrderedAndProject (46)
++- * Project (45)
+ +- * SortMergeJoin Inner (44)
:- * Sort (14)
: +- Exchange (13)
: +- * Project (12)
@@ -16,36 +16,35 @@ TakeOrderedAndProject (47)
: +- * Filter (8)
: +- * ColumnarToRow (7)
: +- Scan parquet spark_catalog.default.customer_address (6)
- +- * Sort (44)
- +- Exchange (43)
- +- * HashAggregate (42)
- +- * HashAggregate (41)
- +- * Project (40)
- +- * SortMergeJoin Inner (39)
- :- * Sort (36)
- : +- Exchange (35)
- : +- * Project (34)
- : +- * BroadcastHashJoin Inner BuildRight (33)
- : :- * Project (27)
- : : +- * BroadcastHashJoin Inner BuildRight (26)
- : : :- * Project (20)
- : : : +- * BroadcastHashJoin Inner BuildRight (19)
- : : : :- * Filter (17)
- : : : : +- * ColumnarToRow (16)
- : : : : +- Scan parquet spark_catalog.default.store_sales (15)
- : : : +- ReusedExchange (18)
- : : +- BroadcastExchange (25)
- : : +- * Project (24)
- : : +- * Filter (23)
- : : +- * ColumnarToRow (22)
- : : +- Scan parquet spark_catalog.default.store (21)
- : +- BroadcastExchange (32)
- : +- * Project (31)
- : +- * Filter (30)
- : +- * ColumnarToRow (29)
- : +- Scan parquet spark_catalog.default.household_demographics (28)
- +- * Sort (38)
- +- ReusedExchange (37)
+ +- * Sort (43)
+ +- Exchange (42)
+ +- * HashAggregate (41)
+ +- * Project (40)
+ +- * SortMergeJoin Inner (39)
+ :- * Sort (36)
+ : +- Exchange (35)
+ : +- * Project (34)
+ : +- * BroadcastHashJoin Inner BuildRight (33)
+ : :- * Project (27)
+ : : +- * BroadcastHashJoin Inner BuildRight (26)
+ : : :- * Project (20)
+ : : : +- * BroadcastHashJoin Inner BuildRight (19)
+ : : : :- * Filter (17)
+ : : : : +- * ColumnarToRow (16)
+ : : : : +- Scan parquet spark_catalog.default.store_sales (15)
+ : : : +- ReusedExchange (18)
+ : : +- BroadcastExchange (25)
+ : : +- * Project (24)
+ : : +- * Filter (23)
+ : : +- * ColumnarToRow (22)
+ : : +- Scan parquet spark_catalog.default.store (21)
+ : +- BroadcastExchange (32)
+ : +- * Project (31)
+ : +- * Filter (30)
+ : +- * ColumnarToRow (29)
+ : +- Scan parquet spark_catalog.default.household_demographics (28)
+ +- * Sort (38)
+ +- ReusedExchange (37)
(1) Scan parquet spark_catalog.default.customer
@@ -125,7 +124,7 @@ Input [8]: [ss_customer_sk#7, ss_hdemo_sk#8, ss_addr_sk#9, ss_store_sk#10, ss_ti
Input [8]: [ss_customer_sk#7, ss_hdemo_sk#8, ss_addr_sk#9, ss_store_sk#10, ss_ticket_number#11, ss_coupon_amt#12, ss_net_profit#13, ss_sold_date_sk#14]
Condition : (((isnotnull(ss_store_sk#10) AND isnotnull(ss_hdemo_sk#8)) AND isnotnull(ss_addr_sk#9)) AND isnotnull(ss_customer_sk#7))
-(18) ReusedExchange [Reuses operator id: 52]
+(18) ReusedExchange [Reuses operator id: 51]
Output [1]: [d_date_sk#16]
(19) BroadcastHashJoin [codegen id : 10]
@@ -230,68 +229,61 @@ Input [7]: [ss_customer_sk#7, ss_addr_sk#9, ss_ticket_number#11, ss_coupon_amt#1
(41) HashAggregate [codegen id : 14]
Input [6]: [ss_customer_sk#7, ss_addr_sk#9, ss_ticket_number#11, ss_coupon_amt#12, ss_net_profit#13, ca_city#23]
Keys [4]: [ss_ticket_number#11, ss_customer_sk#7, ss_addr_sk#9, ca_city#23]
-Functions [2]: [partial_sum(UnscaledValue(ss_coupon_amt#12)), partial_sum(UnscaledValue(ss_net_profit#13))]
-Aggregate Attributes [2]: [sum#24, sum#25]
-Results [6]: [ss_ticket_number#11, ss_customer_sk#7, ss_addr_sk#9, ca_city#23, sum#26, sum#27]
-
-(42) HashAggregate [codegen id : 14]
-Input [6]: [ss_ticket_number#11, ss_customer_sk#7, ss_addr_sk#9, ca_city#23, sum#26, sum#27]
-Keys [4]: [ss_ticket_number#11, ss_customer_sk#7, ss_addr_sk#9, ca_city#23]
Functions [2]: [sum(UnscaledValue(ss_coupon_amt#12)), sum(UnscaledValue(ss_net_profit#13))]
-Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#12))#28, sum(UnscaledValue(ss_net_profit#13))#29]
-Results [5]: [ss_ticket_number#11, ss_customer_sk#7, ca_city#23 AS bought_city#30, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#12))#28,17,2) AS amt#31, MakeDecimal(sum(UnscaledValue(ss_net_profit#13))#29,17,2) AS profit#32]
+Aggregate Attributes [2]: [sum(UnscaledValue(ss_coupon_amt#12))#24, sum(UnscaledValue(ss_net_profit#13))#25]
+Results [5]: [ss_ticket_number#11, ss_customer_sk#7, ca_city#23 AS bought_city#26, MakeDecimal(sum(UnscaledValue(ss_coupon_amt#12))#24,17,2) AS amt#27, MakeDecimal(sum(UnscaledValue(ss_net_profit#13))#25,17,2) AS profit#28]
-(43) Exchange
-Input [5]: [ss_ticket_number#11, ss_customer_sk#7, bought_city#30, amt#31, profit#32]
+(42) Exchange
+Input [5]: [ss_ticket_number#11, ss_customer_sk#7, bought_city#26, amt#27, profit#28]
Arguments: hashpartitioning(ss_customer_sk#7, 5), ENSURE_REQUIREMENTS, [plan_id=7]
-(44) Sort [codegen id : 15]
-Input [5]: [ss_ticket_number#11, ss_customer_sk#7, bought_city#30, amt#31, profit#32]
+(43) Sort [codegen id : 15]
+Input [5]: [ss_ticket_number#11, ss_customer_sk#7, bought_city#26, amt#27, profit#28]
Arguments: [ss_customer_sk#7 ASC NULLS FIRST], false, 0
-(45) SortMergeJoin [codegen id : 16]
+(44) SortMergeJoin [codegen id : 16]
Left keys [1]: [c_customer_sk#1]
Right keys [1]: [ss_customer_sk#7]
Join type: Inner
-Join condition: NOT (ca_city#6 = bought_city#30)
+Join condition: NOT (ca_city#6 = bought_city#26)
-(46) Project [codegen id : 16]
-Output [7]: [c_last_name#4, c_first_name#3, ca_city#6, bought_city#30, ss_ticket_number#11, amt#31, profit#32]
-Input [9]: [c_customer_sk#1, c_first_name#3, c_last_name#4, ca_city#6, ss_ticket_number#11, ss_customer_sk#7, bought_city#30, amt#31, profit#32]
+(45) Project [codegen id : 16]
+Output [7]: [c_last_name#4, c_first_name#3, ca_city#6, bought_city#26, ss_ticket_number#11, amt#27, profit#28]
+Input [9]: [c_customer_sk#1, c_first_name#3, c_last_name#4, ca_city#6, ss_ticket_number#11, ss_customer_sk#7, bought_city#26, amt#27, profit#28]
-(47) TakeOrderedAndProject
-Input [7]: [c_last_name#4, c_first_name#3, ca_city#6, bought_city#30, ss_ticket_number#11, amt#31, profit#32]
-Arguments: 100, [c_last_name#4 ASC NULLS FIRST, c_first_name#3 ASC NULLS FIRST, ca_city#6 ASC NULLS FIRST, bought_city#30 ASC NULLS FIRST, ss_ticket_number#11 ASC NULLS FIRST], [c_last_name#4, c_first_name#3, ca_city#6, bought_city#30, ss_ticket_number#11, amt#31, profit#32]
+(46) TakeOrderedAndProject
+Input [7]: [c_last_name#4, c_first_name#3, ca_city#6, bought_city#26, ss_ticket_number#11, amt#27, profit#28]
+Arguments: 100, [c_last_name#4 ASC NULLS FIRST, c_first_name#3 ASC NULLS FIRST, ca_city#6 ASC NULLS FIRST, bought_city#26 ASC NULLS FIRST, ss_ticket_number#11 ASC NULLS FIRST], [c_last_name#4, c_first_name#3, ca_city#6, bought_city#26, ss_ticket_number#11, amt#27, profit#28]
===== Subqueries =====
Subquery:1 Hosting operator id = 15 Hosting Expression = ss_sold_date_sk#14 IN dynamicpruning#15
-BroadcastExchange (52)
-+- * Project (51)
- +- * Filter (50)
- +- * ColumnarToRow (49)
- +- Scan parquet spark_catalog.default.date_dim (48)
+BroadcastExchange (51)
++- * Project (50)
+ +- * Filter (49)
+ +- * ColumnarToRow (48)
+ +- Scan parquet spark_catalog.default.date_dim (47)
-(48) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#16, d_year#33, d_dow#34]
+(47) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#16, d_year#29, d_dow#30]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [In(d_dow, [0,6]), In(d_year, [1999,2000,2001]), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_dow:int>
-(49) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#16, d_year#33, d_dow#34]
+(48) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#16, d_year#29, d_dow#30]
-(50) Filter [codegen id : 1]
-Input [3]: [d_date_sk#16, d_year#33, d_dow#34]
-Condition : ((d_dow#34 IN (6,0) AND d_year#33 IN (1999,2000,2001)) AND isnotnull(d_date_sk#16))
+(49) Filter [codegen id : 1]
+Input [3]: [d_date_sk#16, d_year#29, d_dow#30]
+Condition : ((d_dow#30 IN (6,0) AND d_year#29 IN (1999,2000,2001)) AND isnotnull(d_date_sk#16))
-(51) Project [codegen id : 1]
+(50) Project [codegen id : 1]
Output [1]: [d_date_sk#16]
-Input [3]: [d_date_sk#16, d_year#33, d_dow#34]
+Input [3]: [d_date_sk#16, d_year#29, d_dow#30]
-(52) BroadcastExchange
+(51) BroadcastExchange
Input [1]: [d_date_sk#16]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=8]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/simplified.txt
index 86f3b06b7951..2f6b991cc5ef 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q46.sf100/simplified.txt
@@ -36,54 +36,53 @@ TakeOrderedAndProject [c_last_name,c_first_name,ca_city,bought_city,ss_ticket_nu
InputAdapter
Exchange [ss_customer_sk] #4
WholeStageCodegen (14)
- HashAggregate [ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city,sum,sum] [sum(UnscaledValue(ss_coupon_amt)),sum(UnscaledValue(ss_net_profit)),bought_city,amt,profit,sum,sum]
- HashAggregate [ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city,ss_coupon_amt,ss_net_profit] [sum,sum,sum,sum]
- Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ca_city]
- SortMergeJoin [ss_addr_sk,ca_address_sk]
- InputAdapter
- WholeStageCodegen (11)
- Sort [ss_addr_sk]
- InputAdapter
- Exchange [ss_addr_sk] #5
- WholeStageCodegen (10)
- Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
- BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
- Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
- BroadcastHashJoin [ss_store_sk,s_store_sk]
- Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_store_sk,ss_hdemo_sk,ss_addr_sk,ss_customer_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #6
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_dow,d_year,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_dow]
- InputAdapter
- ReusedExchange [d_date_sk] #6
- InputAdapter
- BroadcastExchange #7
- WholeStageCodegen (8)
- Project [s_store_sk]
- Filter [s_city,s_store_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store [s_store_sk,s_city]
- InputAdapter
- BroadcastExchange #8
- WholeStageCodegen (9)
- Project [hd_demo_sk]
- Filter [hd_dep_count,hd_vehicle_count,hd_demo_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.household_demographics [hd_demo_sk,hd_dep_count,hd_vehicle_count]
- InputAdapter
- WholeStageCodegen (13)
- Sort [ca_address_sk]
- InputAdapter
- ReusedExchange [ca_address_sk,ca_city] #3
+ HashAggregate [ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city,ss_coupon_amt,ss_net_profit] [sum(UnscaledValue(ss_coupon_amt)),sum(UnscaledValue(ss_net_profit)),bought_city,amt,profit,sum,sum]
+ Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ca_city]
+ SortMergeJoin [ss_addr_sk,ca_address_sk]
+ InputAdapter
+ WholeStageCodegen (11)
+ Sort [ss_addr_sk]
+ InputAdapter
+ Exchange [ss_addr_sk] #5
+ WholeStageCodegen (10)
+ Project [ss_customer_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
+ BroadcastHashJoin [ss_hdemo_sk,hd_demo_sk]
+ Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
+ BroadcastHashJoin [ss_store_sk,s_store_sk]
+ Project [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_store_sk,ss_hdemo_sk,ss_addr_sk,ss_customer_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_customer_sk,ss_hdemo_sk,ss_addr_sk,ss_store_sk,ss_ticket_number,ss_coupon_amt,ss_net_profit,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #6
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_dow,d_year,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_dow]
+ InputAdapter
+ ReusedExchange [d_date_sk] #6
+ InputAdapter
+ BroadcastExchange #7
+ WholeStageCodegen (8)
+ Project [s_store_sk]
+ Filter [s_city,s_store_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store [s_store_sk,s_city]
+ InputAdapter
+ BroadcastExchange #8
+ WholeStageCodegen (9)
+ Project [hd_demo_sk]
+ Filter [hd_dep_count,hd_vehicle_count,hd_demo_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.household_demographics [hd_demo_sk,hd_dep_count,hd_vehicle_count]
+ InputAdapter
+ WholeStageCodegen (13)
+ Sort [ca_address_sk]
+ InputAdapter
+ ReusedExchange [ca_address_sk,ca_city] #3
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/explain.txt
index 02d0c1eebba8..9748976738f1 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/explain.txt
@@ -1,89 +1,88 @@
== Physical Plan ==
-TakeOrderedAndProject (85)
-+- * HashAggregate (84)
- +- * HashAggregate (83)
- +- Union (82)
- :- * Project (27)
- : +- * Filter (26)
- : +- Window (25)
- : +- * Sort (24)
- : +- Window (23)
- : +- * Sort (22)
- : +- Exchange (21)
- : +- * HashAggregate (20)
- : +- Exchange (19)
- : +- * HashAggregate (18)
- : +- * Project (17)
- : +- * SortMergeJoin Inner (16)
- : :- * Sort (9)
- : : +- Exchange (8)
- : : +- * Project (7)
- : : +- * BroadcastHashJoin Inner BuildRight (6)
- : : :- * Project (4)
- : : : +- * Filter (3)
- : : : +- * ColumnarToRow (2)
- : : : +- Scan parquet spark_catalog.default.web_sales (1)
- : : +- ReusedExchange (5)
- : +- * Sort (15)
- : +- Exchange (14)
- : +- * Project (13)
- : +- * Filter (12)
- : +- * ColumnarToRow (11)
- : +- Scan parquet spark_catalog.default.web_returns (10)
- :- * Project (54)
- : +- * Filter (53)
- : +- Window (52)
- : +- * Sort (51)
- : +- Window (50)
- : +- * Sort (49)
- : +- Exchange (48)
- : +- * HashAggregate (47)
- : +- Exchange (46)
- : +- * HashAggregate (45)
- : +- * Project (44)
- : +- * SortMergeJoin Inner (43)
- : :- * Sort (36)
- : : +- Exchange (35)
- : : +- * Project (34)
- : : +- * BroadcastHashJoin Inner BuildRight (33)
- : : :- * Project (31)
- : : : +- * Filter (30)
- : : : +- * ColumnarToRow (29)
- : : : +- Scan parquet spark_catalog.default.catalog_sales (28)
- : : +- ReusedExchange (32)
- : +- * Sort (42)
- : +- Exchange (41)
- : +- * Project (40)
- : +- * Filter (39)
- : +- * ColumnarToRow (38)
- : +- Scan parquet spark_catalog.default.catalog_returns (37)
- +- * Project (81)
- +- * Filter (80)
- +- Window (79)
- +- * Sort (78)
- +- Window (77)
- +- * Sort (76)
- +- Exchange (75)
- +- * HashAggregate (74)
- +- Exchange (73)
- +- * HashAggregate (72)
- +- * Project (71)
- +- * SortMergeJoin Inner (70)
- :- * Sort (63)
- : +- Exchange (62)
- : +- * Project (61)
- : +- * BroadcastHashJoin Inner BuildRight (60)
- : :- * Project (58)
- : : +- * Filter (57)
- : : +- * ColumnarToRow (56)
- : : +- Scan parquet spark_catalog.default.store_sales (55)
- : +- ReusedExchange (59)
- +- * Sort (69)
- +- Exchange (68)
- +- * Project (67)
- +- * Filter (66)
- +- * ColumnarToRow (65)
- +- Scan parquet spark_catalog.default.store_returns (64)
+TakeOrderedAndProject (84)
++- * HashAggregate (83)
+ +- Union (82)
+ :- * Project (27)
+ : +- * Filter (26)
+ : +- Window (25)
+ : +- * Sort (24)
+ : +- Window (23)
+ : +- * Sort (22)
+ : +- Exchange (21)
+ : +- * HashAggregate (20)
+ : +- Exchange (19)
+ : +- * HashAggregate (18)
+ : +- * Project (17)
+ : +- * SortMergeJoin Inner (16)
+ : :- * Sort (9)
+ : : +- Exchange (8)
+ : : +- * Project (7)
+ : : +- * BroadcastHashJoin Inner BuildRight (6)
+ : : :- * Project (4)
+ : : : +- * Filter (3)
+ : : : +- * ColumnarToRow (2)
+ : : : +- Scan parquet spark_catalog.default.web_sales (1)
+ : : +- ReusedExchange (5)
+ : +- * Sort (15)
+ : +- Exchange (14)
+ : +- * Project (13)
+ : +- * Filter (12)
+ : +- * ColumnarToRow (11)
+ : +- Scan parquet spark_catalog.default.web_returns (10)
+ :- * Project (54)
+ : +- * Filter (53)
+ : +- Window (52)
+ : +- * Sort (51)
+ : +- Window (50)
+ : +- * Sort (49)
+ : +- Exchange (48)
+ : +- * HashAggregate (47)
+ : +- Exchange (46)
+ : +- * HashAggregate (45)
+ : +- * Project (44)
+ : +- * SortMergeJoin Inner (43)
+ : :- * Sort (36)
+ : : +- Exchange (35)
+ : : +- * Project (34)
+ : : +- * BroadcastHashJoin Inner BuildRight (33)
+ : : :- * Project (31)
+ : : : +- * Filter (30)
+ : : : +- * ColumnarToRow (29)
+ : : : +- Scan parquet spark_catalog.default.catalog_sales (28)
+ : : +- ReusedExchange (32)
+ : +- * Sort (42)
+ : +- Exchange (41)
+ : +- * Project (40)
+ : +- * Filter (39)
+ : +- * ColumnarToRow (38)
+ : +- Scan parquet spark_catalog.default.catalog_returns (37)
+ +- * Project (81)
+ +- * Filter (80)
+ +- Window (79)
+ +- * Sort (78)
+ +- Window (77)
+ +- * Sort (76)
+ +- Exchange (75)
+ +- * HashAggregate (74)
+ +- Exchange (73)
+ +- * HashAggregate (72)
+ +- * Project (71)
+ +- * SortMergeJoin Inner (70)
+ :- * Sort (63)
+ : +- Exchange (62)
+ : +- * Project (61)
+ : +- * BroadcastHashJoin Inner BuildRight (60)
+ : :- * Project (58)
+ : : +- * Filter (57)
+ : : +- * ColumnarToRow (56)
+ : : +- Scan parquet spark_catalog.default.store_sales (55)
+ : +- ReusedExchange (59)
+ +- * Sort (69)
+ +- Exchange (68)
+ +- * Project (67)
+ +- * Filter (66)
+ +- * ColumnarToRow (65)
+ +- Scan parquet spark_catalog.default.store_returns (64)
(1) Scan parquet spark_catalog.default.web_sales
@@ -105,7 +104,7 @@ Condition : (((((((isnotnull(ws_net_profit#5) AND isnotnull(ws_net_paid#4)) AND
Output [5]: [ws_item_sk#1, ws_order_number#2, ws_quantity#3, ws_net_paid#4, ws_sold_date_sk#6]
Input [6]: [ws_item_sk#1, ws_order_number#2, ws_quantity#3, ws_net_paid#4, ws_net_profit#5, ws_sold_date_sk#6]
-(5) ReusedExchange [Reuses operator id: 90]
+(5) ReusedExchange [Reuses operator id: 89]
Output [1]: [d_date_sk#8]
(6) BroadcastHashJoin [codegen id : 2]
@@ -227,7 +226,7 @@ Condition : (((((((isnotnull(cs_net_profit#40) AND isnotnull(cs_net_paid#39)) AN
Output [5]: [cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_sold_date_sk#41]
Input [6]: [cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_net_profit#40, cs_sold_date_sk#41]
-(32) ReusedExchange [Reuses operator id: 90]
+(32) ReusedExchange [Reuses operator id: 89]
Output [1]: [d_date_sk#42]
(33) BroadcastHashJoin [codegen id : 12]
@@ -349,7 +348,7 @@ Condition : (((((((isnotnull(ss_net_profit#74) AND isnotnull(ss_net_paid#73)) AN
Output [5]: [ss_item_sk#70, ss_ticket_number#71, ss_quantity#72, ss_net_paid#73, ss_sold_date_sk#75]
Input [6]: [ss_item_sk#70, ss_ticket_number#71, ss_quantity#72, ss_net_paid#73, ss_net_profit#74, ss_sold_date_sk#75]
-(59) ReusedExchange [Reuses operator id: 90]
+(59) ReusedExchange [Reuses operator id: 89]
Output [1]: [d_date_sk#76]
(60) BroadcastHashJoin [codegen id : 22]
@@ -461,46 +460,39 @@ Functions: []
Aggregate Attributes: []
Results [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-(84) HashAggregate [codegen id : 31]
-Input [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-Keys [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-Functions: []
-Aggregate Attributes: []
-Results [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-
-(85) TakeOrderedAndProject
+(84) TakeOrderedAndProject
Input [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
Arguments: 100, [channel#35 ASC NULLS FIRST, return_rank#33 ASC NULLS FIRST, currency_rank#34 ASC NULLS FIRST], [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ws_sold_date_sk#6 IN dynamicpruning#7
-BroadcastExchange (90)
-+- * Project (89)
- +- * Filter (88)
- +- * ColumnarToRow (87)
- +- Scan parquet spark_catalog.default.date_dim (86)
+BroadcastExchange (89)
++- * Project (88)
+ +- * Filter (87)
+ +- * ColumnarToRow (86)
+ +- Scan parquet spark_catalog.default.date_dim (85)
-(86) Scan parquet spark_catalog.default.date_dim
+(85) Scan parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#8, d_year#104, d_moy#105]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,12), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(87) ColumnarToRow [codegen id : 1]
+(86) ColumnarToRow [codegen id : 1]
Input [3]: [d_date_sk#8, d_year#104, d_moy#105]
-(88) Filter [codegen id : 1]
+(87) Filter [codegen id : 1]
Input [3]: [d_date_sk#8, d_year#104, d_moy#105]
Condition : ((((isnotnull(d_year#104) AND isnotnull(d_moy#105)) AND (d_year#104 = 2001)) AND (d_moy#105 = 12)) AND isnotnull(d_date_sk#8))
-(89) Project [codegen id : 1]
+(88) Project [codegen id : 1]
Output [1]: [d_date_sk#8]
Input [3]: [d_date_sk#8, d_year#104, d_moy#105]
-(90) BroadcastExchange
+(89) BroadcastExchange
Input [1]: [d_date_sk#8]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=13]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/simplified.txt
index cc2ebb0c36ea..b8da1aa86dd4 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49.sf100/simplified.txt
@@ -1,157 +1,156 @@
TakeOrderedAndProject [channel,return_rank,currency_rank,item,return_ratio]
WholeStageCodegen (31)
HashAggregate [channel,item,return_ratio,return_rank,currency_rank]
- HashAggregate [channel,item,return_ratio,return_rank,currency_rank]
- InputAdapter
- Union
- WholeStageCodegen (10)
- Project [item,return_ratio,return_rank,currency_rank]
- Filter [return_rank,currency_rank]
- InputAdapter
- Window [currency_ratio]
- WholeStageCodegen (9)
- Sort [currency_ratio]
- InputAdapter
- Window [return_ratio]
- WholeStageCodegen (8)
- Sort [return_ratio]
- InputAdapter
- Exchange #1
- WholeStageCodegen (7)
- HashAggregate [ws_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(wr_return_quantity, 0)),sum(coalesce(ws_quantity, 0)),sum(coalesce(cast(wr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ws_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
- InputAdapter
- Exchange [ws_item_sk] #2
- WholeStageCodegen (6)
- HashAggregate [ws_item_sk,wr_return_quantity,ws_quantity,wr_return_amt,ws_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
- Project [ws_item_sk,ws_quantity,ws_net_paid,wr_return_quantity,wr_return_amt]
- SortMergeJoin [ws_order_number,ws_item_sk,wr_order_number,wr_item_sk]
- InputAdapter
- WholeStageCodegen (3)
- Sort [ws_order_number,ws_item_sk]
- InputAdapter
- Exchange [ws_order_number,ws_item_sk] #3
- WholeStageCodegen (2)
- Project [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid]
- BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
- Project [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_sold_date_sk]
- Filter [ws_net_profit,ws_net_paid,ws_quantity,ws_order_number,ws_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_net_profit,ws_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #4
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_year,d_moy,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
+ InputAdapter
+ Union
+ WholeStageCodegen (10)
+ Project [item,return_ratio,return_rank,currency_rank]
+ Filter [return_rank,currency_rank]
+ InputAdapter
+ Window [currency_ratio]
+ WholeStageCodegen (9)
+ Sort [currency_ratio]
+ InputAdapter
+ Window [return_ratio]
+ WholeStageCodegen (8)
+ Sort [return_ratio]
+ InputAdapter
+ Exchange #1
+ WholeStageCodegen (7)
+ HashAggregate [ws_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(wr_return_quantity, 0)),sum(coalesce(ws_quantity, 0)),sum(coalesce(cast(wr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ws_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
+ InputAdapter
+ Exchange [ws_item_sk] #2
+ WholeStageCodegen (6)
+ HashAggregate [ws_item_sk,wr_return_quantity,ws_quantity,wr_return_amt,ws_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
+ Project [ws_item_sk,ws_quantity,ws_net_paid,wr_return_quantity,wr_return_amt]
+ SortMergeJoin [ws_order_number,ws_item_sk,wr_order_number,wr_item_sk]
+ InputAdapter
+ WholeStageCodegen (3)
+ Sort [ws_order_number,ws_item_sk]
+ InputAdapter
+ Exchange [ws_order_number,ws_item_sk] #3
+ WholeStageCodegen (2)
+ Project [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid]
+ BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
+ Project [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_sold_date_sk]
+ Filter [ws_net_profit,ws_net_paid,ws_quantity,ws_order_number,ws_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_net_profit,ws_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #4
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_moy,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
+ InputAdapter
+ WholeStageCodegen (5)
+ Sort [wr_order_number,wr_item_sk]
+ InputAdapter
+ Exchange [wr_order_number,wr_item_sk] #5
+ WholeStageCodegen (4)
+ Project [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt]
+ Filter [wr_return_amt,wr_order_number,wr_item_sk]
+ ColumnarToRow
InputAdapter
- ReusedExchange [d_date_sk] #4
- InputAdapter
- WholeStageCodegen (5)
- Sort [wr_order_number,wr_item_sk]
- InputAdapter
- Exchange [wr_order_number,wr_item_sk] #5
- WholeStageCodegen (4)
- Project [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt]
- Filter [wr_return_amt,wr_order_number,wr_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_returns [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt,wr_returned_date_sk]
- WholeStageCodegen (20)
- Project [item,return_ratio,return_rank,currency_rank]
- Filter [return_rank,currency_rank]
- InputAdapter
- Window [currency_ratio]
- WholeStageCodegen (19)
- Sort [currency_ratio]
- InputAdapter
- Window [return_ratio]
- WholeStageCodegen (18)
- Sort [return_ratio]
- InputAdapter
- Exchange #6
- WholeStageCodegen (17)
- HashAggregate [cs_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(cr_return_quantity, 0)),sum(coalesce(cs_quantity, 0)),sum(coalesce(cast(cr_return_amount as decimal(12,2)), 0.00)),sum(coalesce(cast(cs_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
- InputAdapter
- Exchange [cs_item_sk] #7
- WholeStageCodegen (16)
- HashAggregate [cs_item_sk,cr_return_quantity,cs_quantity,cr_return_amount,cs_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
- Project [cs_item_sk,cs_quantity,cs_net_paid,cr_return_quantity,cr_return_amount]
- SortMergeJoin [cs_order_number,cs_item_sk,cr_order_number,cr_item_sk]
- InputAdapter
- WholeStageCodegen (13)
- Sort [cs_order_number,cs_item_sk]
- InputAdapter
- Exchange [cs_order_number,cs_item_sk] #8
- WholeStageCodegen (12)
- Project [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid]
- BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
- Project [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_sold_date_sk]
- Filter [cs_net_profit,cs_net_paid,cs_quantity,cs_order_number,cs_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_sales [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_net_profit,cs_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
+ Scan parquet spark_catalog.default.web_returns [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt,wr_returned_date_sk]
+ WholeStageCodegen (20)
+ Project [item,return_ratio,return_rank,currency_rank]
+ Filter [return_rank,currency_rank]
+ InputAdapter
+ Window [currency_ratio]
+ WholeStageCodegen (19)
+ Sort [currency_ratio]
+ InputAdapter
+ Window [return_ratio]
+ WholeStageCodegen (18)
+ Sort [return_ratio]
+ InputAdapter
+ Exchange #6
+ WholeStageCodegen (17)
+ HashAggregate [cs_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(cr_return_quantity, 0)),sum(coalesce(cs_quantity, 0)),sum(coalesce(cast(cr_return_amount as decimal(12,2)), 0.00)),sum(coalesce(cast(cs_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
+ InputAdapter
+ Exchange [cs_item_sk] #7
+ WholeStageCodegen (16)
+ HashAggregate [cs_item_sk,cr_return_quantity,cs_quantity,cr_return_amount,cs_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
+ Project [cs_item_sk,cs_quantity,cs_net_paid,cr_return_quantity,cr_return_amount]
+ SortMergeJoin [cs_order_number,cs_item_sk,cr_order_number,cr_item_sk]
+ InputAdapter
+ WholeStageCodegen (13)
+ Sort [cs_order_number,cs_item_sk]
+ InputAdapter
+ Exchange [cs_order_number,cs_item_sk] #8
+ WholeStageCodegen (12)
+ Project [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid]
+ BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
+ Project [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_sold_date_sk]
+ Filter [cs_net_profit,cs_net_paid,cs_quantity,cs_order_number,cs_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.catalog_sales [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_net_profit,cs_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
+ InputAdapter
+ WholeStageCodegen (15)
+ Sort [cr_order_number,cr_item_sk]
+ InputAdapter
+ Exchange [cr_order_number,cr_item_sk] #9
+ WholeStageCodegen (14)
+ Project [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount]
+ Filter [cr_return_amount,cr_order_number,cr_item_sk]
+ ColumnarToRow
InputAdapter
- ReusedExchange [d_date_sk] #4
- InputAdapter
- WholeStageCodegen (15)
- Sort [cr_order_number,cr_item_sk]
- InputAdapter
- Exchange [cr_order_number,cr_item_sk] #9
- WholeStageCodegen (14)
- Project [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount]
- Filter [cr_return_amount,cr_order_number,cr_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_returns [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount,cr_returned_date_sk]
- WholeStageCodegen (30)
- Project [item,return_ratio,return_rank,currency_rank]
- Filter [return_rank,currency_rank]
- InputAdapter
- Window [currency_ratio]
- WholeStageCodegen (29)
- Sort [currency_ratio]
- InputAdapter
- Window [return_ratio]
- WholeStageCodegen (28)
- Sort [return_ratio]
- InputAdapter
- Exchange #10
- WholeStageCodegen (27)
- HashAggregate [ss_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(sr_return_quantity, 0)),sum(coalesce(ss_quantity, 0)),sum(coalesce(cast(sr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ss_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
- InputAdapter
- Exchange [ss_item_sk] #11
- WholeStageCodegen (26)
- HashAggregate [ss_item_sk,sr_return_quantity,ss_quantity,sr_return_amt,ss_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
- Project [ss_item_sk,ss_quantity,ss_net_paid,sr_return_quantity,sr_return_amt]
- SortMergeJoin [ss_ticket_number,ss_item_sk,sr_ticket_number,sr_item_sk]
- InputAdapter
- WholeStageCodegen (23)
- Sort [ss_ticket_number,ss_item_sk]
- InputAdapter
- Exchange [ss_ticket_number,ss_item_sk] #12
- WholeStageCodegen (22)
- Project [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Project [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_sold_date_sk]
- Filter [ss_net_profit,ss_net_paid,ss_quantity,ss_ticket_number,ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_net_profit,ss_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
+ Scan parquet spark_catalog.default.catalog_returns [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount,cr_returned_date_sk]
+ WholeStageCodegen (30)
+ Project [item,return_ratio,return_rank,currency_rank]
+ Filter [return_rank,currency_rank]
+ InputAdapter
+ Window [currency_ratio]
+ WholeStageCodegen (29)
+ Sort [currency_ratio]
+ InputAdapter
+ Window [return_ratio]
+ WholeStageCodegen (28)
+ Sort [return_ratio]
+ InputAdapter
+ Exchange #10
+ WholeStageCodegen (27)
+ HashAggregate [ss_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(sr_return_quantity, 0)),sum(coalesce(ss_quantity, 0)),sum(coalesce(cast(sr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ss_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
+ InputAdapter
+ Exchange [ss_item_sk] #11
+ WholeStageCodegen (26)
+ HashAggregate [ss_item_sk,sr_return_quantity,ss_quantity,sr_return_amt,ss_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
+ Project [ss_item_sk,ss_quantity,ss_net_paid,sr_return_quantity,sr_return_amt]
+ SortMergeJoin [ss_ticket_number,ss_item_sk,sr_ticket_number,sr_item_sk]
+ InputAdapter
+ WholeStageCodegen (23)
+ Sort [ss_ticket_number,ss_item_sk]
+ InputAdapter
+ Exchange [ss_ticket_number,ss_item_sk] #12
+ WholeStageCodegen (22)
+ Project [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Project [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_sold_date_sk]
+ Filter [ss_net_profit,ss_net_paid,ss_quantity,ss_ticket_number,ss_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_net_profit,ss_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
+ InputAdapter
+ WholeStageCodegen (25)
+ Sort [sr_ticket_number,sr_item_sk]
+ InputAdapter
+ Exchange [sr_ticket_number,sr_item_sk] #13
+ WholeStageCodegen (24)
+ Project [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt]
+ Filter [sr_return_amt,sr_ticket_number,sr_item_sk]
+ ColumnarToRow
InputAdapter
- ReusedExchange [d_date_sk] #4
- InputAdapter
- WholeStageCodegen (25)
- Sort [sr_ticket_number,sr_item_sk]
- InputAdapter
- Exchange [sr_ticket_number,sr_item_sk] #13
- WholeStageCodegen (24)
- Project [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt]
- Filter [sr_return_amt,sr_ticket_number,sr_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_returns [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt,sr_returned_date_sk]
+ Scan parquet spark_catalog.default.store_returns [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt,sr_returned_date_sk]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/explain.txt
index a796c272c9ac..3e1662e9cb77 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/explain.txt
@@ -1,80 +1,79 @@
== Physical Plan ==
-TakeOrderedAndProject (76)
-+- * HashAggregate (75)
- +- * HashAggregate (74)
- +- Union (73)
- :- * Project (24)
- : +- * Filter (23)
- : +- Window (22)
- : +- * Sort (21)
- : +- Window (20)
- : +- * Sort (19)
- : +- Exchange (18)
- : +- * HashAggregate (17)
- : +- Exchange (16)
- : +- * HashAggregate (15)
- : +- * Project (14)
- : +- * BroadcastHashJoin Inner BuildRight (13)
- : :- * Project (11)
- : : +- * BroadcastHashJoin Inner BuildLeft (10)
- : : :- BroadcastExchange (5)
- : : : +- * Project (4)
- : : : +- * Filter (3)
- : : : +- * ColumnarToRow (2)
- : : : +- Scan parquet spark_catalog.default.web_sales (1)
- : : +- * Project (9)
- : : +- * Filter (8)
- : : +- * ColumnarToRow (7)
- : : +- Scan parquet spark_catalog.default.web_returns (6)
- : +- ReusedExchange (12)
- :- * Project (48)
- : +- * Filter (47)
- : +- Window (46)
- : +- * Sort (45)
- : +- Window (44)
- : +- * Sort (43)
- : +- Exchange (42)
- : +- * HashAggregate (41)
- : +- Exchange (40)
- : +- * HashAggregate (39)
- : +- * Project (38)
- : +- * BroadcastHashJoin Inner BuildRight (37)
- : :- * Project (35)
- : : +- * BroadcastHashJoin Inner BuildLeft (34)
- : : :- BroadcastExchange (29)
- : : : +- * Project (28)
- : : : +- * Filter (27)
- : : : +- * ColumnarToRow (26)
- : : : +- Scan parquet spark_catalog.default.catalog_sales (25)
- : : +- * Project (33)
- : : +- * Filter (32)
- : : +- * ColumnarToRow (31)
- : : +- Scan parquet spark_catalog.default.catalog_returns (30)
- : +- ReusedExchange (36)
- +- * Project (72)
- +- * Filter (71)
- +- Window (70)
- +- * Sort (69)
- +- Window (68)
- +- * Sort (67)
- +- Exchange (66)
- +- * HashAggregate (65)
- +- Exchange (64)
- +- * HashAggregate (63)
- +- * Project (62)
- +- * BroadcastHashJoin Inner BuildRight (61)
- :- * Project (59)
- : +- * BroadcastHashJoin Inner BuildLeft (58)
- : :- BroadcastExchange (53)
- : : +- * Project (52)
- : : +- * Filter (51)
- : : +- * ColumnarToRow (50)
- : : +- Scan parquet spark_catalog.default.store_sales (49)
- : +- * Project (57)
- : +- * Filter (56)
- : +- * ColumnarToRow (55)
- : +- Scan parquet spark_catalog.default.store_returns (54)
- +- ReusedExchange (60)
+TakeOrderedAndProject (75)
++- * HashAggregate (74)
+ +- Union (73)
+ :- * Project (24)
+ : +- * Filter (23)
+ : +- Window (22)
+ : +- * Sort (21)
+ : +- Window (20)
+ : +- * Sort (19)
+ : +- Exchange (18)
+ : +- * HashAggregate (17)
+ : +- Exchange (16)
+ : +- * HashAggregate (15)
+ : +- * Project (14)
+ : +- * BroadcastHashJoin Inner BuildRight (13)
+ : :- * Project (11)
+ : : +- * BroadcastHashJoin Inner BuildLeft (10)
+ : : :- BroadcastExchange (5)
+ : : : +- * Project (4)
+ : : : +- * Filter (3)
+ : : : +- * ColumnarToRow (2)
+ : : : +- Scan parquet spark_catalog.default.web_sales (1)
+ : : +- * Project (9)
+ : : +- * Filter (8)
+ : : +- * ColumnarToRow (7)
+ : : +- Scan parquet spark_catalog.default.web_returns (6)
+ : +- ReusedExchange (12)
+ :- * Project (48)
+ : +- * Filter (47)
+ : +- Window (46)
+ : +- * Sort (45)
+ : +- Window (44)
+ : +- * Sort (43)
+ : +- Exchange (42)
+ : +- * HashAggregate (41)
+ : +- Exchange (40)
+ : +- * HashAggregate (39)
+ : +- * Project (38)
+ : +- * BroadcastHashJoin Inner BuildRight (37)
+ : :- * Project (35)
+ : : +- * BroadcastHashJoin Inner BuildLeft (34)
+ : : :- BroadcastExchange (29)
+ : : : +- * Project (28)
+ : : : +- * Filter (27)
+ : : : +- * ColumnarToRow (26)
+ : : : +- Scan parquet spark_catalog.default.catalog_sales (25)
+ : : +- * Project (33)
+ : : +- * Filter (32)
+ : : +- * ColumnarToRow (31)
+ : : +- Scan parquet spark_catalog.default.catalog_returns (30)
+ : +- ReusedExchange (36)
+ +- * Project (72)
+ +- * Filter (71)
+ +- Window (70)
+ +- * Sort (69)
+ +- Window (68)
+ +- * Sort (67)
+ +- Exchange (66)
+ +- * HashAggregate (65)
+ +- Exchange (64)
+ +- * HashAggregate (63)
+ +- * Project (62)
+ +- * BroadcastHashJoin Inner BuildRight (61)
+ :- * Project (59)
+ : +- * BroadcastHashJoin Inner BuildLeft (58)
+ : :- BroadcastExchange (53)
+ : : +- * Project (52)
+ : : +- * Filter (51)
+ : : +- * ColumnarToRow (50)
+ : : +- Scan parquet spark_catalog.default.store_sales (49)
+ : +- * Project (57)
+ : +- * Filter (56)
+ : +- * ColumnarToRow (55)
+ : +- Scan parquet spark_catalog.default.store_returns (54)
+ +- ReusedExchange (60)
(1) Scan parquet spark_catalog.default.web_sales
@@ -128,7 +127,7 @@ Join condition: None
Output [6]: [ws_item_sk#1, ws_quantity#3, ws_net_paid#4, ws_sold_date_sk#6, wr_return_quantity#10, wr_return_amt#11]
Input [9]: [ws_item_sk#1, ws_order_number#2, ws_quantity#3, ws_net_paid#4, ws_sold_date_sk#6, wr_item_sk#8, wr_order_number#9, wr_return_quantity#10, wr_return_amt#11]
-(12) ReusedExchange [Reuses operator id: 81]
+(12) ReusedExchange [Reuses operator id: 80]
Output [1]: [d_date_sk#13]
(13) BroadcastHashJoin [codegen id : 3]
@@ -238,7 +237,7 @@ Join condition: None
Output [6]: [cs_item_sk#36, cs_quantity#38, cs_net_paid#39, cs_sold_date_sk#41, cr_return_quantity#44, cr_return_amount#45]
Input [9]: [cs_item_sk#36, cs_order_number#37, cs_quantity#38, cs_net_paid#39, cs_sold_date_sk#41, cr_item_sk#42, cr_order_number#43, cr_return_quantity#44, cr_return_amount#45]
-(36) ReusedExchange [Reuses operator id: 81]
+(36) ReusedExchange [Reuses operator id: 80]
Output [1]: [d_date_sk#47]
(37) BroadcastHashJoin [codegen id : 10]
@@ -348,7 +347,7 @@ Join condition: None
Output [6]: [ss_item_sk#70, ss_quantity#72, ss_net_paid#73, ss_sold_date_sk#75, sr_return_quantity#78, sr_return_amt#79]
Input [9]: [ss_item_sk#70, ss_ticket_number#71, ss_quantity#72, ss_net_paid#73, ss_sold_date_sk#75, sr_item_sk#76, sr_ticket_number#77, sr_return_quantity#78, sr_return_amt#79]
-(60) ReusedExchange [Reuses operator id: 81]
+(60) ReusedExchange [Reuses operator id: 80]
Output [1]: [d_date_sk#81]
(61) BroadcastHashJoin [codegen id : 17]
@@ -416,46 +415,39 @@ Functions: []
Aggregate Attributes: []
Results [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-(75) HashAggregate [codegen id : 22]
-Input [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-Keys [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-Functions: []
-Aggregate Attributes: []
-Results [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
-
-(76) TakeOrderedAndProject
+(75) TakeOrderedAndProject
Input [5]: [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
Arguments: 100, [channel#35 ASC NULLS FIRST, return_rank#33 ASC NULLS FIRST, currency_rank#34 ASC NULLS FIRST], [channel#35, item#30, return_ratio#31, return_rank#33, currency_rank#34]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ws_sold_date_sk#6 IN dynamicpruning#7
-BroadcastExchange (81)
-+- * Project (80)
- +- * Filter (79)
- +- * ColumnarToRow (78)
- +- Scan parquet spark_catalog.default.date_dim (77)
+BroadcastExchange (80)
++- * Project (79)
+ +- * Filter (78)
+ +- * ColumnarToRow (77)
+ +- Scan parquet spark_catalog.default.date_dim (76)
-(77) Scan parquet spark_catalog.default.date_dim
+(76) Scan parquet spark_catalog.default.date_dim
Output [3]: [d_date_sk#13, d_year#104, d_moy#105]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,12), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(78) ColumnarToRow [codegen id : 1]
+(77) ColumnarToRow [codegen id : 1]
Input [3]: [d_date_sk#13, d_year#104, d_moy#105]
-(79) Filter [codegen id : 1]
+(78) Filter [codegen id : 1]
Input [3]: [d_date_sk#13, d_year#104, d_moy#105]
Condition : ((((isnotnull(d_year#104) AND isnotnull(d_moy#105)) AND (d_year#104 = 2001)) AND (d_moy#105 = 12)) AND isnotnull(d_date_sk#13))
-(80) Project [codegen id : 1]
+(79) Project [codegen id : 1]
Output [1]: [d_date_sk#13]
Input [3]: [d_date_sk#13, d_year#104, d_moy#105]
-(81) BroadcastExchange
+(80) BroadcastExchange
Input [1]: [d_date_sk#13]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=10]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/simplified.txt
index 2ea310d01171..44b4cc33acfe 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q49/simplified.txt
@@ -1,130 +1,129 @@
TakeOrderedAndProject [channel,return_rank,currency_rank,item,return_ratio]
WholeStageCodegen (22)
HashAggregate [channel,item,return_ratio,return_rank,currency_rank]
- HashAggregate [channel,item,return_ratio,return_rank,currency_rank]
- InputAdapter
- Union
- WholeStageCodegen (7)
- Project [item,return_ratio,return_rank,currency_rank]
- Filter [return_rank,currency_rank]
- InputAdapter
- Window [currency_ratio]
- WholeStageCodegen (6)
- Sort [currency_ratio]
- InputAdapter
- Window [return_ratio]
- WholeStageCodegen (5)
- Sort [return_ratio]
- InputAdapter
- Exchange #1
- WholeStageCodegen (4)
- HashAggregate [ws_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(wr_return_quantity, 0)),sum(coalesce(ws_quantity, 0)),sum(coalesce(cast(wr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ws_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
- InputAdapter
- Exchange [ws_item_sk] #2
- WholeStageCodegen (3)
- HashAggregate [ws_item_sk,wr_return_quantity,ws_quantity,wr_return_amt,ws_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
- Project [ws_item_sk,ws_quantity,ws_net_paid,wr_return_quantity,wr_return_amt]
- BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
- Project [ws_item_sk,ws_quantity,ws_net_paid,ws_sold_date_sk,wr_return_quantity,wr_return_amt]
- BroadcastHashJoin [ws_order_number,ws_item_sk,wr_order_number,wr_item_sk]
- InputAdapter
- BroadcastExchange #3
- WholeStageCodegen (1)
- Project [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_sold_date_sk]
- Filter [ws_net_profit,ws_net_paid,ws_quantity,ws_order_number,ws_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_net_profit,ws_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #4
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_year,d_moy,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
- Project [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt]
- Filter [wr_return_amt,wr_order_number,wr_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_returns [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt,wr_returned_date_sk]
- InputAdapter
- ReusedExchange [d_date_sk] #4
- WholeStageCodegen (14)
- Project [item,return_ratio,return_rank,currency_rank]
- Filter [return_rank,currency_rank]
- InputAdapter
- Window [currency_ratio]
- WholeStageCodegen (13)
- Sort [currency_ratio]
- InputAdapter
- Window [return_ratio]
- WholeStageCodegen (12)
- Sort [return_ratio]
- InputAdapter
- Exchange #5
- WholeStageCodegen (11)
- HashAggregate [cs_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(cr_return_quantity, 0)),sum(coalesce(cs_quantity, 0)),sum(coalesce(cast(cr_return_amount as decimal(12,2)), 0.00)),sum(coalesce(cast(cs_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
- InputAdapter
- Exchange [cs_item_sk] #6
- WholeStageCodegen (10)
- HashAggregate [cs_item_sk,cr_return_quantity,cs_quantity,cr_return_amount,cs_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
- Project [cs_item_sk,cs_quantity,cs_net_paid,cr_return_quantity,cr_return_amount]
- BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
- Project [cs_item_sk,cs_quantity,cs_net_paid,cs_sold_date_sk,cr_return_quantity,cr_return_amount]
- BroadcastHashJoin [cs_order_number,cs_item_sk,cr_order_number,cr_item_sk]
- InputAdapter
- BroadcastExchange #7
- WholeStageCodegen (8)
- Project [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_sold_date_sk]
- Filter [cs_net_profit,cs_net_paid,cs_quantity,cs_order_number,cs_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_sales [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_net_profit,cs_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- Project [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount]
- Filter [cr_return_amount,cr_order_number,cr_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_returns [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount,cr_returned_date_sk]
- InputAdapter
- ReusedExchange [d_date_sk] #4
- WholeStageCodegen (21)
- Project [item,return_ratio,return_rank,currency_rank]
- Filter [return_rank,currency_rank]
- InputAdapter
- Window [currency_ratio]
- WholeStageCodegen (20)
- Sort [currency_ratio]
- InputAdapter
- Window [return_ratio]
- WholeStageCodegen (19)
- Sort [return_ratio]
- InputAdapter
- Exchange #8
- WholeStageCodegen (18)
- HashAggregate [ss_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(sr_return_quantity, 0)),sum(coalesce(ss_quantity, 0)),sum(coalesce(cast(sr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ss_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
- InputAdapter
- Exchange [ss_item_sk] #9
- WholeStageCodegen (17)
- HashAggregate [ss_item_sk,sr_return_quantity,ss_quantity,sr_return_amt,ss_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
- Project [ss_item_sk,ss_quantity,ss_net_paid,sr_return_quantity,sr_return_amt]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Project [ss_item_sk,ss_quantity,ss_net_paid,ss_sold_date_sk,sr_return_quantity,sr_return_amt]
- BroadcastHashJoin [ss_ticket_number,ss_item_sk,sr_ticket_number,sr_item_sk]
- InputAdapter
- BroadcastExchange #10
- WholeStageCodegen (15)
- Project [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_sold_date_sk]
- Filter [ss_net_profit,ss_net_paid,ss_quantity,ss_ticket_number,ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_net_profit,ss_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- Project [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt]
- Filter [sr_return_amt,sr_ticket_number,sr_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_returns [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt,sr_returned_date_sk]
- InputAdapter
- ReusedExchange [d_date_sk] #4
+ InputAdapter
+ Union
+ WholeStageCodegen (7)
+ Project [item,return_ratio,return_rank,currency_rank]
+ Filter [return_rank,currency_rank]
+ InputAdapter
+ Window [currency_ratio]
+ WholeStageCodegen (6)
+ Sort [currency_ratio]
+ InputAdapter
+ Window [return_ratio]
+ WholeStageCodegen (5)
+ Sort [return_ratio]
+ InputAdapter
+ Exchange #1
+ WholeStageCodegen (4)
+ HashAggregate [ws_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(wr_return_quantity, 0)),sum(coalesce(ws_quantity, 0)),sum(coalesce(cast(wr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ws_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
+ InputAdapter
+ Exchange [ws_item_sk] #2
+ WholeStageCodegen (3)
+ HashAggregate [ws_item_sk,wr_return_quantity,ws_quantity,wr_return_amt,ws_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
+ Project [ws_item_sk,ws_quantity,ws_net_paid,wr_return_quantity,wr_return_amt]
+ BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
+ Project [ws_item_sk,ws_quantity,ws_net_paid,ws_sold_date_sk,wr_return_quantity,wr_return_amt]
+ BroadcastHashJoin [ws_order_number,ws_item_sk,wr_order_number,wr_item_sk]
+ InputAdapter
+ BroadcastExchange #3
+ WholeStageCodegen (1)
+ Project [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_sold_date_sk]
+ Filter [ws_net_profit,ws_net_paid,ws_quantity,ws_order_number,ws_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_order_number,ws_quantity,ws_net_paid,ws_net_profit,ws_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #4
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_moy,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
+ Project [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt]
+ Filter [wr_return_amt,wr_order_number,wr_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.web_returns [wr_item_sk,wr_order_number,wr_return_quantity,wr_return_amt,wr_returned_date_sk]
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
+ WholeStageCodegen (14)
+ Project [item,return_ratio,return_rank,currency_rank]
+ Filter [return_rank,currency_rank]
+ InputAdapter
+ Window [currency_ratio]
+ WholeStageCodegen (13)
+ Sort [currency_ratio]
+ InputAdapter
+ Window [return_ratio]
+ WholeStageCodegen (12)
+ Sort [return_ratio]
+ InputAdapter
+ Exchange #5
+ WholeStageCodegen (11)
+ HashAggregate [cs_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(cr_return_quantity, 0)),sum(coalesce(cs_quantity, 0)),sum(coalesce(cast(cr_return_amount as decimal(12,2)), 0.00)),sum(coalesce(cast(cs_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
+ InputAdapter
+ Exchange [cs_item_sk] #6
+ WholeStageCodegen (10)
+ HashAggregate [cs_item_sk,cr_return_quantity,cs_quantity,cr_return_amount,cs_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
+ Project [cs_item_sk,cs_quantity,cs_net_paid,cr_return_quantity,cr_return_amount]
+ BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
+ Project [cs_item_sk,cs_quantity,cs_net_paid,cs_sold_date_sk,cr_return_quantity,cr_return_amount]
+ BroadcastHashJoin [cs_order_number,cs_item_sk,cr_order_number,cr_item_sk]
+ InputAdapter
+ BroadcastExchange #7
+ WholeStageCodegen (8)
+ Project [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_sold_date_sk]
+ Filter [cs_net_profit,cs_net_paid,cs_quantity,cs_order_number,cs_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.catalog_sales [cs_item_sk,cs_order_number,cs_quantity,cs_net_paid,cs_net_profit,cs_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ Project [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount]
+ Filter [cr_return_amount,cr_order_number,cr_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.catalog_returns [cr_item_sk,cr_order_number,cr_return_quantity,cr_return_amount,cr_returned_date_sk]
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
+ WholeStageCodegen (21)
+ Project [item,return_ratio,return_rank,currency_rank]
+ Filter [return_rank,currency_rank]
+ InputAdapter
+ Window [currency_ratio]
+ WholeStageCodegen (20)
+ Sort [currency_ratio]
+ InputAdapter
+ Window [return_ratio]
+ WholeStageCodegen (19)
+ Sort [return_ratio]
+ InputAdapter
+ Exchange #8
+ WholeStageCodegen (18)
+ HashAggregate [ss_item_sk,sum,sum,sum,isEmpty,sum,isEmpty] [sum(coalesce(sr_return_quantity, 0)),sum(coalesce(ss_quantity, 0)),sum(coalesce(cast(sr_return_amt as decimal(12,2)), 0.00)),sum(coalesce(cast(ss_net_paid as decimal(12,2)), 0.00)),item,return_ratio,currency_ratio,sum,sum,sum,isEmpty,sum,isEmpty]
+ InputAdapter
+ Exchange [ss_item_sk] #9
+ WholeStageCodegen (17)
+ HashAggregate [ss_item_sk,sr_return_quantity,ss_quantity,sr_return_amt,ss_net_paid] [sum,sum,sum,isEmpty,sum,isEmpty,sum,sum,sum,isEmpty,sum,isEmpty]
+ Project [ss_item_sk,ss_quantity,ss_net_paid,sr_return_quantity,sr_return_amt]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Project [ss_item_sk,ss_quantity,ss_net_paid,ss_sold_date_sk,sr_return_quantity,sr_return_amt]
+ BroadcastHashJoin [ss_ticket_number,ss_item_sk,sr_ticket_number,sr_item_sk]
+ InputAdapter
+ BroadcastExchange #10
+ WholeStageCodegen (15)
+ Project [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_sold_date_sk]
+ Filter [ss_net_profit,ss_net_paid,ss_quantity,ss_ticket_number,ss_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_ticket_number,ss_quantity,ss_net_paid,ss_net_profit,ss_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ Project [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt]
+ Filter [sr_return_amt,sr_ticket_number,sr_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_returns [sr_item_sk,sr_ticket_number,sr_return_quantity,sr_return_amt,sr_returned_date_sk]
+ InputAdapter
+ ReusedExchange [d_date_sk] #4
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/explain.txt
index daf0cb82cb73..4c45f9be1c21 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/explain.txt
@@ -1,66 +1,65 @@
== Physical Plan ==
-TakeOrderedAndProject (62)
-+- * HashAggregate (61)
- +- * HashAggregate (60)
- +- Union (59)
- :- * HashAggregate (28)
- : +- Exchange (27)
- : +- * HashAggregate (26)
- : +- * Project (25)
- : +- * BroadcastHashJoin Inner BuildRight (24)
- : :- * Project (13)
- : : +- * BroadcastHashJoin Inner BuildRight (12)
- : : :- * Project (6)
- : : : +- * BroadcastHashJoin Inner BuildRight (5)
- : : : :- * Filter (3)
- : : : : +- * ColumnarToRow (2)
- : : : : +- Scan parquet spark_catalog.default.store_sales (1)
- : : : +- ReusedExchange (4)
- : : +- BroadcastExchange (11)
- : : +- * Project (10)
- : : +- * Filter (9)
- : : +- * ColumnarToRow (8)
- : : +- Scan parquet spark_catalog.default.customer_address (7)
- : +- BroadcastExchange (23)
- : +- * BroadcastHashJoin LeftSemi BuildRight (22)
- : :- * Filter (16)
- : : +- * ColumnarToRow (15)
- : : +- Scan parquet spark_catalog.default.item (14)
- : +- BroadcastExchange (21)
- : +- * Project (20)
- : +- * Filter (19)
- : +- * ColumnarToRow (18)
- : +- Scan parquet spark_catalog.default.item (17)
- :- * HashAggregate (43)
- : +- Exchange (42)
- : +- * HashAggregate (41)
- : +- * Project (40)
- : +- * BroadcastHashJoin Inner BuildRight (39)
- : :- * Project (37)
- : : +- * BroadcastHashJoin Inner BuildRight (36)
- : : :- * Project (34)
- : : : +- * BroadcastHashJoin Inner BuildRight (33)
- : : : :- * Filter (31)
- : : : : +- * ColumnarToRow (30)
- : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
- : : : +- ReusedExchange (32)
- : : +- ReusedExchange (35)
- : +- ReusedExchange (38)
- +- * HashAggregate (58)
- +- Exchange (57)
- +- * HashAggregate (56)
- +- * Project (55)
- +- * BroadcastHashJoin Inner BuildRight (54)
- :- * Project (52)
- : +- * BroadcastHashJoin Inner BuildRight (51)
- : :- * Project (49)
- : : +- * BroadcastHashJoin Inner BuildRight (48)
- : : :- * Filter (46)
- : : : +- * ColumnarToRow (45)
- : : : +- Scan parquet spark_catalog.default.web_sales (44)
- : : +- ReusedExchange (47)
- : +- ReusedExchange (50)
- +- ReusedExchange (53)
+TakeOrderedAndProject (61)
++- * HashAggregate (60)
+ +- Union (59)
+ :- * HashAggregate (28)
+ : +- Exchange (27)
+ : +- * HashAggregate (26)
+ : +- * Project (25)
+ : +- * BroadcastHashJoin Inner BuildRight (24)
+ : :- * Project (13)
+ : : +- * BroadcastHashJoin Inner BuildRight (12)
+ : : :- * Project (6)
+ : : : +- * BroadcastHashJoin Inner BuildRight (5)
+ : : : :- * Filter (3)
+ : : : : +- * ColumnarToRow (2)
+ : : : : +- Scan parquet spark_catalog.default.store_sales (1)
+ : : : +- ReusedExchange (4)
+ : : +- BroadcastExchange (11)
+ : : +- * Project (10)
+ : : +- * Filter (9)
+ : : +- * ColumnarToRow (8)
+ : : +- Scan parquet spark_catalog.default.customer_address (7)
+ : +- BroadcastExchange (23)
+ : +- * BroadcastHashJoin LeftSemi BuildRight (22)
+ : :- * Filter (16)
+ : : +- * ColumnarToRow (15)
+ : : +- Scan parquet spark_catalog.default.item (14)
+ : +- BroadcastExchange (21)
+ : +- * Project (20)
+ : +- * Filter (19)
+ : +- * ColumnarToRow (18)
+ : +- Scan parquet spark_catalog.default.item (17)
+ :- * HashAggregate (43)
+ : +- Exchange (42)
+ : +- * HashAggregate (41)
+ : +- * Project (40)
+ : +- * BroadcastHashJoin Inner BuildRight (39)
+ : :- * Project (37)
+ : : +- * BroadcastHashJoin Inner BuildRight (36)
+ : : :- * Project (34)
+ : : : +- * BroadcastHashJoin Inner BuildRight (33)
+ : : : :- * Filter (31)
+ : : : : +- * ColumnarToRow (30)
+ : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
+ : : : +- ReusedExchange (32)
+ : : +- ReusedExchange (35)
+ : +- ReusedExchange (38)
+ +- * HashAggregate (58)
+ +- Exchange (57)
+ +- * HashAggregate (56)
+ +- * Project (55)
+ +- * BroadcastHashJoin Inner BuildRight (54)
+ :- * Project (52)
+ : +- * BroadcastHashJoin Inner BuildRight (51)
+ : :- * Project (49)
+ : : +- * BroadcastHashJoin Inner BuildRight (48)
+ : : :- * Filter (46)
+ : : : +- * ColumnarToRow (45)
+ : : : +- Scan parquet spark_catalog.default.web_sales (44)
+ : : +- ReusedExchange (47)
+ : +- ReusedExchange (50)
+ +- ReusedExchange (53)
(1) Scan parquet spark_catalog.default.store_sales
@@ -78,7 +77,7 @@ Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Condition : (isnotnull(ss_addr_sk#2) AND isnotnull(ss_item_sk#1))
-(4) ReusedExchange [Reuses operator id: 67]
+(4) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#6]
(5) BroadcastHashJoin [codegen id : 5]
@@ -212,7 +211,7 @@ Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_da
Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_date_sk#20]
Condition : (isnotnull(cs_bill_addr_sk#17) AND isnotnull(cs_item_sk#18))
-(32) ReusedExchange [Reuses operator id: 67]
+(32) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#21]
(33) BroadcastHashJoin [codegen id : 11]
@@ -284,7 +283,7 @@ Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_da
Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_date_sk#32]
Condition : (isnotnull(ws_bill_addr_sk#30) AND isnotnull(ws_item_sk#29))
-(47) ReusedExchange [Reuses operator id: 67]
+(47) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#33]
(48) BroadcastHashJoin [codegen id : 17]
@@ -346,50 +345,43 @@ Results [2]: [i_item_id#36, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#31)
(60) HashAggregate [codegen id : 19]
Input [2]: [i_item_id#10, total_sales#16]
Keys [1]: [i_item_id#10]
-Functions [1]: [partial_sum(total_sales#16)]
-Aggregate Attributes [2]: [sum#41, isEmpty#42]
-Results [3]: [i_item_id#10, sum#43, isEmpty#44]
-
-(61) HashAggregate [codegen id : 19]
-Input [3]: [i_item_id#10, sum#43, isEmpty#44]
-Keys [1]: [i_item_id#10]
Functions [1]: [sum(total_sales#16)]
-Aggregate Attributes [1]: [sum(total_sales#16)#45]
-Results [2]: [i_item_id#10, sum(total_sales#16)#45 AS total_sales#46]
+Aggregate Attributes [1]: [sum(total_sales#16)#41]
+Results [2]: [i_item_id#10, sum(total_sales#16)#41 AS total_sales#42]
-(62) TakeOrderedAndProject
-Input [2]: [i_item_id#10, total_sales#46]
-Arguments: 100, [total_sales#46 ASC NULLS FIRST], [i_item_id#10, total_sales#46]
+(61) TakeOrderedAndProject
+Input [2]: [i_item_id#10, total_sales#42]
+Arguments: 100, [total_sales#42 ASC NULLS FIRST], [i_item_id#10, total_sales#42]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
-BroadcastExchange (67)
-+- * Project (66)
- +- * Filter (65)
- +- * ColumnarToRow (64)
- +- Scan parquet spark_catalog.default.date_dim (63)
+BroadcastExchange (66)
++- * Project (65)
+ +- * Filter (64)
+ +- * ColumnarToRow (63)
+ +- Scan parquet spark_catalog.default.date_dim (62)
-(63) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(62) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#6, d_year#43, d_moy#44]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(64) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(63) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(65) Filter [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
-Condition : ((((isnotnull(d_year#47) AND isnotnull(d_moy#48)) AND (d_year#47 = 2001)) AND (d_moy#48 = 2)) AND isnotnull(d_date_sk#6))
+(64) Filter [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
+Condition : ((((isnotnull(d_year#43) AND isnotnull(d_moy#44)) AND (d_year#43 = 2001)) AND (d_moy#44 = 2)) AND isnotnull(d_date_sk#6))
-(66) Project [codegen id : 1]
+(65) Project [codegen id : 1]
Output [1]: [d_date_sk#6]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(67) BroadcastExchange
+(66) BroadcastExchange
Input [1]: [d_date_sk#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/simplified.txt
index e15e0921767f..2b6150e9c850 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56.sf100/simplified.txt
@@ -1,102 +1,101 @@
TakeOrderedAndProject [total_sales,i_item_id]
WholeStageCodegen (19)
- HashAggregate [i_item_id,sum,isEmpty] [sum(total_sales),total_sales,sum,isEmpty]
- HashAggregate [i_item_id,total_sales] [sum,isEmpty,sum,isEmpty]
- InputAdapter
- Union
- WholeStageCodegen (6)
- HashAggregate [i_item_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_item_id] #1
- WholeStageCodegen (5)
- HashAggregate [i_item_id,ss_ext_sales_price] [sum,sum]
- Project [ss_ext_sales_price,i_item_id]
- BroadcastHashJoin [ss_item_sk,i_item_sk]
- Project [ss_item_sk,ss_ext_sales_price]
- BroadcastHashJoin [ss_addr_sk,ca_address_sk]
- Project [ss_item_sk,ss_addr_sk,ss_ext_sales_price]
- BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
- Filter [ss_addr_sk,ss_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_addr_sk,ss_ext_sales_price,ss_sold_date_sk]
- SubqueryBroadcast [d_date_sk] #1
- BroadcastExchange #2
- WholeStageCodegen (1)
- Project [d_date_sk]
- Filter [d_year,d_moy,d_date_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- BroadcastExchange #3
- WholeStageCodegen (2)
- Project [ca_address_sk]
- Filter [ca_gmt_offset,ca_address_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_gmt_offset]
- InputAdapter
- BroadcastExchange #4
- WholeStageCodegen (4)
- BroadcastHashJoin [i_item_id,i_item_id]
- Filter [i_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_item_sk,i_item_id]
- InputAdapter
- BroadcastExchange #5
- WholeStageCodegen (3)
- Project [i_item_id]
- Filter [i_color]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.item [i_item_id,i_color]
- WholeStageCodegen (12)
- HashAggregate [i_item_id,sum] [sum(UnscaledValue(cs_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_item_id] #6
- WholeStageCodegen (11)
- HashAggregate [i_item_id,cs_ext_sales_price] [sum,sum]
- Project [cs_ext_sales_price,i_item_id]
- BroadcastHashJoin [cs_item_sk,i_item_sk]
- Project [cs_item_sk,cs_ext_sales_price]
- BroadcastHashJoin [cs_bill_addr_sk,ca_address_sk]
- Project [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price]
- BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
- Filter [cs_bill_addr_sk,cs_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.catalog_sales [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,cs_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- ReusedExchange [ca_address_sk] #3
- InputAdapter
- ReusedExchange [i_item_sk,i_item_id] #4
- WholeStageCodegen (18)
- HashAggregate [i_item_id,sum] [sum(UnscaledValue(ws_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_item_id] #7
- WholeStageCodegen (17)
- HashAggregate [i_item_id,ws_ext_sales_price] [sum,sum]
- Project [ws_ext_sales_price,i_item_id]
- BroadcastHashJoin [ws_item_sk,i_item_sk]
- Project [ws_item_sk,ws_ext_sales_price]
- BroadcastHashJoin [ws_bill_addr_sk,ca_address_sk]
- Project [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price]
- BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
- Filter [ws_bill_addr_sk,ws_item_sk]
- ColumnarToRow
- InputAdapter
- Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,ws_sold_date_sk]
- ReusedSubquery [d_date_sk] #1
- InputAdapter
- ReusedExchange [d_date_sk] #2
- InputAdapter
- ReusedExchange [ca_address_sk] #3
- InputAdapter
- ReusedExchange [i_item_sk,i_item_id] #4
+ HashAggregate [i_item_id,total_sales] [sum(total_sales),total_sales,sum,isEmpty]
+ InputAdapter
+ Union
+ WholeStageCodegen (6)
+ HashAggregate [i_item_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_item_id] #1
+ WholeStageCodegen (5)
+ HashAggregate [i_item_id,ss_ext_sales_price] [sum,sum]
+ Project [ss_ext_sales_price,i_item_id]
+ BroadcastHashJoin [ss_item_sk,i_item_sk]
+ Project [ss_item_sk,ss_ext_sales_price]
+ BroadcastHashJoin [ss_addr_sk,ca_address_sk]
+ Project [ss_item_sk,ss_addr_sk,ss_ext_sales_price]
+ BroadcastHashJoin [ss_sold_date_sk,d_date_sk]
+ Filter [ss_addr_sk,ss_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.store_sales [ss_item_sk,ss_addr_sk,ss_ext_sales_price,ss_sold_date_sk]
+ SubqueryBroadcast [d_date_sk] #1
+ BroadcastExchange #2
+ WholeStageCodegen (1)
+ Project [d_date_sk]
+ Filter [d_year,d_moy,d_date_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.date_dim [d_date_sk,d_year,d_moy]
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ BroadcastExchange #3
+ WholeStageCodegen (2)
+ Project [ca_address_sk]
+ Filter [ca_gmt_offset,ca_address_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.customer_address [ca_address_sk,ca_gmt_offset]
+ InputAdapter
+ BroadcastExchange #4
+ WholeStageCodegen (4)
+ BroadcastHashJoin [i_item_id,i_item_id]
+ Filter [i_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_item_sk,i_item_id]
+ InputAdapter
+ BroadcastExchange #5
+ WholeStageCodegen (3)
+ Project [i_item_id]
+ Filter [i_color]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.item [i_item_id,i_color]
+ WholeStageCodegen (12)
+ HashAggregate [i_item_id,sum] [sum(UnscaledValue(cs_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_item_id] #6
+ WholeStageCodegen (11)
+ HashAggregate [i_item_id,cs_ext_sales_price] [sum,sum]
+ Project [cs_ext_sales_price,i_item_id]
+ BroadcastHashJoin [cs_item_sk,i_item_sk]
+ Project [cs_item_sk,cs_ext_sales_price]
+ BroadcastHashJoin [cs_bill_addr_sk,ca_address_sk]
+ Project [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price]
+ BroadcastHashJoin [cs_sold_date_sk,d_date_sk]
+ Filter [cs_bill_addr_sk,cs_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.catalog_sales [cs_bill_addr_sk,cs_item_sk,cs_ext_sales_price,cs_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ ReusedExchange [ca_address_sk] #3
+ InputAdapter
+ ReusedExchange [i_item_sk,i_item_id] #4
+ WholeStageCodegen (18)
+ HashAggregate [i_item_id,sum] [sum(UnscaledValue(ws_ext_sales_price)),total_sales,sum]
+ InputAdapter
+ Exchange [i_item_id] #7
+ WholeStageCodegen (17)
+ HashAggregate [i_item_id,ws_ext_sales_price] [sum,sum]
+ Project [ws_ext_sales_price,i_item_id]
+ BroadcastHashJoin [ws_item_sk,i_item_sk]
+ Project [ws_item_sk,ws_ext_sales_price]
+ BroadcastHashJoin [ws_bill_addr_sk,ca_address_sk]
+ Project [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price]
+ BroadcastHashJoin [ws_sold_date_sk,d_date_sk]
+ Filter [ws_bill_addr_sk,ws_item_sk]
+ ColumnarToRow
+ InputAdapter
+ Scan parquet spark_catalog.default.web_sales [ws_item_sk,ws_bill_addr_sk,ws_ext_sales_price,ws_sold_date_sk]
+ ReusedSubquery [d_date_sk] #1
+ InputAdapter
+ ReusedExchange [d_date_sk] #2
+ InputAdapter
+ ReusedExchange [ca_address_sk] #3
+ InputAdapter
+ ReusedExchange [i_item_sk,i_item_id] #4
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/explain.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/explain.txt
index daf0cb82cb73..4c45f9be1c21 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/explain.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/explain.txt
@@ -1,66 +1,65 @@
== Physical Plan ==
-TakeOrderedAndProject (62)
-+- * HashAggregate (61)
- +- * HashAggregate (60)
- +- Union (59)
- :- * HashAggregate (28)
- : +- Exchange (27)
- : +- * HashAggregate (26)
- : +- * Project (25)
- : +- * BroadcastHashJoin Inner BuildRight (24)
- : :- * Project (13)
- : : +- * BroadcastHashJoin Inner BuildRight (12)
- : : :- * Project (6)
- : : : +- * BroadcastHashJoin Inner BuildRight (5)
- : : : :- * Filter (3)
- : : : : +- * ColumnarToRow (2)
- : : : : +- Scan parquet spark_catalog.default.store_sales (1)
- : : : +- ReusedExchange (4)
- : : +- BroadcastExchange (11)
- : : +- * Project (10)
- : : +- * Filter (9)
- : : +- * ColumnarToRow (8)
- : : +- Scan parquet spark_catalog.default.customer_address (7)
- : +- BroadcastExchange (23)
- : +- * BroadcastHashJoin LeftSemi BuildRight (22)
- : :- * Filter (16)
- : : +- * ColumnarToRow (15)
- : : +- Scan parquet spark_catalog.default.item (14)
- : +- BroadcastExchange (21)
- : +- * Project (20)
- : +- * Filter (19)
- : +- * ColumnarToRow (18)
- : +- Scan parquet spark_catalog.default.item (17)
- :- * HashAggregate (43)
- : +- Exchange (42)
- : +- * HashAggregate (41)
- : +- * Project (40)
- : +- * BroadcastHashJoin Inner BuildRight (39)
- : :- * Project (37)
- : : +- * BroadcastHashJoin Inner BuildRight (36)
- : : :- * Project (34)
- : : : +- * BroadcastHashJoin Inner BuildRight (33)
- : : : :- * Filter (31)
- : : : : +- * ColumnarToRow (30)
- : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
- : : : +- ReusedExchange (32)
- : : +- ReusedExchange (35)
- : +- ReusedExchange (38)
- +- * HashAggregate (58)
- +- Exchange (57)
- +- * HashAggregate (56)
- +- * Project (55)
- +- * BroadcastHashJoin Inner BuildRight (54)
- :- * Project (52)
- : +- * BroadcastHashJoin Inner BuildRight (51)
- : :- * Project (49)
- : : +- * BroadcastHashJoin Inner BuildRight (48)
- : : :- * Filter (46)
- : : : +- * ColumnarToRow (45)
- : : : +- Scan parquet spark_catalog.default.web_sales (44)
- : : +- ReusedExchange (47)
- : +- ReusedExchange (50)
- +- ReusedExchange (53)
+TakeOrderedAndProject (61)
++- * HashAggregate (60)
+ +- Union (59)
+ :- * HashAggregate (28)
+ : +- Exchange (27)
+ : +- * HashAggregate (26)
+ : +- * Project (25)
+ : +- * BroadcastHashJoin Inner BuildRight (24)
+ : :- * Project (13)
+ : : +- * BroadcastHashJoin Inner BuildRight (12)
+ : : :- * Project (6)
+ : : : +- * BroadcastHashJoin Inner BuildRight (5)
+ : : : :- * Filter (3)
+ : : : : +- * ColumnarToRow (2)
+ : : : : +- Scan parquet spark_catalog.default.store_sales (1)
+ : : : +- ReusedExchange (4)
+ : : +- BroadcastExchange (11)
+ : : +- * Project (10)
+ : : +- * Filter (9)
+ : : +- * ColumnarToRow (8)
+ : : +- Scan parquet spark_catalog.default.customer_address (7)
+ : +- BroadcastExchange (23)
+ : +- * BroadcastHashJoin LeftSemi BuildRight (22)
+ : :- * Filter (16)
+ : : +- * ColumnarToRow (15)
+ : : +- Scan parquet spark_catalog.default.item (14)
+ : +- BroadcastExchange (21)
+ : +- * Project (20)
+ : +- * Filter (19)
+ : +- * ColumnarToRow (18)
+ : +- Scan parquet spark_catalog.default.item (17)
+ :- * HashAggregate (43)
+ : +- Exchange (42)
+ : +- * HashAggregate (41)
+ : +- * Project (40)
+ : +- * BroadcastHashJoin Inner BuildRight (39)
+ : :- * Project (37)
+ : : +- * BroadcastHashJoin Inner BuildRight (36)
+ : : :- * Project (34)
+ : : : +- * BroadcastHashJoin Inner BuildRight (33)
+ : : : :- * Filter (31)
+ : : : : +- * ColumnarToRow (30)
+ : : : : +- Scan parquet spark_catalog.default.catalog_sales (29)
+ : : : +- ReusedExchange (32)
+ : : +- ReusedExchange (35)
+ : +- ReusedExchange (38)
+ +- * HashAggregate (58)
+ +- Exchange (57)
+ +- * HashAggregate (56)
+ +- * Project (55)
+ +- * BroadcastHashJoin Inner BuildRight (54)
+ :- * Project (52)
+ : +- * BroadcastHashJoin Inner BuildRight (51)
+ : :- * Project (49)
+ : : +- * BroadcastHashJoin Inner BuildRight (48)
+ : : :- * Filter (46)
+ : : : +- * ColumnarToRow (45)
+ : : : +- Scan parquet spark_catalog.default.web_sales (44)
+ : : +- ReusedExchange (47)
+ : +- ReusedExchange (50)
+ +- ReusedExchange (53)
(1) Scan parquet spark_catalog.default.store_sales
@@ -78,7 +77,7 @@ Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Input [4]: [ss_item_sk#1, ss_addr_sk#2, ss_ext_sales_price#3, ss_sold_date_sk#4]
Condition : (isnotnull(ss_addr_sk#2) AND isnotnull(ss_item_sk#1))
-(4) ReusedExchange [Reuses operator id: 67]
+(4) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#6]
(5) BroadcastHashJoin [codegen id : 5]
@@ -212,7 +211,7 @@ Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_da
Input [4]: [cs_bill_addr_sk#17, cs_item_sk#18, cs_ext_sales_price#19, cs_sold_date_sk#20]
Condition : (isnotnull(cs_bill_addr_sk#17) AND isnotnull(cs_item_sk#18))
-(32) ReusedExchange [Reuses operator id: 67]
+(32) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#21]
(33) BroadcastHashJoin [codegen id : 11]
@@ -284,7 +283,7 @@ Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_da
Input [4]: [ws_item_sk#29, ws_bill_addr_sk#30, ws_ext_sales_price#31, ws_sold_date_sk#32]
Condition : (isnotnull(ws_bill_addr_sk#30) AND isnotnull(ws_item_sk#29))
-(47) ReusedExchange [Reuses operator id: 67]
+(47) ReusedExchange [Reuses operator id: 66]
Output [1]: [d_date_sk#33]
(48) BroadcastHashJoin [codegen id : 17]
@@ -346,50 +345,43 @@ Results [2]: [i_item_id#36, MakeDecimal(sum(UnscaledValue(ws_ext_sales_price#31)
(60) HashAggregate [codegen id : 19]
Input [2]: [i_item_id#10, total_sales#16]
Keys [1]: [i_item_id#10]
-Functions [1]: [partial_sum(total_sales#16)]
-Aggregate Attributes [2]: [sum#41, isEmpty#42]
-Results [3]: [i_item_id#10, sum#43, isEmpty#44]
-
-(61) HashAggregate [codegen id : 19]
-Input [3]: [i_item_id#10, sum#43, isEmpty#44]
-Keys [1]: [i_item_id#10]
Functions [1]: [sum(total_sales#16)]
-Aggregate Attributes [1]: [sum(total_sales#16)#45]
-Results [2]: [i_item_id#10, sum(total_sales#16)#45 AS total_sales#46]
+Aggregate Attributes [1]: [sum(total_sales#16)#41]
+Results [2]: [i_item_id#10, sum(total_sales#16)#41 AS total_sales#42]
-(62) TakeOrderedAndProject
-Input [2]: [i_item_id#10, total_sales#46]
-Arguments: 100, [total_sales#46 ASC NULLS FIRST], [i_item_id#10, total_sales#46]
+(61) TakeOrderedAndProject
+Input [2]: [i_item_id#10, total_sales#42]
+Arguments: 100, [total_sales#42 ASC NULLS FIRST], [i_item_id#10, total_sales#42]
===== Subqueries =====
Subquery:1 Hosting operator id = 1 Hosting Expression = ss_sold_date_sk#4 IN dynamicpruning#5
-BroadcastExchange (67)
-+- * Project (66)
- +- * Filter (65)
- +- * ColumnarToRow (64)
- +- Scan parquet spark_catalog.default.date_dim (63)
+BroadcastExchange (66)
++- * Project (65)
+ +- * Filter (64)
+ +- * ColumnarToRow (63)
+ +- Scan parquet spark_catalog.default.date_dim (62)
-(63) Scan parquet spark_catalog.default.date_dim
-Output [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(62) Scan parquet spark_catalog.default.date_dim
+Output [3]: [d_date_sk#6, d_year#43, d_moy#44]
Batched: true
Location [not included in comparison]/{warehouse_dir}/date_dim]
PushedFilters: [IsNotNull(d_year), IsNotNull(d_moy), EqualTo(d_year,2001), EqualTo(d_moy,2), IsNotNull(d_date_sk)]
ReadSchema: struct<d_date_sk:int,d_year:int,d_moy:int>
-(64) ColumnarToRow [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+(63) ColumnarToRow [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(65) Filter [codegen id : 1]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
-Condition : ((((isnotnull(d_year#47) AND isnotnull(d_moy#48)) AND (d_year#47 = 2001)) AND (d_moy#48 = 2)) AND isnotnull(d_date_sk#6))
+(64) Filter [codegen id : 1]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
+Condition : ((((isnotnull(d_year#43) AND isnotnull(d_moy#44)) AND (d_year#43 = 2001)) AND (d_moy#44 = 2)) AND isnotnull(d_date_sk#6))
-(66) Project [codegen id : 1]
+(65) Project [codegen id : 1]
Output [1]: [d_date_sk#6]
-Input [3]: [d_date_sk#6, d_year#47, d_moy#48]
+Input [3]: [d_date_sk#6, d_year#43, d_moy#44]
-(67) BroadcastExchange
+(66) BroadcastExchange
Input [1]: [d_date_sk#6]
Arguments: HashedRelationBroadcastMode(List(cast(input[0, int, true] as bigint)),false), [plan_id=7]
diff --git a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/simplified.txt b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/simplified.txt
index e15e0921767f..2b6150e9c850 100644
--- a/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/simplified.txt
+++ b/sql/core/src/test/resources/tpcds-plan-stability/approved-plans-v1_4/q56/simplified.txt
@@ -1,102 +1,101 @@
TakeOrderedAndProject [total_sales,i_item_id]
WholeStageCodegen (19)
- HashAggregate [i_item_id,sum,isEmpty] [sum(total_sales),total_sales,sum,isEmpty]
- HashAggregate [i_item_id,total_sales] [sum,isEmpty,sum,isEmpty]
- InputAdapter
- Union
- WholeStageCodegen (6)
- HashAggregate [i_item_id,sum] [sum(UnscaledValue(ss_ext_sales_price)),total_sales,sum]
- InputAdapter
- Exchange [i_item_id] #1
- WholeStageCodegen (5)
- HashAggregate [i_item_id,ss_ext_sales_price] [sum,sum]
- Project [ss_ext_sales_price,i_item_id]
- BroadcastHashJoin [ss_item_sk,i_item_sk]
- Project [ss_item_sk,ss_ext_sales_price]
- BroadcastHashJoin [ss_addr_sk,ca_address_sk]
... 14348 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org