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/01/12 18:19:04 UTC

[05/26] impala git commit: IMPALA-8021: Add estimated cardinality to EXPLAIN output

http://git-wip-us.apache.org/repos/asf/impala/blob/a7ea86b7/testdata/workloads/functional-planner/queries/PlannerTest/tpch-nested.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpch-nested.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpch-nested.test
index 7bc9da5..bd2c6d1 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpch-nested.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpch-nested.test
@@ -28,14 +28,17 @@ PLAN-ROOT SINK
 |
 02:SORT
 |  order by: l_returnflag ASC, l_linestatus ASC
+|  row-size=120B cardinality=1.50M
 |
 01:AGGREGATE [FINALIZE]
 |  output: sum(l_quantity), sum(l_extendedprice), sum(l_extendedprice * (1 - l_discount)), sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)), avg(l_quantity), avg(l_extendedprice), avg(l_discount), count(*)
 |  group by: l_returnflag, l_linestatus
+|  row-size=120B cardinality=1.50M
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate <= '1998-09-02'
+   row-size=68B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=112.00MB Threads=4
 Per-Host Resource Estimates: Memory=916MB
@@ -46,20 +49,24 @@ PLAN-ROOT SINK
 |
 02:SORT
 |  order by: l_returnflag ASC, l_linestatus ASC
+|  row-size=120B cardinality=1.50M
 |
 04:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_quantity), sum:merge(l_extendedprice), sum:merge(l_extendedprice * (1 - l_discount)), sum:merge(l_extendedprice * (1 - l_discount) * (1 + l_tax)), avg:merge(l_quantity), avg:merge(l_extendedprice), avg:merge(l_discount), count:merge(*)
 |  group by: l_returnflag, l_linestatus
+|  row-size=120B cardinality=1.50M
 |
 03:EXCHANGE [HASH(l_returnflag,l_linestatus)]
 |
 01:AGGREGATE [STREAMING]
 |  output: sum(l_quantity), sum(l_extendedprice), sum(l_extendedprice * (1 - l_discount)), sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)), avg(l_quantity), avg(l_extendedprice), avg(l_discount), count(*)
 |  group by: l_returnflag, l_linestatus
+|  row-size=120B cardinality=1.50M
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate <= '1998-09-02'
+   row-size=68B cardinality=1.50M
 ====
 # TPCH-Q2
 # Q2 - Minimum Cost Supplier Query
@@ -110,80 +117,107 @@ PLAN-ROOT SINK
 |
 26:TOP-N [LIMIT=100]
 |  order by: s_acctbal DESC, n_name ASC, s_name ASC, p_partkey ASC
+|  row-size=223B cardinality=100
 |
 25:HASH JOIN [LEFT SEMI JOIN]
 |  hash predicates: p_partkey = ps_partkey, ps_supplycost = min(ps_supplycost)
 |  runtime filters: RF000 <- ps_partkey
+|  row-size=322B cardinality=100.00K
 |
 |--22:AGGREGATE [FINALIZE]
 |  |  output: min(ps_supplycost)
 |  |  group by: ps_partkey
+|  |  row-size=16B cardinality=100.00K
 |  |
 |  21:HASH JOIN [INNER JOIN]
 |  |  hash predicates: s_nationkey = n_nationkey
 |  |  runtime filters: RF008 <- n_nationkey
+|  |  row-size=63B cardinality=100.00K
 |  |
 |  |--17:SUBPLAN
+|  |  |  row-size=33B cardinality=10
 |  |  |
 |  |  |--20:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  |  row-size=33B cardinality=10
 |  |  |  |
 |  |  |  |--18:SINGULAR ROW SRC
+|  |  |  |     row-size=31B cardinality=1
 |  |  |  |
 |  |  |  19:UNNEST [r.r_nations n]
+|  |  |     row-size=0B cardinality=10
 |  |  |
 |  |  16:SCAN HDFS [tpch_nested_parquet.region r]
-|  |     partitions=1/1 files=1 size=3.41KB
+|  |     partitions=1/1 files=1 size=3.44KB
 |  |     predicates: r_name = 'EUROPE', !empty(r.r_nations)
+|  |     row-size=31B cardinality=1
 |  |
 |  12:SUBPLAN
+|  |  row-size=30B cardinality=100.00K
 |  |
 |  |--15:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=30B cardinality=10
 |  |  |
 |  |  |--13:SINGULAR ROW SRC
+|  |  |     row-size=14B cardinality=1
 |  |  |
 |  |  14:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  11:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF008 -> s_nationkey
+|     row-size=14B cardinality=10.00K
 |
 24:HASH JOIN [INNER JOIN]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF004 <- n_nationkey
+|  row-size=322B cardinality=100.00K
 |
 |--07:SUBPLAN
+|  |  row-size=45B cardinality=10
 |  |
 |  |--10:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=45B cardinality=10
 |  |  |
 |  |  |--08:SINGULAR ROW SRC
+|  |  |     row-size=31B cardinality=1
 |  |  |
 |  |  09:UNNEST [r.r_nations n]
+|  |     row-size=0B cardinality=10
 |  |
 |  06:SCAN HDFS [tpch_nested_parquet.region r]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: r_name = 'EUROPE', !empty(r.r_nations)
+|     row-size=31B cardinality=1
 |
 23:HASH JOIN [INNER JOIN]
 |  hash predicates: ps_partkey = p_partkey
+|  row-size=277B cardinality=100.00K
 |
 |--05:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_size = 15, p_type LIKE '%BRASS'
 |     runtime filters: RF000 -> p_partkey
+|     row-size=71B cardinality=1.26K
 |
 01:SUBPLAN
+|  row-size=207B cardinality=100.00K
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=207B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=191B cardinality=1
 |  |
 |  03:UNNEST [s.s_partsupps ps]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.supplier s]
    partitions=1/1 files=1 size=41.79MB
    predicates: !empty(s.s_partsupps)
    runtime filters: RF004 -> s_nationkey
+   row-size=191B cardinality=10.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=114.73MB Threads=12
 Per-Host Resource Estimates: Memory=1.01GB
@@ -195,74 +229,96 @@ PLAN-ROOT SINK
 |
 26:TOP-N [LIMIT=100]
 |  order by: s_acctbal DESC, n_name ASC, s_name ASC, p_partkey ASC
+|  row-size=223B cardinality=100
 |
 25:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
 |  hash predicates: p_partkey = ps_partkey, ps_supplycost = min(ps_supplycost)
 |  runtime filters: RF000 <- ps_partkey
+|  row-size=322B cardinality=100.00K
 |
 |--32:EXCHANGE [BROADCAST]
 |  |
 |  31:AGGREGATE [FINALIZE]
 |  |  output: min:merge(ps_supplycost)
 |  |  group by: ps_partkey
+|  |  row-size=16B cardinality=100.00K
 |  |
 |  30:EXCHANGE [HASH(ps_partkey)]
 |  |
 |  22:AGGREGATE [STREAMING]
 |  |  output: min(ps_supplycost)
 |  |  group by: ps_partkey
+|  |  row-size=16B cardinality=100.00K
 |  |
 |  21:HASH JOIN [INNER JOIN, BROADCAST]
 |  |  hash predicates: s_nationkey = n_nationkey
 |  |  runtime filters: RF008 <- n_nationkey
+|  |  row-size=63B cardinality=100.00K
 |  |
 |  |--29:EXCHANGE [BROADCAST]
 |  |  |
 |  |  17:SUBPLAN
+|  |  |  row-size=33B cardinality=10
 |  |  |
 |  |  |--20:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  |  row-size=33B cardinality=10
 |  |  |  |
 |  |  |  |--18:SINGULAR ROW SRC
+|  |  |  |     row-size=31B cardinality=1
 |  |  |  |
 |  |  |  19:UNNEST [r.r_nations n]
+|  |  |     row-size=0B cardinality=10
 |  |  |
 |  |  16:SCAN HDFS [tpch_nested_parquet.region r]
-|  |     partitions=1/1 files=1 size=3.41KB
+|  |     partitions=1/1 files=1 size=3.44KB
 |  |     predicates: r_name = 'EUROPE', !empty(r.r_nations)
+|  |     row-size=31B cardinality=1
 |  |
 |  12:SUBPLAN
+|  |  row-size=30B cardinality=100.00K
 |  |
 |  |--15:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=30B cardinality=10
 |  |  |
 |  |  |--13:SINGULAR ROW SRC
+|  |  |     row-size=14B cardinality=1
 |  |  |
 |  |  14:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  11:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF008 -> s_nationkey
+|     row-size=14B cardinality=10.00K
 |
 24:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF004 <- n_nationkey
+|  row-size=322B cardinality=100.00K
 |
 |--28:EXCHANGE [BROADCAST]
 |  |
 |  07:SUBPLAN
+|  |  row-size=45B cardinality=10
 |  |
 |  |--10:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=45B cardinality=10
 |  |  |
 |  |  |--08:SINGULAR ROW SRC
+|  |  |     row-size=31B cardinality=1
 |  |  |
 |  |  09:UNNEST [r.r_nations n]
+|  |     row-size=0B cardinality=10
 |  |
 |  06:SCAN HDFS [tpch_nested_parquet.region r]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: r_name = 'EUROPE', !empty(r.r_nations)
+|     row-size=31B cardinality=1
 |
 23:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ps_partkey = p_partkey
+|  row-size=277B cardinality=100.00K
 |
 |--27:EXCHANGE [BROADCAST]
 |  |
@@ -270,19 +326,25 @@ PLAN-ROOT SINK
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_size = 15, p_type LIKE '%BRASS'
 |     runtime filters: RF000 -> p_partkey
+|     row-size=71B cardinality=1.26K
 |
 01:SUBPLAN
+|  row-size=207B cardinality=100.00K
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=207B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=191B cardinality=1
 |  |
 |  03:UNNEST [s.s_partsupps ps]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.supplier s]
    partitions=1/1 files=1 size=41.79MB
    predicates: !empty(s.s_partsupps)
    runtime filters: RF004 -> s_nationkey
+   row-size=191B cardinality=10.00K
 ====
 # TPCH-Q3
 # Q3 - Shipping Priority Query
@@ -314,32 +376,43 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=10]
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC, o_orderdate ASC
+|  row-size=40B cardinality=10
 |
 09:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: o_orderkey, o_orderdate, o_shippriority
+|  row-size=40B cardinality=3.00M
 |
 01:SUBPLAN
+|  row-size=97B cardinality=3.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=97B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=33B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=64B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=64B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=36B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: c_mktsegment = 'BUILDING', !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate < '1995-03-15'
    predicates on l: l_shipdate > '1995-03-15'
+   row-size=33B cardinality=30.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=100.00MB Threads=4
 Per-Host Resource Estimates: Memory=882MB
@@ -351,38 +424,50 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=10]
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC, o_orderdate ASC
+|  row-size=40B cardinality=10
 |
 12:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * (1 - l_discount))
 |  group by: o_orderkey, o_orderdate, o_shippriority
+|  row-size=40B cardinality=3.00M
 |
 11:EXCHANGE [HASH(o_orderkey,o_orderdate,o_shippriority)]
 |
 09:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: o_orderkey, o_orderdate, o_shippriority
+|  row-size=40B cardinality=3.00M
 |
 01:SUBPLAN
+|  row-size=97B cardinality=3.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=97B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=33B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=64B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=64B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=36B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: c_mktsegment = 'BUILDING', !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate < '1995-03-15'
    predicates on l: l_shipdate > '1995-03-15'
+   row-size=33B cardinality=30.00K
 ====
 # TPCH-Q4
 # Q4 - Order Priority Checking Query
@@ -414,32 +499,43 @@ PLAN-ROOT SINK
 |
 10:SORT
 |  order by: o_orderpriority ASC
+|  row-size=20B cardinality=1.50M
 |
 09:AGGREGATE [FINALIZE]
 |  output: count(*)
 |  group by: o_orderpriority
+|  row-size=20B cardinality=1.50M
 |
 01:SUBPLAN
+|  row-size=48B cardinality=1.50M
 |
 |--08:SUBPLAN
+|  |  row-size=48B cardinality=10
 |  |
 |  |--06:NESTED LOOP JOIN [RIGHT SEMI JOIN]
+|  |  |  row-size=48B cardinality=1
 |  |  |
 |  |  |--04:SINGULAR ROW SRC
+|  |  |     row-size=48B cardinality=1
 |  |  |
 |  |  05:UNNEST [o.o_lineitems]
+|  |     row-size=24B cardinality=10
 |  |
 |  07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=48B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=12B cardinality=1
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: o_orderdate >= '1993-07-01', o_orderdate < '1993-10-01'
    predicates on o_lineitems: l_commitdate < l_receiptdate
+   row-size=12B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=96.00MB Threads=4
 Per-Host Resource Estimates: Memory=630MB
@@ -450,38 +546,50 @@ PLAN-ROOT SINK
 |
 10:SORT
 |  order by: o_orderpriority ASC
+|  row-size=20B cardinality=1.50M
 |
 12:AGGREGATE [FINALIZE]
 |  output: count:merge(*)
 |  group by: o_orderpriority
+|  row-size=20B cardinality=1.50M
 |
 11:EXCHANGE [HASH(o_orderpriority)]
 |
 09:AGGREGATE [STREAMING]
 |  output: count(*)
 |  group by: o_orderpriority
+|  row-size=20B cardinality=1.50M
 |
 01:SUBPLAN
+|  row-size=48B cardinality=1.50M
 |
 |--08:SUBPLAN
+|  |  row-size=48B cardinality=10
 |  |
 |  |--06:NESTED LOOP JOIN [RIGHT SEMI JOIN]
+|  |  |  row-size=48B cardinality=1
 |  |  |
 |  |  |--04:SINGULAR ROW SRC
+|  |  |     row-size=48B cardinality=1
 |  |  |
 |  |  05:UNNEST [o.o_lineitems]
+|  |     row-size=24B cardinality=10
 |  |
 |  07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=48B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=12B cardinality=1
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: o_orderdate >= '1993-07-01', o_orderdate < '1993-10-01'
    predicates on o_lineitems: l_commitdate < l_receiptdate
+   row-size=12B cardinality=150.00K
 ====
 # TPCH-Q5
 # Q5 - Local Supplier Volume Query
@@ -513,55 +621,74 @@ PLAN-ROOT SINK
 |
 18:SORT
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC
+|  row-size=28B cardinality=6.00G
 |
 17:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: n_name
+|  row-size=28B cardinality=6.00G
 |
 16:HASH JOIN [INNER JOIN]
 |  hash predicates: c_nationkey = s_nationkey, l_suppkey = s_suppkey
 |  runtime filters: RF000 <- s_nationkey
+|  row-size=117B cardinality=6.00G
 |
 |--09:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
+|     row-size=10B cardinality=10.00K
 |
 15:HASH JOIN [INNER JOIN]
 |  hash predicates: c.c_nationkey = n.n_nationkey
 |  runtime filters: RF004 <- n.n_nationkey
+|  row-size=107B cardinality=15.00M
 |
 |--11:SUBPLAN
+|  |  row-size=45B cardinality=10
 |  |
 |  |--14:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=45B cardinality=10
 |  |  |
 |  |  |--12:SINGULAR ROW SRC
+|  |  |     row-size=31B cardinality=1
 |  |  |
 |  |  13:UNNEST [r.r_nations n]
+|  |     row-size=0B cardinality=10
 |  |
 |  10:SCAN HDFS [tpch_nested_parquet.region r]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: r_name = 'ASIA', !empty(r.r_nations)
+|     row-size=31B cardinality=1
 |
 01:SUBPLAN
+|  row-size=62B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=62B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=48B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=48B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=24B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate >= '1994-01-01', o_orderdate < '1995-01-01'
    runtime filters: RF000 -> c_nationkey, RF004 -> c.c_nationkey
+   row-size=14B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=110.02MB Threads=8
 Per-Host Resource Estimates: Memory=1.26GB
@@ -572,65 +699,85 @@ PLAN-ROOT SINK
 |
 18:SORT
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC
+|  row-size=28B cardinality=6.00G
 |
 22:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * (1 - l_discount))
 |  group by: n_name
+|  row-size=28B cardinality=6.00G
 |
 21:EXCHANGE [HASH(n_name)]
 |
 17:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: n_name
+|  row-size=28B cardinality=6.00G
 |
 16:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: c_nationkey = s_nationkey, l_suppkey = s_suppkey
 |  runtime filters: RF000 <- s_nationkey
+|  row-size=117B cardinality=6.00G
 |
 |--20:EXCHANGE [BROADCAST]
 |  |
 |  09:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
+|     row-size=10B cardinality=10.00K
 |
 15:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: c.c_nationkey = n.n_nationkey
 |  runtime filters: RF004 <- n.n_nationkey
+|  row-size=107B cardinality=15.00M
 |
 |--19:EXCHANGE [BROADCAST]
 |  |
 |  11:SUBPLAN
+|  |  row-size=45B cardinality=10
 |  |
 |  |--14:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=45B cardinality=10
 |  |  |
 |  |  |--12:SINGULAR ROW SRC
+|  |  |     row-size=31B cardinality=1
 |  |  |
 |  |  13:UNNEST [r.r_nations n]
+|  |     row-size=0B cardinality=10
 |  |
 |  10:SCAN HDFS [tpch_nested_parquet.region r]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: r_name = 'ASIA', !empty(r.r_nations)
+|     row-size=31B cardinality=1
 |
 01:SUBPLAN
+|  row-size=62B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=62B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=48B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=48B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=24B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate >= '1994-01-01', o_orderdate < '1995-01-01'
    runtime filters: RF000 -> c_nationkey, RF004 -> c.c_nationkey
+   row-size=14B cardinality=150.00K
 ====
 # TPCH-Q6
 # Q6 - Forecasting Revenue Change Query
@@ -650,10 +797,12 @@ PLAN-ROOT SINK
 |
 01:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * l_discount)
+|  row-size=16B cardinality=1
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_discount <= 0.07, l_discount >= 0.05, l_quantity < 24, l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
+   row-size=36B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=16.00MB Threads=3
 Per-Host Resource Estimates: Memory=372MB
@@ -661,15 +810,18 @@ PLAN-ROOT SINK
 |
 03:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * l_discount)
+|  row-size=16B cardinality=1
 |
 02:EXCHANGE [UNPARTITIONED]
 |
 01:AGGREGATE
 |  output: sum(l_extendedprice * l_discount)
+|  row-size=16B cardinality=1
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_discount <= 0.07, l_discount >= 0.05, l_quantity < 24, l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
+   row-size=36B cardinality=1.50M
 ====
 # TPCH-Q7
 # Q7 - Volume Shipping Query
@@ -716,55 +868,72 @@ PLAN-ROOT SINK
 |
 16:SORT
 |  order by: supp_nation ASC, cust_nation ASC, l_year ASC
+|  row-size=44B cardinality=15.00M
 |
 15:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: n1.n_name, n2.n_name, year(l_shipdate)
+|  row-size=44B cardinality=15.00M
 |
 14:HASH JOIN [INNER JOIN]
 |  hash predicates: c_nationkey = n2.n_nationkey
 |  other predicates: ((n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE'))
 |  runtime filters: RF000 <- n2.n_nationkey
+|  row-size=100B cardinality=15.00M
 |
 |--11:SCAN HDFS [tpch_nested_parquet.region.r_nations n2]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 13:HASH JOIN [INNER JOIN]
 |  hash predicates: s_nationkey = n1.n_nationkey
 |  runtime filters: RF002 <- n1.n_nationkey
+|  row-size=86B cardinality=15.00M
 |
 |--10:SCAN HDFS [tpch_nested_parquet.region.r_nations n1]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 12:HASH JOIN [INNER JOIN]
 |  hash predicates: l_suppkey = s_suppkey
+|  row-size=72B cardinality=15.00M
 |
 |--09:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     runtime filters: RF002 -> s_nationkey
+|     row-size=10B cardinality=10.00K
 |
 01:SUBPLAN
+|  row-size=62B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=62B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=48B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=48B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=12B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems)
    predicates on l: l_shipdate >= '1995-01-01', l_shipdate <= '1996-12-31'
    runtime filters: RF000 -> c_nationkey
+   row-size=14B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=112.97MB Threads=10
 Per-Host Resource Estimates: Memory=1.00GB
@@ -775,67 +944,85 @@ PLAN-ROOT SINK
 |
 16:SORT
 |  order by: supp_nation ASC, cust_nation ASC, l_year ASC
+|  row-size=44B cardinality=15.00M
 |
 21:AGGREGATE [FINALIZE]
 |  output: sum:merge(volume)
 |  group by: supp_nation, cust_nation, l_year
+|  row-size=44B cardinality=15.00M
 |
 20:EXCHANGE [HASH(supp_nation,cust_nation,l_year)]
 |
 15:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: n1.n_name, n2.n_name, year(l_shipdate)
+|  row-size=44B cardinality=15.00M
 |
 14:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: c_nationkey = n2.n_nationkey
 |  other predicates: ((n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE'))
 |  runtime filters: RF000 <- n2.n_nationkey
+|  row-size=100B cardinality=15.00M
 |
 |--19:EXCHANGE [BROADCAST]
 |  |
 |  11:SCAN HDFS [tpch_nested_parquet.region.r_nations n2]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 13:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: s_nationkey = n1.n_nationkey
 |  runtime filters: RF002 <- n1.n_nationkey
+|  row-size=86B cardinality=15.00M
 |
 |--18:EXCHANGE [BROADCAST]
 |  |
 |  10:SCAN HDFS [tpch_nested_parquet.region.r_nations n1]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 12:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_suppkey = s_suppkey
+|  row-size=72B cardinality=15.00M
 |
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  09:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     runtime filters: RF002 -> s_nationkey
+|     row-size=10B cardinality=10.00K
 |
 01:SUBPLAN
+|  row-size=62B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=62B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=48B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=48B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=12B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems)
    predicates on l: l_shipdate >= '1995-01-01', l_shipdate <= '1996-12-31'
    runtime filters: RF000 -> c_nationkey
+   row-size=14B cardinality=150.00K
 ====
 # TPCH-Q8
 # Q8 - National Market Share Query
@@ -880,69 +1067,92 @@ PLAN-ROOT SINK
 |
 22:SORT
 |  order by: o_year ASC
+|  row-size=36B cardinality=15.00M
 |
 21:AGGREGATE [FINALIZE]
 |  output: sum(CASE WHEN n2.n_name = 'BRAZIL' THEN l_extendedprice * (1 - l_discount) ELSE 0 END), sum(l_extendedprice * (1 - l_discount))
 |  group by: year(o_orderdate)
+|  row-size=36B cardinality=15.00M
 |
 20:HASH JOIN [INNER JOIN]
 |  hash predicates: s_nationkey = n2.n_nationkey
 |  runtime filters: RF000 <- n2.n_nationkey
+|  row-size=167B cardinality=15.00M
 |
 |--16:SCAN HDFS [tpch_nested_parquet.region.r_nations n2]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 19:HASH JOIN [INNER JOIN]
 |  hash predicates: c_nationkey = n1.n_nationkey
 |  runtime filters: RF002 <- n1.n_nationkey
+|  row-size=153B cardinality=15.00M
 |
 |--12:SUBPLAN
+|  |  row-size=33B cardinality=10
 |  |
 |  |--15:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=33B cardinality=10
 |  |  |
 |  |  |--13:SINGULAR ROW SRC
+|  |  |     row-size=31B cardinality=1
 |  |  |
 |  |  14:UNNEST [r.r_nations n1]
+|  |     row-size=0B cardinality=10
 |  |
 |  11:SCAN HDFS [tpch_nested_parquet.region r]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: r_name = 'AMERICA', !empty(r.r_nations)
+|     row-size=31B cardinality=1
 |
 18:HASH JOIN [INNER JOIN]
 |  hash predicates: l_partkey = p_partkey
+|  row-size=121B cardinality=15.00M
 |
 |--10:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_type = 'ECONOMY ANODIZED STEEL'
+|     row-size=41B cardinality=1.32K
 |
 17:HASH JOIN [INNER JOIN]
 |  hash predicates: l_suppkey = s_suppkey
+|  row-size=80B cardinality=15.00M
 |
 |--09:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     runtime filters: RF000 -> s_nationkey
+|     row-size=10B cardinality=10.00K
 |
 01:SUBPLAN
+|  row-size=70B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=70B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=56B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=56B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=24B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate >= '1995-01-01', o_orderdate <= '1996-12-31'
    runtime filters: RF002 -> c_nationkey
+   row-size=14B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=110.91MB Threads=12
 Per-Host Resource Estimates: Memory=1.04GB
@@ -953,83 +1163,107 @@ PLAN-ROOT SINK
 |
 22:SORT
 |  order by: o_year ASC
+|  row-size=36B cardinality=15.00M
 |
 28:AGGREGATE [FINALIZE]
 |  output: sum:merge(CASE WHEN nation = 'BRAZIL' THEN volume ELSE 0 END), sum:merge(volume)
 |  group by: o_year
+|  row-size=36B cardinality=15.00M
 |
 27:EXCHANGE [HASH(o_year)]
 |
 21:AGGREGATE [STREAMING]
 |  output: sum(CASE WHEN n2.n_name = 'BRAZIL' THEN l_extendedprice * (1 - l_discount) ELSE 0 END), sum(l_extendedprice * (1 - l_discount))
 |  group by: year(o_orderdate)
+|  row-size=36B cardinality=15.00M
 |
 20:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: s_nationkey = n2.n_nationkey
 |  runtime filters: RF000 <- n2.n_nationkey
+|  row-size=167B cardinality=15.00M
 |
 |--26:EXCHANGE [BROADCAST]
 |  |
 |  16:SCAN HDFS [tpch_nested_parquet.region.r_nations n2]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 19:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: c_nationkey = n1.n_nationkey
 |  runtime filters: RF002 <- n1.n_nationkey
+|  row-size=153B cardinality=15.00M
 |
 |--25:EXCHANGE [BROADCAST]
 |  |
 |  12:SUBPLAN
+|  |  row-size=33B cardinality=10
 |  |
 |  |--15:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=33B cardinality=10
 |  |  |
 |  |  |--13:SINGULAR ROW SRC
+|  |  |     row-size=31B cardinality=1
 |  |  |
 |  |  14:UNNEST [r.r_nations n1]
+|  |     row-size=0B cardinality=10
 |  |
 |  11:SCAN HDFS [tpch_nested_parquet.region r]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: r_name = 'AMERICA', !empty(r.r_nations)
+|     row-size=31B cardinality=1
 |
 18:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_partkey = p_partkey
+|  row-size=121B cardinality=15.00M
 |
 |--24:EXCHANGE [BROADCAST]
 |  |
 |  10:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_type = 'ECONOMY ANODIZED STEEL'
+|     row-size=41B cardinality=1.32K
 |
 17:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_suppkey = s_suppkey
+|  row-size=80B cardinality=15.00M
 |
 |--23:EXCHANGE [BROADCAST]
 |  |
 |  09:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     runtime filters: RF000 -> s_nationkey
+|     row-size=10B cardinality=10.00K
 |
 01:SUBPLAN
+|  row-size=70B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=70B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=56B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=56B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=24B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate >= '1995-01-01', o_orderdate <= '1996-12-31'
    runtime filters: RF002 -> c_nationkey
+   row-size=14B cardinality=150.00K
 ====
 # TPCH-Q9
 # Q9 - Product Type Measure Query
@@ -1069,52 +1303,69 @@ PLAN-ROOT SINK
 |
 16:SORT
 |  order by: nation ASC, o_year DESC
+|  row-size=32B cardinality=15.00M
 |
 15:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity)
 |  group by: n_name, year(o_orderdate)
+|  row-size=32B cardinality=15.00M
 |
 14:HASH JOIN [INNER JOIN]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=169B cardinality=15.00M
 |
 |--11:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 13:HASH JOIN [INNER JOIN]
 |  hash predicates: l_partkey = p_partkey
+|  row-size=155B cardinality=15.00M
 |
 |--10:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_name LIKE '%green%'
+|     row-size=53B cardinality=20.00K
 |
 12:HASH JOIN [INNER JOIN]
 |  hash predicates: l_partkey = ps_partkey, l_suppkey = s_suppkey
+|  row-size=102B cardinality=15.00M
 |
 |--06:SUBPLAN
+|  |  row-size=38B cardinality=100.00K
 |  |
 |  |--09:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=38B cardinality=10
 |  |  |
 |  |  |--07:SINGULAR ROW SRC
+|  |  |     row-size=22B cardinality=1
 |  |  |
 |  |  08:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  05:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF000 -> s_nationkey
+|     row-size=22B cardinality=10.00K
 |
 01:SUBPLAN
+|  row-size=64B cardinality=15.00M
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=64B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=24B cardinality=1
 |  |
 |  03:UNNEST [o.o_lineitems l]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders o]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(o.o_lineitems)
+   row-size=24B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=139.58MB Threads=10
 Per-Host Resource Estimates: Memory=1.11GB
@@ -1125,64 +1376,82 @@ PLAN-ROOT SINK
 |
 16:SORT
 |  order by: nation ASC, o_year DESC
+|  row-size=32B cardinality=15.00M
 |
 21:AGGREGATE [FINALIZE]
 |  output: sum:merge(amount)
 |  group by: nation, o_year
+|  row-size=32B cardinality=15.00M
 |
 20:EXCHANGE [HASH(nation,o_year)]
 |
 15:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity)
 |  group by: n_name, year(o_orderdate)
+|  row-size=32B cardinality=15.00M
 |
 14:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=169B cardinality=15.00M
 |
 |--19:EXCHANGE [BROADCAST]
 |  |
 |  11:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 13:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_partkey = p_partkey
+|  row-size=155B cardinality=15.00M
 |
 |--18:EXCHANGE [BROADCAST]
 |  |
 |  10:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_name LIKE '%green%'
+|     row-size=53B cardinality=20.00K
 |
 12:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_partkey = ps_partkey, l_suppkey = s_suppkey
+|  row-size=102B cardinality=15.00M
 |
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  06:SUBPLAN
+|  |  row-size=38B cardinality=100.00K
 |  |
 |  |--09:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=38B cardinality=10
 |  |  |
 |  |  |--07:SINGULAR ROW SRC
+|  |  |     row-size=22B cardinality=1
 |  |  |
 |  |  08:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  05:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF000 -> s_nationkey
+|     row-size=22B cardinality=10.00K
 |
 01:SUBPLAN
+|  row-size=64B cardinality=15.00M
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=64B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=24B cardinality=1
 |  |
 |  03:UNNEST [o.o_lineitems l]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders o]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(o.o_lineitems)
+   row-size=24B cardinality=1.50M
 ====
 # TPCH-Q10
 # Q10 - Returned Item Reporting Query
@@ -1224,40 +1493,53 @@ PLAN-ROOT SINK
 |
 12:TOP-N [LIMIT=20]
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC
+|  row-size=223B cardinality=20
 |
 11:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment
+|  row-size=223B cardinality=15.00M
 |
 10:HASH JOIN [INNER JOIN]
 |  hash predicates: c_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=275B cardinality=15.00M
 |
 |--09:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 01:SUBPLAN
+|  row-size=261B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=261B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=209B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=52B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=52B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=24B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate >= '1993-10-01', o_orderdate < '1994-01-01'
    predicates on l: l_returnflag = 'R'
    runtime filters: RF000 -> c_nationkey
+   row-size=209B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=94.95MB Threads=6
 Per-Host Resource Estimates: Memory=1006MB
@@ -1269,48 +1551,62 @@ PLAN-ROOT SINK
 |
 12:TOP-N [LIMIT=20]
 |  order by: sum(l_extendedprice * (1 - l_discount)) DESC
+|  row-size=223B cardinality=20
 |
 15:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * (1 - l_discount))
 |  group by: c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment
+|  row-size=223B cardinality=15.00M
 |
 14:EXCHANGE [HASH(c_custkey,c_name,c_acctbal,c_phone,n_name,c_address,c_comment)]
 |
 11:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment
+|  row-size=223B cardinality=15.00M
 |
 10:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: c_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=275B cardinality=15.00M
 |
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  09:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
+|     row-size=14B cardinality=50
 |
 01:SUBPLAN
+|  row-size=261B cardinality=15.00M
 |
 |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=261B cardinality=100
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=209B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=52B cardinality=100
 |  |
 |  |--07:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=52B cardinality=10
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=24B cardinality=1
 |  |  |
 |  |  06:UNNEST [o.o_lineitems l]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderdate >= '1993-10-01', o_orderdate < '1994-01-01'
    predicates on l: l_returnflag = 'R'
    runtime filters: RF000 -> c_nationkey
+   row-size=209B cardinality=150.00K
 ====
 # TPCH-Q11
 # Q11 - Important Stock Identification
@@ -1352,58 +1648,76 @@ PLAN-ROOT SINK
 |
 17:SORT
 |  order by: value DESC
+|  row-size=24B cardinality=100.00K
 |
 16:NESTED LOOP JOIN [INNER JOIN]
 |  predicates: sum(ps_supplycost * ps_availqty) > sum(ps_supplycost * ps_availqty) * 0.0001
+|  row-size=40B cardinality=100.00K
 |
 |--15:AGGREGATE [FINALIZE]
 |  |  output: sum(ps_supplycost * ps_availqty)
+|  |  row-size=16B cardinality=1
 |  |
 |  14:HASH JOIN [INNER JOIN]
 |  |  hash predicates: s_nationkey = n_nationkey
 |  |  runtime filters: RF002 <- n_nationkey
+|  |  row-size=40B cardinality=100.00K
 |  |
 |  |--13:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|  |     partitions=1/1 files=1 size=3.41KB
+|  |     partitions=1/1 files=1 size=3.44KB
 |  |     predicates: n_name = 'GERMANY'
+|  |     row-size=14B cardinality=5
 |  |
 |  09:SUBPLAN
+|  |  row-size=26B cardinality=100.00K
 |  |
 |  |--12:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=26B cardinality=10
 |  |  |
 |  |  |--10:SINGULAR ROW SRC
+|  |  |     row-size=14B cardinality=1
 |  |  |
 |  |  11:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  08:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF002 -> s_nationkey
+|     row-size=14B cardinality=10.00K
 |
 07:AGGREGATE [FINALIZE]
 |  output: sum(ps_supplycost * ps_availqty)
 |  group by: ps_partkey
+|  row-size=24B cardinality=100.00K
 |
 06:HASH JOIN [INNER JOIN]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=48B cardinality=100.00K
 |
 |--05:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: n_name = 'GERMANY'
+|     row-size=14B cardinality=5
 |
 01:SUBPLAN
+|  row-size=34B cardinality=100.00K
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=34B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  03:UNNEST [s.s_partsupps ps]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.supplier s]
    partitions=1/1 files=1 size=41.79MB
    predicates: !empty(s.s_partsupps)
    runtime filters: RF000 -> s_nationkey
+   row-size=14B cardinality=10.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=111.91MB Threads=11
 Per-Host Resource Estimates: Memory=746MB
@@ -1414,75 +1728,95 @@ PLAN-ROOT SINK
 |
 17:SORT
 |  order by: value DESC
+|  row-size=24B cardinality=100.00K
 |
 16:NESTED LOOP JOIN [INNER JOIN, BROADCAST]
 |  predicates: sum(ps_supplycost * ps_availqty) > sum(ps_supplycost * ps_availqty) * 0.0001
+|  row-size=40B cardinality=100.00K
 |
 |--24:EXCHANGE [BROADCAST]
 |  |
 |  23:AGGREGATE [FINALIZE]
 |  |  output: sum:merge(ps_supplycost * ps_availqty)
+|  |  row-size=16B cardinality=1
 |  |
 |  22:EXCHANGE [UNPARTITIONED]
 |  |
 |  15:AGGREGATE
 |  |  output: sum(ps_supplycost * ps_availqty)
+|  |  row-size=16B cardinality=1
 |  |
 |  14:HASH JOIN [INNER JOIN, BROADCAST]
 |  |  hash predicates: s_nationkey = n_nationkey
 |  |  runtime filters: RF002 <- n_nationkey
+|  |  row-size=40B cardinality=100.00K
 |  |
 |  |--21:EXCHANGE [BROADCAST]
 |  |  |
 |  |  13:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|  |     partitions=1/1 files=1 size=3.41KB
+|  |     partitions=1/1 files=1 size=3.44KB
 |  |     predicates: n_name = 'GERMANY'
+|  |     row-size=14B cardinality=5
 |  |
 |  09:SUBPLAN
+|  |  row-size=26B cardinality=100.00K
 |  |
 |  |--12:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=26B cardinality=10
 |  |  |
 |  |  |--10:SINGULAR ROW SRC
+|  |  |     row-size=14B cardinality=1
 |  |  |
 |  |  11:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  08:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF002 -> s_nationkey
+|     row-size=14B cardinality=10.00K
 |
 20:AGGREGATE [FINALIZE]
 |  output: sum:merge(ps_supplycost * ps_availqty)
 |  group by: ps_partkey
+|  row-size=24B cardinality=100.00K
 |
 19:EXCHANGE [HASH(ps_partkey)]
 |
 07:AGGREGATE [STREAMING]
 |  output: sum(ps_supplycost * ps_availqty)
 |  group by: ps_partkey
+|  row-size=24B cardinality=100.00K
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=48B cardinality=100.00K
 |
 |--18:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: n_name = 'GERMANY'
+|     row-size=14B cardinality=5
 |
 01:SUBPLAN
+|  row-size=34B cardinality=100.00K
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=34B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=14B cardinality=1
 |  |
 |  03:UNNEST [s.s_partsupps ps]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.supplier s]
    partitions=1/1 files=1 size=41.79MB
    predicates: !empty(s.s_partsupps)
    runtime filters: RF000 -> s_nationkey
+   row-size=14B cardinality=10.00K
 ====
 # TPCH-Q12
 # Q12 - Shipping Mode and Order Priority Query
@@ -1520,23 +1854,30 @@ PLAN-ROOT SINK
 |
 06:SORT
 |  order by: l_shipmode ASC
+|  row-size=28B cardinality=15.00M
 |
 05:AGGREGATE [FINALIZE]
 |  output: sum(CASE WHEN o_orderpriority IN ('1-URGENT', '2-HIGH') THEN 1 ELSE 0 END), sum(CASE WHEN o_orderpriority != '1-URGENT' AND o_orderpriority != '2-HIGH' THEN 1 ELSE 0 END)
 |  group by: l_shipmode
+|  row-size=28B cardinality=15.00M
 |
 01:SUBPLAN
+|  row-size=72B cardinality=15.00M
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=72B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=24B cardinality=1
 |  |
 |  03:UNNEST [o.o_lineitems l]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders o]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(o.o_lineitems)
    predicates on l: l_shipmode IN ('MAIL', 'SHIP'), l_commitdate < l_receiptdate, l_shipdate < l_commitdate, l_receiptdate >= '1994-01-01', l_receiptdate < '1995-01-01'
+   row-size=24B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=104.00MB Threads=4
 Per-Host Resource Estimates: Memory=748MB
@@ -1547,29 +1888,37 @@ PLAN-ROOT SINK
 |
 06:SORT
 |  order by: l_shipmode ASC
+|  row-size=28B cardinality=15.00M
 |
 08:AGGREGATE [FINALIZE]
 |  output: sum:merge(CASE WHEN o_orderpriority IN ('1-URGENT', '2-HIGH') THEN 1 ELSE 0 END), sum:merge(CASE WHEN o_orderpriority != '1-URGENT' AND o_orderpriority != '2-HIGH' THEN 1 ELSE 0 END)
 |  group by: l_shipmode
+|  row-size=28B cardinality=15.00M
 |
 07:EXCHANGE [HASH(l_shipmode)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(CASE WHEN o_orderpriority IN ('1-URGENT', '2-HIGH') THEN 1 ELSE 0 END), sum(CASE WHEN o_orderpriority != '1-URGENT' AND o_orderpriority != '2-HIGH' THEN 1 ELSE 0 END)
 |  group by: l_shipmode
+|  row-size=28B cardinality=15.00M
 |
 01:SUBPLAN
+|  row-size=72B cardinality=15.00M
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=72B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=24B cardinality=1
 |  |
 |  03:UNNEST [o.o_lineitems l]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders o]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(o.o_lineitems)
    predicates on l: l_shipmode IN ('MAIL', 'SHIP'), l_commitdate < l_receiptdate, l_shipdate < l_commitdate, l_receiptdate >= '1994-01-01', l_receiptdate < '1995-01-01'
+   row-size=24B cardinality=1.50M
 ====
 # TPCH-Q13
 # Q13 - Customer Distribution Query
@@ -1599,26 +1948,34 @@ PLAN-ROOT SINK
 |
 07:SORT
 |  order by: count(*) DESC, c_count DESC
+|  row-size=16B cardinality=150.00K
 |
 06:AGGREGATE [FINALIZE]
 |  output: count(*)
 |  group by: count(o_orderkey)
+|  row-size=16B cardinality=150.00K
 |
 05:AGGREGATE [FINALIZE]
 |  output: count(o_orderkey)
 |  group by: c_custkey
+|  row-size=16B cardinality=150.00K
 |
 01:SUBPLAN
+|  row-size=40B cardinality=150.00K
 |
 |--04:NESTED LOOP JOIN [RIGHT OUTER JOIN]
+|  |  row-size=40B cardinality=1
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=20B cardinality=1
 |  |
 |  03:UNNEST [c.c_orders]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates on c_orders: (NOT o_comment LIKE '%special%requests%')
+   row-size=20B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=94.94MB Threads=5
 Per-Host Resource Estimates: Memory=548MB
@@ -1629,38 +1986,48 @@ PLAN-ROOT SINK
 |
 07:SORT
 |  order by: count(*) DESC, c_count DESC
+|  row-size=16B cardinality=150.00K
 |
 11:AGGREGATE [FINALIZE]
 |  output: count:merge(*)
 |  group by: c_count
+|  row-size=16B cardinality=150.00K
 |
 10:EXCHANGE [HASH(c_count)]
 |
 06:AGGREGATE [STREAMING]
 |  output: count(*)
 |  group by: count(o_orderkey)
+|  row-size=16B cardinality=150.00K
 |
 09:AGGREGATE [FINALIZE]
 |  output: count:merge(o_orderkey)
 |  group by: c_custkey
+|  row-size=16B cardinality=150.00K
 |
 08:EXCHANGE [HASH(c_custkey)]
 |
 05:AGGREGATE [STREAMING]
 |  output: count(o_orderkey)
 |  group by: c_custkey
+|  row-size=16B cardinality=150.00K
 |
 01:SUBPLAN
+|  row-size=40B cardinality=150.00K
 |
 |--04:NESTED LOOP JOIN [RIGHT OUTER JOIN]
+|  |  row-size=40B cardinality=1
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=20B cardinality=1
 |  |
 |  03:UNNEST [c.c_orders]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates on c_orders: (NOT o_comment LIKE '%special%requests%')
+   row-size=20B cardinality=150.00K
 ====
 # TPCH-Q14
 # Q14 - Promotion Effect
@@ -1684,18 +2051,22 @@ PLAN-ROOT SINK
 |
 03:AGGREGATE [FINALIZE]
 |  output: sum(CASE WHEN p_type LIKE 'PROMO%' THEN l_extendedprice * (1 - l_discount) ELSE 0 END), sum(l_extendedprice * (1 - l_discount))
+|  row-size=32B cardinality=1
 |
 02:HASH JOIN [INNER JOIN]
 |  hash predicates: l_partkey = p_partkey
 |  runtime filters: RF000 <- p_partkey
+|  row-size=77B cardinality=1.50M
 |
 |--01:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
+|     row-size=41B cardinality=200.00K
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate < '1995-10-01', l_shipdate >= '1995-09-01'
    runtime filters: RF000 -> l_partkey
+   row-size=36B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=27.50MB Threads=5
 Per-Host Resource Estimates: Memory=414MB
@@ -1703,25 +2074,30 @@ PLAN-ROOT SINK
 |
 06:AGGREGATE [FINALIZE]
 |  output: sum:merge(CASE WHEN p_type LIKE 'PROMO%' THEN l_extendedprice * (1 - l_discount) ELSE 0 END), sum:merge(l_extendedprice * (1 - l_discount))
+|  row-size=32B cardinality=1
 |
 05:EXCHANGE [UNPARTITIONED]
 |
 03:AGGREGATE
 |  output: sum(CASE WHEN p_type LIKE 'PROMO%' THEN l_extendedprice * (1 - l_discount) ELSE 0 END), sum(l_extendedprice * (1 - l_discount))
+|  row-size=32B cardinality=1
 |
 02:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_partkey = p_partkey
 |  runtime filters: RF000 <- p_partkey
+|  row-size=77B cardinality=1.50M
 |
 |--04:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
+|     row-size=41B cardinality=200.00K
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate < '1995-10-01', l_shipdate >= '1995-09-01'
    runtime filters: RF000 -> l_partkey
+   row-size=36B cardinality=1.50M
 ====
 # TPCH-Q15
 # Q15 - Top Supplier Query
@@ -1762,36 +2138,45 @@ PLAN-ROOT SINK
 |
 08:SORT
 |  order by: s_suppkey ASC
+|  row-size=118B cardinality=1.50M
 |
 07:HASH JOIN [LEFT SEMI JOIN]
 |  hash predicates: sum(l_extendedprice * (1 - l_discount)) = max(total_revenue)
+|  row-size=126B cardinality=1.50M
 |
 |--05:AGGREGATE [FINALIZE]
 |  |  output: max(sum(l_extendedprice * (1 - l_discount)))
+|  |  row-size=16B cardinality=1
 |  |
 |  04:AGGREGATE [FINALIZE]
 |  |  output: sum(l_extendedprice * (1 - l_discount))
 |  |  group by: l_suppkey
+|  |  row-size=24B cardinality=1.50M
 |  |
 |  03:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-|     partitions=1/1 files=4 size=288.96MB
+|     partitions=1/1 files=4 size=288.99MB
 |     predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
+|     row-size=36B cardinality=1.50M
 |
 06:HASH JOIN [INNER JOIN]
 |  hash predicates: l_suppkey = s_suppkey
 |  runtime filters: RF000 <- s_suppkey
+|  row-size=126B cardinality=1.50M
 |
 |--00:SCAN HDFS [tpch_nested_parquet.supplier]
 |     partitions=1/1 files=1 size=41.79MB
+|     row-size=102B cardinality=10.00K
 |
 02:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: l_suppkey
+|  row-size=24B cardinality=1.50M
 |
 01:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
    runtime filters: RF000 -> l.l_suppkey
+   row-size=36B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=186.88MB Threads=10
 Per-Host Resource Estimates: Memory=1.47GB
@@ -1802,57 +2187,69 @@ PLAN-ROOT SINK
 |
 08:SORT
 |  order by: s_suppkey ASC
+|  row-size=118B cardinality=1.50M
 |
 07:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
 |  hash predicates: sum(l_extendedprice * (1 - l_discount)) = max(total_revenue)
+|  row-size=126B cardinality=1.50M
 |
 |--16:EXCHANGE [BROADCAST]
 |  |
 |  15:AGGREGATE [FINALIZE]
 |  |  output: max:merge(total_revenue)
+|  |  row-size=16B cardinality=1
 |  |
 |  14:EXCHANGE [UNPARTITIONED]
 |  |
 |  05:AGGREGATE
 |  |  output: max(sum(l_extendedprice * (1 - l_discount)))
+|  |  row-size=16B cardinality=1
 |  |
 |  13:AGGREGATE [FINALIZE]
 |  |  output: sum:merge(l_extendedprice * (1 - l_discount))
 |  |  group by: l_suppkey
+|  |  row-size=24B cardinality=1.50M
 |  |
 |  12:EXCHANGE [HASH(l_suppkey)]
 |  |
 |  04:AGGREGATE [STREAMING]
 |  |  output: sum(l_extendedprice * (1 - l_discount))
 |  |  group by: l_suppkey
+|  |  row-size=24B cardinality=1.50M
 |  |
 |  03:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-|     partitions=1/1 files=4 size=288.96MB
+|     partitions=1/1 files=4 size=288.99MB
 |     predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
+|     row-size=36B cardinality=1.50M
 |
 06:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: l_suppkey = s_suppkey
 |  runtime filters: RF000 <- s_suppkey
+|  row-size=126B cardinality=1.50M
 |
 |--11:EXCHANGE [HASH(s_suppkey)]
 |  |
 |  00:SCAN HDFS [tpch_nested_parquet.supplier]
 |     partitions=1/1 files=1 size=41.79MB
+|     row-size=102B cardinality=10.00K
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * (1 - l_discount))
 |  group by: l_suppkey
+|  row-size=24B cardinality=1.50M
 |
 09:EXCHANGE [HASH(l_suppkey)]
 |
 02:AGGREGATE [STREAMING]
 |  output: sum(l_extendedprice * (1 - l_discount))
 |  group by: l_suppkey
+|  row-size=24B cardinality=1.50M
 |
 01:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate < '1996-04-01', l_shipdate >= '1996-01-01'
    runtime filters: RF000 -> l.l_suppkey
+   row-size=36B cardinality=1.50M
 ====
 # TPCH-Q16
 # Q16 - Parts/Supplier Relation Query
@@ -1887,32 +2284,42 @@ PLAN-ROOT SINK
 |
 09:SORT
 |  order by: count(s_suppkey) DESC, p_brand ASC, p_type ASC, p_size ASC
+|  row-size=65B cardinality=10.00K
 |
 08:AGGREGATE [FINALIZE]
 |  output: count(s_suppkey)
 |  group by: p_brand, p_type, p_size
+|  row-size=65B cardinality=10.00K
 |
 07:AGGREGATE
 |  group by: p_brand, p_type, p_size, s_suppkey
+|  row-size=65B cardinality=10.00K
 |
 06:HASH JOIN [INNER JOIN]
 |  hash predicates: ps_partkey = p_partkey
+|  row-size=167B cardinality=10.00K
 |
 |--05:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     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
 |
 01:SUBPLAN
+|  row-size=103B cardinality=10.00K
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=103B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=95B cardinality=1
 |  |
 |  03:UNNEST [s.s_partsupps ps]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.supplier s]
    partitions=1/1 files=1 size=41.79MB
    predicates: NOT s_comment LIKE '%Customer%Complaints%', !empty(s.s_partsupps)
+   row-size=95B cardinality=1.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=31.81MB Threads=7
 Per-Host Resource Estimates: Memory=288MB
@@ -1923,45 +2330,57 @@ PLAN-ROOT SINK
 |
 09:SORT
 |  order by: count(s_suppkey) DESC, p_brand ASC, p_type ASC, p_size ASC
+|  row-size=65B cardinality=10.00K
 |
 14:AGGREGATE [FINALIZE]
 |  output: count:merge(s_suppkey)
 |  group by: p_brand, p_type, p_size
+|  row-size=65B cardinality=10.00K
 |
 13:EXCHANGE [HASH(p_brand,p_type,p_size)]
 |
 08:AGGREGATE [STREAMING]
 |  output: count(s_suppkey)
 |  group by: p_brand, p_type, p_size
+|  row-size=65B cardinality=10.00K
 |
 12:AGGREGATE
 |  group by: p_brand, p_type, p_size, s_suppkey
+|  row-size=65B cardinality=10.00K
 |
 11:EXCHANGE [HASH(p_brand,p_type,p_size,s_suppkey)]
 |
 07:AGGREGATE [STREAMING]
 |  group by: p_brand, p_type, p_size, s_suppkey
+|  row-size=65B cardinality=10.00K
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ps_partkey = p_partkey
+|  row-size=167B cardinality=10.00K
 |
 |--10:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     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
 |
 01:SUBPLAN
+|  row-size=103B cardinality=10.00K
 |
 |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=103B cardinality=10
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=95B cardinality=1
 |  |
 |  03:UNNEST [s.s_partsupps ps]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.supplier s]
    partitions=1/1 files=1 size=41.79MB
    predicates: NOT s_comment LIKE '%Customer%Complaints%', !empty(s.s_partsupps)
+   row-size=95B cardinality=1.00K
 ====
 # TPCH-Q17
 # Q17 - Small-Quantity-Order Revenue Query
@@ -1989,31 +2408,38 @@ PLAN-ROOT SINK
 |
 06:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice)
+|  row-size=16B cardinality=1
 |
 05:HASH JOIN [LEFT SEMI JOIN]
 |  hash predicates: p_partkey = l_partkey
 |  other join predicates: l_quantity < 0.2 * avg(l_quantity)
 |  runtime filters: RF000 <- l_partkey
+|  row-size=72B cardinality=15.00M
 |
 |--03:AGGREGATE [FINALIZE]
 |  |  output: avg(l_quantity)
 |  |  group by: l_partkey
+|  |  row-size=16B cardinality=15.00M
 |  |
 |  02:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-|     partitions=1/1 files=4 size=288.96MB
+|     partitions=1/1 files=4 size=288.99MB
+|     row-size=16B cardinality=15.00M
 |
 04:HASH JOIN [INNER JOIN]
 |  hash predicates: l_partkey = p_partkey
 |  runtime filters: RF002 <- p_partkey
+|  row-size=72B cardinality=15.00M
 |
 |--01:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_container = 'MED BOX', p_brand = 'Brand#23'
 |     runtime filters: RF000 -> p_partkey
+|     row-size=48B cardinality=1.00K
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    runtime filters: RF000 -> l.l_partkey, RF002 -> l_partkey
+   row-size=24B cardinality=15.00M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=154.94MB Threads=8
 Per-Host Resource Estimates: Memory=875MB
@@ -2021,35 +2447,42 @@ PLAN-ROOT SINK
 |
 12:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice)
+|  row-size=16B cardinality=1
 |
 11:EXCHANGE [UNPARTITIONED]
 |
 06:AGGREGATE
 |  output: sum(l_extendedprice)
+|  row-size=16B cardinality=1
 |
 05:HASH JOIN [LEFT SEMI JOIN, PARTITIONED]
 |  hash predicates: p_partkey = l_partkey
 |  other join predicates: l_quantity < 0.2 * avg(l_quantity)
 |  runtime filters: RF000 <- l_partkey
+|  row-size=72B cardinality=15.00M
 |
 |--09:AGGREGATE [FINALIZE]
 |  |  output: avg:merge(l_quantity)
 |  |  group by: l_partkey
+|  |  row-size=16B cardinality=15.00M
 |  |
 |  08:EXCHANGE [HASH(l_partkey)]
 |  |
 |  03:AGGREGATE [STREAMING]
 |  |  output: avg(l_quantity)
 |  |  group by: l_partkey
+|  |  row-size=16B cardinality=15.00M
 |  |
 |  02:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-|     partitions=1/1 files=4 size=288.96MB
+|     partitions=1/1 files=4 size=288.99MB
+|     row-size=16B cardinality=15.00M
 |
 10:EXCHANGE [HASH(p_partkey)]
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_partkey = p_partkey
 |  runtime filters: RF002 <- p_partkey
+|  row-size=72B cardinality=15.00M
 |
 |--07:EXCHANGE [BROADCAST]
 |  |
@@ -2057,10 +2490,12 @@ PLAN-ROOT SINK
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_container = 'MED BOX', p_brand = 'Brand#23'
 |     runtime filters: RF000 -> p_partkey
+|     row-size=48B cardinality=1.00K
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    runtime filters: RF000 -> l.l_partkey, RF002 -> l_partkey
+   row-size=24B cardinality=15.00M
 ====
 # TPCH-Q18
 # Q18 - Large Value Customer Query
@@ -2088,30 +2523,41 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: o_totalprice DESC, o_orderdate ASC
+|  row-size=82B cardinality=0
 |
 01:SUBPLAN
+|  row-size=106B cardinality=0
 |
 |--09:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=106B cardinality=0
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=50B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=56B cardinality=0
 |  |
 |  |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=56B cardinality=0
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=40B cardinality=1
 |  |  |
 |  |  07:AGGREGATE [FINALIZE]
 |  |  |  output: sum(l_quantity)
 |  |  |  having: sum(l_quantity) > 300
+|  |  |  row-size=16B cardinality=0
 |  |  |
 |  |  06:UNNEST [o.o_lineitems]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
+   row-size=50B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=24.00MB Threads=3
 Per-Host Resource Estimates: Memory=538MB
@@ -2123,30 +2569,41 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: o_totalprice DESC, o_orderdate ASC
+|  row-size=82B cardinality=0
 |
 01:SUBPLAN
+|  row-size=106B cardinality=0
 |
 |--09:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=106B cardinality=0
 |  |
 |  |--02:SINGULAR ROW SRC
+|  |     row-size=50B cardinality=1
 |  |
 |  04:SUBPLAN
+|  |  row-size=56B cardinality=0
 |  |
 |  |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=56B cardinality=0
 |  |  |
 |  |  |--05:SINGULAR ROW SRC
+|  |  |     row-size=40B cardinality=1
 |  |  |
 |  |  07:AGGREGATE [FINALIZE]
 |  |  |  output: sum(l_quantity)
 |  |  |  having: sum(l_quantity) > 300
+|  |  |  row-size=16B cardinality=0
 |  |  |
 |  |  06:UNNEST [o.o_lineitems]
+|  |     row-size=0B cardinality=10
 |  |
 |  03:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 00:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
+   row-size=50B cardinality=150.00K
 ====
 # TPCH-Q19
 # Q19 - Discounted Revenue Query
@@ -2192,20 +2649,24 @@ PLAN-ROOT SINK
 |
 03:AGGREGATE [FINALIZE]
 |  output: sum(l_extendedprice * (1 - l_discount))
+|  row-size=16B cardinality=1
 |
 02:HASH JOIN [INNER JOIN]
 |  hash predicates: l_partkey = p_partkey
 |  other predicates: ((p_brand = 'Brand#12' AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') AND l_quantity >= 1 AND l_quantity <= 11 AND p_size <= 5) OR (p_brand = 'Brand#23' AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') AND l_quantity >= 10 AND l_quantity <= 20 AND p_size <= 10) OR (p_brand = 'Brand#34' AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') AND l_quantity >= 20 AND l_quantity <= 30 AND p_size <= 15))
 |  runtime filters: RF000 <- p_partkey
+|  row-size=108B cardinality=1.50M
 |
 |--01:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_size >= 1
+|     row-size=52B cardinality=20.00K
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipmode IN ('AIR', 'AIR REG'), l_shipinstruct = 'DELIVER IN PERSON'
    runtime filters: RF000 -> l_partkey
+   row-size=56B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=28.94MB Threads=5
 Per-Host Resource Estimates: Memory=615MB
@@ -2213,27 +2674,32 @@ PLAN-ROOT SINK
 |
 06:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_extendedprice * (1 - l_discount))
+|  row-size=16B cardinality=1
 |
 05:EXCHANGE [UNPARTITIONED]
 |
 03:AGGREGATE
 |  output: sum(l_extendedprice * (1 - l_discount))
+|  row-size=16B cardinality=1
 |
 02:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l_partkey = p_partkey
 |  other predicates: ((p_brand = 'Brand#12' AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') AND l_quantity >= 1 AND l_quantity <= 11 AND p_size <= 5) OR (p_brand = 'Brand#23' AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') AND l_quantity >= 10 AND l_quantity <= 20 AND p_size <= 10) OR (p_brand = 'Brand#34' AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') AND l_quantity >= 20 AND l_quantity <= 30 AND p_size <= 15))
 |  runtime filters: RF000 <- p_partkey
+|  row-size=108B cardinality=1.50M
 |
 |--04:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpch_nested_parquet.part p]
 |     partitions=1/1 files=1 size=6.23MB
 |     predicates: p_size >= 1
+|     row-size=52B cardinality=20.00K
 |
 00:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipmode IN ('AIR', 'AIR REG'), l_shipinstruct = 'DELIVER IN PERSON'
    runtime filters: RF000 -> l_partkey
+   row-size=56B cardinality=1.50M
 ====
 # TPCH-Q20
 # Note: Tricky rewrite from the original to avoid mixing
@@ -2276,51 +2742,65 @@ PLAN-ROOT SINK
 |
 13:SORT
 |  order by: s_name ASC
+|  row-size=67B cardinality=100.00K
 |
 12:AGGREGATE [FINALIZE]
 |  group by: s_name, s_address
+|  row-size=67B cardinality=100.00K
 |
 11:HASH JOIN [RIGHT SEMI JOIN]
 |  hash predicates: l_partkey = ps_partkey, l_suppkey = s_suppkey
 |  other join predicates: ps_availqty > 0.5 * sum(l_quantity)
 |  runtime filters: RF000 <- ps_partkey, RF001 <- s_suppkey
+|  row-size=115B cardinality=100.00K
 |
 |--10:HASH JOIN [LEFT SEMI JOIN]
 |  |  hash predicates: ps_partkey = p_partkey
+|  |  row-size=115B cardinality=100.00K
 |  |
 |  |--06:SCAN HDFS [tpch_nested_parquet.part p]
 |  |     partitions=1/1 files=1 size=6.23MB
 |  |     predicates: p_name LIKE 'forest%'
+|  |     row-size=53B cardinality=20.00K
 |  |
 |  09:HASH JOIN [INNER JOIN]
 |  |  hash predicates: s_nationkey = n_nationkey
 |  |  runtime filters: RF006 <- n_nationkey
+|  |  row-size=115B cardinality=100.00K
 |  |
 |  |--05:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|  |     partitions=1/1 files=1 size=3.41KB
+|  |     partitions=1/1 files=1 size=3.44KB
 |  |     predicates: n_name = 'CANADA'
+|  |     row-size=14B cardinality=5
 |  |
 |  01:SUBPLAN
+|  |  row-size=101B cardinality=100.00K
 |  |
 |  |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=101B cardinality=10
 |  |  |
 |  |  |--02:SINGULAR ROW SRC
+|  |  |     row-size=89B cardinality=1
 |  |  |
 |  |  03:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  00:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF006 -> s_nationkey
+|     row-size=89B cardinality=10.00K
 |
 08:AGGREGATE [FINALIZE]
 |  output: sum(l_quantity)
 |  group by: l_partkey, l_suppkey
+|  row-size=32B cardinality=1.50M
 |
 07:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    runtime filters: RF000 -> l.l_partkey, RF001 -> l.l_suppkey
+   row-size=36B cardinality=1.50M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=164.33MB Threads=11
 Per-Host Resource Estimates: Memory=1.07GB
@@ -2331,68 +2811,84 @@ PLAN-ROOT SINK
 |
 13:SORT
 |  order by: s_name ASC
+|  row-size=67B cardinality=100.00K
 |
 20:AGGREGATE [FINALIZE]
 |  group by: s_name, s_address
+|  row-size=67B cardinality=100.00K
 |
 19:EXCHANGE [HASH(s_name,s_address)]
 |
 12:AGGREGATE [STREAMING]
 |  group by: s_name, s_address
+|  row-size=67B cardinality=100.00K
 |
 11:HASH JOIN [RIGHT SEMI JOIN, PARTITIONED]
 |  hash predicates: l_partkey = ps_partkey, l_suppkey = s_suppkey
 |  other join predicates: ps_availqty > 0.5 * sum(l_quantity)
 |  runtime filters: RF000 <- ps_partkey, RF001 <- s_suppkey
+|  row-size=115B cardinality=100.00K
 |
 |--18:EXCHANGE [HASH(ps_partkey,s_suppkey)]
 |  |
 |  10:HASH JOIN [LEFT SEMI JOIN, BROADCAST]
 |  |  hash predicates: ps_partkey = p_partkey
+|  |  row-size=115B cardinality=100.00K
 |  |
 |  |--17:EXCHANGE [BROADCAST]
 |  |  |
 |  |  06:SCAN HDFS [tpch_nested_parquet.part p]
 |  |     partitions=1/1 files=1 size=6.23MB
 |  |     predicates: p_name LIKE 'forest%'
+|  |     row-size=53B cardinality=20.00K
 |  |
 |  09:HASH JOIN [INNER JOIN, BROADCAST]
 |  |  hash predicates: s_nationkey = n_nationkey
 |  |  runtime filters: RF006 <- n_nationkey
+|  |  row-size=115B cardinality=100.00K
 |  |
 |  |--16:EXCHANGE [BROADCAST]
 |  |  |
 |  |  05:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|  |     partitions=1/1 files=1 size=3.41KB
+|  |     partitions=1/1 files=1 size=3.44KB
 |  |     predicates: n_name = 'CANADA'
+|  |     row-size=14B cardinality=5
 |  |
 |  01:SUBPLAN
+|  |  row-size=101B cardinality=100.00K
 |  |
 |  |--04:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=101B cardinality=10
 |  |  |
 |  |  |--02:SINGULAR ROW SRC
+|  |  |     row-size=89B cardinality=1
 |  |  |
 |  |  03:UNNEST [s.s_partsupps ps]
+|  |     row-size=0B cardinality=10
 |  |
 |  00:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     predicates: !empty(s.s_partsupps)
 |     runtime filters: RF006 -> s_nationkey
+|     row-size=89B cardinality=10.00K
 |
 15:AGGREGATE [FINALIZE]
 |  output: sum:merge(l_quantity)
 |  group by: l_partkey, l_suppkey
+|  row-size=32B cardinality=1.50M
 |
 14:EXCHANGE [HASH(l_partkey,l_suppkey)]
 |
 08:AGGREGATE [STREAMING]
 |  output: sum(l_quantity)
 |  group by: l_partkey, l_suppkey
+|  row-size=32B cardinality=1.50M
 |
 07:SCAN HDFS [tpch_nested_parquet.customer.c_orders.o_lineitems l]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: l_shipdate < '1995-01-01', l_shipdate >= '1994-01-01'
    runtime filters: RF000 -> l.l_partkey, RF001 -> l.l_suppkey
+   row-size=36B cardinality=1.50M
 ====
 # TPCH-Q21
 # Q21 - Suppliers Who Kept Orders Waiting Query
@@ -2441,62 +2937,83 @@ PLAN-ROOT SINK
 |
 20:TOP-N [LIMIT=100]
 |  order by: count(*) DESC, s_name ASC
+|  row-size=38B cardinality=100
 |
 19:AGGREGATE [FINALIZE]
 |  output: count(*)
 |  group by: s_name
+|  row-size=38B cardinality=9.96K
 |
 18:SUBPLAN
+|  row-size=146B cardinality=15.00M
 |
 |--16:NESTED LOOP JOIN [RIGHT ANTI JOIN]
 |  |  join predicates: l3.l_suppkey != l1.l_suppkey
+|  |  row-size=146B cardinality=1
 |  |
 |  |--15:NESTED LOOP JOIN [RIGHT SEMI JOIN]
 |  |  |  join predicates: l2.l_suppkey != l1.l_suppkey
+|  |  |  row-size=146B cardinality=1
 |  |  |
 |  |  |--12:SINGULAR ROW SRC
+|  |  |     row-size=146B cardinality=1
 |  |  |
 |  |  13:UNNEST [o.o_lineitems l2]
+|  |     row-size=8B cardinality=10
 |  |
 |  14:UNNEST [o.o_lineitems l3]
+|     row-size=32B cardinality=10
 |
 17:HASH JOIN [INNER JOIN]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=146B cardinality=15.00M
 |
 |--10:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: n_name = 'SAUDI ARABIA'
+|     row-size=14B cardinality=5
 |
 11:HASH JOIN [INNER JOIN]
 |  hash predicates: l1.l_suppkey = s_suppkey
+|  row-size=132B cardinality=15.00M
 |
 |--00:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     runtime filters: RF000 -> s_nationkey
+|     row-size=40B cardinality=10.00K
 |
 02:SUBPLAN
+|  row-size=92B cardinality=15.00M
 |
 |--09:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=92B cardinality=100
 |  |
 |  |--03:SINGULAR ROW SRC
+|  |     row-size=12B cardinality=1
 |  |
 |  05:SUBPLAN
+|  |  row-size=80B cardinality=100
 |  |
 |  |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=80B cardinality=10
 |  |  |
 |  |  |--06:SINGULAR ROW SRC
+|  |  |     row-size=48B cardinality=1
 |  |  |
 |  |  07:UNNEST [o.o_lineitems l1]
+|  |     row-size=0B cardinality=10
 |  |
 |  04:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 01:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderstatus = 'F'
    predicates on l1: l1.l_receiptdate > l1.l_commitdate
    predicates on l3: l3.l_receiptdate > l3.l_commitdate
+   row-size=12B cardinality=150.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=42.84MB Threads=10
 Per-Host Resource Estimates: Memory=1.10GB
@@ -2508,72 +3025,94 @@ PLAN-ROOT SINK
 |
 20:TOP-N [LIMIT=100]
 |  order by: count(*) DESC, s_name ASC
+|  row-size=38B cardinality=100
 |
 24:AGGREGATE [FINALIZE]
 |  output: count:merge(*)
 |  group by: s_name
+|  row-size=38B cardinality=9.96K
 |
 23:EXCHANGE [HASH(s_name)]
 |
 19:AGGREGATE [STREAMING]
 |  output: count(*)
 |  group by: s_name
+|  row-size=38B cardinality=9.96K
 |
 18:SUBPLAN
+|  row-size=146B cardinality=15.00M
 |
 |--16:NESTED LOOP JOIN [RIGHT ANTI JOIN]
 |  |  join predicates: l3.l_suppkey != l1.l_suppkey
+|  |  row-size=146B cardinality=1
 |  |
 |  |--15:NESTED LOOP JOIN [RIGHT SEMI JOIN]
 |  |  |  join predicates: l2.l_suppkey != l1.l_suppkey
+|  |  |  row-size=146B cardinality=1
 |  |  |
 |  |  |--12:SINGULAR ROW SRC
+|  |  |     row-size=146B cardinality=1
 |  |  |
 |  |  13:UNNEST [o.o_lineitems l2]
+|  |     row-size=8B cardinality=10
 |  |
 |  14:UNNEST [o.o_lineitems l3]
+|     row-size=32B cardinality=10
 |
 17:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: s_nationkey = n_nationkey
 |  runtime filters: RF000 <- n_nationkey
+|  row-size=146B cardinality=15.00M
 |
 |--22:EXCHANGE [BROADCAST]
 |  |
 |  10:SCAN HDFS [tpch_nested_parquet.region.r_nations n]
-|     partitions=1/1 files=1 size=3.41KB
+|     partitions=1/1 files=1 size=3.44KB
 |     predicates: n_name = 'SAUDI ARABIA'
+|     row-size=14B cardinality=5
 |
 11:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: l1.l_suppkey = s_suppkey
+|  row-size=132B cardinality=15.00M
 |
 |--21:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpch_nested_parquet.supplier s]
 |     partitions=1/1 files=1 size=41.79MB
 |     runtime filters: RF000 -> s_nationkey
+|     row-size=40B cardinality=10.00K
 |
 02:SUBPLAN
+|  row-size=92B cardinality=15.00M
 |
 |--09:NESTED LOOP JOIN [CROSS JOIN]
+|  |  row-size=92B cardinality=100
 |  |
 |  |--03:SINGULAR ROW SRC
+|  |     row-size=12B cardinality=1
 |  |
 |  05:SUBPLAN
+|  |  row-size=80B cardinality=100
 |  |
 |  |--08:NESTED LOOP JOIN [CROSS JOIN]
+|  |  |  row-size=80B cardinality=10
 |  |  |
 |  |  |--06:SINGULAR ROW SRC
+|  |  |     row-size=48B cardinality=1
 |  |  |
 |  |  07:UNNEST [o.o_lineitems l1]
+|  |     row-size=0B cardinality=10
 |  |
 |  04:UNNEST [c.c_orders o]
+|     row-size=0B cardinality=10
 |
 01:SCAN HDFS [tpch_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: !empty(c.c_orders)
    predicates on o: !empty(o.o_lineitems), o_orderstatus = 'F'
    predicates on l1: l1.l_receiptdate > l1.l_commitdate
    predicates on l3: l3.l_receiptdate > l3.l_commitdate
+   row-size=12B cardinality=150.00K
 ====
 # TPCH-Q22
 # Q22 - Global Sales Opportunity Query
@@ -2616,32 +3155,42 @@ PLAN-ROOT SINK
 |
 09:SORT
 |  order by: cntrycode ASC
+|  row-size=36B cardinality=15.00K
 |
 08:AGGREGATE [FINALIZE]
 |  output: count(*), sum(c_acctbal)
 |  group by: substr(c_phone, 1, 2)
+|  row-size=36B cardinality=15.00K
 |
 07:SUBPLAN
+|  row-size=55B cardinality=15.00K
 |
 |--05:NESTED LOOP JOIN [RIGHT ANTI JOIN]
+|  |  row-size=55B cardinality=1
 |  |
 |  |--03:SINGULAR ROW SRC
+|  |     row-size=55B cardinality=1
 |  |
 |  04:UNNEST [c.c_orders]
+|     row-size=0B cardinality=10
 |
 06:NESTED LOOP JOIN [INNER JOIN]
 |  predicates: c_acctbal > avg(c_acctbal)
+|  row-size=55B cardinality=15.00K
 |
 |--02:AGGREGATE [FINALIZE]
 |  |  output: avg(c_acctbal)
+|  |  row-size=8B cardinality=1
 |  |
 |  01:SCAN HDFS [tpch_nested_parquet.customer c]
-|     partitions=1/1 files=4 size=289.00MB
+|     partitions=1/1 files=4 size=288.99MB
 |     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_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
+   row-size=47B cardinality=15.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=25.94MB Threads=8
 Per-Host Resource Estimates: Memory=688MB
@@ -2652,43 +3201,55 @@ PLAN-ROOT SINK
 |
 09:SORT
 |  order by: cntrycode ASC
+|  row-size=36B cardinality=15.00K
 |
 14:AGGREGATE [FINALIZE]
 |  output: count:merge(*), sum:merge(c_acctbal)
 |  group by: cntrycode
+|  row-size=36B cardinality=15.00K
 |
 13:EXCHANGE [HASH(cntrycode)]
 |
 08:AGGREGATE [STREAMING]
 |  output: count(*), sum(c_acctbal)
 |  group by: substr(c_phone, 1, 2)
+|  row-size=36B cardinality=15.00K
 |
 07:SUBPLAN
+|  row-size=55B cardinality=15.00K
 |
 |--05:NESTED LOOP JOIN [RIGHT ANTI JOIN]
+|  |  row-size=55B cardinality=1
 |  |
 |  |--03:SINGULAR ROW SRC
+|  |     row-size=55B cardinality=1
 |  |
 |  04:UNNEST [c.c_orders]
+|     row-size=0B cardinality=10
 |
 06:NESTED LOOP JOIN [INNER JOIN, BROADCAST]
 |  predicates: c_acctbal > avg(c_acctbal)
+|  row-size=55B cardinality=15.00K
 |
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  11:AGGREGATE [FINALIZE]
 |  |  output: avg:merge(c_acctbal)
+|  |  row-size=8B cardinality=1
 |  |
 |  10:EXCHANGE [UNPARTITIONED]
 |  |
 |  02:AGGREGATE
 |  |  output: avg(c_acctbal)
+|  |  row-size=8B cardinality=1
 |  |
 |  01:SCAN HDFS [tpch_nested_parquet.customer c]
-|     partitions=1/1 files=4 size=289.00MB
+|     partitions=1/1 files=4 size=288.99MB
 |     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_nested_parquet.customer c]
-   partitions=1/1 files=4 size=288.96MB
+   partitions=1/1 files=4 size=288.99MB
    predicates: substr(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')
+   row-size=47B cardinality=15.00K
 ====