From b4e21c2625ed8a2edf29bdcd8f7214490790751e Mon Sep 17 00:00:00 2001 From: qw4990 Date: Fri, 3 Jul 2026 15:09:47 +0800 Subject: [PATCH 1/2] fixup --- pkg/planner/core/joinorder/join_order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/planner/core/joinorder/join_order.go b/pkg/planner/core/joinorder/join_order.go index f390cbb930781..997e093f21f16 100644 --- a/pkg/planner/core/joinorder/join_order.go +++ b/pkg/planner/core/joinorder/join_order.go @@ -572,7 +572,7 @@ func (j *joinOrderGreedy) optimize() (base.LogicalPlan, error) { return nodeWithHint.p, nil } - slices.SortFunc(nodes, func(a, b *Node) int { + slices.SortStableFunc(nodes, func(a, b *Node) int { return cmp.Compare(a.cumCost, b.cumCost) }) From 478d1985c548a964e13251b155207599e2354eb2 Mon Sep 17 00:00:00 2001 From: qw4990 Date: Fri, 3 Jul 2026 16:15:17 +0800 Subject: [PATCH 2/2] fixup --- .../tpcds/testdata/tpcds_suite_out.json | 246 +++++++++--------- .../tpcds/testdata/tpcds_suite_xut.json | 246 +++++++++--------- 2 files changed, 248 insertions(+), 244 deletions(-) diff --git a/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_out.json b/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_out.json index d64ab8061e4f0..c6dfc0b27538b 100644 --- a/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_out.json +++ b/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_out.json @@ -24,128 +24,130 @@ " └─Projection mpp[tiflash] tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.item.i_item_sk, tpcds.item.i_product_name", " └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip", " └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.catalog_sales.cs_item_sk)]", - " ├─Projection(Build) mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.store_returns.sr_item_sk", - " │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.store_returns.sr_item_sk) eq(tpcds.store_sales.ss_ticket_number, tpcds.store_returns.sr_ticket_number)]", - " │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", - " │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", - " │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", - " │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", - " │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", - " │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", - " │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", - " │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", - " │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_addr_sk, tpcds.customer_address.ca_address_sk)]", - " │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_addr_sk, collate: binary]", - " │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", - " │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_addr_sk, tpcds.customer_address.ca_address_sk)]", - " │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_addr_sk, collate: binary]", - " │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.promotion.p_promo_sk", - " │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_promo_sk, tpcds.promotion.p_promo_sk)]", - " │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_promo_sk, collate: binary]", - " │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", - " │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_sales_date_sk, tpcds.date_dim.d_date_sk)]", - " │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_sales_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", - " │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_shipto_date_sk, tpcds.date_dim.d_date_sk)]", - " │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_shipto_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", - " │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", - " │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_hdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.customer_demographics.cd_demo_sk", - " │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)], other cond:ne(tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_marital_status)", - " │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_cdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_demo_sk", - " │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_cdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_hdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.store.s_store_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_store_sk, tpcds.store.s_store_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_store_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.customer.c_customer_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_customer_sk, tpcds.customer.c_customer_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_customer_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.item.i_item_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.item.i_item_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] ge(tpcds.item.i_current_price, 35), ge(tpcds.item.i_current_price, 36), le(tpcds.item.i_current_price, 45), le(tpcds.item.i_current_price, 50)", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:item pushed down filter:in(tpcds.item.i_color, \"maroon\", \"burnished\", \"dim\", \"steel\", \"navajo\", \"chocolate\"), keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.store_sales.ss_sold_date_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.date_dim.d_date_sk, tpcds.store_sales.ss_sold_date_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d1 pushed down filter:or(eq(tpcds.date_dim.d_year, 2000), eq(tpcds.date_dim.d_year, 2001)), keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_sold_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store_sales.ss_addr_sk)), not(isnull(tpcds.store_sales.ss_cdemo_sk)), not(isnull(tpcds.store_sales.ss_customer_sk)), not(isnull(tpcds.store_sales.ss_hdemo_sk)), not(isnull(tpcds.store_sales.ss_promo_sk)), not(isnull(tpcds.store_sales.ss_sold_date_sk)), not(isnull(tpcds.store_sales.ss_store_sk))", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store_sales keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_customer_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer.c_current_addr_sk)), not(isnull(tpcds.customer.c_current_cdemo_sk)), not(isnull(tpcds.customer.c_current_hdemo_sk)), not(isnull(tpcds.customer.c_first_sales_date_sk)), not(isnull(tpcds.customer.c_first_shipto_date_sk))", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:customer keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store.s_store_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store.s_store_name)), not(isnull(tpcds.store.s_zip))", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", - " │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd2 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", - " │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd1 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", - " │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd2 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", - " │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd1 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d3 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", - " │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d2 keep order:false, stats:pseudo", - " │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.promotion.p_promo_sk, collate: binary]", - " │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:promotion keep order:false, stats:pseudo", - " │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", - " │ │ │ │ │ └─TableFullScan mpp[tiflash] table:ad1 keep order:false, stats:pseudo", - " │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", - " │ │ │ │ └─TableFullScan mpp[tiflash] table:ad2 keep order:false, stats:pseudo", - " │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", - " │ │ │ └─TableFullScan mpp[tiflash] table:ib1 keep order:false, stats:pseudo", - " │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", - " │ │ └─TableFullScan mpp[tiflash] table:ib2 keep order:false, stats:pseudo", - " │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_returns.sr_item_sk, collate: binary]", - " │ └─TableFullScan mpp[tiflash] table:store_returns keep order:false, stats:pseudo", + " ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", + " │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", + " │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", + " │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", + " │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", + " │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", + " │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", + " │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", + " │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_addr_sk, tpcds.customer_address.ca_address_sk)]", + " │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_addr_sk, collate: binary]", + " │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", + " │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_addr_sk, tpcds.customer_address.ca_address_sk)]", + " │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_addr_sk, collate: binary]", + " │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.promotion.p_promo_sk", + " │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_promo_sk, tpcds.promotion.p_promo_sk)]", + " │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_promo_sk, collate: binary]", + " │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", + " │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_shipto_date_sk, tpcds.date_dim.d_date_sk)]", + " │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_shipto_date_sk, collate: binary]", + " │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", + " │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_sales_date_sk, tpcds.date_dim.d_date_sk)]", + " │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_sales_date_sk, collate: binary]", + " │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.store_returns.sr_item_sk, tpcds.store_returns.sr_ticket_number", + " │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.store_returns.sr_item_sk) eq(tpcds.store_sales.ss_ticket_number, tpcds.store_returns.sr_ticket_number)]", + " │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary], [name: tpcds.store_sales.ss_ticket_number, collate: binary]", + " │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", + " │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", + " │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_hdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", + " │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", + " │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_hdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.customer_demographics.cd_demo_sk", + " │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)], other cond:ne(tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_marital_status)", + " │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_cdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_demo_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_cdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.store.s_store_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_store_sk, tpcds.store.s_store_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_store_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.customer.c_customer_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_customer_sk, tpcds.customer.c_customer_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_customer_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.item.i_item_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.item.i_item_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] ge(tpcds.item.i_current_price, 35), ge(tpcds.item.i_current_price, 36), le(tpcds.item.i_current_price, 45), le(tpcds.item.i_current_price, 50)", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:item pushed down filter:in(tpcds.item.i_color, \"maroon\", \"burnished\", \"dim\", \"steel\", \"navajo\", \"chocolate\"), keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.store_sales.ss_sold_date_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.date_dim.d_date_sk, tpcds.store_sales.ss_sold_date_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d1 pushed down filter:or(eq(tpcds.date_dim.d_year, 2000), eq(tpcds.date_dim.d_year, 2001)), keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_sold_date_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store_sales.ss_addr_sk)), not(isnull(tpcds.store_sales.ss_cdemo_sk)), not(isnull(tpcds.store_sales.ss_customer_sk)), not(isnull(tpcds.store_sales.ss_hdemo_sk)), not(isnull(tpcds.store_sales.ss_promo_sk)), not(isnull(tpcds.store_sales.ss_sold_date_sk)), not(isnull(tpcds.store_sales.ss_store_sk))", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store_sales keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_customer_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer.c_current_addr_sk)), not(isnull(tpcds.customer.c_current_cdemo_sk)), not(isnull(tpcds.customer.c_current_hdemo_sk)), not(isnull(tpcds.customer.c_first_sales_date_sk)), not(isnull(tpcds.customer.c_first_shipto_date_sk))", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:customer keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store.s_store_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store.s_store_name)), not(isnull(tpcds.store.s_zip))", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", + " │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd1 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", + " │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd2 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", + " │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd1 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", + " │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd2 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_returns.sr_item_sk, collate: binary], [name: tpcds.store_returns.sr_ticket_number, collate: binary]", + " │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store_returns keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", + " │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d2 keep order:false, stats:pseudo", + " │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", + " │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d3 keep order:false, stats:pseudo", + " │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.promotion.p_promo_sk, collate: binary]", + " │ │ │ │ │ └─TableFullScan mpp[tiflash] table:promotion keep order:false, stats:pseudo", + " │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", + " │ │ │ │ └─TableFullScan mpp[tiflash] table:ad1 keep order:false, stats:pseudo", + " │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", + " │ │ │ └─TableFullScan mpp[tiflash] table:ad2 keep order:false, stats:pseudo", + " │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", + " │ │ └─TableFullScan mpp[tiflash] table:ib1 keep order:false, stats:pseudo", + " │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", + " │ └─TableFullScan mpp[tiflash] table:ib2 keep order:false, stats:pseudo", " └─Selection(Probe) mpp[tiflash] gt(Column, mul(2, Column))", " └─Projection mpp[tiflash] Column, Column, tpcds.catalog_sales.cs_item_sk", " └─HashAgg mpp[tiflash] group by:Column, funcs:sum(Column)->Column, funcs:sum(Column)->Column, funcs:firstrow(Column)->tpcds.catalog_sales.cs_item_sk", diff --git a/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_xut.json b/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_xut.json index d64ab8061e4f0..c6dfc0b27538b 100644 --- a/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_xut.json +++ b/pkg/planner/core/casetest/tpcds/testdata/tpcds_suite_xut.json @@ -24,128 +24,130 @@ " └─Projection mpp[tiflash] tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.item.i_item_sk, tpcds.item.i_product_name", " └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip", " └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.catalog_sales.cs_item_sk)]", - " ├─Projection(Build) mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.store_returns.sr_item_sk", - " │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.store_returns.sr_item_sk) eq(tpcds.store_sales.ss_ticket_number, tpcds.store_returns.sr_ticket_number)]", - " │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", - " │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", - " │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", - " │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", - " │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", - " │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", - " │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", - " │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", - " │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_addr_sk, tpcds.customer_address.ca_address_sk)]", - " │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_addr_sk, collate: binary]", - " │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", - " │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_addr_sk, tpcds.customer_address.ca_address_sk)]", - " │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_addr_sk, collate: binary]", - " │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.promotion.p_promo_sk", - " │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_promo_sk, tpcds.promotion.p_promo_sk)]", - " │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_promo_sk, collate: binary]", - " │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", - " │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_sales_date_sk, tpcds.date_dim.d_date_sk)]", - " │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_sales_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", - " │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_shipto_date_sk, tpcds.date_dim.d_date_sk)]", - " │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_shipto_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", - " │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", - " │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_hdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.customer_demographics.cd_demo_sk", - " │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)], other cond:ne(tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_marital_status)", - " │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_cdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_demo_sk", - " │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_cdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_hdemo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.store.s_store_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_store_sk, tpcds.store.s_store_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_store_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.customer.c_customer_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_customer_sk, tpcds.customer.c_customer_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_customer_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.item.i_item_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.item.i_item_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] ge(tpcds.item.i_current_price, 35), ge(tpcds.item.i_current_price, 36), le(tpcds.item.i_current_price, 45), le(tpcds.item.i_current_price, 50)", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:item pushed down filter:in(tpcds.item.i_color, \"maroon\", \"burnished\", \"dim\", \"steel\", \"navajo\", \"chocolate\"), keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.store_sales.ss_sold_date_sk", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.date_dim.d_date_sk, tpcds.store_sales.ss_sold_date_sk)]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d1 pushed down filter:or(eq(tpcds.date_dim.d_year, 2000), eq(tpcds.date_dim.d_year, 2001)), keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_sold_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store_sales.ss_addr_sk)), not(isnull(tpcds.store_sales.ss_cdemo_sk)), not(isnull(tpcds.store_sales.ss_customer_sk)), not(isnull(tpcds.store_sales.ss_hdemo_sk)), not(isnull(tpcds.store_sales.ss_promo_sk)), not(isnull(tpcds.store_sales.ss_sold_date_sk)), not(isnull(tpcds.store_sales.ss_store_sk))", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store_sales keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_customer_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer.c_current_addr_sk)), not(isnull(tpcds.customer.c_current_cdemo_sk)), not(isnull(tpcds.customer.c_current_hdemo_sk)), not(isnull(tpcds.customer.c_first_sales_date_sk)), not(isnull(tpcds.customer.c_first_shipto_date_sk))", - " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:customer keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store.s_store_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store.s_store_name)), not(isnull(tpcds.store.s_zip))", - " │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", - " │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd2 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", - " │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd1 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", - " │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd2 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", - " │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", - " │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd1 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", - " │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d3 keep order:false, stats:pseudo", - " │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", - " │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d2 keep order:false, stats:pseudo", - " │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.promotion.p_promo_sk, collate: binary]", - " │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:promotion keep order:false, stats:pseudo", - " │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", - " │ │ │ │ │ └─TableFullScan mpp[tiflash] table:ad1 keep order:false, stats:pseudo", - " │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", - " │ │ │ │ └─TableFullScan mpp[tiflash] table:ad2 keep order:false, stats:pseudo", - " │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", - " │ │ │ └─TableFullScan mpp[tiflash] table:ib1 keep order:false, stats:pseudo", - " │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", - " │ │ └─TableFullScan mpp[tiflash] table:ib2 keep order:false, stats:pseudo", - " │ └─ExchangeReceiver(Probe) mpp[tiflash] ", - " │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_returns.sr_item_sk, collate: binary]", - " │ └─TableFullScan mpp[tiflash] table:store_returns keep order:false, stats:pseudo", + " ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", + " │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", + " │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", + " │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", + " │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.income_band.ib_income_band_sk", + " │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.household_demographics.hd_income_band_sk, tpcds.income_band.ib_income_band_sk)]", + " │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_income_band_sk, collate: binary]", + " │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", + " │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_addr_sk, tpcds.customer_address.ca_address_sk)]", + " │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_addr_sk, collate: binary]", + " │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.customer_address.ca_street_number, tpcds.customer_address.ca_street_name, tpcds.customer_address.ca_city, tpcds.customer_address.ca_zip, tpcds.customer_address.ca_address_sk", + " │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_addr_sk, tpcds.customer_address.ca_address_sk)]", + " │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_addr_sk, collate: binary]", + " │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.promotion.p_promo_sk", + " │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_promo_sk, tpcds.promotion.p_promo_sk)]", + " │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_promo_sk, collate: binary]", + " │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", + " │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_shipto_date_sk, tpcds.date_dim.d_date_sk)]", + " │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_shipto_date_sk, collate: binary]", + " │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.date_dim.d_year, tpcds.date_dim.d_date_sk", + " │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_first_sales_date_sk, tpcds.date_dim.d_date_sk)]", + " │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_first_sales_date_sk, collate: binary]", + " │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.store_returns.sr_item_sk, tpcds.store_returns.sr_ticket_number", + " │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.store_returns.sr_item_sk) eq(tpcds.store_sales.ss_ticket_number, tpcds.store_returns.sr_ticket_number)]", + " │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary], [name: tpcds.store_sales.ss_ticket_number, collate: binary]", + " │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", + " │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", + " │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_hdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.household_demographics.hd_income_band_sk, tpcds.household_demographics.hd_demo_sk", + " │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_hdemo_sk, tpcds.household_demographics.hd_demo_sk)]", + " │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_hdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.customer_demographics.cd_demo_sk", + " │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.customer.c_current_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)], other cond:ne(tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_marital_status)", + " │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_current_cdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.customer_demographics.cd_marital_status, tpcds.customer_demographics.cd_demo_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_cdemo_sk, tpcds.customer_demographics.cd_demo_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_cdemo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.store.s_store_name, tpcds.store.s_zip, tpcds.store.s_store_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_store_sk, tpcds.store.s_store_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_store_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk, tpcds.customer.c_current_cdemo_sk, tpcds.customer.c_current_hdemo_sk, tpcds.customer.c_current_addr_sk, tpcds.customer.c_first_shipto_date_sk, tpcds.customer.c_first_sales_date_sk, tpcds.customer.c_customer_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_customer_sk, tpcds.customer.c_customer_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_customer_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.store_sales.ss_item_sk, tpcds.item.i_item_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.item.i_item_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.item.i_item_sk, tpcds.item.i_product_name, tpcds.item.i_item_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] ge(tpcds.item.i_current_price, 35), ge(tpcds.item.i_current_price, 36), le(tpcds.item.i_current_price, 45), le(tpcds.item.i_current_price, 50)", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:item pushed down filter:in(tpcds.item.i_color, \"maroon\", \"burnished\", \"dim\", \"steel\", \"navajo\", \"chocolate\"), keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_item_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Projection mpp[tiflash] tpcds.date_dim.d_year, tpcds.store_sales.ss_item_sk, tpcds.store_sales.ss_customer_sk, tpcds.store_sales.ss_cdemo_sk, tpcds.store_sales.ss_hdemo_sk, tpcds.store_sales.ss_addr_sk, tpcds.store_sales.ss_store_sk, tpcds.store_sales.ss_promo_sk, tpcds.store_sales.ss_ticket_number, tpcds.store_sales.ss_wholesale_cost, tpcds.store_sales.ss_list_price, tpcds.store_sales.ss_coupon_amt, tpcds.store_sales.ss_sold_date_sk", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─HashJoin mpp[tiflash] inner join, equal:[eq(tpcds.date_dim.d_date_sk, tpcds.store_sales.ss_sold_date_sk)]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─ExchangeReceiver(Build) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d1 pushed down filter:or(eq(tpcds.date_dim.d_year, 2000), eq(tpcds.date_dim.d_year, 2001)), keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_sales.ss_sold_date_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store_sales.ss_addr_sk)), not(isnull(tpcds.store_sales.ss_cdemo_sk)), not(isnull(tpcds.store_sales.ss_customer_sk)), not(isnull(tpcds.store_sales.ss_hdemo_sk)), not(isnull(tpcds.store_sales.ss_promo_sk)), not(isnull(tpcds.store_sales.ss_sold_date_sk)), not(isnull(tpcds.store_sales.ss_store_sk))", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store_sales keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer.c_customer_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer.c_current_addr_sk)), not(isnull(tpcds.customer.c_current_cdemo_sk)), not(isnull(tpcds.customer.c_current_hdemo_sk)), not(isnull(tpcds.customer.c_first_sales_date_sk)), not(isnull(tpcds.customer.c_first_shipto_date_sk))", + " │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:customer keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store.s_store_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.store.s_store_name)), not(isnull(tpcds.store.s_zip))", + " │ │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", + " │ │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd1 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_demographics.cd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.customer_demographics.cd_marital_status))", + " │ │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:cd2 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", + " │ │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd1 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.household_demographics.hd_demo_sk, collate: binary]", + " │ │ │ │ │ │ │ │ │ └─Selection mpp[tiflash] not(isnull(tpcds.household_demographics.hd_income_band_sk))", + " │ │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:hd2 keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.store_returns.sr_item_sk, collate: binary], [name: tpcds.store_returns.sr_ticket_number, collate: binary]", + " │ │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:store_returns keep order:false, stats:pseudo", + " │ │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", + " │ │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d2 keep order:false, stats:pseudo", + " │ │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.date_dim.d_date_sk, collate: binary]", + " │ │ │ │ │ │ └─TableFullScan mpp[tiflash] table:d3 keep order:false, stats:pseudo", + " │ │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.promotion.p_promo_sk, collate: binary]", + " │ │ │ │ │ └─TableFullScan mpp[tiflash] table:promotion keep order:false, stats:pseudo", + " │ │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", + " │ │ │ │ └─TableFullScan mpp[tiflash] table:ad1 keep order:false, stats:pseudo", + " │ │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.customer_address.ca_address_sk, collate: binary]", + " │ │ │ └─TableFullScan mpp[tiflash] table:ad2 keep order:false, stats:pseudo", + " │ │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", + " │ │ └─TableFullScan mpp[tiflash] table:ib1 keep order:false, stats:pseudo", + " │ └─ExchangeReceiver(Probe) mpp[tiflash] ", + " │ └─ExchangeSender mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: tpcds.income_band.ib_income_band_sk, collate: binary]", + " │ └─TableFullScan mpp[tiflash] table:ib2 keep order:false, stats:pseudo", " └─Selection(Probe) mpp[tiflash] gt(Column, mul(2, Column))", " └─Projection mpp[tiflash] Column, Column, tpcds.catalog_sales.cs_item_sk", " └─HashAgg mpp[tiflash] group by:Column, funcs:sum(Column)->Column, funcs:sum(Column)->Column, funcs:firstrow(Column)->tpcds.catalog_sales.cs_item_sk",