You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by ta...@apache.org on 2019/11/05 06:47:17 UTC

[impala] branch master updated: IMPALA-9027: planner fixes for mt_dop

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

tarmstrong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git


The following commit(s) were added to refs/heads/master by this push:
     new ad43c87  IMPALA-9027: planner fixes for mt_dop
ad43c87 is described below

commit ad43c873fa5d823a56ba93315a8e76e7cd6a0685
Author: Tim Armstrong <ta...@cloudera.com>
AuthorDate: Thu Oct 17 17:00:18 2019 -0700

    IMPALA-9027: planner fixes for mt_dop
    
    * Update the distributed planner to reflect that broadcast join tables
      are replicated in all fragments.
    * Did a pass over the planner code looking at call sites of
      getNumNodes() to confirm that they shouldn't be replaced by
      getNumInstances()
    
    Testing:
    * Updated affected planner test where PARALLELPLANS had a
      different join strategy.
    * Added a targeted test to mem-limit-broadcast-join.test to
      show that mt_dop affects join mode.
    * Ran exhaustive tests.
    
    Change-Id: I23395c2dadf6be0e8be99706ca3ab5f4964cbcf9
    Reviewed-on: http://gerrit.cloudera.org:8080/14522
    Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
 .../org/apache/impala/planner/AnalyticPlanner.java |   1 +
 .../apache/impala/planner/DistributedPlanner.java  |  16 +-
 .../org/apache/impala/planner/HashJoinNode.java    |   5 +-
 .../org/apache/impala/planner/PlannerTest.java     |   6 +-
 .../PlannerTest/mem-limit-broadcast-join.test      |  78 ++-
 .../queries/PlannerTest/resource-requirements.test | 633 +++++++++++----------
 .../PlannerTest/spillable-buffer-sizing.test       |  31 +-
 .../queries/PlannerTest/tpcds-all.test             | 104 ++--
 .../queries/PlannerTest/tpch-all.test              | 562 +++++++++---------
 9 files changed, 769 insertions(+), 667 deletions(-)

diff --git a/fe/src/main/java/org/apache/impala/planner/AnalyticPlanner.java b/fe/src/main/java/org/apache/impala/planner/AnalyticPlanner.java
index 57baa58..05ae95c 100644
--- a/fe/src/main/java/org/apache/impala/planner/AnalyticPlanner.java
+++ b/fe/src/main/java/org/apache/impala/planner/AnalyticPlanner.java
@@ -103,6 +103,7 @@ public class AnalyticPlanner {
       g.init();
     }
     List<PartitionGroup> partitionGroups = collectPartitionGroups(sortGroups);
+    // TODO-MT: this maybe should be instances
     mergePartitionGroups(partitionGroups, root.getNumNodes());
     orderGroups(partitionGroups);
     if (groupingExprs != null) {
diff --git a/fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java b/fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java
index a9515f5..4297c87 100644
--- a/fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java
+++ b/fe/src/main/java/org/apache/impala/planner/DistributedPlanner.java
@@ -449,18 +449,22 @@ public class DistributedPlanner {
     PlanNode rhsTree = rightChildFragment.getPlanRoot();
     long rhsDataSize = -1;
     long broadcastCost = -1;
+    // TODO: IMPALA-4224: update this once we can share the broadcast join data between
+    // finstances.
+    int mt_dop = ctx_.getQueryOptions().mt_dop;
+    int leftChildInstances = leftChildFragment.getNumInstances(mt_dop);
     if (rhsTree.getCardinality() != -1) {
       rhsDataSize = Math.round(
           rhsTree.getCardinality() * ExchangeNode.getAvgSerializedRowSize(rhsTree));
-      if (leftChildFragment.getNumNodes() != -1) {
-        broadcastCost = 2 * rhsDataSize * leftChildFragment.getNumNodes();
+      if (leftChildInstances != -1) {
+        broadcastCost = 2 * rhsDataSize * leftChildInstances;
       }
     }
     if (LOG.isTraceEnabled()) {
       LOG.trace("broadcast: cost=" + Long.toString(broadcastCost));
       LOG.trace("card=" + Long.toString(rhsTree.getCardinality()) + " row_size="
-          + Float.toString(rhsTree.getAvgRowSize()) + " #nodes="
-          + Integer.toString(leftChildFragment.getNumNodes()));
+          + Float.toString(rhsTree.getAvgRowSize()) + " #instances="
+          + Integer.toString(leftChildInstances));
     }
 
     // repartition: both left- and rightChildFragment are partitioned on the
@@ -553,7 +557,11 @@ public class DistributedPlanner {
    }
 
    // Decide the distribution mode based on the estimated costs and the mem limit.
+   int mt_dop = ctx_.getQueryOptions().mt_dop;
    long htSize = Math.round(rhsDataSize * PlannerContext.HASH_TBL_SPACE_OVERHEAD);
+   // TODO: IMPALA-4224: update this once we can share the broadcast join data between
+   // finstances.
+   if (mt_dop > 1) htSize *= mt_dop;
    long memLimit = ctx_.getQueryOptions().mem_limit;
    if (broadcastCost <= partitionCost && (memLimit == 0 || htSize <= memLimit)) {
      return DistributionMode.BROADCAST;
diff --git a/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java b/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java
index 053fffb..85bc8bd 100644
--- a/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java
+++ b/fe/src/main/java/org/apache/impala/planner/HashJoinNode.java
@@ -212,11 +212,12 @@ public class HashJoinNode extends JoinNode {
       perInstanceMemEstimate = DEFAULT_PER_INSTANCE_MEM;
       perInstanceDataBytes = -1;
     } else {
+      // TODO: IMPALA-4224: update this once we can share the broadcast join data between
+      // finstances. Currently this implicitly assumes that each instance has a copy of
+      // the hash tables.
       perInstanceDataBytes = (long) Math.ceil(getChild(1).cardinality_
           * getChild(1).avgRowSize_);
       // Assume the rows are evenly divided among instances.
-      // TODO-MT: this estimate is not quite right with parallel plans. Fix it before
-      // we allow executing parallel plans with joins.
       if (distrMode_ == DistributionMode.PARTITIONED) {
         perInstanceDataBytes /= numInstances;
       }
diff --git a/fe/src/test/java/org/apache/impala/planner/PlannerTest.java b/fe/src/test/java/org/apache/impala/planner/PlannerTest.java
index cf6d2e2..ab4bfb4 100644
--- a/fe/src/test/java/org/apache/impala/planner/PlannerTest.java
+++ b/fe/src/test/java/org/apache/impala/planner/PlannerTest.java
@@ -531,7 +531,7 @@ public class PlannerTest extends PlannerTestBase {
   public void testMemLimit() {
     // TODO: Create a new test case section for specifying options
     TQueryOptions options = new TQueryOptions();
-    options.setMem_limit(500);
+    options.setMem_limit(5000);
     runPlannerTestFile("mem-limit-broadcast-join", options);
   }
 
@@ -707,7 +707,7 @@ public class PlannerTest extends PlannerTestBase {
   }
 
   @Test
-  public void testResourceRequirementsWithHDFSNumRowsEstDisabled() {
+  public void testResourceRequirements() {
     // Tests the resource requirement computation from the planner.
     TQueryOptions options = defaultQueryOptions();
     options.setNum_scanner_threads(1); // Required so that output doesn't vary by machine
@@ -719,7 +719,7 @@ public class PlannerTest extends PlannerTestBase {
   }
 
   @Test
-  public void testSpillableBufferSizingWithHDFSNumRowsEstDisabled() {
+  public void testSpillableBufferSizing() {
     // Tests the resource requirement computation from the planner when it is allowed to
     // vary the spillable buffer size.
     TQueryOptions options = defaultQueryOptions();
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test b/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test
index e6f0d7d..98c940a 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/mem-limit-broadcast-join.test
@@ -1,24 +1,80 @@
-select * from tpch.nation n1
+# IMPALA-2425: Broadcast hint should override planner decision, even
+# if the expected memory consumption of the join is much larger than
+# the memory limit.
+select * from tpch.lineitem
 join[broadcast]
-tpch.nation n2 on n1.n_regionkey=n2.n_regionkey
+tpch.orders on l_orderkey = o_orderkey
 ---- DISTRIBUTEDPLAN
 PLAN-ROOT SINK
 |
 04:EXCHANGE [UNPARTITIONED]
 |
 02:HASH JOIN [INNER JOIN, BROADCAST]
-|  hash predicates: n1.n_regionkey = n2.n_regionkey
-|  runtime filters: RF000 <- n2.n_regionkey
-|  row-size=219B cardinality=125
+|  hash predicates: l_orderkey = o_orderkey
+|  runtime filters: RF000 <- o_orderkey
+|  row-size=402B cardinality=5.76M
 |
 |--03:EXCHANGE [BROADCAST]
 |  |
-|  01:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|  01:SCAN HDFS [tpch.orders]
+|     HDFS partitions=1/1 files=1 size=162.56MB
+|     row-size=171B cardinality=1.50M
+|
+00:SCAN HDFS [tpch.lineitem]
+   HDFS partitions=1/1 files=1 size=718.94MB
+   runtime filters: RF000 -> l_orderkey
+   row-size=231B cardinality=6.00M
+====
+# Decision should take into account mt_dop. This query is calibrated
+# so that it is a broadcast join with mt_dop=0 and a shuffle join
+# with mt_dop >= 2 and mem_limit=5k.
+select * from tpch.customer
+join
+tpch.nation on c_nationkey = n_nationkey
+---- DISTRIBUTEDPLAN
+PLAN-ROOT SINK
+|
+04:EXCHANGE [UNPARTITIONED]
+|
+02:HASH JOIN [INNER JOIN, BROADCAST]
+|  hash predicates: c_nationkey = n_nationkey
+|  runtime filters: RF000 <- n_nationkey
+|  row-size=327B cardinality=150.00K
+|
+|--03:EXCHANGE [BROADCAST]
+|  |
+|  01:SCAN HDFS [tpch.nation]
+|     HDFS partitions=1/1 files=1 size=2.15KB
+|     row-size=109B cardinality=25
+|
+00:SCAN HDFS [tpch.customer]
+   HDFS partitions=1/1 files=1 size=23.08MB
+   runtime filters: RF000 -> c_nationkey
+   row-size=218B cardinality=150.00K
+---- PARALLELPLANS
+PLAN-ROOT SINK
+|
+05:EXCHANGE [UNPARTITIONED]
+|
+02:HASH JOIN [INNER JOIN, PARTITIONED]
+|  hash predicates: c_nationkey = n_nationkey
+|  runtime filters: RF000 <- n_nationkey
+|  row-size=327B cardinality=150.00K
+|
+|--JOIN BUILD
+|  |  join-table-id=00 plan-id=01 cohort-id=01
+|  |  build expressions: n_nationkey
+|  |
+|  04:EXCHANGE [HASH(n_nationkey)]
+|  |
+|  01:SCAN HDFS [tpch.nation]
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=109B cardinality=25
 |
-00:SCAN HDFS [tpch.nation n1]
-   partitions=1/1 files=1 size=2.15KB
-   runtime filters: RF000 -> n1.n_regionkey
-   row-size=109B cardinality=25
+03:EXCHANGE [HASH(c_nationkey)]
+|
+00:SCAN HDFS [tpch.customer]
+   HDFS partitions=1/1 files=1 size=23.08MB
+   runtime filters: RF000 -> c_nationkey
+   row-size=218B cardinality=150.00K
 ====
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/resource-requirements.test b/testdata/workloads/functional-planner/queries/PlannerTest/resource-requirements.test
index d9b4c7d..eb5712e 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/resource-requirements.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/resource-requirements.test
@@ -12,9 +12,9 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -39,9 +39,9 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=2
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -66,9 +66,9 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=160.00MB mem-reservation=80.00MB thread-reservation=2
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=0
@@ -90,9 +90,9 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=1
@@ -117,9 +117,9 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=2
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=1
@@ -144,9 +144,9 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=160.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=0
@@ -169,7 +169,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional_parquet.alltypes]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -199,7 +199,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=16.00MB mem-reservation=16.00KB thread-reservation=2
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -229,7 +229,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=32.00KB thread-reservation=2
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -257,7 +257,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional_parquet.alltypes]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -288,7 +288,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=16.00MB mem-reservation=24.00KB thread-reservation=2
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -319,7 +319,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=48.00KB thread-reservation=2
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -346,7 +346,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional_parquet.alltypes]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -376,7 +376,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=1.00MB mem-reservation=16.00KB thread-reservation=2
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -406,7 +406,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=32.00KB thread-reservation=2
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   partitions=24/24 files=24 size=189.28KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -431,9 +431,9 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_parquet.customer]
-   partitions=1/1 files=1 size=12.31MB
+   HDFS partitions=1/1 files=1 size=12.34MB
    stored statistics:
-     table: rows=150.00K size=12.31MB
+     table: rows=150.00K size=12.34MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=150.00K
    mem-estimate=24.00MB mem-reservation=128.00KB thread-reservation=1
@@ -455,9 +455,9 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_parquet.customer]
-   partitions=1/1 files=1 size=12.31MB
+   HDFS partitions=1/1 files=1 size=12.34MB
    stored statistics:
-     table: rows=150.00K size=12.31MB
+     table: rows=150.00K size=12.34MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=150.00K
    mem-estimate=24.00MB mem-reservation=2.00MB thread-reservation=1
@@ -482,7 +482,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional_parquet.customer_multiblock]
-   partitions=1/1 files=1 size=482.93KB
+   HDFS partitions=1/1 files=1 size=482.93KB
    stored statistics:
      table: rows=unavailable size=unavailable
      columns: unavailable
@@ -507,11 +507,11 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns: all
-   extrapolated-rows=disabled max-scan-range-rows=44.22K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=24.00MB thread-reservation=1
    tuple-ids=0 row-size=64B cardinality=1.50M
    in pipelines: 00(GETNEXT)
@@ -533,11 +533,11 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns: all
-   extrapolated-rows=disabled max-scan-range-rows=44.22K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=4.00MB thread-reservation=1
    tuple-ids=0 row-size=16B cardinality=1.50M
    in pipelines: 00(GETNEXT)
@@ -558,11 +558,11 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns: all
-   extrapolated-rows=disabled max-scan-range-rows=44.22K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=4.00MB thread-reservation=1
    tuple-ids=0 row-size=8B cardinality=1.50M
    in pipelines: 00(GETNEXT)
@@ -608,12 +608,12 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=32.00MB thread-reservation=1
    tuple-ids=0 row-size=20B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -657,12 +657,12 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=1
    tuple-ids=0 row-size=20B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -707,12 +707,12 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=1
    tuple-ids=0 row-size=20B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -756,12 +756,12 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=1
    tuple-ids=0 row-size=20B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -805,12 +805,12 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns: unavailable
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=4.00MB thread-reservation=1
    tuple-ids=0 row-size=12B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -876,13 +876,13 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems)
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=16.00MB thread-reservation=1
    tuple-ids=0 row-size=20B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -901,7 +901,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -928,7 +928,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -955,7 +955,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -978,7 +978,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -1005,7 +1005,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -1032,7 +1032,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -1056,7 +1056,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional.alltypes]
-   partitions=24/24 files=24 size=478.45KB
+   HDFS partitions=24/24 files=24 size=478.45KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 24/24 rows=7.30K
@@ -1085,7 +1085,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=2
 00:SCAN HDFS [functional.alltypes, RANDOM]
-   partitions=24/24 files=24 size=478.45KB
+   HDFS partitions=24/24 files=24 size=478.45KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 24/24 rows=7.30K
@@ -1114,7 +1114,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=64.00KB thread-reservation=2
 00:SCAN HDFS [functional.alltypes, RANDOM]
-   partitions=24/24 files=24 size=478.45KB
+   HDFS partitions=24/24 files=24 size=478.45KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 24/24 rows=7.30K
@@ -1126,9 +1126,6 @@ Per-Host Resources: mem-estimate=32.00MB mem-reservation=64.00KB thread-reservat
 ====
 # Avro scan.
 select * from tpch_avro.orders
----- HIVE_MAJOR_VERSION
-# Hive 3 creates different number of files for this table than Hive 2.
-2
 ---- PLAN
 Max Per-Host Resource Reservation: Memory=8.00MB Threads=2
 Per-Host Resource Estimates: Memory=88MB
@@ -1143,7 +1140,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_avro.orders]
-   partitions=1/1 files=2 size=156.92MB
+   HDFS partitions=1/1 files=2 size=156.92MB
    stored statistics:
      table: rows=unavailable size=156.92MB
      columns: unavailable
@@ -1172,7 +1169,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch_avro.orders, RANDOM]
-   partitions=1/1 files=2 size=156.92MB
+   HDFS partitions=1/1 files=2 size=156.92MB
    stored statistics:
      table: rows=unavailable size=156.92MB
      columns: unavailable
@@ -1201,7 +1198,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpch_avro.orders, RANDOM]
-   partitions=1/1 files=2 size=156.92MB
+   HDFS partitions=1/1 files=2 size=156.92MB
    stored statistics:
      table: rows=unavailable size=156.92MB
      columns: unavailable
@@ -1282,7 +1279,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_rc.customer]
-   partitions=1/1 files=1 size=22.47MB
+   HDFS partitions=1/1 files=1 size=22.47MB
    stored statistics:
      table: rows=unavailable size=22.47MB
      columns: unavailable
@@ -1311,7 +1308,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=1
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch_rc.customer, RANDOM]
-   partitions=1/1 files=1 size=22.47MB
+   HDFS partitions=1/1 files=1 size=22.47MB
    stored statistics:
      table: rows=unavailable size=22.47MB
      columns: unavailable
@@ -1340,7 +1337,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=2
 Per-Host Resources: mem-estimate=64.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpch_rc.customer, RANDOM]
-   partitions=1/1 files=1 size=22.47MB
+   HDFS partitions=1/1 files=1 size=22.47MB
    stored statistics:
      table: rows=unavailable size=22.47MB
      columns: unavailable
@@ -1365,7 +1362,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpcds_seq_snap.web_returns]
-   partitions=1/1 files=1 size=6.61MB
+   HDFS partitions=1/1 files=1 size=6.61MB
    stored statistics:
      table: rows=unavailable size=6.61MB
      columns: unavailable
@@ -1394,7 +1391,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=1
 Per-Host Resources: mem-estimate=16.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpcds_seq_snap.web_returns, RANDOM]
-   partitions=1/1 files=1 size=6.61MB
+   HDFS partitions=1/1 files=1 size=6.61MB
    stored statistics:
      table: rows=unavailable size=6.61MB
      columns: unavailable
@@ -1423,7 +1420,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=2
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpcds_seq_snap.web_returns, RANDOM]
-   partitions=1/1 files=1 size=6.61MB
+   HDFS partitions=1/1 files=1 size=6.61MB
    stored statistics:
      table: rows=unavailable size=6.61MB
      columns: unavailable
@@ -1449,7 +1446,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_orc_def.lineitem]
-   partitions=1/1 files=6 size=144.66MB
+   HDFS partitions=1/1 files=6 size=144.66MB
    stored statistics:
      table: rows=6.00M size=144.66MB
      columns: all
@@ -1501,7 +1498,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch_orc_def.lineitem]
-   partitions=1/1 files=6 size=144.66MB
+   HDFS partitions=1/1 files=6 size=144.66MB
    stored statistics:
      table: rows=6.00M size=144.66MB
      columns: all
@@ -1551,7 +1548,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional_orc_def.alltypes]
-   partitions=24/24 files=24 size=42.27KB
+   HDFS partitions=24/24 files=24 size=42.27KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -1577,7 +1574,7 @@ PLAN-ROOT SINK
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [functional.alltypesmixedformat]
-   partitions=4/4 files=4 size=66.12KB
+   HDFS partitions=4/4 files=4 size=66.33KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/4 rows=unavailable
@@ -1607,7 +1604,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=16.00MB mem-reservation=88.00KB thread-reservation=2
 00:SCAN HDFS [functional.alltypesmixedformat, RANDOM]
-   partitions=4/4 files=4 size=66.12KB
+   HDFS partitions=4/4 files=4 size=66.33KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/4 rows=unavailable
@@ -1637,7 +1634,7 @@ PLAN-ROOT SINK
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=176.00KB thread-reservation=2
 00:SCAN HDFS [functional.alltypesmixedformat, RANDOM]
-   partitions=4/4 files=4 size=66.12KB
+   HDFS partitions=4/4 files=4 size=66.33KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/4 rows=unavailable
@@ -1667,7 +1664,7 @@ PLAN-ROOT SINK
      table: rows=unavailable
      columns: unavailable
    mem-estimate=256.00KB mem-reservation=0B thread-reservation=0
-   tuple-ids=0 row-size=80B cardinality=14.30K
+   tuple-ids=0 row-size=80B cardinality=14.23K
    in pipelines: 00(GETNEXT)
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=0B Threads=2
@@ -1684,7 +1681,7 @@ PLAN-ROOT SINK
 |
 01:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=1.17MB mem-reservation=0B thread-reservation=0
-|  tuple-ids=0 row-size=80B cardinality=14.30K
+|  tuple-ids=0 row-size=80B cardinality=14.23K
 |  in pipelines: 00(GETNEXT)
 |
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=1
@@ -1694,7 +1691,7 @@ Per-Host Resources: mem-estimate=256.00KB mem-reservation=0B thread-reservation=
      table: rows=unavailable
      columns: unavailable
    mem-estimate=256.00KB mem-reservation=0B thread-reservation=0
-   tuple-ids=0 row-size=80B cardinality=14.30K
+   tuple-ids=0 row-size=80B cardinality=14.23K
    in pipelines: 00(GETNEXT)
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=0B Threads=3
@@ -1711,7 +1708,7 @@ PLAN-ROOT SINK
 |
 01:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=1.25MB mem-reservation=0B thread-reservation=0
-|  tuple-ids=0 row-size=80B cardinality=14.30K
+|  tuple-ids=0 row-size=80B cardinality=14.23K
 |  in pipelines: 00(GETNEXT)
 |
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=2
@@ -1721,7 +1718,7 @@ Per-Host Resources: mem-estimate=512.00KB mem-reservation=0B thread-reservation=
      table: rows=unavailable
      columns: unavailable
    mem-estimate=256.00KB mem-reservation=0B thread-reservation=0
-   tuple-ids=0 row-size=80B cardinality=14.30K
+   tuple-ids=0 row-size=80B cardinality=14.23K
    in pipelines: 00(GETNEXT)
 ====
 # HBase scan on table with stats.
@@ -1815,7 +1812,7 @@ PLAN-ROOT SINK
 |
 00:SCAN DATA SOURCE [functional.alltypes_datasource]
    mem-estimate=1.00GB mem-reservation=0B thread-reservation=0
-   tuple-ids=0 row-size=112B cardinality=5.00K
+   tuple-ids=0 row-size=116B cardinality=5.00K
    in pipelines: 00(GETNEXT)
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=0B Threads=2
@@ -1832,14 +1829,14 @@ PLAN-ROOT SINK
 |
 01:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=686.41KB mem-reservation=0B thread-reservation=0
-|  tuple-ids=0 row-size=112B cardinality=5.00K
+|  tuple-ids=0 row-size=116B cardinality=5.00K
 |  in pipelines: 00(GETNEXT)
 |
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=1
 Per-Host Resources: mem-estimate=1.00GB mem-reservation=0B thread-reservation=1
 00:SCAN DATA SOURCE [functional.alltypes_datasource]
    mem-estimate=1.00GB mem-reservation=0B thread-reservation=0
-   tuple-ids=0 row-size=112B cardinality=5.00K
+   tuple-ids=0 row-size=116B cardinality=5.00K
    in pipelines: 00(GETNEXT)
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=0B Threads=3
@@ -1856,14 +1853,14 @@ PLAN-ROOT SINK
 |
 01:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=806.41KB mem-reservation=0B thread-reservation=0
-|  tuple-ids=0 row-size=112B cardinality=5.00K
+|  tuple-ids=0 row-size=116B cardinality=5.00K
 |  in pipelines: 00(GETNEXT)
 |
 F00:PLAN FRAGMENT [RANDOM] hosts=1 instances=2
 Per-Host Resources: mem-estimate=2.00GB mem-reservation=0B thread-reservation=2
 00:SCAN DATA SOURCE [functional.alltypes_datasource]
    mem-estimate=1.00GB mem-reservation=0B thread-reservation=0
-   tuple-ids=0 row-size=112B cardinality=5.00K
+   tuple-ids=0 row-size=116B cardinality=5.00K
    in pipelines: 00(GETNEXT)
 ====
 # Union
@@ -1889,7 +1886,7 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 02(GETNEXT)
 |
 |--02:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     stored statistics:
 |       table: rows=6.00M size=718.94MB
 |       columns: all
@@ -1899,7 +1896,7 @@ PLAN-ROOT SINK
 |     in pipelines: 02(GETNEXT)
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -1933,7 +1930,7 @@ Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservati
 |  in pipelines: 01(GETNEXT), 02(GETNEXT)
 |
 |--02:SCAN HDFS [tpch.lineitem, RANDOM]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     stored statistics:
 |       table: rows=6.00M size=718.94MB
 |       columns: all
@@ -1943,7 +1940,7 @@ Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservati
 |     in pipelines: 02(GETNEXT)
 |
 01:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -1977,7 +1974,7 @@ Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reserva
 |  in pipelines: 01(GETNEXT), 02(GETNEXT)
 |
 |--02:SCAN HDFS [tpch.lineitem, RANDOM]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     stored statistics:
 |       table: rows=6.00M size=718.94MB
 |       columns: all
@@ -1987,7 +1984,7 @@ Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reserva
 |     in pipelines: 02(GETNEXT)
 |
 01:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -2020,9 +2017,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=1
@@ -2069,9 +2066,9 @@ Per-Host Resources: mem-estimate=114.00MB mem-reservation=38.00MB thread-reserva
 |  in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=1
@@ -2118,9 +2115,9 @@ Per-Host Resources: mem-estimate=228.00MB mem-reservation=76.00MB thread-reserva
 |  in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.59MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=4.00MB thread-reservation=0
@@ -2147,9 +2144,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=1.00MB mem-reservation=128.00KB thread-reservation=1
@@ -2186,9 +2183,9 @@ Per-Host Resources: mem-estimate=11.00MB mem-reservation=128.00KB thread-reserva
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=1.00MB mem-reservation=128.00KB thread-reservation=1
@@ -2225,9 +2222,9 @@ Per-Host Resources: mem-estimate=180.00MB mem-reservation=256.00KB thread-reserv
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=128.00KB thread-reservation=0
@@ -2256,9 +2253,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -2290,9 +2287,9 @@ Per-Host Resources: mem-estimate=118.00MB mem-reservation=52.00MB thread-reserva
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -2324,9 +2321,9 @@ Per-Host Resources: mem-estimate=236.00MB mem-reservation=104.00MB thread-reserv
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=0
@@ -2357,9 +2354,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -2393,9 +2390,9 @@ Per-Host Resources: mem-estimate=80.02MB mem-reservation=40.00MB thread-reservat
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -2429,9 +2426,9 @@ Per-Host Resources: mem-estimate=160.04MB mem-reservation=80.00MB thread-reserva
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=0
@@ -2462,7 +2459,7 @@ PLAN-ROOT SINK
 |  in pipelines: 00(GETNEXT), 01(OPEN)
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2472,7 +2469,7 @@ PLAN-ROOT SINK
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -2516,7 +2513,7 @@ Per-Host Resources: mem-estimate=368.29MB mem-reservation=43.00MB thread-reserva
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2526,7 +2523,7 @@ Per-Host Resources: mem-estimate=368.29MB mem-reservation=43.00MB thread-reserva
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -2536,41 +2533,41 @@ Per-Host Resources: mem-estimate=368.29MB mem-reservation=43.00MB thread-reserva
    tuple-ids=0 row-size=231B cardinality=6.00M
    in pipelines: 00(GETNEXT)
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=102.00MB Threads=5
-Per-Host Resource Estimates: Memory=904MB
+Max Per-Host Resource Reservation: Memory=104.00MB Threads=7
+Per-Host Resource Estimates: Memory=481MB
 Analyzed query: SELECT * FROM tpch.lineitem INNER JOIN tpch.orders ON l_orderkey
 = o_orderkey
 
-F02:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
+F03:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
 |  Per-Host Resources: mem-estimate=12.40MB mem-reservation=0B thread-reservation=1
 PLAN-ROOT SINK
 |  output exprs: tpch.lineitem.l_orderkey, tpch.lineitem.l_partkey, tpch.lineitem.l_suppkey, tpch.lineitem.l_linenumber, tpch.lineitem.l_quantity, tpch.lineitem.l_extendedprice, tpch.lineitem.l_discount, tpch.lineitem.l_tax, tpch.lineitem.l_returnflag, tpch.lineitem.l_linestatus, tpch.lineitem.l_shipdate, tpch.lineitem.l_commitdate, tpch.lineitem.l_receiptdate, tpch.lineitem.l_shipinstruct, tpch.lineitem.l_shipmode, tpch.lineitem.l_comment, tpch.orders.o_orderkey, tpch.orders.o_custkey,  [...]
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
-04:EXCHANGE [UNPARTITIONED]
+05:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=12.40MB mem-reservation=0B thread-reservation=0
 |  tuple-ids=0,1 row-size=402B cardinality=5.76M
 |  in pipelines: 00(GETNEXT)
 |
-F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
-Per-Host Resources: mem-estimate=715.89MB mem-reservation=86.00MB thread-reservation=2 runtime-filters-memory=1.00MB
-02:HASH JOIN [INNER JOIN, BROADCAST]
+F02:PLAN FRAGMENT [HASH(l_orderkey)] hosts=3 instances=6
+Per-Host Resources: mem-estimate=114.40MB mem-reservation=70.00MB thread-reservation=2 runtime-filters-memory=1.00MB
+02:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash-table-id=00
 |  hash predicates: l_orderkey = o_orderkey
 |  fk/pk conjuncts: l_orderkey = o_orderkey
 |  runtime filters: RF000[bloom] <- o_orderkey
-|  mem-estimate=268.94MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
+|  mem-estimate=44.82MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
 |  tuple-ids=0,1 row-size=402B cardinality=5.76M
 |  in pipelines: 00(GETNEXT), 01(OPEN)
 |
-|--F03:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
+|--F04:PLAN FRAGMENT [HASH(l_orderkey)] hosts=2 instances=4
 |  |  Per-Host Resources: included in parent fragment
 |  JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: o_orderkey
 |  |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |  |
-|  03:EXCHANGE [BROADCAST]
+|  04:EXCHANGE [HASH(o_orderkey)]
 |  |  mem-estimate=10.68MB mem-reservation=0B thread-reservation=0
 |  |  tuple-ids=1 row-size=171B cardinality=1.50M
 |  |  in pipelines: 01(GETNEXT)
@@ -2578,7 +2575,7 @@ Per-Host Resources: mem-estimate=715.89MB mem-reservation=86.00MB thread-reserva
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2587,8 +2584,15 @@ Per-Host Resources: mem-estimate=715.89MB mem-reservation=86.00MB thread-reserva
 |     tuple-ids=1 row-size=171B cardinality=1.50M
 |     in pipelines: 01(GETNEXT)
 |
+03:EXCHANGE [HASH(l_orderkey)]
+|  mem-estimate=11.38MB mem-reservation=0B thread-reservation=0
+|  tuple-ids=0 row-size=231B cardinality=6.00M
+|  in pipelines: 00(GETNEXT)
+|
+F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
+Per-Host Resources: mem-estimate=178.00MB mem-reservation=18.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -2622,7 +2626,7 @@ PLAN-ROOT SINK
 |  in pipelines: 00(GETNEXT), 01(OPEN)
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2632,7 +2636,7 @@ PLAN-ROOT SINK
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -2676,7 +2680,7 @@ Per-Host Resources: mem-estimate=111.68MB mem-reservation=35.00MB thread-reserva
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2693,7 +2697,7 @@ Per-Host Resources: mem-estimate=111.68MB mem-reservation=35.00MB thread-reserva
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=89.00MB mem-reservation=9.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -2745,7 +2749,7 @@ Per-Host Resources: mem-estimate=114.40MB mem-reservation=70.00MB thread-reserva
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2762,7 +2766,7 @@ Per-Host Resources: mem-estimate=114.40MB mem-reservation=70.00MB thread-reserva
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=178.00MB mem-reservation=18.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -2792,7 +2796,7 @@ PLAN-ROOT SINK
 |  in pipelines: 00(GETNEXT), 01(OPEN)
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2802,7 +2806,7 @@ PLAN-ROOT SINK
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -2841,7 +2845,7 @@ Per-Host Resources: mem-estimate=342.84MB mem-reservation=8.00MB thread-reservat
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2851,7 +2855,7 @@ Per-Host Resources: mem-estimate=342.84MB mem-reservation=8.00MB thread-reservat
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -2897,7 +2901,7 @@ Per-Host Resources: mem-estimate=686.35MB mem-reservation=16.00MB thread-reserva
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
 |       columns: all
@@ -2907,7 +2911,7 @@ Per-Host Resources: mem-estimate=686.35MB mem-reservation=16.00MB thread-reserva
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -2997,7 +3001,7 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [functional.alltypes]
-   partitions=24/24 files=24 size=478.45KB
+   HDFS partitions=24/24 files=24 size=478.45KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 24/24 rows=7.30K
@@ -3047,7 +3051,7 @@ Per-Host Resources: mem-estimate=10.04MB mem-reservation=10.00MB thread-reservat
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=2
 00:SCAN HDFS [functional.alltypes, RANDOM]
-   partitions=24/24 files=24 size=478.45KB
+   HDFS partitions=24/24 files=24 size=478.45KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 24/24 rows=7.30K
@@ -3097,7 +3101,7 @@ Per-Host Resources: mem-estimate=20.13MB mem-reservation=20.00MB thread-reservat
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=32.00MB mem-reservation=64.00KB thread-reservation=2
 00:SCAN HDFS [functional.alltypes, RANDOM]
-   partitions=24/24 files=24 size=478.45KB
+   HDFS partitions=24/24 files=24 size=478.45KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 24/24 rows=7.30K
@@ -3169,9 +3173,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.orders]
-   partitions=1/1 files=2 size=54.07MB
+   HDFS partitions=1/1 files=2 size=54.21MB
    stored statistics:
-     table: rows=1.50M size=54.07MB
+     table: rows=1.50M size=54.21MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=1.18M
    mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=1
@@ -3241,9 +3245,9 @@ Per-Host Resources: mem-estimate=56.00MB mem-reservation=36.00MB thread-reservat
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.orders, RANDOM]
-   partitions=1/1 files=2 size=54.07MB
+   HDFS partitions=1/1 files=2 size=54.21MB
    stored statistics:
-     table: rows=1.50M size=54.07MB
+     table: rows=1.50M size=54.21MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=1.18M
    mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=1
@@ -3313,9 +3317,9 @@ Per-Host Resources: mem-estimate=112.00MB mem-reservation=72.00MB thread-reserva
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.orders, RANDOM]
-   partitions=1/1 files=2 size=54.07MB
+   HDFS partitions=1/1 files=2 size=54.21MB
    stored statistics:
-     table: rows=1.50M size=54.07MB
+     table: rows=1.50M size=54.21MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=1.18M
    mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=0
@@ -3367,9 +3371,9 @@ PLAN-ROOT SINK
 |  |  in pipelines: 08(GETNEXT), 09(OPEN)
 |  |
 |  |--09:SCAN HDFS [tpch_parquet.orders]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -3377,11 +3381,11 @@ PLAN-ROOT SINK
 |  |     in pipelines: 09(GETNEXT)
 |  |
 |  08:SCAN HDFS [tpch_parquet.lineitem]
-|     partitions=1/1 files=3 size=193.60MB
+|     HDFS partitions=1/1 files=3 size=193.99MB
 |     predicates: l_shipmode = 'F'
 |     runtime filters: RF004[bloom] -> l_orderkey
 |     stored statistics:
-|       table: rows=6.00M size=193.59MB
+|       table: rows=6.00M size=193.99MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=2.14M
 |     parquet statistics predicates: l_shipmode = 'F'
@@ -3399,10 +3403,10 @@ PLAN-ROOT SINK
 |  |  in pipelines: 05(GETNEXT), 06(OPEN)
 |  |
 |  |--06:SCAN HDFS [tpch_parquet.orders]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     predicates: o_orderpriority = '2-HIGH'
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     parquet statistics predicates: o_orderpriority = '2-HIGH'
@@ -3412,10 +3416,10 @@ PLAN-ROOT SINK
 |  |     in pipelines: 06(GETNEXT)
 |  |
 |  05:SCAN HDFS [tpch_parquet.lineitem]
-|     partitions=1/1 files=3 size=193.60MB
+|     HDFS partitions=1/1 files=3 size=193.99MB
 |     runtime filters: RF002[bloom] -> l_orderkey
 |     stored statistics:
-|       table: rows=6.00M size=193.59MB
+|       table: rows=6.00M size=193.99MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=2.14M
 |     mem-estimate=80.00MB mem-reservation=24.00MB thread-reservation=1
@@ -3437,9 +3441,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 02(OPEN)
 |
 |--02:SCAN HDFS [tpch_parquet.orders]
-|     partitions=1/1 files=2 size=54.07MB
+|     HDFS partitions=1/1 files=2 size=54.21MB
 |     stored statistics:
-|       table: rows=1.50M size=54.07MB
+|       table: rows=1.50M size=54.21MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -3447,11 +3451,11 @@ PLAN-ROOT SINK
 |     in pipelines: 02(GETNEXT)
 |
 01:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    predicates: l_tax > CAST(10 AS DECIMAL(3,0))
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    parquet statistics predicates: l_tax > CAST(10 AS DECIMAL(3,0))
@@ -3506,9 +3510,9 @@ Per-Host Resources: mem-estimate=109.02MB mem-reservation=43.00MB thread-reserva
 |  |  F07:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  |  Per-Host Resources: mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=2
 |  |  09:SCAN HDFS [tpch_parquet.orders, RANDOM]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -3516,11 +3520,11 @@ Per-Host Resources: mem-estimate=109.02MB mem-reservation=43.00MB thread-reserva
 |  |     in pipelines: 09(GETNEXT)
 |  |
 |  08:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-|     partitions=1/1 files=3 size=193.60MB
+|     HDFS partitions=1/1 files=3 size=193.99MB
 |     predicates: l_shipmode = 'F'
 |     runtime filters: RF004[bloom] -> l_orderkey
 |     stored statistics:
-|       table: rows=6.00M size=193.59MB
+|       table: rows=6.00M size=193.99MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=2.14M
 |     parquet statistics predicates: l_shipmode = 'F'
@@ -3545,10 +3549,10 @@ Per-Host Resources: mem-estimate=109.02MB mem-reservation=43.00MB thread-reserva
 |  |  F05:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  |  Per-Host Resources: mem-estimate=40.00MB mem-reservation=8.00MB thread-reservation=2
 |  |  06:SCAN HDFS [tpch_parquet.orders, RANDOM]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     predicates: o_orderpriority = '2-HIGH'
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     parquet statistics predicates: o_orderpriority = '2-HIGH'
@@ -3558,10 +3562,10 @@ Per-Host Resources: mem-estimate=109.02MB mem-reservation=43.00MB thread-reserva
 |  |     in pipelines: 06(GETNEXT)
 |  |
 |  05:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-|     partitions=1/1 files=3 size=193.60MB
+|     HDFS partitions=1/1 files=3 size=193.99MB
 |     runtime filters: RF002[bloom] -> l_orderkey
 |     stored statistics:
-|       table: rows=6.00M size=193.59MB
+|       table: rows=6.00M size=193.99MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=2.14M
 |     mem-estimate=80.00MB mem-reservation=24.00MB thread-reservation=1
@@ -3603,9 +3607,9 @@ Per-Host Resources: mem-estimate=55.73MB mem-reservation=39.75MB thread-reservat
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  Per-Host Resources: mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=2
 |  02:SCAN HDFS [tpch_parquet.orders, RANDOM]
-|     partitions=1/1 files=2 size=54.07MB
+|     HDFS partitions=1/1 files=2 size=54.21MB
 |     stored statistics:
-|       table: rows=1.50M size=54.07MB
+|       table: rows=1.50M size=54.21MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -3620,11 +3624,11 @@ Per-Host Resources: mem-estimate=55.73MB mem-reservation=39.75MB thread-reservat
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=81.00MB mem-reservation=25.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 01:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    predicates: l_tax > CAST(10 AS DECIMAL(3,0))
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    parquet statistics predicates: l_tax > CAST(10 AS DECIMAL(3,0))
@@ -3633,8 +3637,8 @@ Per-Host Resources: mem-estimate=81.00MB mem-reservation=25.00MB thread-reservat
    tuple-ids=0 row-size=74B cardinality=600.12K
    in pipelines: 01(GETNEXT)
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=209.75MB Threads=13
-Per-Host Resource Estimates: Memory=673MB
+Max Per-Host Resource Reservation: Memory=259.75MB Threads=15
+Per-Host Resource Estimates: Memory=835MB
 Analyzed query: SELECT DISTINCT l_orderkey, l_partkey, l_suppkey, l_linenumber,
 l_comment FROM tpch_parquet.lineitem INNER JOIN tpch_parquet.orders ON
 l_orderkey = o_orderkey WHERE l_tax > CAST(10 AS DECIMAL(3,0)) UNION ALL SELECT
@@ -3644,18 +3648,18 @@ WHERE o_orderpriority = '2-HIGH' UNION ALL SELECT l_orderkey, l_partkey,
 l_suppkey, l_linenumber, l_comment FROM tpch_parquet.lineitem INNER JOIN
 tpch_parquet.orders ON l_orderkey = o_orderkey WHERE l_shipmode = 'F'
 
-F09:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
+F10:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
 |  Per-Host Resources: mem-estimate=10.41MB mem-reservation=0B thread-reservation=1
 PLAN-ROOT SINK
 |  output exprs: l_orderkey, l_partkey, l_suppkey, l_linenumber, l_comment
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
-17:EXCHANGE [UNPARTITIONED]
+18:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=10.41MB mem-reservation=0B thread-reservation=0
 |  tuple-ids=7 row-size=66B cardinality=2.55M
 |  in pipelines: 14(GETNEXT), 05(GETNEXT), 08(GETNEXT)
 |
-F08:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
+F09:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=198.00MB mem-reservation=86.00MB thread-reservation=2 runtime-filters-memory=2.00MB
 00:UNION
 |  pass-through-operands: 14
@@ -3663,45 +3667,52 @@ Per-Host Resources: mem-estimate=198.00MB mem-reservation=86.00MB thread-reserva
 |  tuple-ids=7 row-size=66B cardinality=2.55M
 |  in pipelines: 14(GETNEXT), 05(GETNEXT), 08(GETNEXT)
 |
-|--10:HASH JOIN [INNER JOIN, BROADCAST]
+|--10:HASH JOIN [INNER JOIN, PARTITIONED]
 |  |  hash-table-id=01
 |  |  hash predicates: l_orderkey = o_orderkey
 |  |  fk/pk conjuncts: l_orderkey = o_orderkey
 |  |  runtime filters: RF004[bloom] <- o_orderkey
-|  |  mem-estimate=17.00MB mem-reservation=17.00MB spill-buffer=1.00MB thread-reservation=0
+|  |  mem-estimate=2.88MB mem-reservation=2.88MB spill-buffer=128.00KB thread-reservation=0
 |  |  tuple-ids=5,6 row-size=91B cardinality=822.53K
 |  |  in pipelines: 08(GETNEXT), 09(OPEN)
 |  |
-|  |--F11:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
+|  |--F12:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  |  |  Per-Host Resources: included in parent fragment
 |  |  JOIN BUILD
 |  |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  |  build expressions: o_orderkey
 |  |  |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |  |  |
-|  |  16:EXCHANGE [BROADCAST]
-|  |  |  mem-estimate=10.05MB mem-reservation=0B thread-reservation=0
+|  |  17:EXCHANGE [HASH(o_orderkey)]
+|  |  |  mem-estimate=5.77MB mem-reservation=0B thread-reservation=0
 |  |  |  tuple-ids=6 row-size=8B cardinality=1.50M
 |  |  |  in pipelines: 09(GETNEXT)
 |  |  |
 |  |  F07:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  |  Per-Host Resources: mem-estimate=80.00MB mem-reservation=8.00MB thread-reservation=2
 |  |  09:SCAN HDFS [tpch_parquet.orders, RANDOM]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=0
 |  |     tuple-ids=6 row-size=8B cardinality=1.50M
 |  |     in pipelines: 09(GETNEXT)
 |  |
+|  16:EXCHANGE [HASH(l_orderkey)]
+|  |  mem-estimate=10.51MB mem-reservation=0B thread-reservation=0
+|  |  tuple-ids=5 row-size=83B cardinality=857.32K
+|  |  in pipelines: 08(GETNEXT)
+|  |
+|  F06:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
+|  Per-Host Resources: mem-estimate=162.00MB mem-reservation=50.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 |  08:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-|     partitions=1/1 files=3 size=193.60MB
+|     HDFS partitions=1/1 files=3 size=193.99MB
 |     predicates: l_shipmode = 'F'
 |     runtime filters: RF004[bloom] -> l_orderkey
 |     stored statistics:
-|       table: rows=6.00M size=193.59MB
+|       table: rows=6.00M size=193.99MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=2.14M
 |     parquet statistics predicates: l_shipmode = 'F'
@@ -3719,7 +3730,7 @@ Per-Host Resources: mem-estimate=198.00MB mem-reservation=86.00MB thread-reserva
 |  |  tuple-ids=3,4 row-size=95B cardinality=1.15M
 |  |  in pipelines: 05(GETNEXT), 06(OPEN)
 |  |
-|  |--F10:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
+|  |--F11:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  |  |  Per-Host Resources: included in parent fragment
 |  |  JOIN BUILD
 |  |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -3734,10 +3745,10 @@ Per-Host Resources: mem-estimate=198.00MB mem-reservation=86.00MB thread-reserva
 |  |  F05:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  |  Per-Host Resources: mem-estimate=80.00MB mem-reservation=16.00MB thread-reservation=2
 |  |  06:SCAN HDFS [tpch_parquet.orders, RANDOM]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     predicates: o_orderpriority = '2-HIGH'
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     parquet statistics predicates: o_orderpriority = '2-HIGH'
@@ -3747,10 +3758,10 @@ Per-Host Resources: mem-estimate=198.00MB mem-reservation=86.00MB thread-reserva
 |  |     in pipelines: 06(GETNEXT)
 |  |
 |  05:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-|     partitions=1/1 files=3 size=193.60MB
+|     HDFS partitions=1/1 files=3 size=193.99MB
 |     runtime filters: RF002[bloom] -> l_orderkey
 |     stored statistics:
-|       table: rows=6.00M size=193.59MB
+|       table: rows=6.00M size=193.99MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=2.14M
 |     mem-estimate=80.00MB mem-reservation=24.00MB thread-reservation=0
@@ -3785,7 +3796,7 @@ Per-Host Resources: mem-estimate=62.67MB mem-reservation=41.75MB thread-reservat
 |  tuple-ids=0,1 row-size=82B cardinality=575.77K
 |  in pipelines: 01(GETNEXT), 02(OPEN)
 |
-|--F12:PLAN FRAGMENT [HASH(l_orderkey)] hosts=2 instances=4
+|--F13:PLAN FRAGMENT [HASH(l_orderkey)] hosts=2 instances=4
 |  |  Per-Host Resources: included in parent fragment
 |  JOIN BUILD
 |  |  join-table-id=02 plan-id=03 cohort-id=01
@@ -3800,9 +3811,9 @@ Per-Host Resources: mem-estimate=62.67MB mem-reservation=41.75MB thread-reservat
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  Per-Host Resources: mem-estimate=80.00MB mem-reservation=8.00MB thread-reservation=2
 |  02:SCAN HDFS [tpch_parquet.orders, RANDOM]
-|     partitions=1/1 files=2 size=54.07MB
+|     HDFS partitions=1/1 files=2 size=54.21MB
 |     stored statistics:
-|       table: rows=1.50M size=54.07MB
+|       table: rows=1.50M size=54.21MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=0
@@ -3817,11 +3828,11 @@ Per-Host Resources: mem-estimate=62.67MB mem-reservation=41.75MB thread-reservat
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=162.00MB mem-reservation=50.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 01:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    predicates: l_tax > CAST(10 AS DECIMAL(3,0))
    runtime filters: RF000[bloom] -> l_orderkey
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    parquet statistics predicates: l_tax > CAST(10 AS DECIMAL(3,0))
@@ -3911,7 +3922,7 @@ PLAN-ROOT SINK
 |  |  in pipelines: 04(GETNEXT), 03(OPEN)
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     stored statistics:
 |       table: rows=6.00M size=718.94MB
 |       columns: all
@@ -3929,7 +3940,7 @@ PLAN-ROOT SINK
 |  in pipelines: 02(GETNEXT), 00(OPEN)
 |
 |--00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     stored statistics:
 |       table: rows=150.00K size=23.08MB
 |       columns: all
@@ -3947,7 +3958,7 @@ PLAN-ROOT SINK
 |  in pipelines: 02(GETNEXT), 01(OPEN)
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF000[bloom] -> o_orderkey, RF002[bloom] -> o_custkey
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
@@ -3958,7 +3969,7 @@ PLAN-ROOT SINK
 |     in pipelines: 01(GETNEXT)
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> tpch.lineitem.l_orderkey, RF004[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -4050,7 +4061,7 @@ Per-Host Resources: mem-estimate=149.22MB mem-reservation=116.38MB thread-reserv
 |  |  in pipelines: 03(GETNEXT)
 |  |
 |  03:SCAN HDFS [tpch.lineitem, RANDOM]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     stored statistics:
 |       table: rows=6.00M size=718.94MB
 |       columns: all
@@ -4075,7 +4086,7 @@ Per-Host Resources: mem-estimate=149.22MB mem-reservation=116.38MB thread-reserv
 |  F03:PLAN FRAGMENT [RANDOM] hosts=1 instances=1
 |  Per-Host Resources: mem-estimate=32.00MB mem-reservation=8.00MB thread-reservation=2
 |  00:SCAN HDFS [tpch.customer, RANDOM]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     stored statistics:
 |       table: rows=150.00K size=23.08MB
 |       columns: all
@@ -4100,7 +4111,7 @@ Per-Host Resources: mem-estimate=149.22MB mem-reservation=116.38MB thread-reserv
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  Per-Host Resources: mem-estimate=90.00MB mem-reservation=10.00MB thread-reservation=2 runtime-filters-memory=2.00MB
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF000[bloom] -> o_orderkey, RF002[bloom] -> o_custkey
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
@@ -4118,7 +4129,7 @@ Per-Host Resources: mem-estimate=149.22MB mem-reservation=116.38MB thread-reserv
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=90.00MB mem-reservation=10.00MB thread-reservation=2 runtime-filters-memory=2.00MB
 02:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> tpch.lineitem.l_orderkey, RF004[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -4218,7 +4229,7 @@ Per-Host Resources: mem-estimate=115.27MB mem-reservation=94.88MB thread-reserva
 |  |  in pipelines: 03(GETNEXT)
 |  |
 |  03:SCAN HDFS [tpch.lineitem, RANDOM]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     stored statistics:
 |       table: rows=6.00M size=718.94MB
 |       columns: all
@@ -4251,7 +4262,7 @@ Per-Host Resources: mem-estimate=115.27MB mem-reservation=94.88MB thread-reserva
 |  F03:PLAN FRAGMENT [RANDOM] hosts=1 instances=2
 |  Per-Host Resources: mem-estimate=64.00MB mem-reservation=16.00MB thread-reservation=2
 |  00:SCAN HDFS [tpch.customer, RANDOM]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     stored statistics:
 |       table: rows=150.00K size=23.08MB
 |       columns: all
@@ -4284,7 +4295,7 @@ Per-Host Resources: mem-estimate=115.27MB mem-reservation=94.88MB thread-reserva
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  Per-Host Resources: mem-estimate=180.00MB mem-reservation=20.00MB thread-reservation=2 runtime-filters-memory=2.00MB
 |  01:SCAN HDFS [tpch.orders, RANDOM]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF000[bloom] -> o_orderkey, RF002[bloom] -> o_custkey
 |     stored statistics:
 |       table: rows=1.50M size=162.56MB
@@ -4302,7 +4313,7 @@ Per-Host Resources: mem-estimate=115.27MB mem-reservation=94.88MB thread-reserva
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=180.00MB mem-reservation=20.00MB thread-reservation=2 runtime-filters-memory=2.00MB
 02:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000[bloom] -> tpch.lineitem.l_orderkey, RF004[bloom] -> l_orderkey
    stored statistics:
      table: rows=6.00M size=718.94MB
@@ -4336,7 +4347,7 @@ WRITE TO HDFS [functional.alltypesnopart, OVERWRITE=false]
 |
 00:SCAN HDFS [functional.alltypes]
    partition predicates: `year` = CAST(2009 AS INT), `month` = CAST(5 AS INT)
-   partitions=1/24 files=1 size=20.36KB
+   HDFS partitions=1/24 files=1 size=20.36KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 1/1 rows=310
@@ -4363,7 +4374,7 @@ WRITE TO HDFS [functional.alltypesnopart, OVERWRITE=false]
 |
 00:SCAN HDFS [functional.alltypes, RANDOM]
    partition predicates: `year` = CAST(2009 AS INT), `month` = CAST(5 AS INT)
-   partitions=1/24 files=1 size=20.36KB
+   HDFS partitions=1/24 files=1 size=20.36KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 1/1 rows=310
@@ -4390,7 +4401,7 @@ WRITE TO HDFS [functional.alltypesnopart, OVERWRITE=false]
 |
 00:SCAN HDFS [functional.alltypes, RANDOM]
    partition predicates: `year` = CAST(2009 AS INT), `month` = CAST(5 AS INT)
-   partitions=1/24 files=1 size=20.36KB
+   HDFS partitions=1/24 files=1 size=20.36KB
    stored statistics:
      table: rows=7.30K size=478.45KB
      partitions: 1/1 rows=310
@@ -4423,7 +4434,7 @@ WRITE TO HDFS [default.dummy_insert, OVERWRITE=false, PARTITION-KEYS=(l_partkey)
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -4457,7 +4468,7 @@ WRITE TO HDFS [default.dummy_insert, OVERWRITE=false, PARTITION-KEYS=(l_partkey)
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -4491,7 +4502,7 @@ WRITE TO HDFS [default.dummy_insert, OVERWRITE=false, PARTITION-KEYS=(l_partkey)
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -4517,7 +4528,7 @@ WRITE TO HDFS [default.dummy_insert, OVERWRITE=false, PARTITION-KEYS=(l_partkey)
 |  mem-estimate=266.10MB mem-reservation=0B thread-reservation=0
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -4545,7 +4556,7 @@ WRITE TO HDFS [default.dummy_insert, OVERWRITE=false, PARTITION-KEYS=(l_partkey)
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=3
 Per-Host Resources: mem-estimate=88.00MB mem-reservation=8.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -4573,7 +4584,7 @@ WRITE TO HDFS [default.dummy_insert, OVERWRITE=false, PARTITION-KEYS=(l_partkey)
 F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
 Per-Host Resources: mem-estimate=176.00MB mem-reservation=16.00MB thread-reservation=2
 00:SCAN HDFS [tpch.lineitem, RANDOM]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    stored statistics:
      table: rows=6.00M size=718.94MB
      columns: all
@@ -4658,11 +4669,11 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders, c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=16.00MB thread-reservation=1
    tuple-ids=0 row-size=54B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -4754,11 +4765,11 @@ Per-Host Resources: mem-estimate=345.94MB mem-reservation=85.94MB thread-reserva
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c, RANDOM]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders, c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=16.00MB thread-reservation=1
    tuple-ids=0 row-size=54B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -4850,11 +4861,11 @@ Per-Host Resources: mem-estimate=691.88MB mem-reservation=171.88MB thread-reserv
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c, RANDOM]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders, c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=16.00MB thread-reservation=0
    tuple-ids=0 row-size=54B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -4946,11 +4957,11 @@ PLAN-ROOT SINK
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=56.00MB thread-reservation=1
    tuple-ids=0 row-size=230B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -5040,11 +5051,11 @@ Per-Host Resources: mem-estimate=136.00MB mem-reservation=104.00MB thread-reserv
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c, RANDOM]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=56.00MB thread-reservation=1
    tuple-ids=0 row-size=230B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -5134,11 +5145,11 @@ Per-Host Resources: mem-estimate=272.00MB mem-reservation=208.00MB thread-reserv
 |     in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c, RANDOM]
-   partitions=1/1 files=4 size=288.99MB
+   HDFS partitions=1/1 files=4 size=288.99MB
    stored statistics:
-     table: rows=150.00K size=288.98MB
+     table: rows=150.00K size=288.99MB
      columns missing stats: c_orders
-   extrapolated-rows=disabled max-scan-range-rows=44.23K
+   extrapolated-rows=disabled max-scan-range-rows=50.12K
    mem-estimate=88.00MB mem-reservation=56.00MB thread-reservation=0
    tuple-ids=0 row-size=230B cardinality=150.00K
    in pipelines: 00(GETNEXT)
@@ -5197,9 +5208,9 @@ PLAN-ROOT SINK
 |  |  |  in pipelines: 02(GETNEXT), 03(OPEN)
 |  |  |
 |  |  |--03:SCAN HDFS [tpch_parquet.orders t4]
-|  |  |     partitions=1/1 files=2 size=54.07MB
+|  |  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |  |     stored statistics:
-|  |  |       table: rows=1.50M size=54.07MB
+|  |  |       table: rows=1.50M size=54.21MB
 |  |  |       columns: all
 |  |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -5207,10 +5218,10 @@ PLAN-ROOT SINK
 |  |  |     in pipelines: 03(GETNEXT)
 |  |  |
 |  |  02:SCAN HDFS [tpch_parquet.orders t3]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     runtime filters: RF004[bloom] -> t3.o_orderkey
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -5218,10 +5229,10 @@ PLAN-ROOT SINK
 |  |     in pipelines: 02(GETNEXT)
 |  |
 |  01:SCAN HDFS [tpch_parquet.orders t2]
-|     partitions=1/1 files=2 size=54.07MB
+|     HDFS partitions=1/1 files=2 size=54.21MB
 |     runtime filters: RF002[bloom] -> t2.o_orderkey
 |     stored statistics:
-|       table: rows=1.50M size=54.07MB
+|       table: rows=1.50M size=54.21MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -5229,10 +5240,10 @@ PLAN-ROOT SINK
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.orders t1]
-   partitions=1/1 files=2 size=54.07MB
+   HDFS partitions=1/1 files=2 size=54.21MB
    runtime filters: RF000[bloom] -> t1.o_orderkey
    stored statistics:
-     table: rows=1.50M size=54.07MB
+     table: rows=1.50M size=54.21MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=1.18M
    mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=1
@@ -5300,9 +5311,9 @@ Per-Host Resources: mem-estimate=88.84MB mem-reservation=59.00MB thread-reservat
 |  |  |  F03:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  |  |  Per-Host Resources: mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=2
 |  |  |  03:SCAN HDFS [tpch_parquet.orders t4, RANDOM]
-|  |  |     partitions=1/1 files=2 size=54.07MB
+|  |  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |  |     stored statistics:
-|  |  |       table: rows=1.50M size=54.07MB
+|  |  |       table: rows=1.50M size=54.21MB
 |  |  |       columns: all
 |  |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -5317,10 +5328,10 @@ Per-Host Resources: mem-estimate=88.84MB mem-reservation=59.00MB thread-reservat
 |  |  F02:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  |  Per-Host Resources: mem-estimate=41.00MB mem-reservation=5.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 |  |  02:SCAN HDFS [tpch_parquet.orders t3, RANDOM]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     runtime filters: RF004[bloom] -> t3.o_orderkey
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -5335,10 +5346,10 @@ Per-Host Resources: mem-estimate=88.84MB mem-reservation=59.00MB thread-reservat
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=2
 |  Per-Host Resources: mem-estimate=41.00MB mem-reservation=5.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 |  01:SCAN HDFS [tpch_parquet.orders t2, RANDOM]
-|     partitions=1/1 files=2 size=54.07MB
+|     HDFS partitions=1/1 files=2 size=54.21MB
 |     runtime filters: RF002[bloom] -> t2.o_orderkey
 |     stored statistics:
-|       table: rows=1.50M size=54.07MB
+|       table: rows=1.50M size=54.21MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=1
@@ -5346,18 +5357,18 @@ Per-Host Resources: mem-estimate=88.84MB mem-reservation=59.00MB thread-reservat
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.orders t1, RANDOM]
-   partitions=1/1 files=2 size=54.07MB
+   HDFS partitions=1/1 files=2 size=54.21MB
    runtime filters: RF000[bloom] -> t1.o_orderkey
    stored statistics:
-     table: rows=1.50M size=54.07MB
+     table: rows=1.50M size=54.21MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=1.18M
    mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=1
    tuple-ids=0 row-size=171B cardinality=1.50M
    in pipelines: 00(GETNEXT)
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=176.50MB Threads=11
-Per-Host Resource Estimates: Memory=454MB
+Max Per-Host Resource Reservation: Memory=135.00MB Threads=11
+Per-Host Resource Estimates: Memory=405MB
 Analyzed query: SELECT /* +straight_join */ * FROM tpch_parquet.orders t1 INNER
 JOIN (SELECT /* +straight_join */ t2.o_orderkey k2, k3, k4 FROM
 tpch_parquet.orders t2 INNER JOIN (SELECT /* +straight_join */ t3.o_orderkey k3,
@@ -5376,31 +5387,24 @@ PLAN-ROOT SINK
 |  tuple-ids=0,1,2,3 row-size=195B cardinality=1.50M
 |  in pipelines: 00(GETNEXT)
 |
-F00:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
-Per-Host Resources: mem-estimate=157.53MB mem-reservation=118.00MB thread-reservation=2 runtime-filters-memory=1.00MB
-06:HASH JOIN [INNER JOIN, BROADCAST]
+F04:PLAN FRAGMENT [HASH(t3.o_orderkey)] hosts=2 instances=4
+Per-Host Resources: mem-estimate=68.54MB mem-reservation=57.00MB thread-reservation=2 runtime-filters-memory=3.00MB
+06:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash-table-id=00
 |  hash predicates: t1.o_orderkey = t3.o_orderkey
 |  fk/pk conjuncts: t1.o_orderkey = t3.o_orderkey
 |  runtime filters: RF000[bloom] <- t3.o_orderkey
-|  mem-estimate=37.77MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
+|  mem-estimate=17.00MB mem-reservation=17.00MB spill-buffer=1.00MB thread-reservation=0
 |  tuple-ids=0,1,2,3 row-size=195B cardinality=1.50M
 |  in pipelines: 00(GETNEXT), 01(OPEN)
 |
-|--F06:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
+|--F06:PLAN FRAGMENT [HASH(t3.o_orderkey)] hosts=2 instances=4
 |  |  Per-Host Resources: included in parent fragment
 |  JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: t3.o_orderkey
 |  |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |  |
-|  10:EXCHANGE [BROADCAST]
-|  |  mem-estimate=10.14MB mem-reservation=0B thread-reservation=0
-|  |  tuple-ids=1,2,3 row-size=24B cardinality=1.50M
-|  |  in pipelines: 01(GETNEXT)
-|  |
-|  F04:PLAN FRAGMENT [HASH(t3.o_orderkey)] hosts=2 instances=4
-|  Per-Host Resources: mem-estimate=42.04MB mem-reservation=30.50MB thread-reservation=2 runtime-filters-memory=2.00MB
 |  05:HASH JOIN [INNER JOIN, PARTITIONED]
 |  |  hash-table-id=01
 |  |  hash predicates: t2.o_orderkey = t3.o_orderkey
@@ -5441,9 +5445,9 @@ Per-Host Resources: mem-estimate=157.53MB mem-reservation=118.00MB thread-reserv
 |  |  |  F03:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  |  |  Per-Host Resources: mem-estimate=80.00MB mem-reservation=8.00MB thread-reservation=2
 |  |  |  03:SCAN HDFS [tpch_parquet.orders t4, RANDOM]
-|  |  |     partitions=1/1 files=2 size=54.07MB
+|  |  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |  |     stored statistics:
-|  |  |       table: rows=1.50M size=54.07MB
+|  |  |       table: rows=1.50M size=54.21MB
 |  |  |       columns: all
 |  |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=0
@@ -5458,10 +5462,10 @@ Per-Host Resources: mem-estimate=157.53MB mem-reservation=118.00MB thread-reserv
 |  |  F02:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  |  Per-Host Resources: mem-estimate=82.00MB mem-reservation=10.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 |  |  02:SCAN HDFS [tpch_parquet.orders t3, RANDOM]
-|  |     partitions=1/1 files=2 size=54.07MB
+|  |     HDFS partitions=1/1 files=2 size=54.21MB
 |  |     runtime filters: RF004[bloom] -> t3.o_orderkey
 |  |     stored statistics:
-|  |       table: rows=1.50M size=54.07MB
+|  |       table: rows=1.50M size=54.21MB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |  |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=0
@@ -5476,21 +5480,28 @@ Per-Host Resources: mem-estimate=157.53MB mem-reservation=118.00MB thread-reserv
 |  F01:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
 |  Per-Host Resources: mem-estimate=82.00MB mem-reservation=10.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 |  01:SCAN HDFS [tpch_parquet.orders t2, RANDOM]
-|     partitions=1/1 files=2 size=54.07MB
+|     HDFS partitions=1/1 files=2 size=54.21MB
 |     runtime filters: RF002[bloom] -> t2.o_orderkey
 |     stored statistics:
-|       table: rows=1.50M size=54.07MB
+|       table: rows=1.50M size=54.21MB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=1.18M
 |     mem-estimate=40.00MB mem-reservation=4.00MB thread-reservation=0
 |     tuple-ids=1 row-size=8B cardinality=1.50M
 |     in pipelines: 01(GETNEXT)
 |
+10:EXCHANGE [HASH(t1.o_orderkey)]
+|  mem-estimate=10.68MB mem-reservation=0B thread-reservation=0
+|  tuple-ids=0 row-size=171B cardinality=1.50M
+|  in pipelines: 00(GETNEXT)
+|
+F00:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
+Per-Host Resources: mem-estimate=82.00MB mem-reservation=50.00MB thread-reservation=2 runtime-filters-memory=1.00MB
 00:SCAN HDFS [tpch_parquet.orders t1, RANDOM]
-   partitions=1/1 files=2 size=54.07MB
+   HDFS partitions=1/1 files=2 size=54.21MB
    runtime filters: RF000[bloom] -> t1.o_orderkey
    stored statistics:
-     table: rows=1.50M size=54.07MB
+     table: rows=1.50M size=54.21MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=1.18M
    mem-estimate=40.00MB mem-reservation=24.00MB thread-reservation=0
@@ -5543,9 +5554,9 @@ PLAN-ROOT SINK
 |  |  |  in pipelines: 02(GETNEXT), 03(OPEN)
 |  |  |
 |  |  |--03:SCAN HDFS [tpch_parquet.supplier t4]
-|  |  |     partitions=1/1 files=1 size=882.47KB
+|  |  |     HDFS partitions=1/1 files=1 size=883.03KB
 |  |  |     stored statistics:
-|  |  |       table: rows=10.00K size=882.49KB
+|  |  |       table: rows=10.00K size=883.03KB
 |  |  |       columns: all
 |  |  |     extrapolated-rows=disabled max-scan-range-rows=10.00K
 |  |  |     mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=1
@@ -5553,9 +5564,9 @@ PLAN-ROOT SINK
 |  |  |     in pipelines: 03(GETNEXT)
 |  |  |
 |  |  02:SCAN HDFS [tpch_parquet.nation t3]
-|  |     partitions=1/1 files=1 size=2.75KB
+|  |     HDFS partitions=1/1 files=1 size=3.04KB
 |  |     stored statistics:
-|  |       table: rows=25 size=2.76KB
+|  |       table: rows=25 size=3.04KB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=25
 |  |     mem-estimate=16.00MB mem-reservation=8.00KB thread-reservation=1
@@ -5563,9 +5574,9 @@ PLAN-ROOT SINK
 |  |     in pipelines: 02(GETNEXT)
 |  |
 |  01:SCAN HDFS [tpch_parquet.nation t2]
-|     partitions=1/1 files=1 size=2.75KB
+|     HDFS partitions=1/1 files=1 size=3.04KB
 |     stored statistics:
-|       table: rows=25 size=2.76KB
+|       table: rows=25 size=3.04KB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=25
 |     mem-estimate=16.00MB mem-reservation=8.00KB thread-reservation=1
@@ -5573,9 +5584,9 @@ PLAN-ROOT SINK
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.nation t1]
-   partitions=1/1 files=1 size=2.75KB
+   HDFS partitions=1/1 files=1 size=3.04KB
    stored statistics:
-     table: rows=25 size=2.76KB
+     table: rows=25 size=3.04KB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=25
    mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=1
@@ -5640,9 +5651,9 @@ Per-Host Resources: mem-estimate=97.55MB mem-reservation=32.00KB thread-reservat
 |  |  |  F03:PLAN FRAGMENT [RANDOM] hosts=1 instances=1
 |  |  |  Per-Host Resources: mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=2
 |  |  |  03:SCAN HDFS [tpch_parquet.supplier t4, RANDOM]
-|  |  |     partitions=1/1 files=1 size=882.47KB
+|  |  |     HDFS partitions=1/1 files=1 size=883.03KB
 |  |  |     stored statistics:
-|  |  |       table: rows=10.00K size=882.49KB
+|  |  |       table: rows=10.00K size=883.03KB
 |  |  |       columns: all
 |  |  |     extrapolated-rows=disabled max-scan-range-rows=10.00K
 |  |  |     mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=1
@@ -5650,9 +5661,9 @@ Per-Host Resources: mem-estimate=97.55MB mem-reservation=32.00KB thread-reservat
 |  |  |     in pipelines: 03(GETNEXT)
 |  |  |
 |  |  02:SCAN HDFS [tpch_parquet.nation t3, RANDOM]
-|  |     partitions=1/1 files=1 size=2.75KB
+|  |     HDFS partitions=1/1 files=1 size=3.04KB
 |  |     stored statistics:
-|  |       table: rows=25 size=2.76KB
+|  |       table: rows=25 size=3.04KB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=25
 |  |     mem-estimate=16.00MB mem-reservation=8.00KB thread-reservation=1
@@ -5660,9 +5671,9 @@ Per-Host Resources: mem-estimate=97.55MB mem-reservation=32.00KB thread-reservat
 |  |     in pipelines: 02(GETNEXT)
 |  |
 |  01:SCAN HDFS [tpch_parquet.nation t2, RANDOM]
-|     partitions=1/1 files=1 size=2.76KB
+|     HDFS partitions=1/1 files=1 size=3.04KB
 |     stored statistics:
-|       table: rows=25 size=2.76KB
+|       table: rows=25 size=3.04KB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=25
 |     mem-estimate=16.00MB mem-reservation=8.00KB thread-reservation=1
@@ -5670,9 +5681,9 @@ Per-Host Resources: mem-estimate=97.55MB mem-reservation=32.00KB thread-reservat
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.nation t1, RANDOM]
-   partitions=1/1 files=1 size=2.75KB
+   HDFS partitions=1/1 files=1 size=3.04KB
    stored statistics:
-     table: rows=25 size=2.76KB
+     table: rows=25 size=3.04KB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=25
    mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=1
@@ -5758,9 +5769,9 @@ Per-Host Resources: mem-estimate=195.14MB mem-reservation=64.00KB thread-reserva
 |  |  |  F03:PLAN FRAGMENT [RANDOM] hosts=1 instances=2
 |  |  |  Per-Host Resources: mem-estimate=32.00MB mem-reservation=256.00KB thread-reservation=2
 |  |  |  03:SCAN HDFS [tpch_parquet.supplier t4, RANDOM]
-|  |  |     partitions=1/1 files=1 size=882.47KB
+|  |  |     HDFS partitions=1/1 files=1 size=883.03KB
 |  |  |     stored statistics:
-|  |  |       table: rows=10.00K size=882.49KB
+|  |  |       table: rows=10.00K size=883.03KB
 |  |  |       columns: all
 |  |  |     extrapolated-rows=disabled max-scan-range-rows=10.00K
 |  |  |     mem-estimate=16.00MB mem-reservation=128.00KB thread-reservation=0
@@ -5768,9 +5779,9 @@ Per-Host Resources: mem-estimate=195.14MB mem-reservation=64.00KB thread-reserva
 |  |  |     in pipelines: 03(GETNEXT)
 |  |  |
 |  |  02:SCAN HDFS [tpch_parquet.nation t3, RANDOM]
-|  |     partitions=1/1 files=1 size=2.75KB
+|  |     HDFS partitions=1/1 files=1 size=3.04KB
 |  |     stored statistics:
-|  |       table: rows=25 size=2.76KB
+|  |       table: rows=25 size=3.04KB
 |  |       columns: all
 |  |     extrapolated-rows=disabled max-scan-range-rows=25
 |  |     mem-estimate=16.00MB mem-reservation=8.00KB thread-reservation=0
@@ -5778,9 +5789,9 @@ Per-Host Resources: mem-estimate=195.14MB mem-reservation=64.00KB thread-reserva
 |  |     in pipelines: 02(GETNEXT)
 |  |
 |  01:SCAN HDFS [tpch_parquet.nation t2, RANDOM]
-|     partitions=1/1 files=1 size=2.75KB
+|     HDFS partitions=1/1 files=1 size=3.04KB
 |     stored statistics:
-|       table: rows=25 size=2.76KB
+|       table: rows=25 size=3.04KB
 |       columns: all
 |     extrapolated-rows=disabled max-scan-range-rows=25
 |     mem-estimate=16.00MB mem-reservation=8.00KB thread-reservation=0
@@ -5788,9 +5799,9 @@ Per-Host Resources: mem-estimate=195.14MB mem-reservation=64.00KB thread-reserva
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.nation t1, RANDOM]
-   partitions=1/1 files=1 size=2.76KB
+   HDFS partitions=1/1 files=1 size=3.04KB
    stored statistics:
-     table: rows=25 size=2.76KB
+     table: rows=25 size=3.04KB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=25
    mem-estimate=16.00MB mem-reservation=32.00KB thread-reservation=0
@@ -5856,7 +5867,7 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [functional.alltypesagg]
-   partitions=11/11 files=11 size=814.73KB
+   HDFS partitions=11/11 files=11 size=814.73KB
    stored statistics:
      table: rows=11.00K size=814.73KB
      partitions: 11/11 rows=11.00K
@@ -5973,9 +5984,9 @@ PLAN-ROOT SINK
 |  in pipelines: 01(GETNEXT), 00(OPEN)
 |
 00:SCAN HDFS [tpch_parquet.lineitem]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
@@ -6022,9 +6033,9 @@ Per-Host Resources: mem-estimate=806.43MB mem-reservation=74.00MB thread-reserva
 |  in pipelines: 00(GETNEXT)
 |
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
-   partitions=1/1 files=3 size=193.60MB
+   HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
-     table: rows=6.00M size=193.59MB
+     table: rows=6.00M size=193.99MB
      columns: all
    extrapolated-rows=disabled max-scan-range-rows=2.14M
    mem-estimate=80.00MB mem-reservation=40.00MB thread-reservation=1
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/spillable-buffer-sizing.test b/testdata/workloads/functional-planner/queries/PlannerTest/spillable-buffer-sizing.test
index 5538bd3..5807596 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/spillable-buffer-sizing.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/spillable-buffer-sizing.test
@@ -176,40 +176,40 @@ Per-Host Resources: mem-estimate=359.29MB mem-reservation=74.00MB thread-reserva
    tuple-ids=0 row-size=231B cardinality=6.00M
    in pipelines: 00(GETNEXT)
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=196.00MB Threads=5
-Per-Host Resource Estimates: Memory=790MB
+Max Per-Host Resource Reservation: Memory=196.00MB Threads=7
+Per-Host Resource Estimates: Memory=365MB
 Analyzed query: SELECT /* +straight_join */ * FROM tpch_parquet.lineitem LEFT
 OUTER JOIN tpch_parquet.orders ON l_orderkey = o_orderkey
 
-F02:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
+F03:PLAN FRAGMENT [UNPARTITIONED] hosts=1 instances=1
 |  Per-Host Resources: mem-estimate=12.40MB mem-reservation=0B thread-reservation=1
 PLAN-ROOT SINK
 |  output exprs: tpch_parquet.lineitem.l_orderkey, tpch_parquet.lineitem.l_partkey, tpch_parquet.lineitem.l_suppkey, tpch_parquet.lineitem.l_linenumber, tpch_parquet.lineitem.l_quantity, tpch_parquet.lineitem.l_extendedprice, tpch_parquet.lineitem.l_discount, tpch_parquet.lineitem.l_tax, tpch_parquet.lineitem.l_returnflag, tpch_parquet.lineitem.l_linestatus, tpch_parquet.lineitem.l_shipdate, tpch_parquet.lineitem.l_commitdate, tpch_parquet.lineitem.l_receiptdate, tpch_parquet.lineitem.l_ [...]
 |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |
-04:EXCHANGE [UNPARTITIONED]
+05:EXCHANGE [UNPARTITIONED]
 |  mem-estimate=12.40MB mem-reservation=0B thread-reservation=0
 |  tuple-ids=0,1N row-size=402B cardinality=6.00M
 |  in pipelines: 00(GETNEXT)
 |
-F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
-Per-Host Resources: mem-estimate=697.89MB mem-reservation=148.00MB thread-reservation=2
-02:HASH JOIN [LEFT OUTER JOIN, BROADCAST]
+F02:PLAN FRAGMENT [HASH(l_orderkey)] hosts=3 instances=6
+Per-Host Resources: mem-estimate=112.40MB mem-reservation=68.00MB thread-reservation=2
+02:HASH JOIN [LEFT OUTER JOIN, PARTITIONED]
 |  hash-table-id=00
 |  hash predicates: l_orderkey = o_orderkey
 |  fk/pk conjuncts: l_orderkey = o_orderkey
-|  mem-estimate=268.94MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
+|  mem-estimate=44.82MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
 |  tuple-ids=0,1N row-size=402B cardinality=6.00M
 |  in pipelines: 00(GETNEXT), 01(OPEN)
 |
-|--F03:PLAN FRAGMENT [RANDOM] hosts=2 instances=4
+|--F04:PLAN FRAGMENT [HASH(l_orderkey)] hosts=2 instances=4
 |  |  Per-Host Resources: included in parent fragment
 |  JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: o_orderkey
 |  |  mem-estimate=0B mem-reservation=0B thread-reservation=0
 |  |
-|  03:EXCHANGE [BROADCAST]
+|  04:EXCHANGE [HASH(o_orderkey)]
 |  |  mem-estimate=10.68MB mem-reservation=0B thread-reservation=0
 |  |  tuple-ids=1 row-size=171B cardinality=1.50M
 |  |  in pipelines: 01(GETNEXT)
@@ -226,6 +226,13 @@ Per-Host Resources: mem-estimate=697.89MB mem-reservation=148.00MB thread-reserv
 |     tuple-ids=1 row-size=171B cardinality=1.50M
 |     in pipelines: 01(GETNEXT)
 |
+03:EXCHANGE [HASH(l_orderkey)]
+|  mem-estimate=11.38MB mem-reservation=0B thread-reservation=0
+|  tuple-ids=0 row-size=231B cardinality=6.00M
+|  in pipelines: 00(GETNEXT)
+|
+F00:PLAN FRAGMENT [RANDOM] hosts=3 instances=6
+Per-Host Resources: mem-estimate=160.00MB mem-reservation=80.00MB thread-reservation=2
 00:SCAN HDFS [tpch_parquet.lineitem, RANDOM]
    HDFS partitions=1/1 files=3 size=193.99MB
    stored statistics:
@@ -543,7 +550,7 @@ Per-Host Resources: mem-estimate=2.02GB mem-reservation=34.09MB thread-reservati
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   HDFS partitions=24/24 files=24 size=200.33KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
@@ -607,7 +614,7 @@ Per-Host Resources: mem-estimate=4.03GB mem-reservation=68.17MB thread-reservati
 |     in pipelines: 01(GETNEXT)
 |
 00:SCAN HDFS [functional_parquet.alltypes, RANDOM]
-   HDFS partitions=24/24 files=24 size=200.33KB
+   HDFS partitions=24/24 files=24 size=201.80KB
    stored statistics:
      table: rows=unavailable size=unavailable
      partitions: 0/24 rows=unavailable
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test
index 41158f3..37dd2eb 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test
@@ -342,11 +342,11 @@ PLAN-ROOT SINK
    runtime filters: RF000 -> ss_item_sk, RF002 -> ss_promo_sk, RF004 -> ss_cdemo_sk, RF006 -> ss_sold_date_sk
    row-size=36B cardinality=2.88M
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=108.62MB Threads=13
-Per-Host Resource Estimates: Memory=398MB
+Max Per-Host Resource Reservation: Memory=101.50MB Threads=15
+Per-Host Resource Estimates: Memory=408MB
 PLAN-ROOT SINK
 |
-17:MERGING-EXCHANGE [UNPARTITIONED]
+18:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: i_item_id ASC
 |  limit: 100
 |
@@ -354,12 +354,12 @@ PLAN-ROOT SINK
 |  order by: i_item_id ASC
 |  row-size=60B cardinality=100
 |
-16:AGGREGATE [FINALIZE]
+17:AGGREGATE [FINALIZE]
 |  output: avg:merge(ss_quantity), avg:merge(ss_list_price), avg:merge(ss_coupon_amt), avg:merge(ss_sales_price)
 |  group by: i_item_id
 |  row-size=60B cardinality=8.85K
 |
-15:EXCHANGE [HASH(i_item_id)]
+16:EXCHANGE [HASH(i_item_id)]
 |
 09:AGGREGATE [STREAMING]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
@@ -375,7 +375,7 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: i_item_sk
 |  |
-|  14:EXCHANGE [BROADCAST]
+|  15:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.item]
 |     HDFS partitions=1/1 files=1 size=4.82MB
@@ -390,14 +390,14 @@ PLAN-ROOT SINK
 |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  build expressions: p_promo_sk
 |  |
-|  13:EXCHANGE [BROADCAST]
+|  14:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpcds.promotion]
 |     HDFS partitions=1/1 files=1 size=36.36KB
 |     predicates: (p_channel_email = 'N' OR p_channel_event = 'N')
 |     row-size=30B cardinality=300
 |
-06:HASH JOIN [INNER JOIN, BROADCAST]
+06:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
 |  row-size=96B cardinality=263.34K
@@ -406,13 +406,15 @@ PLAN-ROOT SINK
 |  |  join-table-id=02 plan-id=03 cohort-id=01
 |  |  build expressions: cd_demo_sk
 |  |
-|  12:EXCHANGE [BROADCAST]
+|  13:EXCHANGE [HASH(cd_demo_sk)]
 |  |
 |  01:SCAN HDFS [tpcds.customer_demographics]
 |     HDFS partitions=1/1 files=1 size=76.92MB
 |     predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
 |     row-size=52B cardinality=97.40K
 |
+12:EXCHANGE [HASH(ss_cdemo_sk)]
+|
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
@@ -662,11 +664,11 @@ PLAN-ROOT SINK
    runtime filters: RF002 -> store_sales.ss_store_sk
    row-size=8B cardinality=84.40K
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=92.27MB Threads=15
-Per-Host Resource Estimates: Memory=284MB
+Max Per-Host Resource Reservation: Memory=94.27MB Threads=17
+Per-Host Resource Estimates: Memory=288MB
 PLAN-ROOT SINK
 |
-20:MERGING-EXCHANGE [UNPARTITIONED]
+21:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: s_store_name ASC
 |  limit: 100
 |
@@ -674,12 +676,12 @@ PLAN-ROOT SINK
 |  order by: s_store_name ASC
 |  row-size=32B cardinality=8
 |
-19:AGGREGATE [FINALIZE]
+20:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_net_profit)
 |  group by: s_store_name
 |  row-size=32B cardinality=8
 |
-18:EXCHANGE [HASH(s_store_name)]
+19:EXCHANGE [HASH(s_store_name)]
 |
 10:AGGREGATE [STREAMING]
 |  output: sum(ss_net_profit)
@@ -695,7 +697,7 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: substr(substr(ca_zip, 1, 5), 1, 2)
 |  |
-|  17:EXCHANGE [BROADCAST]
+|  18:EXCHANGE [BROADCAST]
 |  |
 |  07:HASH JOIN [RIGHT SEMI JOIN, PARTITIONED]
 |  |  hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
@@ -706,20 +708,20 @@ PLAN-ROOT SINK
 |  |  |  join-table-id=01 plan-id=02 cohort-id=02
 |  |  |  build expressions: substr(ca_zip, 1, 5)
 |  |  |
-|  |  15:AGGREGATE [FINALIZE]
+|  |  16:AGGREGATE [FINALIZE]
 |  |  |  output: count:merge(*)
 |  |  |  group by: substr(ca_zip, 1, 5)
 |  |  |  having: count(*) > 10
 |  |  |  row-size=20B cardinality=396
 |  |  |
-|  |  14:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
+|  |  15:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
 |  |  |
 |  |  05:AGGREGATE [STREAMING]
 |  |  |  output: count(*)
 |  |  |  group by: substr(ca_zip, 1, 5)
 |  |  |  row-size=20B cardinality=3.96K
 |  |  |
-|  |  04:HASH JOIN [INNER JOIN, BROADCAST]
+|  |  04:HASH JOIN [INNER JOIN, PARTITIONED]
 |  |  |  hash predicates: customer_address.ca_address_sk = customer.c_current_addr_sk
 |  |  |  runtime filters: RF006 <- customer.c_current_addr_sk
 |  |  |  row-size=38B cardinality=51.30K
@@ -728,19 +730,21 @@ PLAN-ROOT SINK
 |  |  |  |  join-table-id=02 plan-id=03 cohort-id=03
 |  |  |  |  build expressions: customer.c_current_addr_sk
 |  |  |  |
-|  |  |  13:EXCHANGE [BROADCAST]
+|  |  |  14:EXCHANGE [HASH(customer.c_current_addr_sk)]
 |  |  |  |
 |  |  |  03:SCAN HDFS [tpcds.customer]
 |  |  |     HDFS partitions=1/1 files=1 size=12.60MB
 |  |  |     predicates: c_preferred_cust_flag = 'Y'
 |  |  |     row-size=17B cardinality=50.00K
 |  |  |
+|  |  13:EXCHANGE [HASH(customer_address.ca_address_sk)]
+|  |  |
 |  |  02:SCAN HDFS [tpcds.customer_address]
 |  |     HDFS partitions=1/1 files=1 size=5.25MB
 |  |     runtime filters: RF006 -> customer_address.ca_address_sk
 |  |     row-size=21B cardinality=50.00K
 |  |
-|  16:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
+|  17:EXCHANGE [HASH(substr(ca_zip, 1, 5))]
 |  |
 |  06:SCAN HDFS [tpcds.customer_address]
 |     HDFS partitions=1/1 files=1 size=5.25MB
@@ -1248,11 +1252,11 @@ PLAN-ROOT SINK
    runtime filters: RF000 -> ss_item_sk, RF002 -> ss_store_sk, RF004 -> ss_cdemo_sk, RF006 -> ss_sold_date_sk
    row-size=36B cardinality=2.88M
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=108.52MB Threads=13
-Per-Host Resource Estimates: Memory=398MB
+Max Per-Host Resource Reservation: Memory=101.39MB Threads=15
+Per-Host Resource Estimates: Memory=408MB
 PLAN-ROOT SINK
 |
-17:MERGING-EXCHANGE [UNPARTITIONED]
+18:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: i_item_id ASC, s_state ASC
 |  limit: 100
 |
@@ -1260,12 +1264,12 @@ PLAN-ROOT SINK
 |  order by: i_item_id ASC, s_state ASC
 |  row-size=74B cardinality=100
 |
-16:AGGREGATE [FINALIZE]
+17:AGGREGATE [FINALIZE]
 |  output: avg:merge(ss_quantity), avg:merge(ss_list_price), avg:merge(ss_coupon_amt), avg:merge(ss_sales_price)
 |  group by: i_item_id, s_state
 |  row-size=74B cardinality=8.85K
 |
-15:EXCHANGE [HASH(i_item_id,s_state)]
+16:EXCHANGE [HASH(i_item_id,s_state)]
 |
 09:AGGREGATE [STREAMING]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
@@ -1281,7 +1285,7 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: i_item_sk
 |  |
-|  14:EXCHANGE [BROADCAST]
+|  15:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpcds.item]
 |     HDFS partitions=1/1 files=1 size=4.82MB
@@ -1296,14 +1300,14 @@ PLAN-ROOT SINK
 |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  build expressions: s_store_sk
 |  |
-|  13:EXCHANGE [BROADCAST]
+|  14:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.store]
 |     HDFS partitions=1/1 files=1 size=3.08KB
 |     predicates: s_state IN ('WI', 'CA', 'TX', 'FL', 'WA', 'TN')
 |     row-size=18B cardinality=12
 |
-06:HASH JOIN [INNER JOIN, BROADCAST]
+06:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
 |  row-size=96B cardinality=263.34K
@@ -1312,13 +1316,15 @@ PLAN-ROOT SINK
 |  |  join-table-id=02 plan-id=03 cohort-id=01
 |  |  build expressions: cd_demo_sk
 |  |
-|  12:EXCHANGE [BROADCAST]
+|  13:EXCHANGE [HASH(cd_demo_sk)]
 |  |
 |  01:SCAN HDFS [tpcds.customer_demographics]
 |     HDFS partitions=1/1 files=1 size=76.92MB
 |     predicates: cd_marital_status = 'W', cd_gender = 'F', cd_education_status = 'Primary'
 |     row-size=52B cardinality=97.40K
 |
+12:EXCHANGE [HASH(ss_cdemo_sk)]
+|
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
@@ -2662,11 +2668,11 @@ PLAN-ROOT SINK
    runtime filters: RF000 -> ss_store_sk, RF002 -> ss_sold_date_sk, RF004 -> ss_item_sk
    row-size=20B cardinality=2.88M
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=73.52MB Threads=11
-Per-Host Resource Estimates: Memory=202MB
+Max Per-Host Resource Reservation: Memory=77.52MB Threads=13
+Per-Host Resource Estimates: Memory=206MB
 PLAN-ROOT SINK
 |
-14:MERGING-EXCHANGE [UNPARTITIONED]
+15:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: sum_sales ASC, i_manufact_id ASC
 |  limit: 100
 |
@@ -2674,12 +2680,12 @@ PLAN-ROOT SINK
 |  order by: sum_sales ASC, i_manufact_id ASC
 |  row-size=20B cardinality=96
 |
-13:AGGREGATE [FINALIZE]
+14:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_sales_price)
 |  group by: i_manufact_id, d_qoy
 |  row-size=24B cardinality=96
 |
-12:EXCHANGE [HASH(i_manufact_id,d_qoy)]
+13:EXCHANGE [HASH(i_manufact_id,d_qoy)]
 |
 07:AGGREGATE [STREAMING]
 |  output: sum(ss_sales_price)
@@ -2695,13 +2701,13 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: s_store_sk
 |  |
-|  11:EXCHANGE [BROADCAST]
+|  12:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.store]
 |     HDFS partitions=1/1 files=1 size=3.08KB
 |     row-size=4B cardinality=12
 |
-05:HASH JOIN [INNER JOIN, BROADCAST]
+05:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
 |  row-size=110B cardinality=96
@@ -2710,13 +2716,15 @@ PLAN-ROOT SINK
 |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  build expressions: d_date_sk
 |  |
-|  10:EXCHANGE [BROADCAST]
+|  11:EXCHANGE [HASH(d_date_sk)]
 |  |
 |  02:SCAN HDFS [tpcds.date_dim]
 |     HDFS partitions=1/1 files=1 size=9.84MB
 |     predicates: d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
 |     row-size=12B cardinality=362
 |
+10:EXCHANGE [HASH(ss_sold_date_sk)]
+|
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF004 <- i_item_sk
@@ -3547,11 +3555,11 @@ PLAN-ROOT SINK
    runtime filters: RF000 -> ss_store_sk, RF002 -> ss_sold_date_sk, RF004 -> ss_item_sk
    row-size=20B cardinality=546.31K
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=78.52MB Threads=11
-Per-Host Resource Estimates: Memory=222MB
+Max Per-Host Resource Reservation: Memory=82.52MB Threads=15
+Per-Host Resource Estimates: Memory=226MB
 PLAN-ROOT SINK
 |
-17:MERGING-EXCHANGE [UNPARTITIONED]
+19:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: i_manager_id ASC, avg_monthly_sales ASC, sum_sales ASC
 |  limit: 100
 |
@@ -3572,19 +3580,19 @@ PLAN-ROOT SINK
 |  order by: i_manager_id ASC NULLS FIRST
 |  row-size=24B cardinality=6
 |
-16:AGGREGATE [FINALIZE]
+18:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_sales_price)
 |  group by: i_manager_id, d_moy
 |  row-size=24B cardinality=6
 |
-15:EXCHANGE [HASH(i_manager_id)]
+17:EXCHANGE [HASH(i_manager_id)]
 |
 07:AGGREGATE [STREAMING]
 |  output: sum(ss_sales_price)
 |  group by: i_manager_id, d_moy
 |  row-size=24B cardinality=6
 |
-06:HASH JOIN [INNER JOIN, BROADCAST]
+06:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF000 <- s_store_sk
 |  row-size=114B cardinality=6
@@ -3593,13 +3601,15 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: s_store_sk
 |  |
-|  14:EXCHANGE [BROADCAST]
+|  16:EXCHANGE [HASH(s_store_sk)]
 |  |
 |  03:SCAN HDFS [tpcds.store]
 |     HDFS partitions=1/1 files=1 size=3.08KB
 |     row-size=4B cardinality=12
 |
-05:HASH JOIN [INNER JOIN, BROADCAST]
+15:EXCHANGE [HASH(ss_store_sk)]
+|
+05:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
 |  row-size=110B cardinality=6
@@ -3608,13 +3618,15 @@ PLAN-ROOT SINK
 |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  build expressions: d_date_sk
 |  |
-|  13:EXCHANGE [BROADCAST]
+|  14:EXCHANGE [HASH(d_date_sk)]
 |  |
 |  02:SCAN HDFS [tpcds.date_dim]
 |     HDFS partitions=1/1 files=1 size=9.84MB
 |     predicates: tpcds.date_dim.d_date_sk <= 2452275, tpcds.date_dim.d_date_sk >= 2451911, d_month_seq IN (1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223)
 |     row-size=12B cardinality=114
 |
+13:EXCHANGE [HASH(ss_sold_date_sk)]
+|
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF004 <- i_item_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpch-all.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpch-all.test
index 2497fd7..ee15c38 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpch-all.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpch-all.test
@@ -36,7 +36,7 @@ PLAN-ROOT SINK
 |  row-size=122B cardinality=6
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate <= '1998-09-02'
    row-size=80B cardinality=600.12K
 ---- DISTRIBUTEDPLAN
@@ -64,7 +64,7 @@ PLAN-ROOT SINK
 |  row-size=122B cardinality=6
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate <= '1998-09-02'
    row-size=80B cardinality=600.12K
 ---- PARALLELPLANS
@@ -92,7 +92,7 @@ PLAN-ROOT SINK
 |  row-size=122B cardinality=6
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate <= '1998-09-02'
    row-size=80B cardinality=600.12K
 ====
@@ -162,7 +162,7 @@ PLAN-ROOT SINK
 |  |  row-size=325B cardinality=1.01K
 |  |
 |  |--04:SCAN HDFS [tpch.region]
-|  |     partitions=1/1 files=1 size=384B
+|  |     HDFS partitions=1/1 files=1 size=384B
 |  |     predicates: r_name = 'EUROPE'
 |  |     row-size=21B cardinality=1
 |  |
@@ -172,7 +172,7 @@ PLAN-ROOT SINK
 |  |  row-size=304B cardinality=5.05K
 |  |
 |  |--03:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     runtime filters: RF010 -> n_regionkey
 |  |     row-size=23B cardinality=25
 |  |
@@ -187,17 +187,17 @@ PLAN-ROOT SINK
 |  |  |  row-size=95B cardinality=5.05K
 |  |  |
 |  |  |--00:SCAN HDFS [tpch.part]
-|  |  |     partitions=1/1 files=1 size=22.83MB
+|  |  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |  |     predicates: p_size = 15, p_type LIKE '%BRASS'
 |  |  |     row-size=71B cardinality=1.26K
 |  |  |
 |  |  02:SCAN HDFS [tpch.partsupp]
-|  |     partitions=1/1 files=1 size=112.71MB
+|  |     HDFS partitions=1/1 files=1 size=112.71MB
 |  |     runtime filters: RF016 -> ps_partkey
 |  |     row-size=24B cardinality=800.00K
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF012 -> s_nationkey, RF014 -> s_suppkey
 |     row-size=187B cardinality=10.00K
 |
@@ -212,7 +212,7 @@ PLAN-ROOT SINK
 |  row-size=59B cardinality=160.00K
 |
 |--08:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'EUROPE'
 |     row-size=21B cardinality=1
 |
@@ -222,7 +222,7 @@ PLAN-ROOT SINK
 |  row-size=38B cardinality=800.00K
 |
 |--07:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF004 -> n_regionkey
 |     row-size=4B cardinality=25
 |
@@ -232,12 +232,12 @@ PLAN-ROOT SINK
 |  row-size=34B cardinality=800.00K
 |
 |--06:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF006 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
 05:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF000 -> tpch.partsupp.ps_partkey, RF008 -> ps_suppkey
    row-size=24B cardinality=800.00K
 ---- DISTRIBUTEDPLAN
@@ -268,7 +268,7 @@ PLAN-ROOT SINK
 |  |--27:EXCHANGE [BROADCAST]
 |  |  |
 |  |  04:SCAN HDFS [tpch.region]
-|  |     partitions=1/1 files=1 size=384B
+|  |     HDFS partitions=1/1 files=1 size=384B
 |  |     predicates: r_name = 'EUROPE'
 |  |     row-size=21B cardinality=1
 |  |
@@ -280,7 +280,7 @@ PLAN-ROOT SINK
 |  |--26:EXCHANGE [BROADCAST]
 |  |  |
 |  |  03:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     runtime filters: RF010 -> n_regionkey
 |  |     row-size=23B cardinality=25
 |  |
@@ -299,17 +299,17 @@ PLAN-ROOT SINK
 |  |  |--24:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  00:SCAN HDFS [tpch.part]
-|  |  |     partitions=1/1 files=1 size=22.83MB
+|  |  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |  |     predicates: p_size = 15, p_type LIKE '%BRASS'
 |  |  |     row-size=71B cardinality=1.26K
 |  |  |
 |  |  02:SCAN HDFS [tpch.partsupp]
-|  |     partitions=1/1 files=1 size=112.71MB
+|  |     HDFS partitions=1/1 files=1 size=112.71MB
 |  |     runtime filters: RF016 -> ps_partkey
 |  |     row-size=24B cardinality=800.00K
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF012 -> s_nationkey, RF014 -> s_suppkey
 |     row-size=187B cardinality=10.00K
 |
@@ -335,7 +335,7 @@ PLAN-ROOT SINK
 |--21:EXCHANGE [BROADCAST]
 |  |
 |  08:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'EUROPE'
 |     row-size=21B cardinality=1
 |
@@ -347,7 +347,7 @@ PLAN-ROOT SINK
 |--20:EXCHANGE [BROADCAST]
 |  |
 |  07:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF004 -> n_regionkey
 |     row-size=4B cardinality=25
 |
@@ -359,12 +359,12 @@ PLAN-ROOT SINK
 |--19:EXCHANGE [BROADCAST]
 |  |
 |  06:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF006 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
 05:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF000 -> tpch.partsupp.ps_partkey, RF008 -> ps_suppkey
    row-size=24B cardinality=800.00K
 ---- PARALLELPLANS
@@ -403,7 +403,7 @@ PLAN-ROOT SINK
 |  |  27:EXCHANGE [BROADCAST]
 |  |  |
 |  |  04:SCAN HDFS [tpch.region]
-|  |     partitions=1/1 files=1 size=384B
+|  |     HDFS partitions=1/1 files=1 size=384B
 |  |     predicates: r_name = 'EUROPE'
 |  |     row-size=21B cardinality=1
 |  |
@@ -419,7 +419,7 @@ PLAN-ROOT SINK
 |  |  26:EXCHANGE [BROADCAST]
 |  |  |
 |  |  03:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     runtime filters: RF010 -> n_regionkey
 |  |     row-size=23B cardinality=25
 |  |
@@ -446,17 +446,17 @@ PLAN-ROOT SINK
 |  |  |  24:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  00:SCAN HDFS [tpch.part]
-|  |  |     partitions=1/1 files=1 size=22.83MB
+|  |  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |  |     predicates: p_size = 15, p_type LIKE '%BRASS'
 |  |  |     row-size=71B cardinality=1.26K
 |  |  |
 |  |  02:SCAN HDFS [tpch.partsupp]
-|  |     partitions=1/1 files=1 size=112.71MB
+|  |     HDFS partitions=1/1 files=1 size=112.71MB
 |  |     runtime filters: RF016 -> ps_partkey
 |  |     row-size=24B cardinality=800.00K
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF012 -> s_nationkey, RF014 -> s_suppkey
 |     row-size=187B cardinality=10.00K
 |
@@ -486,7 +486,7 @@ PLAN-ROOT SINK
 |  21:EXCHANGE [BROADCAST]
 |  |
 |  08:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'EUROPE'
 |     row-size=21B cardinality=1
 |
@@ -502,7 +502,7 @@ PLAN-ROOT SINK
 |  20:EXCHANGE [BROADCAST]
 |  |
 |  07:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF004 -> n_regionkey
 |     row-size=4B cardinality=25
 |
@@ -518,12 +518,12 @@ PLAN-ROOT SINK
 |  19:EXCHANGE [BROADCAST]
 |  |
 |  06:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF006 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
 05:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF000 -> tpch.partsupp.ps_partkey, RF008 -> ps_suppkey
    row-size=24B cardinality=800.00K
 ====
@@ -572,7 +572,7 @@ PLAN-ROOT SINK
 |  row-size=117B cardinality=17.56K
 |
 |--00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     predicates: c_mktsegment = 'BUILDING'
 |     row-size=29B cardinality=30.00K
 |
@@ -582,13 +582,13 @@ PLAN-ROOT SINK
 |  row-size=88B cardinality=57.58K
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1995-03-15'
 |     runtime filters: RF000 -> o_custkey
 |     row-size=42B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate > '1995-03-15'
    runtime filters: RF002 -> l_orderkey
    row-size=46B cardinality=600.12K
@@ -625,7 +625,7 @@ PLAN-ROOT SINK
 |--08:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     predicates: c_mktsegment = 'BUILDING'
 |     row-size=29B cardinality=30.00K
 |
@@ -637,22 +637,22 @@ PLAN-ROOT SINK
 |--07:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1995-03-15'
 |     runtime filters: RF000 -> o_custkey
 |     row-size=42B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate > '1995-03-15'
    runtime filters: RF002 -> l_orderkey
    row-size=46B cardinality=600.12K
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=82.75MB Threads=9
-Per-Host Resource Estimates: Memory=484MB
+Max Per-Host Resource Reservation: Memory=73.50MB Threads=13
+Per-Host Resource Estimates: Memory=497MB
 PLAN-ROOT SINK
 |
-11:MERGING-EXCHANGE [UNPARTITIONED]
+13:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC, o_orderdate ASC
 |  limit: 10
 |
@@ -660,19 +660,19 @@ PLAN-ROOT SINK
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC, o_orderdate ASC
 |  row-size=50B cardinality=10
 |
-10:AGGREGATE [FINALIZE]
+12:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * (1 - l_discount))
 |  group by: l_orderkey, o_orderdate, o_shippriority
 |  row-size=50B cardinality=17.56K
 |
-09:EXCHANGE [HASH(l_orderkey,o_orderdate,o_shippriority)]
+11:EXCHANGE [HASH(l_orderkey,o_orderdate,o_shippriority)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: l_orderkey, o_orderdate, o_shippriority
 |  row-size=50B cardinality=17.56K
 |
-04:HASH JOIN [INNER JOIN, BROADCAST]
+04:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: o_custkey = c_custkey
 |  runtime filters: RF000 <- c_custkey
 |  row-size=117B cardinality=17.56K
@@ -681,14 +681,16 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: c_custkey
 |  |
-|  08:EXCHANGE [BROADCAST]
+|  10:EXCHANGE [HASH(c_custkey)]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     predicates: c_mktsegment = 'BUILDING'
 |     row-size=29B cardinality=30.00K
 |
-03:HASH JOIN [INNER JOIN, BROADCAST]
+09:EXCHANGE [HASH(o_custkey)]
+|
+03:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: l_orderkey = o_orderkey
 |  runtime filters: RF002 <- o_orderkey
 |  row-size=88B cardinality=57.58K
@@ -697,16 +699,18 @@ PLAN-ROOT SINK
 |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  build expressions: o_orderkey
 |  |
-|  07:EXCHANGE [BROADCAST]
+|  08:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1995-03-15'
 |     runtime filters: RF000 -> o_custkey
 |     row-size=42B cardinality=150.00K
 |
+07:EXCHANGE [HASH(l_orderkey)]
+|
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate > '1995-03-15'
    runtime filters: RF002 -> l_orderkey
    row-size=46B cardinality=600.12K
@@ -754,12 +758,12 @@ PLAN-ROOT SINK
 |  row-size=50B cardinality=150.00K
 |
 |--00:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1993-10-01', o_orderdate >= '1993-07-01'
 |     row-size=50B cardinality=150.00K
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_commitdate < l_receiptdate
    runtime filters: RF000 -> l_orderkey
    row-size=52B cardinality=600.12K
@@ -795,14 +799,14 @@ PLAN-ROOT SINK
 |--06:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  00:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1993-10-01', o_orderdate >= '1993-07-01'
 |     row-size=50B cardinality=150.00K
 |
 05:EXCHANGE [HASH(l_orderkey)]
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_commitdate < l_receiptdate
    runtime filters: RF000 -> l_orderkey
    row-size=52B cardinality=600.12K
@@ -842,14 +846,14 @@ PLAN-ROOT SINK
 |  06:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  00:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1993-10-01', o_orderdate >= '1993-07-01'
 |     row-size=50B cardinality=150.00K
 |
 05:EXCHANGE [HASH(l_orderkey)]
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_commitdate < l_receiptdate
    runtime filters: RF000 -> l_orderkey
    row-size=52B cardinality=600.12K
@@ -900,7 +904,7 @@ PLAN-ROOT SINK
 |  row-size=134B cardinality=115.16K
 |
 |--05:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'ASIA'
 |     row-size=21B cardinality=1
 |
@@ -910,7 +914,7 @@ PLAN-ROOT SINK
 |  row-size=113B cardinality=575.77K
 |
 |--04:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF000 -> n_regionkey
 |     row-size=23B cardinality=25
 |
@@ -920,7 +924,7 @@ PLAN-ROOT SINK
 |  row-size=90B cardinality=575.77K
 |
 |--03:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF002 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -930,7 +934,7 @@ PLAN-ROOT SINK
 |  row-size=80B cardinality=575.77K
 |
 |--00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF002 -> tpch.customer.c_nationkey, RF004 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -940,13 +944,13 @@ PLAN-ROOT SINK
 |  row-size=70B cardinality=575.77K
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1995-01-01', o_orderdate >= '1994-01-01'
 |     runtime filters: RF008 -> o_custkey
 |     row-size=38B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF005 -> l_suppkey, RF010 -> l_orderkey
    row-size=32B cardinality=6.00M
 ---- DISTRIBUTEDPLAN
@@ -981,7 +985,7 @@ PLAN-ROOT SINK
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'ASIA'
 |     row-size=21B cardinality=1
 |
@@ -993,7 +997,7 @@ PLAN-ROOT SINK
 |--16:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF000 -> n_regionkey
 |     row-size=23B cardinality=25
 |
@@ -1005,7 +1009,7 @@ PLAN-ROOT SINK
 |--15:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF002 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1017,7 +1021,7 @@ PLAN-ROOT SINK
 |--14:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF002 -> tpch.customer.c_nationkey, RF004 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1029,13 +1033,13 @@ PLAN-ROOT SINK
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1995-01-01', o_orderdate >= '1994-01-01'
 |     runtime filters: RF008 -> o_custkey
 |     row-size=38B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF005 -> l_suppkey, RF010 -> l_orderkey
    row-size=32B cardinality=6.00M
 ---- PARALLELPLANS
@@ -1074,7 +1078,7 @@ PLAN-ROOT SINK
 |  17:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'ASIA'
 |     row-size=21B cardinality=1
 |
@@ -1090,7 +1094,7 @@ PLAN-ROOT SINK
 |  16:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF000 -> n_regionkey
 |     row-size=23B cardinality=25
 |
@@ -1106,7 +1110,7 @@ PLAN-ROOT SINK
 |  15:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF002 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1122,7 +1126,7 @@ PLAN-ROOT SINK
 |  14:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF002 -> tpch.customer.c_nationkey, RF004 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1138,13 +1142,13 @@ PLAN-ROOT SINK
 |  13:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1995-01-01', o_orderdate >= '1994-01-01'
 |     runtime filters: RF008 -> o_custkey
 |     row-size=38B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF005 -> l_suppkey, RF010 -> l_orderkey
    row-size=32B cardinality=6.00M
 ====
@@ -1169,7 +1173,7 @@ PLAN-ROOT SINK
 |  row-size=16B cardinality=1
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_discount <= 0.07, l_discount >= 0.05, l_quantity < 24, l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    row-size=46B cardinality=600.12K
 ---- DISTRIBUTEDPLAN
@@ -1188,7 +1192,7 @@ PLAN-ROOT SINK
 |  row-size=16B cardinality=1
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_discount <= 0.07, l_discount >= 0.05, l_quantity < 24, l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    row-size=46B cardinality=600.12K
 ---- PARALLELPLANS
@@ -1207,7 +1211,7 @@ PLAN-ROOT SINK
 |  row-size=16B cardinality=1
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_discount <= 0.07, l_discount >= 0.05, l_quantity < 24, l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    row-size=46B cardinality=600.12K
 ====
@@ -1272,7 +1276,7 @@ PLAN-ROOT SINK
 |  row-size=132B cardinality=575.77K
 |
 |--05:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 09:HASH JOIN [INNER JOIN]
@@ -1281,7 +1285,7 @@ PLAN-ROOT SINK
 |  row-size=111B cardinality=575.77K
 |
 |--04:SCAN HDFS [tpch.nation n1]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 08:HASH JOIN [INNER JOIN]
@@ -1290,7 +1294,7 @@ PLAN-ROOT SINK
 |  row-size=90B cardinality=575.77K
 |
 |--03:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF000 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1300,7 +1304,7 @@ PLAN-ROOT SINK
 |  row-size=80B cardinality=575.77K
 |
 |--00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF002 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1310,12 +1314,12 @@ PLAN-ROOT SINK
 |  row-size=70B cardinality=575.77K
 |
 |--02:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF004 -> o_custkey
 |     row-size=16B cardinality=1.50M
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate <= '1996-12-31', l_shipdate >= '1995-01-01'
    runtime filters: RF006 -> l_suppkey, RF008 -> l_orderkey
    row-size=54B cardinality=600.12K
@@ -1352,7 +1356,7 @@ PLAN-ROOT SINK
 |--18:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 09:HASH JOIN [INNER JOIN, BROADCAST]
@@ -1363,7 +1367,7 @@ PLAN-ROOT SINK
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpch.nation n1]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
@@ -1374,7 +1378,7 @@ PLAN-ROOT SINK
 |--16:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF000 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1386,7 +1390,7 @@ PLAN-ROOT SINK
 |--15:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF002 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1398,14 +1402,14 @@ PLAN-ROOT SINK
 |--14:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  02:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF004 -> o_custkey
 |     row-size=16B cardinality=1.50M
 |
 13:EXCHANGE [HASH(l_orderkey)]
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate <= '1996-12-31', l_shipdate >= '1995-01-01'
    runtime filters: RF006 -> l_suppkey, RF008 -> l_orderkey
    row-size=54B cardinality=600.12K
@@ -1446,7 +1450,7 @@ PLAN-ROOT SINK
 |  18:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 09:HASH JOIN [INNER JOIN, BROADCAST]
@@ -1461,7 +1465,7 @@ PLAN-ROOT SINK
 |  17:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpch.nation n1]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
@@ -1476,7 +1480,7 @@ PLAN-ROOT SINK
 |  16:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF000 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1492,7 +1496,7 @@ PLAN-ROOT SINK
 |  15:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF002 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1508,14 +1512,14 @@ PLAN-ROOT SINK
 |  14:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  02:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF004 -> o_custkey
 |     row-size=16B cardinality=1.50M
 |
 13:EXCHANGE [HASH(l_orderkey)]
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate <= '1996-12-31', l_shipdate >= '1995-01-01'
    runtime filters: RF006 -> l_suppkey, RF008 -> l_orderkey
    row-size=54B cardinality=600.12K
@@ -1579,7 +1583,7 @@ PLAN-ROOT SINK
 |  row-size=184B cardinality=761
 |
 |--06:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 13:HASH JOIN [INNER JOIN]
@@ -1588,7 +1592,7 @@ PLAN-ROOT SINK
 |  row-size=163B cardinality=761
 |
 |--07:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'AMERICA'
 |     row-size=21B cardinality=1
 |
@@ -1598,7 +1602,7 @@ PLAN-ROOT SINK
 |  row-size=143B cardinality=3.81K
 |
 |--05:SCAN HDFS [tpch.nation n1]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF002 -> n1.n_regionkey
 |     row-size=4B cardinality=25
 |
@@ -1613,7 +1617,7 @@ PLAN-ROOT SINK
 |  |  row-size=129B cardinality=3.81K
 |  |
 |  |--01:SCAN HDFS [tpch.supplier]
-|  |     partitions=1/1 files=1 size=1.33MB
+|  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |     runtime filters: RF000 -> s_nationkey
 |  |     row-size=10B cardinality=10.00K
 |  |
@@ -1628,23 +1632,23 @@ PLAN-ROOT SINK
 |  |  |  row-size=81B cardinality=39.66K
 |  |  |
 |  |  |--00:SCAN HDFS [tpch.part]
-|  |  |     partitions=1/1 files=1 size=22.83MB
+|  |  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |  |     predicates: p_type = 'ECONOMY ANODIZED STEEL'
 |  |  |     row-size=41B cardinality=1.32K
 |  |  |
 |  |  02:SCAN HDFS [tpch.lineitem]
-|  |     partitions=1/1 files=1 size=718.94MB
+|  |     HDFS partitions=1/1 files=1 size=718.94MB
 |  |     runtime filters: RF008 -> l_suppkey, RF012 -> l_partkey
 |  |     row-size=40B cardinality=6.00M
 |  |
 |  03:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate <= '1996-12-31', o_orderdate >= '1995-01-01'
 |     runtime filters: RF010 -> o_orderkey
 |     row-size=38B cardinality=150.00K
 |
 04:SCAN HDFS [tpch.customer]
-   partitions=1/1 files=1 size=23.08MB
+   HDFS partitions=1/1 files=1 size=23.08MB
    runtime filters: RF004 -> c_nationkey, RF006 -> c_custkey
    row-size=10B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
@@ -1679,7 +1683,7 @@ PLAN-ROOT SINK
 |--26:EXCHANGE [BROADCAST]
 |  |
 |  06:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 13:HASH JOIN [INNER JOIN, BROADCAST]
@@ -1690,7 +1694,7 @@ PLAN-ROOT SINK
 |--25:EXCHANGE [BROADCAST]
 |  |
 |  07:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'AMERICA'
 |     row-size=21B cardinality=1
 |
@@ -1702,7 +1706,7 @@ PLAN-ROOT SINK
 |--24:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.nation n1]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF002 -> n1.n_regionkey
 |     row-size=4B cardinality=25
 |
@@ -1714,7 +1718,7 @@ PLAN-ROOT SINK
 |--23:EXCHANGE [HASH(c_custkey)]
 |  |
 |  04:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF004 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1728,7 +1732,7 @@ PLAN-ROOT SINK
 |--21:EXCHANGE [HASH(s_suppkey)]
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1742,7 +1746,7 @@ PLAN-ROOT SINK
 |--19:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  03:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate <= '1996-12-31', o_orderdate >= '1995-01-01'
 |     runtime filters: RF006 -> o_custkey
 |     row-size=38B cardinality=150.00K
@@ -1757,12 +1761,12 @@ PLAN-ROOT SINK
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_type = 'ECONOMY ANODIZED STEEL'
 |     row-size=41B cardinality=1.32K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF008 -> l_suppkey, RF010 -> l_orderkey, RF012 -> l_partkey
    row-size=40B cardinality=6.00M
 ---- PARALLELPLANS
@@ -1801,7 +1805,7 @@ PLAN-ROOT SINK
 |  26:EXCHANGE [BROADCAST]
 |  |
 |  06:SCAN HDFS [tpch.nation n2]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 13:HASH JOIN [INNER JOIN, BROADCAST]
@@ -1816,7 +1820,7 @@ PLAN-ROOT SINK
 |  25:EXCHANGE [BROADCAST]
 |  |
 |  07:SCAN HDFS [tpch.region]
-|     partitions=1/1 files=1 size=384B
+|     HDFS partitions=1/1 files=1 size=384B
 |     predicates: r_name = 'AMERICA'
 |     row-size=21B cardinality=1
 |
@@ -1832,7 +1836,7 @@ PLAN-ROOT SINK
 |  24:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.nation n1]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     runtime filters: RF002 -> n1.n_regionkey
 |     row-size=4B cardinality=25
 |
@@ -1848,7 +1852,7 @@ PLAN-ROOT SINK
 |  23:EXCHANGE [HASH(c_custkey)]
 |  |
 |  04:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF004 -> c_nationkey
 |     row-size=10B cardinality=150.00K
 |
@@ -1866,7 +1870,7 @@ PLAN-ROOT SINK
 |  21:EXCHANGE [HASH(s_suppkey)]
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1884,7 +1888,7 @@ PLAN-ROOT SINK
 |  19:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  03:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate <= '1996-12-31', o_orderdate >= '1995-01-01'
 |     runtime filters: RF006 -> o_custkey
 |     row-size=38B cardinality=150.00K
@@ -1903,12 +1907,12 @@ PLAN-ROOT SINK
 |  17:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_type = 'ECONOMY ANODIZED STEEL'
 |     row-size=41B cardinality=1.32K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF008 -> l_suppkey, RF010 -> l_orderkey, RF012 -> l_partkey
    row-size=40B cardinality=6.00M
 ====
@@ -1965,7 +1969,7 @@ PLAN-ROOT SINK
 |  row-size=186B cardinality=574.29K
 |
 |--05:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 09:HASH JOIN [INNER JOIN]
@@ -1974,7 +1978,7 @@ PLAN-ROOT SINK
 |  row-size=165B cardinality=574.29K
 |
 |--03:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     row-size=24B cardinality=800.00K
 |
 08:HASH JOIN [INNER JOIN]
@@ -1983,7 +1987,7 @@ PLAN-ROOT SINK
 |  row-size=141B cardinality=574.29K
 |
 |--01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey, RF003 -> tpch.supplier.s_suppkey
 |     row-size=10B cardinality=10.00K
 |
@@ -1993,7 +1997,7 @@ PLAN-ROOT SINK
 |  row-size=131B cardinality=574.29K
 |
 |--04:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     row-size=30B cardinality=1.50M
 |
 06:HASH JOIN [INNER JOIN]
@@ -2002,13 +2006,13 @@ PLAN-ROOT SINK
 |  row-size=101B cardinality=598.58K
 |
 |--00:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_name LIKE '%green%'
 |     runtime filters: RF002 -> tpch.part.p_partkey
 |     row-size=53B cardinality=20.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF002 -> l_partkey, RF003 -> l_suppkey, RF006 -> l_suppkey, RF008 -> l_orderkey, RF010 -> l_partkey
    row-size=48B cardinality=6.00M
 ---- DISTRIBUTEDPLAN
@@ -2043,7 +2047,7 @@ PLAN-ROOT SINK
 |--18:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 09:HASH JOIN [INNER JOIN, BROADCAST]
@@ -2054,7 +2058,7 @@ PLAN-ROOT SINK
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     row-size=24B cardinality=800.00K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
@@ -2065,7 +2069,7 @@ PLAN-ROOT SINK
 |--16:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey, RF003 -> tpch.supplier.s_suppkey
 |     row-size=10B cardinality=10.00K
 |
@@ -2077,7 +2081,7 @@ PLAN-ROOT SINK
 |--15:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  04:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     row-size=30B cardinality=1.50M
 |
 14:EXCHANGE [HASH(l_orderkey)]
@@ -2090,33 +2094,33 @@ PLAN-ROOT SINK
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_name LIKE '%green%'
 |     runtime filters: RF002 -> tpch.part.p_partkey
 |     row-size=53B cardinality=20.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF002 -> l_partkey, RF003 -> l_suppkey, RF006 -> l_suppkey, RF008 -> l_orderkey, RF010 -> l_partkey
    row-size=48B cardinality=6.00M
 ---- PARALLELPLANS
-Max Per-Host Resource Reservation: Memory=230.39MB Threads=17
-Per-Host Resource Estimates: Memory=867MB
+Max Per-Host Resource Reservation: Memory=171.89MB Threads=19
+Per-Host Resource Estimates: Memory=830MB
 PLAN-ROOT SINK
 |
-21:MERGING-EXCHANGE [UNPARTITIONED]
+22:MERGING-EXCHANGE [UNPARTITIONED]
 |  order by: nation ASC, o_year DESC
 |
 12:SORT
 |  order by: nation ASC, o_year DESC
 |  row-size=39B cardinality=61.70K
 |
-20:AGGREGATE [FINALIZE]
+21:AGGREGATE [FINALIZE]
 |  output: sum:merge(amount)
 |  group by: nation, o_year
 |  row-size=39B cardinality=61.70K
 |
-19:EXCHANGE [HASH(nation,o_year)]
+20:EXCHANGE [HASH(nation,o_year)]
 |
 11:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity)
@@ -2132,13 +2136,13 @@ PLAN-ROOT SINK
 |  |  join-table-id=00 plan-id=01 cohort-id=01
 |  |  build expressions: n_nationkey
 |  |
-|  18:EXCHANGE [BROADCAST]
+|  19:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
-09:HASH JOIN [INNER JOIN, BROADCAST]
+09:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: l_partkey = ps_partkey, l_suppkey = ps_suppkey
 |  runtime filters: RF002 <- ps_partkey, RF003 <- ps_suppkey
 |  row-size=165B cardinality=574.29K
@@ -2147,12 +2151,14 @@ PLAN-ROOT SINK
 |  |  join-table-id=01 plan-id=02 cohort-id=01
 |  |  build expressions: ps_partkey, ps_suppkey
 |  |
-|  17:EXCHANGE [BROADCAST]
+|  18:EXCHANGE [HASH(ps_partkey,ps_suppkey)]
 |  |
 |  03:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     row-size=24B cardinality=800.00K
 |
+17:EXCHANGE [HASH(l_partkey,l_suppkey)]
+|
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_suppkey = s_suppkey
 |  runtime filters: RF006 <- s_suppkey
@@ -2165,7 +2171,7 @@ PLAN-ROOT SINK
 |  16:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey, RF003 -> tpch.supplier.s_suppkey
 |     row-size=10B cardinality=10.00K
 |
@@ -2181,7 +2187,7 @@ PLAN-ROOT SINK
 |  15:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  04:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     row-size=30B cardinality=1.50M
 |
 14:EXCHANGE [HASH(l_orderkey)]
@@ -2198,13 +2204,13 @@ PLAN-ROOT SINK
 |  13:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_name LIKE '%green%'
 |     runtime filters: RF002 -> tpch.part.p_partkey
 |     row-size=53B cardinality=20.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF002 -> l_partkey, RF003 -> l_suppkey, RF006 -> l_suppkey, RF008 -> l_orderkey, RF010 -> l_partkey
    row-size=48B cardinality=6.00M
 ====
@@ -2263,7 +2269,7 @@ PLAN-ROOT SINK
 |  row-size=293B cardinality=191.92K
 |
 |--03:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 05:HASH JOIN [INNER JOIN]
@@ -2277,18 +2283,18 @@ PLAN-ROOT SINK
 |  |  row-size=75B cardinality=191.92K
 |  |
 |  |--01:SCAN HDFS [tpch.orders]
-|  |     partitions=1/1 files=1 size=162.56MB
+|  |     HDFS partitions=1/1 files=1 size=162.56MB
 |  |     predicates: o_orderdate < '1994-01-01', o_orderdate >= '1993-10-01'
 |  |     row-size=38B cardinality=150.00K
 |  |
 |  02:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     predicates: l_returnflag = 'R'
 |     runtime filters: RF004 -> l_orderkey
 |     row-size=37B cardinality=2.00M
 |
 00:SCAN HDFS [tpch.customer]
-   partitions=1/1 files=1 size=23.08MB
+   HDFS partitions=1/1 files=1 size=23.08MB
    runtime filters: RF000 -> c_nationkey, RF002 -> c_custkey
    row-size=197B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
@@ -2324,7 +2330,7 @@ PLAN-ROOT SINK
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 05:HASH JOIN [INNER JOIN, PARTITIONED]
@@ -2335,7 +2341,7 @@ PLAN-ROOT SINK
 |--11:EXCHANGE [HASH(c_custkey)]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF000 -> c_nationkey
 |     row-size=197B cardinality=150.00K
 |
@@ -2349,13 +2355,13 @@ PLAN-ROOT SINK
 |--09:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1994-01-01', o_orderdate >= '1993-10-01'
 |     runtime filters: RF002 -> o_custkey
 |     row-size=38B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_returnflag = 'R'
    runtime filters: RF004 -> l_orderkey
    row-size=37B cardinality=2.00M
@@ -2396,7 +2402,7 @@ PLAN-ROOT SINK
 |  12:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     row-size=21B cardinality=25
 |
 05:HASH JOIN [INNER JOIN, PARTITIONED]
@@ -2411,7 +2417,7 @@ PLAN-ROOT SINK
 |  11:EXCHANGE [HASH(c_custkey)]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     runtime filters: RF000 -> c_nationkey
 |     row-size=197B cardinality=150.00K
 |
@@ -2429,13 +2435,13 @@ PLAN-ROOT SINK
 |  09:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     predicates: o_orderdate < '1994-01-01', o_orderdate >= '1993-10-01'
 |     runtime filters: RF002 -> o_custkey
 |     row-size=38B cardinality=150.00K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_returnflag = 'R'
    runtime filters: RF004 -> l_orderkey
    row-size=37B cardinality=2.00M
@@ -2498,7 +2504,7 @@ PLAN-ROOT SINK
 |  |  row-size=51B cardinality=32.00K
 |  |
 |  |--08:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     predicates: n_name = 'GERMANY'
 |  |     row-size=21B cardinality=1
 |  |
@@ -2508,12 +2514,12 @@ PLAN-ROOT SINK
 |  |  row-size=30B cardinality=800.00K
 |  |
 |  |--07:SCAN HDFS [tpch.supplier]
-|  |     partitions=1/1 files=1 size=1.33MB
+|  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |     runtime filters: RF004 -> s_nationkey
 |  |     row-size=10B cardinality=10.00K
 |  |
 |  06:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     runtime filters: RF006 -> ps_suppkey
 |     row-size=20B cardinality=800.00K
 |
@@ -2528,7 +2534,7 @@ PLAN-ROOT SINK
 |  row-size=59B cardinality=32.00K
 |
 |--02:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     predicates: n_name = 'GERMANY'
 |     row-size=21B cardinality=1
 |
@@ -2538,12 +2544,12 @@ PLAN-ROOT SINK
 |  row-size=38B cardinality=800.00K
 |
 |--01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
 00:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF002 -> ps_suppkey
    row-size=28B cardinality=800.00K
 ---- DISTRIBUTEDPLAN
@@ -2582,7 +2588,7 @@ PLAN-ROOT SINK
 |  |--19:EXCHANGE [BROADCAST]
 |  |  |
 |  |  08:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     predicates: n_name = 'GERMANY'
 |  |     row-size=21B cardinality=1
 |  |
@@ -2594,12 +2600,12 @@ PLAN-ROOT SINK
 |  |--18:EXCHANGE [BROADCAST]
 |  |  |
 |  |  07:SCAN HDFS [tpch.supplier]
-|  |     partitions=1/1 files=1 size=1.33MB
+|  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |     runtime filters: RF004 -> s_nationkey
 |  |     row-size=10B cardinality=10.00K
 |  |
 |  06:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     runtime filters: RF006 -> ps_suppkey
 |     row-size=20B cardinality=800.00K
 |
@@ -2623,7 +2629,7 @@ PLAN-ROOT SINK
 |--15:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     predicates: n_name = 'GERMANY'
 |     row-size=21B cardinality=1
 |
@@ -2635,12 +2641,12 @@ PLAN-ROOT SINK
 |--14:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
 00:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF002 -> ps_suppkey
    row-size=28B cardinality=800.00K
 ---- PARALLELPLANS
@@ -2687,7 +2693,7 @@ PLAN-ROOT SINK
 |  |  19:EXCHANGE [BROADCAST]
 |  |  |
 |  |  08:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     predicates: n_name = 'GERMANY'
 |  |     row-size=21B cardinality=1
 |  |
@@ -2703,12 +2709,12 @@ PLAN-ROOT SINK
 |  |  18:EXCHANGE [BROADCAST]
 |  |  |
 |  |  07:SCAN HDFS [tpch.supplier]
-|  |     partitions=1/1 files=1 size=1.33MB
+|  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |     runtime filters: RF004 -> s_nationkey
 |  |     row-size=10B cardinality=10.00K
 |  |
 |  06:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     runtime filters: RF006 -> ps_suppkey
 |     row-size=20B cardinality=800.00K
 |
@@ -2736,7 +2742,7 @@ PLAN-ROOT SINK
 |  15:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpch.nation]
-|     partitions=1/1 files=1 size=2.15KB
+|     HDFS partitions=1/1 files=1 size=2.15KB
 |     predicates: n_name = 'GERMANY'
 |     row-size=21B cardinality=1
 |
@@ -2752,12 +2758,12 @@ PLAN-ROOT SINK
 |  14:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF000 -> s_nationkey
 |     row-size=10B cardinality=10.00K
 |
 00:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF002 -> ps_suppkey
    row-size=28B cardinality=800.00K
 ====
@@ -2811,12 +2817,12 @@ PLAN-ROOT SINK
 |  row-size=119B cardinality=320.78K
 |
 |--01:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     predicates: l_shipmode IN ('MAIL', 'SHIP'), l_commitdate < l_receiptdate, l_receiptdate < '1995-01-01', l_receiptdate >= '1994-01-01', l_shipdate < l_commitdate
 |     row-size=90B cardinality=320.78K
 |
 00:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    runtime filters: RF000 -> o_orderkey
    row-size=28B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
@@ -2851,13 +2857,13 @@ PLAN-ROOT SINK
 |--06:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  00:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     row-size=28B cardinality=1.50M
 |
 05:EXCHANGE [HASH(l_orderkey)]
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipmode IN ('MAIL', 'SHIP'), l_commitdate < l_receiptdate, l_receiptdate < '1995-01-01', l_receiptdate >= '1994-01-01', l_shipdate < l_commitdate
    runtime filters: RF000 -> l_orderkey
    row-size=90B cardinality=320.78K
@@ -2897,13 +2903,13 @@ PLAN-ROOT SINK
 |  06:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  00:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     row-size=28B cardinality=1.50M
 |
 05:EXCHANGE [HASH(l_orderkey)]
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipmode IN ('MAIL', 'SHIP'), l_commitdate < l_receiptdate, l_receiptdate < '1995-01-01', l_receiptdate >= '1994-01-01', l_shipdate < l_commitdate
    runtime filters: RF000 -> l_orderkey
    row-size=90B cardinality=320.78K
@@ -2955,11 +2961,11 @@ PLAN-ROOT SINK
 |  row-size=85B cardinality=150.00K
 |
 |--00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     row-size=8B cardinality=150.00K
 |
 01:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    predicates: NOT o_comment LIKE '%special%requests%'
    runtime filters: RF000 -> o_custkey
    row-size=77B cardinality=150.00K
@@ -3000,13 +3006,13 @@ PLAN-ROOT SINK
 |--07:EXCHANGE [HASH(c_custkey)]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     row-size=8B cardinality=150.00K
 |
 06:EXCHANGE [HASH(o_custkey)]
 |
 01:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    predicates: NOT o_comment LIKE '%special%requests%'
    runtime filters: RF000 -> o_custkey
    row-size=77B cardinality=150.00K
@@ -3051,13 +3057,13 @@ PLAN-ROOT SINK
 |  07:EXCHANGE [HASH(c_custkey)]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     row-size=8B cardinality=150.00K
 |
 06:EXCHANGE [HASH(o_custkey)]
 |
 01:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    predicates: NOT o_comment LIKE '%special%requests%'
    runtime filters: RF000 -> o_custkey
    row-size=77B cardinality=150.00K
@@ -3092,11 +3098,11 @@ PLAN-ROOT SINK
 |  row-size=87B cardinality=598.58K
 |
 |--01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     row-size=41B cardinality=200.00K
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1995-10-01', l_shipdate >= '1995-09-01'
    runtime filters: RF000 -> l_partkey
    row-size=46B cardinality=600.12K
@@ -3123,13 +3129,13 @@ PLAN-ROOT SINK
 |--05:EXCHANGE [HASH(p_partkey)]
 |  |
 |  01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     row-size=41B cardinality=200.00K
 |
 04:EXCHANGE [HASH(l_partkey)]
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1995-10-01', l_shipdate >= '1995-09-01'
    runtime filters: RF000 -> l_partkey
    row-size=46B cardinality=600.12K
@@ -3160,13 +3166,13 @@ PLAN-ROOT SINK
 |  05:EXCHANGE [HASH(p_partkey)]
 |  |
 |  01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     row-size=41B cardinality=200.00K
 |
 04:EXCHANGE [HASH(l_partkey)]
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1995-10-01', l_shipdate >= '1995-09-01'
    runtime filters: RF000 -> l_partkey
    row-size=46B cardinality=600.12K
@@ -3226,7 +3232,7 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=9.71K
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
 |     row-size=46B cardinality=600.12K
 |
@@ -3241,12 +3247,12 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=9.71K
 |  |
 |  01:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
 |     row-size=46B cardinality=600.12K
 |
 00:SCAN HDFS [tpch.supplier]
-   partitions=1/1 files=1 size=1.33MB
+   HDFS partitions=1/1 files=1 size=1.33MB
    runtime filters: RF000 -> s_suppkey
    row-size=102B cardinality=10.00K
 ---- DISTRIBUTEDPLAN
@@ -3290,7 +3296,7 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=9.71K
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
 |     row-size=46B cardinality=600.12K
 |
@@ -3302,7 +3308,7 @@ PLAN-ROOT SINK
 |--11:EXCHANGE [HASH(s_suppkey)]
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     row-size=102B cardinality=10.00K
 |
 10:AGGREGATE [FINALIZE]
@@ -3318,7 +3324,7 @@ PLAN-ROOT SINK
 |  row-size=24B cardinality=9.71K
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
    runtime filters: RF000 -> tpch.lineitem.l_suppkey
    row-size=46B cardinality=600.12K
@@ -3367,7 +3373,7 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=9.71K
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
 |     row-size=46B cardinality=600.12K
 |
@@ -3383,7 +3389,7 @@ PLAN-ROOT SINK
 |  11:EXCHANGE [HASH(s_suppkey)]
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     row-size=102B cardinality=10.00K
 |
 10:AGGREGATE [FINALIZE]
@@ -3399,7 +3405,7 @@ PLAN-ROOT SINK
 |  row-size=24B cardinality=9.71K
 |
 01:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
    runtime filters: RF000 -> tpch.lineitem.l_suppkey
    row-size=46B cardinality=600.12K
@@ -3459,7 +3465,7 @@ PLAN-ROOT SINK
 |  row-size=81B cardinality=31.92K
 |
 |--02:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     predicates: s_comment LIKE '%Customer%Complaints%'
 |     row-size=83B cardinality=1.00K
 |
@@ -3469,12 +3475,12 @@ PLAN-ROOT SINK
 |  row-size=81B cardinality=31.92K
 |
 |--01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_size IN (49, 14, 23, 45, 19, 3, 36, 9), p_brand != 'Brand#45', NOT p_type LIKE 'MEDIUM POLISHED%'
 |     row-size=65B cardinality=8.00K
 |
 00:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF000 -> ps_partkey
    row-size=16B cardinality=800.00K
 ---- DISTRIBUTEDPLAN
@@ -3518,7 +3524,7 @@ PLAN-ROOT SINK
 |--09:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     predicates: s_comment LIKE '%Customer%Complaints%'
 |     row-size=83B cardinality=1.00K
 |
@@ -3530,12 +3536,12 @@ PLAN-ROOT SINK
 |--08:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_size IN (49, 14, 23, 45, 19, 3, 36, 9), p_brand != 'Brand#45', NOT p_type LIKE 'MEDIUM POLISHED%'
 |     row-size=65B cardinality=8.00K
 |
 00:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF000 -> ps_partkey
    row-size=16B cardinality=800.00K
 ---- PARALLELPLANS
@@ -3583,7 +3589,7 @@ PLAN-ROOT SINK
 |  09:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     predicates: s_comment LIKE '%Customer%Complaints%'
 |     row-size=83B cardinality=1.00K
 |
@@ -3599,12 +3605,12 @@ PLAN-ROOT SINK
 |  08:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_size IN (49, 14, 23, 45, 19, 3, 36, 9), p_brand != 'Brand#45', NOT p_type LIKE 'MEDIUM POLISHED%'
 |     row-size=65B cardinality=8.00K
 |
 00:SCAN HDFS [tpch.partsupp]
-   partitions=1/1 files=1 size=112.71MB
+   HDFS partitions=1/1 files=1 size=112.71MB
    runtime filters: RF000 -> ps_partkey
    row-size=16B cardinality=800.00K
 ====
@@ -3648,12 +3654,12 @@ PLAN-ROOT SINK
 |  |  row-size=72B cardinality=29.93K
 |  |
 |  |--01:SCAN HDFS [tpch.part]
-|  |     partitions=1/1 files=1 size=22.83MB
+|  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |     predicates: p_container = 'MED BOX', p_brand = 'Brand#23'
 |  |     row-size=48B cardinality=1.00K
 |  |
 |  00:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     runtime filters: RF002 -> l_partkey
 |     row-size=24B cardinality=6.00M
 |
@@ -3663,7 +3669,7 @@ PLAN-ROOT SINK
 |  row-size=16B cardinality=200.52K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000 -> tpch.lineitem.l_partkey
    row-size=16B cardinality=6.00M
 ---- DISTRIBUTEDPLAN
@@ -3697,12 +3703,12 @@ PLAN-ROOT SINK
 |  |--09:EXCHANGE [BROADCAST]
 |  |  |
 |  |  01:SCAN HDFS [tpch.part]
-|  |     partitions=1/1 files=1 size=22.83MB
+|  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |     predicates: p_container = 'MED BOX', p_brand = 'Brand#23'
 |  |     row-size=48B cardinality=1.00K
 |  |
 |  00:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     runtime filters: RF002 -> l_partkey
 |     row-size=24B cardinality=6.00M
 |
@@ -3719,7 +3725,7 @@ PLAN-ROOT SINK
 |  row-size=16B cardinality=200.52K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000 -> tpch.lineitem.l_partkey
    row-size=16B cardinality=6.00M
 ---- PARALLELPLANS
@@ -3761,12 +3767,12 @@ PLAN-ROOT SINK
 |  |  09:EXCHANGE [BROADCAST]
 |  |  |
 |  |  01:SCAN HDFS [tpch.part]
-|  |     partitions=1/1 files=1 size=22.83MB
+|  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |     predicates: p_container = 'MED BOX', p_brand = 'Brand#23'
 |  |     row-size=48B cardinality=1.00K
 |  |
 |  00:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     runtime filters: RF002 -> l_partkey
 |     row-size=24B cardinality=6.00M
 |
@@ -3783,7 +3789,7 @@ PLAN-ROOT SINK
 |  row-size=16B cardinality=200.52K
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000 -> tpch.lineitem.l_partkey
    row-size=16B cardinality=6.00M
 ====
@@ -3849,7 +3855,7 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=156.34K
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     row-size=16B cardinality=6.00M
 |
 06:HASH JOIN [INNER JOIN]
@@ -3858,7 +3864,7 @@ PLAN-ROOT SINK
 |  row-size=100B cardinality=5.76M
 |
 |--00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     row-size=38B cardinality=150.00K
 |
 05:HASH JOIN [INNER JOIN]
@@ -3867,12 +3873,12 @@ PLAN-ROOT SINK
 |  row-size=62B cardinality=5.76M
 |
 |--01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF000 -> o_orderkey, RF002 -> o_custkey
 |     row-size=46B cardinality=1.50M
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000 -> tpch.lineitem.l_orderkey, RF004 -> l_orderkey
    row-size=16B cardinality=6.00M
 ---- DISTRIBUTEDPLAN
@@ -3919,7 +3925,7 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=1.56M
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     row-size=16B cardinality=6.00M
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
@@ -3930,7 +3936,7 @@ PLAN-ROOT SINK
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     row-size=38B cardinality=150.00K
 |
 05:HASH JOIN [INNER JOIN, PARTITIONED]
@@ -3941,14 +3947,14 @@ PLAN-ROOT SINK
 |--11:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF000 -> o_orderkey, RF002 -> o_custkey
 |     row-size=46B cardinality=1.50M
 |
 10:EXCHANGE [HASH(l_orderkey)]
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000 -> tpch.lineitem.l_orderkey, RF004 -> l_orderkey
    row-size=16B cardinality=6.00M
 ---- PARALLELPLANS
@@ -3999,7 +4005,7 @@ PLAN-ROOT SINK
 |  |  row-size=24B cardinality=1.56M
 |  |
 |  03:SCAN HDFS [tpch.lineitem]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     row-size=16B cardinality=6.00M
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
@@ -4014,7 +4020,7 @@ PLAN-ROOT SINK
 |  12:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     row-size=38B cardinality=150.00K
 |
 05:HASH JOIN [INNER JOIN, PARTITIONED]
@@ -4029,14 +4035,14 @@ PLAN-ROOT SINK
 |  11:EXCHANGE [HASH(o_orderkey)]
 |  |
 |  01:SCAN HDFS [tpch.orders]
-|     partitions=1/1 files=1 size=162.56MB
+|     HDFS partitions=1/1 files=1 size=162.56MB
 |     runtime filters: RF000 -> o_orderkey, RF002 -> o_custkey
 |     row-size=46B cardinality=1.50M
 |
 10:EXCHANGE [HASH(l_orderkey)]
 |
 02:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    runtime filters: RF000 -> tpch.lineitem.l_orderkey, RF004 -> l_orderkey
    row-size=16B cardinality=6.00M
 ====
@@ -4093,12 +4099,12 @@ PLAN-ROOT SINK
 |  row-size=124B cardinality=79.99K
 |
 |--01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_size >= 1
 |     row-size=52B cardinality=20.00K
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipmode IN ('AIR', 'AIR REG'), l_shipinstruct = 'DELIVER IN PERSON'
    runtime filters: RF000 -> l_partkey
    row-size=72B cardinality=801.95K
@@ -4126,12 +4132,12 @@ PLAN-ROOT SINK
 |--04:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_size >= 1
 |     row-size=52B cardinality=20.00K
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipmode IN ('AIR', 'AIR REG'), l_shipinstruct = 'DELIVER IN PERSON'
    runtime filters: RF000 -> l_partkey
    row-size=72B cardinality=801.95K
@@ -4163,12 +4169,12 @@ PLAN-ROOT SINK
 |  04:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch.part]
-|     partitions=1/1 files=1 size=22.83MB
+|     HDFS partitions=1/1 files=1 size=22.83MB
 |     predicates: p_size >= 1
 |     row-size=52B cardinality=20.00K
 |
 00:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipmode IN ('AIR', 'AIR REG'), l_shipinstruct = 'DELIVER IN PERSON'
    runtime filters: RF000 -> l_partkey
    row-size=72B cardinality=801.95K
@@ -4232,12 +4238,12 @@ PLAN-ROOT SINK
 |  |  row-size=98B cardinality=400
 |  |
 |  |--01:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     predicates: n_name = 'CANADA'
 |  |     row-size=21B cardinality=1
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF008 -> s_nationkey
 |     row-size=77B cardinality=10.00K
 |
@@ -4253,12 +4259,12 @@ PLAN-ROOT SINK
 |  |  row-size=20B cardinality=79.79K
 |  |
 |  |--03:SCAN HDFS [tpch.part]
-|  |     partitions=1/1 files=1 size=22.83MB
+|  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |     predicates: p_name LIKE 'forest%'
 |  |     row-size=53B cardinality=20.00K
 |  |
 |  02:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     runtime filters: RF000 -> ps_suppkey, RF006 -> ps_partkey
 |     row-size=20B cardinality=800.00K
 |
@@ -4268,7 +4274,7 @@ PLAN-ROOT SINK
 |  row-size=32B cardinality=600.12K
 |
 04:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    runtime filters: RF000 -> tpch.lineitem.l_suppkey, RF002 -> tpch.lineitem.l_partkey, RF003 -> tpch.lineitem.l_suppkey
    row-size=46B cardinality=600.12K
@@ -4299,12 +4305,12 @@ PLAN-ROOT SINK
 |  |--15:EXCHANGE [BROADCAST]
 |  |  |
 |  |  01:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     predicates: n_name = 'CANADA'
 |  |     row-size=21B cardinality=1
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF008 -> s_nationkey
 |     row-size=77B cardinality=10.00K
 |
@@ -4326,12 +4332,12 @@ PLAN-ROOT SINK
 |  |--13:EXCHANGE [BROADCAST]
 |  |  |
 |  |  03:SCAN HDFS [tpch.part]
-|  |     partitions=1/1 files=1 size=22.83MB
+|  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |     predicates: p_name LIKE 'forest%'
 |  |     row-size=53B cardinality=20.00K
 |  |
 |  02:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     runtime filters: RF000 -> ps_suppkey, RF006 -> ps_partkey
 |     row-size=20B cardinality=800.00K
 |
@@ -4348,7 +4354,7 @@ PLAN-ROOT SINK
 |  row-size=32B cardinality=600.12K
 |
 04:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    runtime filters: RF000 -> tpch.lineitem.l_suppkey, RF002 -> tpch.lineitem.l_partkey, RF003 -> tpch.lineitem.l_suppkey
    row-size=46B cardinality=600.12K
@@ -4387,12 +4393,12 @@ PLAN-ROOT SINK
 |  |  15:EXCHANGE [BROADCAST]
 |  |  |
 |  |  01:SCAN HDFS [tpch.nation]
-|  |     partitions=1/1 files=1 size=2.15KB
+|  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |     predicates: n_name = 'CANADA'
 |  |     row-size=21B cardinality=1
 |  |
 |  00:SCAN HDFS [tpch.supplier]
-|     partitions=1/1 files=1 size=1.33MB
+|     HDFS partitions=1/1 files=1 size=1.33MB
 |     runtime filters: RF008 -> s_nationkey
 |     row-size=77B cardinality=10.00K
 |
@@ -4422,12 +4428,12 @@ PLAN-ROOT SINK
 |  |  13:EXCHANGE [BROADCAST]
 |  |  |
 |  |  03:SCAN HDFS [tpch.part]
-|  |     partitions=1/1 files=1 size=22.83MB
+|  |     HDFS partitions=1/1 files=1 size=22.83MB
 |  |     predicates: p_name LIKE 'forest%'
 |  |     row-size=53B cardinality=20.00K
 |  |
 |  02:SCAN HDFS [tpch.partsupp]
-|     partitions=1/1 files=1 size=112.71MB
+|     HDFS partitions=1/1 files=1 size=112.71MB
 |     runtime filters: RF000 -> ps_suppkey, RF006 -> ps_partkey
 |     row-size=20B cardinality=800.00K
 |
@@ -4444,7 +4450,7 @@ PLAN-ROOT SINK
 |  row-size=32B cardinality=600.12K
 |
 04:SCAN HDFS [tpch.lineitem]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    runtime filters: RF000 -> tpch.lineitem.l_suppkey, RF002 -> tpch.lineitem.l_partkey, RF003 -> tpch.lineitem.l_suppkey
    row-size=46B cardinality=600.12K
@@ -4522,7 +4528,7 @@ PLAN-ROOT SINK
 |  |  |  row-size=142B cardinality=7.68K
 |  |  |
 |  |  |--03:SCAN HDFS [tpch.nation]
-|  |  |     partitions=1/1 files=1 size=2.15KB
+|  |  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |  |     predicates: n_name = 'SAUDI ARABIA'
 |  |  |     row-size=21B cardinality=1
 |  |  |
@@ -4532,7 +4538,7 @@ PLAN-ROOT SINK
 |  |  |  row-size=121B cardinality=191.92K
 |  |  |
 |  |  |--00:SCAN HDFS [tpch.supplier]
-|  |  |     partitions=1/1 files=1 size=1.33MB
+|  |  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |  |     runtime filters: RF002 -> s_nationkey
 |  |  |     row-size=40B cardinality=10.00K
 |  |  |
@@ -4542,23 +4548,23 @@ PLAN-ROOT SINK
 |  |  |  row-size=81B cardinality=191.92K
 |  |  |
 |  |  |--02:SCAN HDFS [tpch.orders]
-|  |  |     partitions=1/1 files=1 size=162.56MB
+|  |  |     HDFS partitions=1/1 files=1 size=162.56MB
 |  |  |     predicates: o_orderstatus = 'F'
 |  |  |     row-size=21B cardinality=500.00K
 |  |  |
 |  |  01:SCAN HDFS [tpch.lineitem l1]
-|  |     partitions=1/1 files=1 size=718.94MB
+|  |     HDFS partitions=1/1 files=1 size=718.94MB
 |  |     predicates: l1.l_receiptdate > l1.l_commitdate
 |  |     runtime filters: RF004 -> l1.l_suppkey, RF006 -> l1.l_orderkey
 |  |     row-size=60B cardinality=600.12K
 |  |
 |  04:SCAN HDFS [tpch.lineitem l2]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     runtime filters: RF000 -> l2.l_orderkey
 |     row-size=16B cardinality=6.00M
 |
 05:SCAN HDFS [tpch.lineitem l3]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l3.l_receiptdate > l3.l_commitdate
    row-size=60B cardinality=600.12K
 ---- DISTRIBUTEDPLAN
@@ -4605,7 +4611,7 @@ PLAN-ROOT SINK
 |  |  |--16:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  03:SCAN HDFS [tpch.nation]
-|  |  |     partitions=1/1 files=1 size=2.15KB
+|  |  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |  |     predicates: n_name = 'SAUDI ARABIA'
 |  |  |     row-size=21B cardinality=1
 |  |  |
@@ -4617,7 +4623,7 @@ PLAN-ROOT SINK
 |  |  |--15:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  00:SCAN HDFS [tpch.supplier]
-|  |  |     partitions=1/1 files=1 size=1.33MB
+|  |  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |  |     runtime filters: RF002 -> s_nationkey
 |  |  |     row-size=40B cardinality=10.00K
 |  |  |
@@ -4629,14 +4635,14 @@ PLAN-ROOT SINK
 |  |  |--14:EXCHANGE [HASH(o_orderkey)]
 |  |  |  |
 |  |  |  02:SCAN HDFS [tpch.orders]
-|  |  |     partitions=1/1 files=1 size=162.56MB
+|  |  |     HDFS partitions=1/1 files=1 size=162.56MB
 |  |  |     predicates: o_orderstatus = 'F'
 |  |  |     row-size=21B cardinality=500.00K
 |  |  |
 |  |  13:EXCHANGE [HASH(l1.l_orderkey)]
 |  |  |
 |  |  01:SCAN HDFS [tpch.lineitem l1]
-|  |     partitions=1/1 files=1 size=718.94MB
+|  |     HDFS partitions=1/1 files=1 size=718.94MB
 |  |     predicates: l1.l_receiptdate > l1.l_commitdate
 |  |     runtime filters: RF004 -> l1.l_suppkey, RF006 -> l1.l_orderkey
 |  |     row-size=60B cardinality=600.12K
@@ -4644,14 +4650,14 @@ PLAN-ROOT SINK
 |  17:EXCHANGE [HASH(l2.l_orderkey)]
 |  |
 |  04:SCAN HDFS [tpch.lineitem l2]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     runtime filters: RF000 -> l2.l_orderkey
 |     row-size=16B cardinality=6.00M
 |
 18:EXCHANGE [HASH(l3.l_orderkey)]
 |
 05:SCAN HDFS [tpch.lineitem l3]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l3.l_receiptdate > l3.l_commitdate
    row-size=60B cardinality=600.12K
 ---- PARALLELPLANS
@@ -4710,7 +4716,7 @@ PLAN-ROOT SINK
 |  |  |  16:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  03:SCAN HDFS [tpch.nation]
-|  |  |     partitions=1/1 files=1 size=2.15KB
+|  |  |     HDFS partitions=1/1 files=1 size=2.15KB
 |  |  |     predicates: n_name = 'SAUDI ARABIA'
 |  |  |     row-size=21B cardinality=1
 |  |  |
@@ -4726,7 +4732,7 @@ PLAN-ROOT SINK
 |  |  |  15:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  00:SCAN HDFS [tpch.supplier]
-|  |  |     partitions=1/1 files=1 size=1.33MB
+|  |  |     HDFS partitions=1/1 files=1 size=1.33MB
 |  |  |     runtime filters: RF002 -> s_nationkey
 |  |  |     row-size=40B cardinality=10.00K
 |  |  |
@@ -4742,14 +4748,14 @@ PLAN-ROOT SINK
 |  |  |  14:EXCHANGE [HASH(o_orderkey)]
 |  |  |  |
 |  |  |  02:SCAN HDFS [tpch.orders]
-|  |  |     partitions=1/1 files=1 size=162.56MB
+|  |  |     HDFS partitions=1/1 files=1 size=162.56MB
 |  |  |     predicates: o_orderstatus = 'F'
 |  |  |     row-size=21B cardinality=500.00K
 |  |  |
 |  |  13:EXCHANGE [HASH(l1.l_orderkey)]
 |  |  |
 |  |  01:SCAN HDFS [tpch.lineitem l1]
-|  |     partitions=1/1 files=1 size=718.94MB
+|  |     HDFS partitions=1/1 files=1 size=718.94MB
 |  |     predicates: l1.l_receiptdate > l1.l_commitdate
 |  |     runtime filters: RF004 -> l1.l_suppkey, RF006 -> l1.l_orderkey
 |  |     row-size=60B cardinality=600.12K
@@ -4757,14 +4763,14 @@ PLAN-ROOT SINK
 |  17:EXCHANGE [HASH(l2.l_orderkey)]
 |  |
 |  04:SCAN HDFS [tpch.lineitem l2]
-|     partitions=1/1 files=1 size=718.94MB
+|     HDFS partitions=1/1 files=1 size=718.94MB
 |     runtime filters: RF000 -> l2.l_orderkey
 |     row-size=16B cardinality=6.00M
 |
 18:EXCHANGE [HASH(l3.l_orderkey)]
 |
 05:SCAN HDFS [tpch.lineitem l3]
-   partitions=1/1 files=1 size=718.94MB
+   HDFS partitions=1/1 files=1 size=718.94MB
    predicates: l3.l_receiptdate > l3.l_commitdate
    row-size=60B cardinality=600.12K
 ====
@@ -4831,17 +4837,17 @@ PLAN-ROOT SINK
 |  |  |  row-size=8B cardinality=1
 |  |  |
 |  |  01:SCAN HDFS [tpch.customer]
-|  |     partitions=1/1 files=1 size=23.08MB
+|  |     HDFS partitions=1/1 files=1 size=23.08MB
 |  |     predicates: c_acctbal > 0, substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
 |  |     row-size=35B cardinality=15.00K
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     predicates: substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
 |     row-size=43B cardinality=15.00K
 |
 03:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    row-size=8B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=41.88MB Threads=10
@@ -4890,19 +4896,19 @@ PLAN-ROOT SINK
 |  |  |  row-size=8B cardinality=1
 |  |  |
 |  |  01:SCAN HDFS [tpch.customer]
-|  |     partitions=1/1 files=1 size=23.08MB
+|  |     HDFS partitions=1/1 files=1 size=23.08MB
 |  |     predicates: c_acctbal > 0, substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
 |  |     row-size=35B cardinality=15.00K
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     predicates: substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
 |     row-size=43B cardinality=15.00K
 |
 11:EXCHANGE [HASH(o_custkey)]
 |
 03:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    row-size=8B cardinality=1.50M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=83.75MB Threads=12
@@ -4959,18 +4965,18 @@ PLAN-ROOT SINK
 |  |  |  row-size=8B cardinality=1
 |  |  |
 |  |  01:SCAN HDFS [tpch.customer]
-|  |     partitions=1/1 files=1 size=23.08MB
+|  |     HDFS partitions=1/1 files=1 size=23.08MB
 |  |     predicates: c_acctbal > 0, substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
 |  |     row-size=35B cardinality=15.00K
 |  |
 |  00:SCAN HDFS [tpch.customer]
-|     partitions=1/1 files=1 size=23.08MB
+|     HDFS partitions=1/1 files=1 size=23.08MB
 |     predicates: substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
 |     row-size=43B cardinality=15.00K
 |
 11:EXCHANGE [HASH(o_custkey)]
 |
 03:SCAN HDFS [tpch.orders]
-   partitions=1/1 files=1 size=162.56MB
+   HDFS partitions=1/1 files=1 size=162.56MB
    row-size=8B cardinality=1.50M
 ====