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:07 UTC

[08/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/tpcds-all.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test
index da86c5e..d0b103d 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds-all.test
@@ -29,30 +29,37 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
+|  row-size=52B cardinality=100
 |
 05:AGGREGATE [FINALIZE]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=3.04K
 |
 04:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=72B cardinality=3.04K
 |
 |--00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_moy = 12
+|     row-size=12B cardinality=6.09K
 |
 03:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=60B cardinality=3.04K
 |
 |--02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manufact_id = 436
+|     row-size=44B cardinality=19
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=34.81MB Threads=9
 Per-Host Resource Estimates: Memory=235MB
@@ -64,42 +71,50 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
+|  row-size=52B cardinality=100
 |
 11:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=3.04K
 |
 10:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=3.04K
 |
 04:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=72B cardinality=3.04K
 |
 |--09:EXCHANGE [HASH(dt.d_date_sk)]
 |  |
 |  00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_moy = 12
+|     row-size=12B cardinality=6.09K
 |
 08:EXCHANGE [HASH(store_sales.ss_sold_date_sk)]
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=60B cardinality=3.04K
 |
 |--07:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manufact_id = 436
+|     row-size=44B cardinality=19
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=69.62MB Threads=11
 Per-Host Resource Estimates: Memory=167MB
@@ -111,20 +126,24 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
+|  row-size=52B cardinality=100
 |
 11:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=3.04K
 |
 10:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=3.04K
 |
 04:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=72B cardinality=3.04K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -135,12 +154,14 @@ PLAN-ROOT SINK
 |  00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_moy = 12
+|     row-size=12B cardinality=6.09K
 |
 08:EXCHANGE [HASH(store_sales.ss_sold_date_sk)]
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=60B cardinality=3.04K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -151,10 +172,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manufact_id = 436
+|     row-size=44B cardinality=19
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ====
 # TPCDS-Q7
 select
@@ -192,45 +215,56 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: i_item_id ASC
+|  row-size=60B cardinality=100
 |
 09:AGGREGATE [FINALIZE]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
 |  group by: i_item_id
+|  row-size=60B cardinality=8.85K
 |
 08:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF000 <- i_item_sk
+|  row-size=162B cardinality=261.60K
 |
 |--03:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
+|     row-size=36B cardinality=18.00K
 |
 07:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_promo_sk = p_promo_sk
 |  runtime filters: RF002 <- p_promo_sk
+|  row-size=126B cardinality=261.60K
 |
 |--04:SCAN HDFS [tpcds.promotion]
 |     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]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
+|  row-size=96B cardinality=263.34K
 |
 |--01:SCAN HDFS [tpcds.customer_demographics]
 |     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
 |
 05:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=44B cardinality=589.03K
 |
 |--02:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=8B cardinality=373
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=54.31MB Threads=12
 Per-Host Resource Estimates: Memory=460MB
@@ -242,59 +276,71 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: i_item_id ASC
+|  row-size=60B cardinality=100
 |
 16: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)]
 |
 09:AGGREGATE [STREAMING]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
 |  group by: i_item_id
+|  row-size=60B cardinality=8.85K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF000 <- i_item_sk
+|  row-size=162B cardinality=261.60K
 |
 |--14:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
+|     row-size=36B cardinality=18.00K
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_promo_sk = p_promo_sk
 |  runtime filters: RF002 <- p_promo_sk
+|  row-size=126B cardinality=261.60K
 |
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpcds.promotion]
 |     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]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
+|  row-size=96B cardinality=263.34K
 |
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpcds.customer_demographics]
 |     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
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=44B cardinality=589.03K
 |
 |--11:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=8B cardinality=373
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
@@ -306,20 +352,24 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: i_item_id ASC
+|  row-size=60B cardinality=100
 |
 16: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)]
 |
 09:AGGREGATE [STREAMING]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
 |  group by: i_item_id
+|  row-size=60B cardinality=8.85K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF000 <- i_item_sk
+|  row-size=162B cardinality=261.60K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -329,10 +379,12 @@ PLAN-ROOT SINK
 |  |
 |  03:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
+|     row-size=36B cardinality=18.00K
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_promo_sk = p_promo_sk
 |  runtime filters: RF002 <- p_promo_sk
+|  row-size=126B cardinality=261.60K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -343,10 +395,12 @@ PLAN-ROOT SINK
 |  04:SCAN HDFS [tpcds.promotion]
 |     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]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
+|  row-size=96B cardinality=263.34K
 |
 |--JOIN BUILD
 |  |  join-table-id=02 plan-id=03 cohort-id=01
@@ -357,10 +411,12 @@ PLAN-ROOT SINK
 |  01:SCAN HDFS [tpcds.customer_demographics]
 |     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
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=44B cardinality=589.03K
 |
 |--JOIN BUILD
 |  |  join-table-id=03 plan-id=04 cohort-id=01
@@ -371,10 +427,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=8B cardinality=373
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
 ====
 # TPCDS-Q8
 select
@@ -452,52 +510,65 @@ PLAN-ROOT SINK
 |
 11:TOP-N [LIMIT=100]
 |  order by: s_store_name ASC
+|  row-size=32B cardinality=8
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum(ss_net_profit)
 |  group by: s_store_name
+|  row-size=32B cardinality=8
 |
 09:HASH JOIN [INNER JOIN]
 |  hash predicates: substr(store.s_zip, 1, 2) = substr(substr(ca_zip, 1, 5), 1, 2)
 |  runtime filters: RF000 <- substr(substr(ca_zip, 1, 5), 1, 2)
+|  row-size=65B cardinality=84.40K
 |
 |--07:HASH JOIN [RIGHT SEMI JOIN]
 |  |  hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
 |  |  runtime filters: RF004 <- substr(ca_zip, 1, 5)
+|  |  row-size=20B cardinality=396
 |  |
 |  |--05:AGGREGATE [FINALIZE]
 |  |  |  output: count(*)
 |  |  |  group by: substr(ca_zip, 1, 5)
 |  |  |  having: count(*) > 10
+|  |  |  row-size=20B cardinality=396
 |  |  |
 |  |  04:HASH JOIN [INNER JOIN]
 |  |  |  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
 |  |  |
 |  |  |--03:SCAN HDFS [tpcds.customer]
 |  |  |     partitions=1/1 files=1 size=12.60MB
 |  |  |     predicates: c_preferred_cust_flag = 'Y'
+|  |  |     row-size=17B cardinality=50.00K
 |  |  |
 |  |  02:SCAN HDFS [tpcds.customer_address]
 |  |     partitions=1/1 files=1 size=5.25MB
 |  |     runtime filters: RF006 -> customer_address.ca_address_sk
+|  |     row-size=21B cardinality=50.00K
 |  |
 |  06:SCAN HDFS [tpcds.customer_address]
 |     partitions=1/1 files=1 size=5.25MB
 |     predicates: substr(ca_zip, 1, 5) IN ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779', '91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797', '28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068', '10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053', '77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425', '19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835', '70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360', '48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', 
 '80015', '42961', '63982', '21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447', '57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792', '11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561', '28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458', '28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648', '30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799', '60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036', '88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005'
 , '18384', '76615', '11635', '38177', '55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121', '77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560', '41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619', '25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010', '18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705', '50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928', '97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047', '94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '2305
 4', '70470', '72008', '49247', '91911', '69998', '20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744', '36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309', '80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622', '68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936', '33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
 |     runtime filters: RF004 -> substr(ca_zip, 1, 5)
+|     row-size=17B cardinality=5.00K
 |
 08:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF002 <- store.s_store_sk
+|  row-size=45B cardinality=84.40K
 |
 |--01:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     runtime filters: RF000 -> substr(store.s_zip, 1, 2)
+|     row-size=37B cardinality=12
 |
 00:SCAN HDFS [tpcds.store_sales]
+   partition predicates: ss_sold_date_sk >= 2452276, ss_sold_date_sk <= 2452366
    partitions=90/1824 files=90 size=10.32MB
    runtime filters: RF002 -> store_sales.ss_store_sk
+   row-size=8B cardinality=84.40K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=46.13MB Threads=13
 Per-Host Resource Estimates: Memory=327MB
@@ -509,51 +580,61 @@ PLAN-ROOT SINK
 |
 11:TOP-N [LIMIT=100]
 |  order by: s_store_name ASC
+|  row-size=32B cardinality=8
 |
 19:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_net_profit)
 |  group by: s_store_name
+|  row-size=32B cardinality=8
 |
 18:EXCHANGE [HASH(s_store_name)]
 |
 10:AGGREGATE [STREAMING]
 |  output: sum(ss_net_profit)
 |  group by: s_store_name
+|  row-size=32B cardinality=8
 |
 09:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: substr(store.s_zip, 1, 2) = substr(substr(ca_zip, 1, 5), 1, 2)
 |  runtime filters: RF000 <- substr(substr(ca_zip, 1, 5), 1, 2)
+|  row-size=65B cardinality=84.40K
 |
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  07:HASH JOIN [RIGHT SEMI JOIN, PARTITIONED]
 |  |  hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
 |  |  runtime filters: RF004 <- substr(ca_zip, 1, 5)
+|  |  row-size=20B cardinality=396
 |  |
 |  |--15: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))]
 |  |  |
 |  |  05:AGGREGATE [STREAMING]
 |  |  |  output: count(*)
 |  |  |  group by: substr(ca_zip, 1, 5)
+|  |  |  row-size=20B cardinality=3.96K
 |  |  |
 |  |  04:HASH JOIN [INNER JOIN, BROADCAST]
 |  |  |  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
 |  |  |
 |  |  |--13:EXCHANGE [BROADCAST]
 |  |  |  |
 |  |  |  03:SCAN HDFS [tpcds.customer]
 |  |  |     partitions=1/1 files=1 size=12.60MB
 |  |  |     predicates: c_preferred_cust_flag = 'Y'
+|  |  |     row-size=17B cardinality=50.00K
 |  |  |
 |  |  02:SCAN HDFS [tpcds.customer_address]
 |  |     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))]
 |  |
@@ -561,20 +642,25 @@ PLAN-ROOT SINK
 |     partitions=1/1 files=1 size=5.25MB
 |     predicates: substr(ca_zip, 1, 5) IN ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779', '91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797', '28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068', '10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053', '77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425', '19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835', '70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360', '48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', 
 '80015', '42961', '63982', '21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447', '57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792', '11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561', '28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458', '28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648', '30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799', '60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036', '88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005'
 , '18384', '76615', '11635', '38177', '55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121', '77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560', '41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619', '25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010', '18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705', '50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928', '97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047', '94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '2305
 4', '70470', '72008', '49247', '91911', '69998', '20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744', '36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309', '80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622', '68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936', '33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
 |     runtime filters: RF004 -> substr(ca_zip, 1, 5)
+|     row-size=17B cardinality=5.00K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF002 <- store.s_store_sk
+|  row-size=45B cardinality=84.40K
 |
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     runtime filters: RF000 -> substr(store.s_zip, 1, 2)
+|     row-size=37B cardinality=12
 |
 00:SCAN HDFS [tpcds.store_sales]
+   partition predicates: ss_sold_date_sk >= 2452276, ss_sold_date_sk <= 2452366
    partitions=90/1824 files=90 size=10.32MB
    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
@@ -586,20 +672,24 @@ PLAN-ROOT SINK
 |
 11:TOP-N [LIMIT=100]
 |  order by: s_store_name ASC
+|  row-size=32B cardinality=8
 |
 19:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_net_profit)
 |  group by: s_store_name
+|  row-size=32B cardinality=8
 |
 18:EXCHANGE [HASH(s_store_name)]
 |
 10:AGGREGATE [STREAMING]
 |  output: sum(ss_net_profit)
 |  group by: s_store_name
+|  row-size=32B cardinality=8
 |
 09:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: substr(store.s_zip, 1, 2) = substr(substr(ca_zip, 1, 5), 1, 2)
 |  runtime filters: RF000 <- substr(substr(ca_zip, 1, 5), 1, 2)
+|  row-size=65B cardinality=84.40K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -610,6 +700,7 @@ PLAN-ROOT SINK
 |  07:HASH JOIN [RIGHT SEMI JOIN, PARTITIONED]
 |  |  hash predicates: substr(ca_zip, 1, 5) = substr(ca_zip, 1, 5)
 |  |  runtime filters: RF004 <- substr(ca_zip, 1, 5)
+|  |  row-size=20B cardinality=396
 |  |
 |  |--JOIN BUILD
 |  |  |  join-table-id=01 plan-id=02 cohort-id=02
@@ -619,16 +710,19 @@ PLAN-ROOT SINK
 |  |  |  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))]
 |  |  |
 |  |  05:AGGREGATE [STREAMING]
 |  |  |  output: count(*)
 |  |  |  group by: substr(ca_zip, 1, 5)
+|  |  |  row-size=20B cardinality=3.96K
 |  |  |
 |  |  04:HASH JOIN [INNER JOIN, BROADCAST]
 |  |  |  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
 |  |  |
 |  |  |--JOIN BUILD
 |  |  |  |  join-table-id=02 plan-id=03 cohort-id=03
@@ -639,10 +733,12 @@ PLAN-ROOT SINK
 |  |  |  03:SCAN HDFS [tpcds.customer]
 |  |  |     partitions=1/1 files=1 size=12.60MB
 |  |  |     predicates: c_preferred_cust_flag = 'Y'
+|  |  |     row-size=17B cardinality=50.00K
 |  |  |
 |  |  02:SCAN HDFS [tpcds.customer_address]
 |  |     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))]
 |  |
@@ -650,10 +746,12 @@ PLAN-ROOT SINK
 |     partitions=1/1 files=1 size=5.25MB
 |     predicates: substr(ca_zip, 1, 5) IN ('89436', '30868', '65085', '22977', '83927', '77557', '58429', '40697', '80614', '10502', '32779', '91137', '61265', '98294', '17921', '18427', '21203', '59362', '87291', '84093', '21505', '17184', '10866', '67898', '25797', '28055', '18377', '80332', '74535', '21757', '29742', '90885', '29898', '17819', '40811', '25990', '47513', '89531', '91068', '10391', '18846', '99223', '82637', '41368', '83658', '86199', '81625', '26696', '89338', '88425', '32200', '81427', '19053', '77471', '36610', '99823', '43276', '41249', '48584', '83550', '82276', '18842', '78890', '14090', '38123', '40936', '34425', '19850', '43286', '80072', '79188', '54191', '11395', '50497', '84861', '90733', '21068', '57666', '37119', '25004', '57835', '70067', '62878', '95806', '19303', '18840', '19124', '29785', '16737', '16022', '49613', '89977', '68310', '60069', '98360', '48649', '39050', '41793', '25002', '27413', '39736', '47208', '16515', '94808', '57648', '15009', 
 '80015', '42961', '63982', '21744', '71853', '81087', '67468', '34175', '64008', '20261', '11201', '51799', '48043', '45645', '61163', '48375', '36447', '57042', '21218', '41100', '89951', '22745', '35851', '83326', '61125', '78298', '80752', '49858', '52940', '96976', '63792', '11376', '53582', '18717', '90226', '50530', '94203', '99447', '27670', '96577', '57856', '56372', '16165', '23427', '54561', '28806', '44439', '22926', '30123', '61451', '92397', '56979', '92309', '70873', '13355', '21801', '46346', '37562', '56458', '28286', '47306', '99555', '69399', '26234', '47546', '49661', '88601', '35943', '39936', '25632', '24611', '44166', '56648', '30379', '59785', '11110', '14329', '93815', '52226', '71381', '13842', '25612', '63294', '14664', '21077', '82626', '18799', '60915', '81020', '56447', '76619', '11433', '13414', '42548', '92713', '70467', '30884', '47484', '16072', '38936', '13036', '88376', '45539', '35901', '19506', '65690', '73957', '71850', '49231', '14276', '20005'
 , '18384', '76615', '11635', '38177', '55607', '41369', '95447', '58581', '58149', '91946', '33790', '76232', '75692', '95464', '22246', '51061', '56692', '53121', '77209', '15482', '10688', '14868', '45907', '73520', '72666', '25734', '17959', '24677', '66446', '94627', '53535', '15560', '41967', '69297', '11929', '59403', '33283', '52232', '57350', '43933', '40921', '36635', '10827', '71286', '19736', '80619', '25251', '95042', '15526', '36496', '55854', '49124', '81980', '35375', '49157', '63512', '28944', '14946', '36503', '54010', '18767', '23969', '43905', '66979', '33113', '21286', '58471', '59080', '13395', '79144', '70373', '67031', '38360', '26705', '50906', '52406', '26066', '73146', '15884', '31897', '30045', '61068', '45550', '92454', '13376', '14354', '19770', '22928', '97790', '50723', '46081', '30202', '14410', '20223', '88500', '67298', '13261', '14172', '81410', '93578', '83583', '46047', '94167', '82564', '21156', '15799', '86709', '37931', '74703', '83103', '2305
 4', '70470', '72008', '49247', '91911', '69998', '20961', '70070', '63197', '54853', '88191', '91830', '49521', '19454', '81450', '89091', '62378', '25683', '61869', '51744', '36580', '85778', '36871', '48121', '28810', '83712', '45486', '67393', '26935', '42393', '20132', '55349', '86057', '21309', '80218', '10094', '11357', '48819', '39734', '40758', '30432', '21204', '29467', '30214', '61024', '55307', '74621', '11622', '68908', '33032', '52868', '99194', '99900', '84936', '69036', '99149', '45013', '32895', '59004', '32322', '14933', '32936', '33562', '72550', '27385', '58049', '58200', '16808', '21360', '32961', '18586', '79307', '15492')
 |     runtime filters: RF004 -> substr(ca_zip, 1, 5)
+|     row-size=17B cardinality=5.00K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF002 <- store.s_store_sk
+|  row-size=45B cardinality=84.40K
 |
 |--JOIN BUILD
 |  |  join-table-id=03 plan-id=04 cohort-id=01
@@ -664,10 +762,13 @@ PLAN-ROOT SINK
 |  01:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     runtime filters: RF000 -> substr(store.s_zip, 1, 2)
+|     row-size=37B cardinality=12
 |
 00:SCAN HDFS [tpcds.store_sales]
+   partition predicates: ss_sold_date_sk >= 2452276, ss_sold_date_sk <= 2452366
    partitions=90/1824 files=90 size=10.32MB
    runtime filters: RF002 -> store_sales.ss_store_sk
+   row-size=8B cardinality=84.40K
 ====
 # TPCDS-Q19
 select
@@ -713,54 +814,68 @@ PLAN-ROOT SINK
 |
 12:TOP-N [LIMIT=100]
 |  order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
+|  row-size=76B cardinality=24
 |
 11:AGGREGATE [FINALIZE]
 |  output: sum(ss_ext_sales_price)
 |  group by: i_brand, i_brand_id, i_manufact_id, i_manufact
+|  row-size=76B cardinality=24
 |
 10:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_store_sk = s_store_sk
 |  other predicates: substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=158B cardinality=24
 |
 |--05:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
+|     row-size=21B cardinality=12
 |
 09:HASH JOIN [INNER JOIN]
 |  hash predicates: ca_address_sk = c_current_addr_sk
 |  runtime filters: RF002 <- c_current_addr_sk
+|  row-size=137B cardinality=24
 |
 |--08:HASH JOIN [INNER JOIN]
 |  |  hash predicates: c_customer_sk = ss_customer_sk
 |  |  runtime filters: RF004 <- ss_customer_sk
+|  |  row-size=116B cardinality=24
 |  |
 |  |--07:HASH JOIN [INNER JOIN]
 |  |  |  hash predicates: ss_sold_date_sk = d_date_sk
 |  |  |  runtime filters: RF006 <- d_date_sk
+|  |  |  row-size=108B cardinality=24
 |  |  |
 |  |  |--00:SCAN HDFS [tpcds.date_dim]
 |  |  |     partitions=1/1 files=1 size=9.84MB
 |  |  |     predicates: d_year = 1999, d_moy = 11, tpcds.date_dim.d_date_sk <= 2451513, tpcds.date_dim.d_date_sk >= 2451484
+|  |  |     row-size=12B cardinality=50
 |  |  |
 |  |  06:HASH JOIN [INNER JOIN]
 |  |  |  hash predicates: ss_item_sk = i_item_sk
 |  |  |  runtime filters: RF008 <- i_item_sk
+|  |  |  row-size=96B cardinality=873
 |  |  |
 |  |  |--02:SCAN HDFS [tpcds.item]
 |  |  |     partitions=1/1 files=1 size=4.82MB
 |  |  |     predicates: i_manager_id = 7
+|  |  |     row-size=72B cardinality=182
 |  |  |
 |  |  01:SCAN HDFS [tpcds.store_sales]
+|  |     partition predicates: ss_sold_date_sk >= 2451484, ss_sold_date_sk <= 2451513
 |  |     partitions=30/1824 files=30 size=10.55MB
 |  |     runtime filters: RF000 -> ss_store_sk, RF006 -> ss_sold_date_sk, RF008 -> ss_item_sk
+|  |     row-size=24B cardinality=86.28K
 |  |
 |  03:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
 |     runtime filters: RF004 -> c_customer_sk
+|     row-size=8B cardinality=100.00K
 |
 04:SCAN HDFS [tpcds.customer_address]
    partitions=1/1 files=1 size=5.25MB
    runtime filters: RF002 -> ca_address_sk
+   row-size=21B cardinality=50.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=54.13MB Threads=16
 Per-Host Resource Estimates: Memory=360MB
@@ -772,73 +887,88 @@ PLAN-ROOT SINK
 |
 12:TOP-N [LIMIT=100]
 |  order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
+|  row-size=76B cardinality=24
 |
 21:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: i_brand, i_brand_id, i_manufact_id, i_manufact
+|  row-size=76B cardinality=24
 |
 20:EXCHANGE [HASH(i_brand,i_brand_id,i_manufact_id,i_manufact)]
 |
 11:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: i_brand, i_brand_id, i_manufact_id, i_manufact
+|  row-size=76B cardinality=24
 |
 10:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  other predicates: substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=158B cardinality=24
 |
 |--19:EXCHANGE [BROADCAST]
 |  |
 |  05:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
+|     row-size=21B cardinality=12
 |
 09:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: c_current_addr_sk = ca_address_sk
 |  runtime filters: RF002 <- ca_address_sk
+|  row-size=137B cardinality=24
 |
 |--18:EXCHANGE [HASH(ca_address_sk)]
 |  |
 |  04:SCAN HDFS [tpcds.customer_address]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=21B cardinality=50.00K
 |
 17:EXCHANGE [HASH(c_current_addr_sk)]
 |
 08:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF004 <- c_customer_sk
+|  row-size=116B cardinality=24
 |
 |--16:EXCHANGE [HASH(c_customer_sk)]
 |  |
 |  03:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
 |     runtime filters: RF002 -> c_current_addr_sk
+|     row-size=8B cardinality=100.00K
 |
 15:EXCHANGE [HASH(ss_customer_sk)]
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=108B cardinality=24
 |
 |--14:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1999, d_moy = 11, tpcds.date_dim.d_date_sk <= 2451513, tpcds.date_dim.d_date_sk >= 2451484
+|     row-size=12B cardinality=50
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF008 <- i_item_sk
+|  row-size=96B cardinality=873
 |
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: i_manager_id = 7
+|     row-size=72B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
+   partition predicates: ss_sold_date_sk >= 2451484, ss_sold_date_sk <= 2451513
    partitions=30/1824 files=30 size=10.55MB
    runtime filters: RF000 -> ss_store_sk, RF004 -> ss_customer_sk, RF006 -> ss_sold_date_sk, RF008 -> ss_item_sk
+   row-size=24B cardinality=86.28K
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=108.27MB Threads=19
 Per-Host Resource Estimates: Memory=303MB
@@ -850,21 +980,25 @@ PLAN-ROOT SINK
 |
 12:TOP-N [LIMIT=100]
 |  order by: sum(ss_ext_sales_price) DESC, i_brand ASC, i_brand_id ASC, i_manufact_id ASC, i_manufact ASC
+|  row-size=76B cardinality=24
 |
 21:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: i_brand, i_brand_id, i_manufact_id, i_manufact
+|  row-size=76B cardinality=24
 |
 20:EXCHANGE [HASH(i_brand,i_brand_id,i_manufact_id,i_manufact)]
 |
 11:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: i_brand, i_brand_id, i_manufact_id, i_manufact
+|  row-size=76B cardinality=24
 |
 10:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  other predicates: substr(ca_zip, 1, 5) != substr(s_zip, 1, 5)
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=158B cardinality=24
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -874,10 +1008,12 @@ PLAN-ROOT SINK
 |  |
 |  05:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
+|     row-size=21B cardinality=12
 |
 09:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: c_current_addr_sk = ca_address_sk
 |  runtime filters: RF002 <- ca_address_sk
+|  row-size=137B cardinality=24
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -887,12 +1023,14 @@ PLAN-ROOT SINK
 |  |
 |  04:SCAN HDFS [tpcds.customer_address]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=21B cardinality=50.00K
 |
 17:EXCHANGE [HASH(c_current_addr_sk)]
 |
 08:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF004 <- c_customer_sk
+|  row-size=116B cardinality=24
 |
 |--JOIN BUILD
 |  |  join-table-id=02 plan-id=03 cohort-id=01
@@ -903,12 +1041,14 @@ PLAN-ROOT SINK
 |  03:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
 |     runtime filters: RF002 -> c_current_addr_sk
+|     row-size=8B cardinality=100.00K
 |
 15:EXCHANGE [HASH(ss_customer_sk)]
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=108B cardinality=24
 |
 |--JOIN BUILD
 |  |  join-table-id=03 plan-id=04 cohort-id=01
@@ -919,10 +1059,12 @@ PLAN-ROOT SINK
 |  00:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1999, d_moy = 11, tpcds.date_dim.d_date_sk <= 2451513, tpcds.date_dim.d_date_sk >= 2451484
+|     row-size=12B cardinality=50
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF008 <- i_item_sk
+|  row-size=96B cardinality=873
 |
 |--JOIN BUILD
 |  |  join-table-id=04 plan-id=05 cohort-id=01
@@ -933,10 +1075,13 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: i_manager_id = 7
+|     row-size=72B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
+   partition predicates: ss_sold_date_sk >= 2451484, ss_sold_date_sk <= 2451513
    partitions=30/1824 files=30 size=10.55MB
    runtime filters: RF000 -> ss_store_sk, RF004 -> ss_customer_sk, RF006 -> ss_sold_date_sk, RF008 -> ss_item_sk
+   row-size=24B cardinality=86.28K
 ====
 # TPCDS-Q27
 select
@@ -976,45 +1121,56 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: i_item_id ASC, s_state ASC
+|  row-size=74B cardinality=100
 |
 09:AGGREGATE [FINALIZE]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
 |  group by: i_item_id, s_state
+|  row-size=74B cardinality=8.85K
 |
 08:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF000 <- i_item_sk
+|  row-size=150B cardinality=263.34K
 |
 |--04:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
+|     row-size=36B cardinality=18.00K
 |
 07:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF002 <- s_store_sk
+|  row-size=114B cardinality=263.34K
 |
 |--03:SCAN HDFS [tpcds.store]
 |     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]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
+|  row-size=96B cardinality=263.34K
 |
 |--01:SCAN HDFS [tpcds.customer_demographics]
 |     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
 |
 05:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=44B cardinality=589.03K
 |
 |--02:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=8B cardinality=373
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=54.26MB Threads=12
 Per-Host Resource Estimates: Memory=460MB
@@ -1026,59 +1182,71 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: i_item_id ASC, s_state ASC
+|  row-size=74B cardinality=100
 |
 16: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)]
 |
 09:AGGREGATE [STREAMING]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
 |  group by: i_item_id, s_state
+|  row-size=74B cardinality=8.85K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF000 <- i_item_sk
+|  row-size=150B cardinality=263.34K
 |
 |--14:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
+|     row-size=36B cardinality=18.00K
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF002 <- s_store_sk
+|  row-size=114B cardinality=263.34K
 |
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.store]
 |     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]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
+|  row-size=96B cardinality=263.34K
 |
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpcds.customer_demographics]
 |     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
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=44B cardinality=589.03K
 |
 |--11:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=8B cardinality=373
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
@@ -1090,20 +1258,24 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100]
 |  order by: i_item_id ASC, s_state ASC
+|  row-size=74B cardinality=100
 |
 16: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)]
 |
 09:AGGREGATE [STREAMING]
 |  output: avg(ss_quantity), avg(ss_list_price), avg(ss_coupon_amt), avg(ss_sales_price)
 |  group by: i_item_id, s_state
+|  row-size=74B cardinality=8.85K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF000 <- i_item_sk
+|  row-size=150B cardinality=263.34K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -1113,10 +1285,12 @@ PLAN-ROOT SINK
 |  |
 |  04:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
+|     row-size=36B cardinality=18.00K
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF002 <- s_store_sk
+|  row-size=114B cardinality=263.34K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -1127,10 +1301,12 @@ PLAN-ROOT SINK
 |  03:SCAN HDFS [tpcds.store]
 |     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]
 |  hash predicates: ss_cdemo_sk = cd_demo_sk
 |  runtime filters: RF004 <- cd_demo_sk
+|  row-size=96B cardinality=263.34K
 |
 |--JOIN BUILD
 |  |  join-table-id=02 plan-id=03 cohort-id=01
@@ -1141,10 +1317,12 @@ PLAN-ROOT SINK
 |  01:SCAN HDFS [tpcds.customer_demographics]
 |     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
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF006 <- d_date_sk
+|  row-size=44B cardinality=589.03K
 |
 |--JOIN BUILD
 |  |  join-table-id=03 plan-id=04 cohort-id=01
@@ -1155,10 +1333,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=8B cardinality=373
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
 ====
 # TPCDS-Q34
 select
@@ -1211,47 +1391,58 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100000]
 |  order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
+|  row-size=80B cardinality=31.53K
 |
 09:HASH JOIN [INNER JOIN]
 |  hash predicates: c_customer_sk = ss_customer_sk
 |  runtime filters: RF000 <- ss_customer_sk
+|  row-size=88B cardinality=31.53K
 |
 |--07:AGGREGATE [FINALIZE]
 |  |  output: count(*)
 |  |  group by: ss_ticket_number, ss_customer_sk
 |  |  having: count(*) <= 20, count(*) >= 15
+|  |  row-size=20B cardinality=31.53K
 |  |
 |  06:HASH JOIN [INNER JOIN]
 |  |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  |  runtime filters: RF002 <- store.s_store_sk
+|  |  row-size=101B cardinality=31.53K
 |  |
 |  |--02:SCAN HDFS [tpcds.store]
 |  |     partitions=1/1 files=1 size=3.08KB
 |  |     predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
+|  |     row-size=33B cardinality=12
 |  |
 |  05:HASH JOIN [INNER JOIN]
 |  |  hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
 |  |  runtime filters: RF004 <- date_dim.d_date_sk
+|  |  row-size=68B cardinality=31.53K
 |  |
 |  |--01:SCAN HDFS [tpcds.date_dim]
 |  |     partitions=1/1 files=1 size=9.84MB
 |  |     predicates: date_dim.d_year IN (1998, 1999, 2000), (date_dim.d_dom >= 1 AND date_dim.d_dom <= 3 OR date_dim.d_dom >= 25 AND date_dim.d_dom <= 28)
+|  |     row-size=12B cardinality=354
 |  |
 |  04:HASH JOIN [INNER JOIN]
 |  |  hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
 |  |  runtime filters: RF006 <- household_demographics.hd_demo_sk
+|  |  row-size=56B cardinality=162.45K
 |  |
 |  |--03:SCAN HDFS [tpcds.household_demographics]
 |  |     partitions=1/1 files=1 size=148.10KB
 |  |     predicates: household_demographics.hd_vehicle_count > 0, household_demographics.hd_buy_potential IN ('>10000', 'unknown'), (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2
+|  |     row-size=32B cardinality=416
 |  |
 |  00:SCAN HDFS [tpcds.store_sales]
 |     partitions=1824/1824 files=1824 size=346.60MB
 |     runtime filters: RF002 -> store_sales.ss_store_sk, RF004 -> store_sales.ss_sold_date_sk, RF006 -> store_sales.ss_hdemo_sk
+|     row-size=24B cardinality=2.88M
 |
 08:SCAN HDFS [tpcds.customer]
    partitions=1/1 files=1 size=12.60MB
    runtime filters: RF000 -> c_customer_sk
+   row-size=68B cardinality=100.00K
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=47.51MB Threads=13
 Per-Host Resource Estimates: Memory=337MB
@@ -1263,15 +1454,18 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100000]
 |  order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
+|  row-size=80B cardinality=31.53K
 |
 09:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF000 <- c_customer_sk
+|  row-size=88B cardinality=31.53K
 |
 |--17:EXCHANGE [HASH(c_customer_sk)]
 |  |
 |  08:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
+|     row-size=68B cardinality=100.00K
 |
 16:EXCHANGE [HASH(ss_customer_sk)]
 |
@@ -1279,46 +1473,55 @@ PLAN-ROOT SINK
 |  output: count:merge(*)
 |  group by: ss_ticket_number, ss_customer_sk
 |  having: count(*) <= 20, count(*) >= 15
+|  row-size=20B cardinality=31.53K
 |
 14:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk)]
 |
 07:AGGREGATE [STREAMING]
 |  output: count(*)
 |  group by: ss_ticket_number, ss_customer_sk
+|  row-size=20B cardinality=31.53K
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF002 <- store.s_store_sk
+|  row-size=101B cardinality=31.53K
 |
 |--13:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
+|     row-size=33B cardinality=12
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
 |  runtime filters: RF004 <- date_dim.d_date_sk
+|  row-size=68B cardinality=31.53K
 |
 |--12:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: date_dim.d_year IN (1998, 1999, 2000), (date_dim.d_dom >= 1 AND date_dim.d_dom <= 3 OR date_dim.d_dom >= 25 AND date_dim.d_dom <= 28)
+|     row-size=12B cardinality=354
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
 |  runtime filters: RF006 <- household_demographics.hd_demo_sk
+|  row-size=56B cardinality=162.45K
 |
 |--11:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.household_demographics]
 |     partitions=1/1 files=1 size=148.10KB
 |     predicates: household_demographics.hd_vehicle_count > 0, household_demographics.hd_buy_potential IN ('>10000', 'unknown'), (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2
+|     row-size=32B cardinality=416
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> tpcds.store_sales.ss_customer_sk, RF002 -> store_sales.ss_store_sk, RF004 -> store_sales.ss_sold_date_sk, RF006 -> store_sales.ss_hdemo_sk
+   row-size=24B cardinality=2.88M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=87.52MB Threads=15
 Per-Host Resource Estimates: Memory=280MB
@@ -1330,10 +1533,12 @@ PLAN-ROOT SINK
 |
 10:TOP-N [LIMIT=100000]
 |  order by: c_last_name ASC, c_first_name ASC, c_salutation ASC, c_preferred_cust_flag DESC
+|  row-size=80B cardinality=31.53K
 |
 09:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF000 <- c_customer_sk
+|  row-size=88B cardinality=31.53K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -1343,6 +1548,7 @@ PLAN-ROOT SINK
 |  |
 |  08:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
+|     row-size=68B cardinality=100.00K
 |
 16:EXCHANGE [HASH(ss_customer_sk)]
 |
@@ -1350,16 +1556,19 @@ PLAN-ROOT SINK
 |  output: count:merge(*)
 |  group by: ss_ticket_number, ss_customer_sk
 |  having: count(*) <= 20, count(*) >= 15
+|  row-size=20B cardinality=31.53K
 |
 14:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk)]
 |
 07:AGGREGATE [STREAMING]
 |  output: count(*)
 |  group by: ss_ticket_number, ss_customer_sk
+|  row-size=20B cardinality=31.53K
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF002 <- store.s_store_sk
+|  row-size=101B cardinality=31.53K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -1370,10 +1579,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: store.s_county IN ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County')
+|     row-size=33B cardinality=12
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
 |  runtime filters: RF004 <- date_dim.d_date_sk
+|  row-size=68B cardinality=31.53K
 |
 |--JOIN BUILD
 |  |  join-table-id=02 plan-id=03 cohort-id=01
@@ -1384,10 +1595,12 @@ PLAN-ROOT SINK
 |  01:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: date_dim.d_year IN (1998, 1999, 2000), (date_dim.d_dom >= 1 AND date_dim.d_dom <= 3 OR date_dim.d_dom >= 25 AND date_dim.d_dom <= 28)
+|     row-size=12B cardinality=354
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
 |  runtime filters: RF006 <- household_demographics.hd_demo_sk
+|  row-size=56B cardinality=162.45K
 |
 |--JOIN BUILD
 |  |  join-table-id=03 plan-id=04 cohort-id=01
@@ -1398,10 +1611,12 @@ PLAN-ROOT SINK
 |  03:SCAN HDFS [tpcds.household_demographics]
 |     partitions=1/1 files=1 size=148.10KB
 |     predicates: household_demographics.hd_vehicle_count > 0, household_demographics.hd_buy_potential IN ('>10000', 'unknown'), (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2
+|     row-size=32B cardinality=416
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> tpcds.store_sales.ss_customer_sk, RF002 -> store_sales.ss_store_sk, RF004 -> store_sales.ss_sold_date_sk, RF006 -> store_sales.ss_hdemo_sk
+   row-size=24B cardinality=2.88M
 ====
 # TPCDS-Q42
 select
@@ -1436,30 +1651,37 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
+|  row-size=42B cardinality=100
 |
 05:AGGREGATE [FINALIZE]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_category_id, item.i_category
+|  row-size=42B cardinality=1.73K
 |
 04:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=62B cardinality=1.73K
 |
 |--00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_year = 1998, dt.d_moy = 12
+|     row-size=12B cardinality=108
 |
 03:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=50B cardinality=29.12K
 |
 |--02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manager_id = 1
+|     row-size=34B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=33.81MB Threads=8
 Per-Host Resource Estimates: Memory=234MB
@@ -1471,40 +1693,48 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
+|  row-size=42B cardinality=100
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_category_id, item.i_category
+|  row-size=42B cardinality=1.73K
 |
 09:EXCHANGE [HASH(dt.d_year,item.i_category_id,item.i_category)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_category_id, item.i_category
+|  row-size=42B cardinality=1.73K
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=62B cardinality=1.73K
 |
 |--08:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_year = 1998, dt.d_moy = 12
+|     row-size=12B cardinality=108
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=50B cardinality=29.12K
 |
 |--07:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manager_id = 1
+|     row-size=34B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=67.62MB Threads=9
 Per-Host Resource Estimates: Memory=164MB
@@ -1516,20 +1746,24 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: sum(ss_ext_sales_price) DESC, dt.d_year ASC, item.i_category_id ASC, item.i_category ASC
+|  row-size=42B cardinality=100
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_category_id, item.i_category
+|  row-size=42B cardinality=1.73K
 |
 09:EXCHANGE [HASH(dt.d_year,item.i_category_id,item.i_category)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_category_id, item.i_category
+|  row-size=42B cardinality=1.73K
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=62B cardinality=1.73K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -1540,10 +1774,12 @@ PLAN-ROOT SINK
 |  00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_year = 1998, dt.d_moy = 12
+|     row-size=12B cardinality=108
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=50B cardinality=29.12K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -1554,10 +1790,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manager_id = 1
+|     row-size=34B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ====
 # TPCDS-Q43
 select
@@ -1600,30 +1838,37 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
+|  row-size=156B cardinality=48
 |
 05:AGGREGATE [FINALIZE]
 |  output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
 |  group by: s_store_name, s_store_id
+|  row-size=156B cardinality=48
 |
 04:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=91B cardinality=589.03K
 |
 |--02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: s_gmt_offset = -5
+|     row-size=52B cardinality=12
 |
 03:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
+|  row-size=39B cardinality=589.03K
 |
 |--00:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=27B cardinality=373
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> ss_store_sk, RF002 -> ss_sold_date_sk
+   row-size=12B cardinality=2.88M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=25.82MB Threads=8
 Per-Host Resource Estimates: Memory=234MB
@@ -1635,40 +1880,48 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
+|  row-size=156B cardinality=48
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
 |  group by: s_store_name, s_store_id
+|  row-size=156B cardinality=48
 |
 09:EXCHANGE [HASH(s_store_name,s_store_id)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
 |  group by: s_store_name, s_store_id
+|  row-size=156B cardinality=48
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=91B cardinality=589.03K
 |
 |--08:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: s_gmt_offset = -5
+|     row-size=52B cardinality=12
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
+|  row-size=39B cardinality=589.03K
 |
 |--07:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=27B cardinality=373
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> ss_store_sk, RF002 -> ss_sold_date_sk
+   row-size=12B cardinality=2.88M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=51.64MB Threads=9
 Per-Host Resource Estimates: Memory=164MB
@@ -1680,20 +1933,24 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: s_store_name ASC, s_store_id ASC, sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) ASC, sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) ASC
+|  row-size=156B cardinality=48
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum:merge(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
 |  group by: s_store_name, s_store_id
+|  row-size=156B cardinality=48
 |
 09:EXCHANGE [HASH(s_store_name,s_store_id)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END)
 |  group by: s_store_name, s_store_id
+|  row-size=156B cardinality=48
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=91B cardinality=589.03K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -1704,10 +1961,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: s_gmt_offset = -5
+|     row-size=52B cardinality=12
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
+|  row-size=39B cardinality=589.03K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -1718,10 +1977,12 @@ PLAN-ROOT SINK
 |  00:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: d_year = 1998
+|     row-size=27B cardinality=373
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> ss_store_sk, RF002 -> ss_sold_date_sk
+   row-size=12B cardinality=2.88M
 ====
 # TPCDS-Q46
 select
@@ -1781,61 +2042,76 @@ PLAN-ROOT SINK
 |
 14:TOP-N [LIMIT=100]
 |  order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
+|  row-size=118B cardinality=100
 |
 13:HASH JOIN [INNER JOIN]
 |  hash predicates: customer.c_current_addr_sk = current_addr.ca_address_sk
 |  other predicates: current_addr.ca_city != ca_city
 |  runtime filters: RF000 <- current_addr.ca_address_sk
+|  row-size=138B cardinality=230.45K
 |
 |--11:SCAN HDFS [tpcds.customer_address current_addr]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=25B cardinality=50.00K
 |
 12:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF002 <- c_customer_sk
+|  row-size=113B cardinality=230.45K
 |
 |--10:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
 |     runtime filters: RF000 -> customer.c_current_addr_sk
+|     row-size=44B cardinality=100.00K
 |
 09:AGGREGATE [FINALIZE]
 |  output: sum(ss_coupon_amt), sum(ss_net_profit)
 |  group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
+|  row-size=69B cardinality=230.45K
 |
 08:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_addr_sk = customer_address.ca_address_sk
 |  runtime filters: RF004 <- customer_address.ca_address_sk
+|  row-size=107B cardinality=230.45K
 |
 |--04:SCAN HDFS [tpcds.customer_address]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=25B cardinality=50.00K
 |
 07:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF006 <- store.s_store_sk
+|  row-size=83B cardinality=230.45K
 |
 |--02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: store.s_city IN ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
+|     row-size=23B cardinality=12
 |
 06:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
 |  runtime filters: RF008 <- date_dim.d_date_sk
+|  row-size=60B cardinality=230.45K
 |
 |--01:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: date_dim.d_dow IN (6, 0), date_dim.d_year IN (1999, 2000, 2001)
+|     row-size=12B cardinality=598
 |
 05:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
 |  runtime filters: RF010 <- household_demographics.hd_demo_sk
+|  row-size=48B cardinality=702.92K
 |
 |--03:SCAN HDFS [tpcds.household_demographics]
 |     partitions=1/1 files=1 size=148.10KB
 |     predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
+|     row-size=12B cardinality=1.80K
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF002 -> tpcds.store_sales.ss_customer_sk, RF004 -> store_sales.ss_addr_sk, RF006 -> store_sales.ss_store_sk, RF008 -> store_sales.ss_sold_date_sk, RF010 -> store_sales.ss_hdemo_sk
+   row-size=36B cardinality=2.88M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=80.20MB Threads=17
 Per-Host Resource Estimates: Memory=412MB
@@ -1847,81 +2123,97 @@ PLAN-ROOT SINK
 |
 14:TOP-N [LIMIT=100]
 |  order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
+|  row-size=118B cardinality=100
 |
 13:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: customer.c_current_addr_sk = current_addr.ca_address_sk
 |  other predicates: current_addr.ca_city != ca_city
 |  runtime filters: RF000 <- current_addr.ca_address_sk
+|  row-size=138B cardinality=230.45K
 |
 |--23:EXCHANGE [BROADCAST]
 |  |
 |  11:SCAN HDFS [tpcds.customer_address current_addr]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=25B cardinality=50.00K
 |
 12:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF002 <- c_customer_sk
+|  row-size=113B cardinality=230.45K
 |
 |--22:EXCHANGE [HASH(c_customer_sk)]
 |  |
 |  10:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
 |     runtime filters: RF000 -> customer.c_current_addr_sk
+|     row-size=44B cardinality=100.00K
 |
 21:EXCHANGE [HASH(ss_customer_sk)]
 |
 20:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_coupon_amt), sum:merge(ss_net_profit)
 |  group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
+|  row-size=69B cardinality=230.45K
 |
 19:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city)]
 |
 09:AGGREGATE [STREAMING]
 |  output: sum(ss_coupon_amt), sum(ss_net_profit)
 |  group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
+|  row-size=69B cardinality=230.45K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_addr_sk = customer_address.ca_address_sk
 |  runtime filters: RF004 <- customer_address.ca_address_sk
+|  row-size=107B cardinality=230.45K
 |
 |--18:EXCHANGE [BROADCAST]
 |  |
 |  04:SCAN HDFS [tpcds.customer_address]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=25B cardinality=50.00K
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF006 <- store.s_store_sk
+|  row-size=83B cardinality=230.45K
 |
 |--17:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: store.s_city IN ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
+|     row-size=23B cardinality=12
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
 |  runtime filters: RF008 <- date_dim.d_date_sk
+|  row-size=60B cardinality=230.45K
 |
 |--16:EXCHANGE [BROADCAST]
 |  |
 |  01:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: date_dim.d_dow IN (6, 0), date_dim.d_year IN (1999, 2000, 2001)
+|     row-size=12B cardinality=598
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
 |  runtime filters: RF010 <- household_demographics.hd_demo_sk
+|  row-size=48B cardinality=702.92K
 |
 |--15:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.household_demographics]
 |     partitions=1/1 files=1 size=148.10KB
 |     predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
+|     row-size=12B cardinality=1.80K
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF002 -> tpcds.store_sales.ss_customer_sk, RF004 -> store_sales.ss_addr_sk, RF006 -> store_sales.ss_store_sk, RF008 -> store_sales.ss_sold_date_sk, RF010 -> store_sales.ss_hdemo_sk
+   row-size=36B cardinality=2.88M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=143.02MB Threads=19
 Per-Host Resource Estimates: Memory=361MB
@@ -1933,11 +2225,13 @@ PLAN-ROOT SINK
 |
 14:TOP-N [LIMIT=100]
 |  order by: c_last_name ASC, c_first_name ASC, ca_city ASC, bought_city ASC, ss_ticket_number ASC
+|  row-size=118B cardinality=100
 |
 13:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: customer.c_current_addr_sk = current_addr.ca_address_sk
 |  other predicates: current_addr.ca_city != ca_city
 |  runtime filters: RF000 <- current_addr.ca_address_sk
+|  row-size=138B cardinality=230.45K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -1947,10 +2241,12 @@ PLAN-ROOT SINK
 |  |
 |  11:SCAN HDFS [tpcds.customer_address current_addr]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=25B cardinality=50.00K
 |
 12:HASH JOIN [INNER JOIN, PARTITIONED]
 |  hash predicates: ss_customer_sk = c_customer_sk
 |  runtime filters: RF002 <- c_customer_sk
+|  row-size=113B cardinality=230.45K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -1961,22 +2257,26 @@ PLAN-ROOT SINK
 |  10:SCAN HDFS [tpcds.customer]
 |     partitions=1/1 files=1 size=12.60MB
 |     runtime filters: RF000 -> customer.c_current_addr_sk
+|     row-size=44B cardinality=100.00K
 |
 21:EXCHANGE [HASH(ss_customer_sk)]
 |
 20:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_coupon_amt), sum:merge(ss_net_profit)
 |  group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
+|  row-size=69B cardinality=230.45K
 |
 19:EXCHANGE [HASH(ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city)]
 |
 09:AGGREGATE [STREAMING]
 |  output: sum(ss_coupon_amt), sum(ss_net_profit)
 |  group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
+|  row-size=69B cardinality=230.45K
 |
 08:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_addr_sk = customer_address.ca_address_sk
 |  runtime filters: RF004 <- customer_address.ca_address_sk
+|  row-size=107B cardinality=230.45K
 |
 |--JOIN BUILD
 |  |  join-table-id=02 plan-id=03 cohort-id=01
@@ -1986,10 +2286,12 @@ PLAN-ROOT SINK
 |  |
 |  04:SCAN HDFS [tpcds.customer_address]
 |     partitions=1/1 files=1 size=5.25MB
+|     row-size=25B cardinality=50.00K
 |
 07:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_store_sk = store.s_store_sk
 |  runtime filters: RF006 <- store.s_store_sk
+|  row-size=83B cardinality=230.45K
 |
 |--JOIN BUILD
 |  |  join-table-id=03 plan-id=04 cohort-id=01
@@ -2000,10 +2302,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
 |     predicates: store.s_city IN ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville')
+|     row-size=23B cardinality=12
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = date_dim.d_date_sk
 |  runtime filters: RF008 <- date_dim.d_date_sk
+|  row-size=60B cardinality=230.45K
 |
 |--JOIN BUILD
 |  |  join-table-id=04 plan-id=05 cohort-id=01
@@ -2014,10 +2318,12 @@ PLAN-ROOT SINK
 |  01:SCAN HDFS [tpcds.date_dim]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: date_dim.d_dow IN (6, 0), date_dim.d_year IN (1999, 2000, 2001)
+|     row-size=12B cardinality=598
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk
 |  runtime filters: RF010 <- household_demographics.hd_demo_sk
+|  row-size=48B cardinality=702.92K
 |
 |--JOIN BUILD
 |  |  join-table-id=05 plan-id=06 cohort-id=01
@@ -2028,10 +2334,12 @@ PLAN-ROOT SINK
 |  03:SCAN HDFS [tpcds.household_demographics]
 |     partitions=1/1 files=1 size=148.10KB
 |     predicates: (household_demographics.hd_dep_count = 5 OR household_demographics.hd_vehicle_count = 3)
+|     row-size=12B cardinality=1.80K
 |
 00:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF002 -> tpcds.store_sales.ss_customer_sk, RF004 -> store_sales.ss_addr_sk, RF006 -> store_sales.ss_store_sk, RF008 -> store_sales.ss_sold_date_sk, RF010 -> store_sales.ss_hdemo_sk
+   row-size=36B cardinality=2.88M
 ====
 # TPCDS-Q52
 select
@@ -2065,30 +2373,37 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
+|  row-size=52B cardinality=100
 |
 05:AGGREGATE [FINALIZE]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=1.73K
 |
 04:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=72B cardinality=1.73K
 |
 |--00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_year = 1998, dt.d_moy = 12
+|     row-size=12B cardinality=108
 |
 03:HASH JOIN [INNER JOIN]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=60B cardinality=29.12K
 |
 |--02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manager_id = 1
+|     row-size=44B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=33.81MB Threads=8
 Per-Host Resource Estimates: Memory=234MB
@@ -2100,40 +2415,48 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
+|  row-size=52B cardinality=100
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=1.73K
 |
 09:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=1.73K
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=72B cardinality=1.73K
 |
 |--08:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_year = 1998, dt.d_moy = 12
+|     row-size=12B cardinality=108
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=60B cardinality=29.12K
 |
 |--07:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manager_id = 1
+|     row-size=44B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ---- PARALLELPLANS
 Max Per-Host Resource Reservation: Memory=67.62MB Threads=9
 Per-Host Resource Estimates: Memory=164MB
@@ -2145,20 +2468,24 @@ PLAN-ROOT SINK
 |
 06:TOP-N [LIMIT=100]
 |  order by: dt.d_year ASC, sum(ss_ext_sales_price) DESC, item.i_brand_id ASC
+|  row-size=52B cardinality=100
 |
 10:AGGREGATE [FINALIZE]
 |  output: sum:merge(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=1.73K
 |
 09:EXCHANGE [HASH(dt.d_year,item.i_brand,item.i_brand_id)]
 |
 05:AGGREGATE [STREAMING]
 |  output: sum(ss_ext_sales_price)
 |  group by: dt.d_year, item.i_brand, item.i_brand_id
+|  row-size=52B cardinality=1.73K
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_sold_date_sk = dt.d_date_sk
 |  runtime filters: RF000 <- dt.d_date_sk
+|  row-size=72B cardinality=1.73K
 |
 |--JOIN BUILD
 |  |  join-table-id=00 plan-id=01 cohort-id=01
@@ -2169,10 +2496,12 @@ PLAN-ROOT SINK
 |  00:SCAN HDFS [tpcds.date_dim dt]
 |     partitions=1/1 files=1 size=9.84MB
 |     predicates: dt.d_year = 1998, dt.d_moy = 12
+|     row-size=12B cardinality=108
 |
 03:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: store_sales.ss_item_sk = item.i_item_sk
 |  runtime filters: RF002 <- item.i_item_sk
+|  row-size=60B cardinality=29.12K
 |
 |--JOIN BUILD
 |  |  join-table-id=01 plan-id=02 cohort-id=01
@@ -2183,10 +2512,12 @@ PLAN-ROOT SINK
 |  02:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: item.i_manager_id = 1
+|     row-size=44B cardinality=182
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> store_sales.ss_sold_date_sk, RF002 -> store_sales.ss_item_sk
+   row-size=16B cardinality=2.88M
 ====
 # TPCDS-Q53
 select
@@ -2226,37 +2557,46 @@ PLAN-ROOT SINK
 |
 08:TOP-N [LIMIT=100]
 |  order by: sum_sales ASC, i_manufact_id ASC
+|  row-size=20B cardinality=96
 |
 07:AGGREGATE [FINALIZE]
 |  output: sum(ss_sales_price)
 |  group by: i_manufact_id, d_qoy
+|  row-size=24B cardinality=96
 |
 06:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=114B cardinality=96
 |
 |--03:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
+|     row-size=4B cardinality=12
 |
 05:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
+|  row-size=110B cardinality=96
 |
 |--02:SCAN HDFS [tpcds.date_dim]
 |     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
 |
 04:HASH JOIN [INNER JOIN]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF004 <- i_item_sk
+|  row-size=98B cardinality=481
 |
 |--00:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'reference', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
+|     row-size=78B cardinality=3
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    runtime filters: RF000 -> ss_store_sk, RF002 -> ss_sold_date_sk, RF004 -> ss_item_sk
+   row-size=20B cardinality=2.88M
 ---- DISTRIBUTEDPLAN
 Max Per-Host Resource Reservation: Memory=36.76MB Threads=10
 Per-Host Resource Estimates: Memory=269MB
@@ -2268,49 +2608,59 @@ PLAN-ROOT SINK
 |
 08:TOP-N [LIMIT=100]
 |  order by: sum_sales ASC, i_manufact_id ASC
+|  row-size=20B cardinality=96
 |
 13: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)]
 |
 07:AGGREGATE [STREAMING]
 |  output: sum(ss_sales_price)
 |  group by: i_manufact_id, d_qoy
+|  row-size=24B cardinality=96
 |
 06:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_store_sk = s_store_sk
 |  runtime filters: RF000 <- s_store_sk
+|  row-size=114B cardinality=96
 |
 |--11:EXCHANGE [BROADCAST]
 |  |
 |  03:SCAN HDFS [tpcds.store]
 |     partitions=1/1 files=1 size=3.08KB
+|     row-size=4B cardinality=12
 |
 05:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_sold_date_sk = d_date_sk
 |  runtime filters: RF002 <- d_date_sk
+|  row-size=110B cardinality=96
 |
 |--10:EXCHANGE [BROADCAST]
 |  |
 |  02:SCAN HDFS [tpcds.date_dim]
 |     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
 |
 04:HASH JOIN [INNER JOIN, BROADCAST]
 |  hash predicates: ss_item_sk = i_item_sk
 |  runtime filters: RF004 <- i_item_sk
+|  row-size=98B cardinality=481
 |
 |--09:EXCHANGE [BROADCAST]
 |  |
 |  00:SCAN HDFS [tpcds.item]
 |     partitions=1/1 files=1 size=4.82MB
 |     predicates: ((i_category IN ('Books', 'Children', 'Electronics') AND i_class IN ('personal', 'portable', 'reference', 'self-help') AND i_brand IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) OR (i_category IN ('Women', 'Music', 'Men') AND i_class IN ('accessories', 'classical', 'fragrances', 'pants') AND i_brand IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1')))
+|     row-size=78B cardinality=3
 |
 01:SCAN HDFS [tpcds.store_sales]
    partitions=1824/1824 files=1824 size=346.60MB
    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
@@ -2322,20 +2672,24 @@ PLAN-ROOT SINK
 |
 08:TOP-N [LIMIT=100]
 |  order by: sum_sales ASC, i_manufact_id ASC
+|  row-size=20B cardinality=96
 |
 13:AGGREGATE [FINALIZE]
 |  output: sum:merge(s

<TRUNCATED>