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