Github user zellerh commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/794#discussion_r85456105 --- Diff: core/sql/regress/compGeneral/EXPECTED045 --- @@ -0,0 +1,1606 @@ +>>obey TEST045(setup); +>> +>>-- general setup +>>cqd hist_missing_stats_warning_level '0'; + +--- SQL operation complete. +>>cqd hive_max_string_length '32'; + +--- SQL operation complete. +>>cqd mode_special_4 'on'; + +--- SQL operation complete. +>> +>>create schema T045_CSES; + +--- SQL operation complete. +>>set schema T045_CSES; + +--- SQL operation complete. +>> +>>prepare show_cses from ++>select case when operator in ('BLOCKED_UNION', 'HIVE_INSERT') ++> then operator ++> else 'SCAN TEMP' end as operator, ++> count(*) as how_many ++>from table(explain(null, 'S')) ++>where operator = 'BLOCKED_UNION' ++> or tname like '%CSE_TEMP_%' ++>group by 1 ++>order by 1; + +--- SQL command prepared. +>> +>>obey TEST045(ddl); +>>-------------------------------------------------------------------- +>> +>>create table store_sales ++>( ++> ss_sold_date_sk int, ++> ss_sold_time_sk int, ++> ss_item_sk int not null, ++> ss_customer_sk int, ++> ss_cdemo_sk int, ++> ss_hdemo_sk int, ++> ss_addr_sk int, ++> ss_store_sk int, ++> ss_promo_sk int, ++> ss_ticket_number int not null, ++> ss_quantity int, ++> ss_wholesale_cost float, ++> ss_list_price float, ++> ss_sales_price float, ++> ss_ext_discount_amt float, ++> ss_ext_sales_price float, ++> ss_ext_wholesale_cost float, ++> ss_ext_list_price float, ++> ss_ext_tax float, ++> ss_coupon_amt float, ++> ss_net_paid float, ++> ss_net_paid_inc_tax float, ++> ss_net_profit float, ++> primary key(ss_item_sk,ss_ticket_number) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table store_returns ++>( ++> sr_returned_date_sk int, ++> sr_return_time_sk int, ++> sr_item_sk int not null, ++> sr_customer_sk int, ++> sr_cdemo_sk int, ++> sr_hdemo_sk int, ++> sr_addr_sk int, ++> sr_store_sk int, ++> sr_reason_sk int, ++> sr_ticket_number int not null, ++> sr_return_quantity int, ++> sr_return_amt float, ++> sr_return_tax float, ++> sr_return_amt_inc_tax float, ++> sr_fee float, ++> sr_return_ship_cost float, ++> sr_refunded_cash float, ++> sr_reversed_charge float, ++> sr_store_credit float, ++> sr_net_loss float, ++> primary key(sr_item_sk,sr_ticket_number) ++> ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table catalog_sales ++>( ++> cs_sold_date_sk int, ++> cs_sold_time_sk int, ++> cs_ship_date_sk int, ++> cs_bill_customer_sk int, ++> cs_bill_cdemo_sk int, ++> cs_bill_hdemo_sk int, ++> cs_bill_addr_sk int, ++> cs_ship_customer_sk int, ++> cs_ship_cdemo_sk int, ++> cs_ship_hdemo_sk int, ++> cs_ship_addr_sk int, ++> cs_call_center_sk int, ++> cs_catalog_page_sk int, ++> cs_ship_mode_sk int, ++> cs_warehouse_sk int, ++> cs_item_sk int not null, ++> cs_promo_sk int, ++> cs_order_number int not null, ++> cs_quantity int, ++> cs_wholesale_cost float, ++> cs_list_price float, ++> cs_sales_price float, ++> cs_ext_discount_amt float, ++> cs_ext_sales_price float, ++> cs_ext_wholesale_cost float, ++> cs_ext_list_price float, ++> cs_ext_tax float, ++> cs_coupon_amt float, ++> cs_ext_ship_cost float, ++> cs_net_paid float, ++> cs_net_paid_inc_tax float, ++> cs_net_paid_inc_ship float, ++> cs_net_paid_inc_ship_tax float, ++> cs_net_profit float, ++> primary key(cs_item_sk,cs_order_number) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table catalog_returns ++>( ++> cr_returned_date_sk int, ++> cr_returned_time_sk int, ++> cr_item_sk int not null, ++> cr_refunded_customer_sk int, ++> cr_refunded_cdemo_sk int, ++> cr_refunded_hdemo_sk int, ++> cr_refunded_addr_sk int, ++> cr_returning_customer_sk int, ++> cr_returning_cdemo_sk int, ++> cr_returning_hdemo_sk int, ++> cr_returning_addr_sk int, ++> cr_call_center_sk int, ++> cr_catalog_page_sk int, ++> cr_ship_mode_sk int, ++> cr_warehouse_sk int, ++> cr_reason_sk int, ++> cr_order_number int not null, ++> cr_return_quantity int, ++> cr_return_amount float, ++> cr_return_tax float, ++> cr_return_amt_inc_tax float, ++> cr_fee float, ++> cr_return_ship_cost float, ++> cr_refunded_cash float, ++> cr_reversed_charge float, ++> cr_store_credit float, ++> cr_net_loss float, ++> ++> primary key(cr_item_sk,cr_order_number) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table web_sales ++>( ++> ws_sold_date_sk int, ++> ws_sold_time_sk int, ++> ws_ship_date_sk int, ++> ws_item_sk int not null, ++> ws_bill_customer_sk int, ++> ws_bill_cdemo_sk int, ++> ws_bill_hdemo_sk int, ++> ws_bill_addr_sk int, ++> ws_ship_customer_sk int, ++> ws_ship_cdemo_sk int, ++> ws_ship_hdemo_sk int, ++> ws_ship_addr_sk int, ++> ws_web_page_sk int, ++> ws_web_site_sk int, ++> ws_ship_mode_sk int, ++> ws_warehouse_sk int, ++> ws_promo_sk int, ++> ws_order_number int not null, ++> ws_quantity int, ++> ws_wholesale_cost float, ++> ws_list_price float, ++> ws_sales_price float, ++> ws_ext_discount_amt float, ++> ws_ext_sales_price float, ++> ws_ext_wholesale_cost float, ++> ws_ext_list_price float, ++> ws_ext_tax float, ++> ws_coupon_amt float, ++> ws_ext_ship_cost float, ++> ws_net_paid float, ++> ws_net_paid_inc_tax float, ++> ws_net_paid_inc_ship float, ++> ws_net_paid_inc_ship_tax float, ++> ws_net_profit float, ++> ++> primary key (ws_item_sk,ws_order_number) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table web_returns ++>( ++> wr_returned_date_sk int, ++> wr_returned_time_sk int, ++> wr_item_sk int not null, ++> wr_refunded_customer_sk int, ++> wr_refunded_cdemo_sk int, ++> wr_refunded_hdemo_sk int, ++> wr_refunded_addr_sk int, ++> wr_returning_customer_sk int, ++> wr_returning_cdemo_sk int, ++> wr_returning_hdemo_sk int, ++> wr_returning_addr_sk int, ++> wr_web_page_sk int, ++> wr_reason_sk int, ++> wr_order_number int not null, ++> wr_return_quantity int, ++> wr_return_amt float, ++> wr_return_tax float, ++> wr_return_amt_inc_tax float, ++> wr_fee float, ++> wr_return_ship_cost float, ++> wr_refunded_cash float, ++> wr_reversed_charge float, ++> wr_account_credit float, ++> wr_net_loss float, ++> primary key ( wr_order_number, wr_item_sk ) ++> ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table store ++>( ++> s_store_sk int not null, ++> s_store_id char(16), ++> s_rec_start_date date, ++> s_rec_end_date date, ++> s_closed_date_sk int, ++> s_store_name varchar(50), ++> s_number_employees int, ++> s_floor_space int, ++> s_hours char(20), ++> S_manager varchar(40), ++> S_market_id int, ++> S_geography_class varchar(100), ++> S_market_desc varchar(100), ++> s_market_manager varchar(40), ++> s_division_id int, ++> s_division_name varchar(50), ++> s_company_id int, ++> s_company_name varchar(50), ++> s_street_number varchar(10), ++> s_street_name varchar(60), ++> s_street_type char(15), ++> s_suite_number char(10), --fix bug ++> s_city varchar(60), ++> s_county varchar(30), ++> s_state char(2), ++> s_zip char(10), ++> s_country varchar(20), ++> s_gmt_offset float, ++> s_tax_percentage float, ++> ++> primary key(s_store_sk) ++> ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table Customer ++>( ++> c_customer_sk int not null, ++> c_customer_id char(16) CHARACTER SET UTF8 not null, ++> c_current_cdemo_sk int, ++> c_current_hdemo_sk int, ++> c_current_addr_sk int, ++> c_first_shipto_date_sk int, ++> c_first_sales_date_sk int, ++> c_salutation char(10) CHARACTER SET UTF8, ++> c_first_name char(20) CHARACTER SET UTF8, ++> c_last_name char(30) CHARACTER SET UTF8, ++> c_preferred_cust_flag char(1), ++> c_birth_day integer, ++> c_birth_month integer, ++> c_birth_year integer, ++> c_birth_country varchar(20) CHARACTER SET UTF8, ++> c_login char(13) CHARACTER SET UTF8, ++> c_email_address char(50) CHARACTER SET UTF8, ++> c_last_review_date_sk int, ++> primary key (c_customer_sk) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table Customer_address ++>( ++> ca_address_sk int not null, ++> ca_address_id char(16) not null, ++> ca_street_number char(10), ++> ca_street_name varchar(60), ++> ca_street_type char(15), ++> ca_suite_number char(10), ++> ca_city varchar(60), ++> ca_county varchar(30), ++> ca_state char(2), ++> ca_zip char(10), ++> ca_country varchar(20), ++> ca_gmt_offset decimal(5,2), ++> ca_location_type char(20), ++> primary key (ca_address_sk) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table Date_dim ++>( ++> d_date_sk int not null, ++> d_date_id char(16) not null, ++> d_date date, ++> d_month_seq integer, ++> d_week_seq integer, ++> d_quarter_seq integer, ++> d_year integer, ++> d_dow integer, ++> d_moy integer, ++> d_dom integer, ++> d_qoy integer, ++> d_fy_year integer, ++> d_fy_quarter_seq integer, ++> d_fy_week_seq integer, ++> d_day_name char(9), ++> d_quarter_name char(6), ++> d_holiday char(1), ++> d_weekend char(1), ++> d_following_holiday char(1), ++> d_first_dom integer, ++> d_last_dom integer, ++> d_same_day_ly integer, ++> d_same_day_lq integer, ++> d_current_day char(1), ++> d_current_week char(1), ++> d_current_month char(1), ++> d_current_quarter char(1), ++> d_current_year char(1), ++> primary key (d_date_sk) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>>create table item ++>( ++> i_item_sk int not null, ++> i_item_id char(16) not null, ++> i_rec_start_date date, ++> i_rec_end_date date, ++> i_item_desc varchar(200), ++> i_current_price decimal(7,2), ++> i_wholesale_cost decimal(7,2), ++> i_brand_id integer, ++> i_brand char(50), ++> i_class_id integer, ++> i_class char(50), ++> i_category_id integer, ++> i_category char(50), ++> i_manufact_id integer, ++> i_manufact char(50), ++> i_size char(20), ++> i_formulation char(20), ++> i_color char(20), ++> i_units char(10), ++> i_container char(10), ++> i_manager_id integer, ++> i_product_name char(50), ++> primary key(i_item_sk) ++>) ++>--SALT USING $PARTITION_NUM PARTITIONS ++>-- HBASE_OPTIONS ++>-- ( ++>-- DATA_BLOCK_ENCODING = 'FAST_DIFF', ++>-- COMPRESSION = 'SNAPPY' ++>-- ) ++>; + +--- SQL operation complete. +>> +>> +>>-------------------------------------------------------------------- +>>obey TEST045(queries); +>>-------------------------------------------------------------------- +>> +>>obey TEST045(enable_cses); +>>cqd cse_for_with 'on'; + +--- SQL operation complete. +>>cqd cse_use_temp 'on'; + +--- SQL operation complete. +>>cqd cse_hive_temp_table 'on'; + +--- SQL operation complete. +>>cqd cse_debug_warnings 'on'; + +--- SQL operation complete. +>> +>> +>>-------------------------------------------------------------------- +>>-- test some queries on populated Hive tables that we already have +>>-------------------------------------------------------------------- +>> +>>set schema hive.hive; + +--- SQL operation complete. +>> +>>prepare s from ++>with cse1 as (select count(*) from date_dim where d_dow = ?) ++>select * from cse1 ++>union all ++>select * from cse1; + +--- SQL command prepared. +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 2 + +--- 3 row(s) selected. +>>execute s using 1; + +(EXPR) +-------------------- + + 10436 + 10436 + +--- SQL operation complete. +>>-- execute a second time +>>execute s using 2; + +(EXPR) +-------------------- + + 10436 + 10436 + +--- SQL operation complete. +>> +>>-- prepare a second time, so far not using query cache +>>prepare s from ++>with cse1 as (select count(*) from date_dim where d_dow = ?) ++>select * from cse1 ++>union all ++>select * from cse1; + +--- SQL command prepared. +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 2 + +--- 3 row(s) selected. +>>execute s using 3; + +(EXPR) +-------------------- + + 10435 + 10435 + +--- SQL operation complete. +>>-- execute a second time +>>execute s using 4; + +(EXPR) +-------------------- + + 10437 + 10437 + +--- SQL operation complete. +>> +>>-- test subquery unnesting +>>cqd subquery_unnesting 'debug'; + +--- SQL operation complete. +>> +>>prepare s from ++>with cse1 as (select * from date_dim) ++>select count(*) ++>from cse1 x ++>where d_date_sk > (select avg(d_date_sk) from cse1 y where x.d_moy > y.d_moy); + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Subquery was not unnested. Reason: Left subtree cannot produce output values required for grouping.) + +--- SQL command prepared. +>>-- currently not unnested +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 2 + +--- 3 row(s) selected. +>> +>>-------------------------------------------------------------------- +>>-- test some TPC-DS queries +>>-------------------------------------------------------------------- +>> +>>set schema trafodion.t045_cses; + +--- SQL operation complete. +>> +>>--QID: 1 +>> +>>prepare s from ++>with customer_total_return as ++> (select sr_customer_sk as ctr_customer_sk ++> ,sr_store_sk as ctr_store_sk ++> ,sum(SR_REVERSED_CHARGE) as ctr_total_return ++> from store_returns ++> ,date_dim ++> where sr_returned_date_sk = d_date_sk ++> and d_year =2000 ++> group by sr_customer_sk ++> ,sr_store_sk ++> ) ++> ++>select c_customer_id ++>from customer_total_return ctr1 ++> ,store ++> ,customer ++>where ctr1.ctr_total_return > (select avg(ctr_total_return)*1.2 ++> from customer_total_return ctr2 ++> where ctr1.ctr_store_sk = ctr2.ctr_store_sk) ++> and s_store_sk = ctr1.ctr_store_sk ++> and s_state = 'SD' ++> and ctr1.ctr_customer_sk = c_customer_sk ++>order by c_customer_id ++>limit 100; + +*** WARNING[2997] (Attempting to unnest Subquery) + +--- SQL command prepared. +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 2 + +--- 3 row(s) selected. +>>execute s; + +--- SQL operation complete. +>> +>> +>>--QID: 2 +>> +>>prepare s from ++> with wscs as ++> (select sold_date_sk ++> ,sales_price ++> from (select ws_sold_date_sk sold_date_sk ++> ,ws_ext_sales_price sales_price ++> from web_sales ++> union all ++> select cs_sold_date_sk sold_date_sk ++> ,cs_ext_sales_price sales_price ++> from catalog_sales) t), ++> wswscs as ++> (select d_week_seq, ++> sum(case when (d_day_name='Sunday') then sales_price else null end) sun_sales, ++> sum(case when (d_day_name='Monday') then sales_price else null end) mon_sales, ++> sum(case when (d_day_name='Tuesday') then sales_price else null end) tue_sales, ++> sum(case when (d_day_name='Wednesday') then sales_price else null end) wed_sales, ++> sum(case when (d_day_name='Thursday') then sales_price else null end) thu_sales, ++> sum(case when (d_day_name='Friday') then sales_price else null end) fri_sales, ++> sum(case when (d_day_name='Saturday') then sales_price else null end) sat_sales ++> from wscs ++> ,date_dim ++> where d_date_sk = sold_date_sk ++> group by d_week_seq) ++> select d_week_seq1 ++> ,round(sun_sales1/sun_sales2,2) ++> ,round(mon_sales1/mon_sales2,2) ++> ,round(tue_sales1/tue_sales2,2) ++> ,round(wed_sales1/wed_sales2,2) ++> ,round(thu_sales1/thu_sales2,2) ++> ,round(fri_sales1/fri_sales2,2) ++> ,round(sat_sales1/sat_sales2,2) ++> from ++> (select wswscs.d_week_seq d_week_seq1 ++> ,sun_sales sun_sales1 ++> ,mon_sales mon_sales1 ++> ,tue_sales tue_sales1 ++> ,wed_sales wed_sales1 ++> ,thu_sales thu_sales1 ++> ,fri_sales fri_sales1 ++> ,sat_sales sat_sales1 ++> from wswscs,date_dim ++> where date_dim.d_week_seq = wswscs.d_week_seq and ++> d_year = 1999) y, ++> (select wswscs.d_week_seq d_week_seq2 ++> ,sun_sales sun_sales2 ++> ,mon_sales mon_sales2 ++> ,tue_sales tue_sales2 ++> ,wed_sales wed_sales2 ++> ,thu_sales thu_sales2 ++> ,fri_sales fri_sales2 ++> ,sat_sales sat_sales2 ++> from wswscs ++> ,date_dim ++> where date_dim.d_week_seq = wswscs.d_week_seq and ++> d_year = 1999+1) z ++> where d_week_seq1=d_week_seq2-53 ++> order by d_week_seq1; + +*** WARNING[5001] Common subexpression WSWSCS cannot be shared among multiple consumers. Reason: Operator map_value_ids not supported. + +--- SQL command prepared. +>>-- use temp for wscs only, not wswscs, due to MapValueIds +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 2 + +--- 3 row(s) selected. +>>execute s; + +--- SQL operation complete. +>> +>> +>>--QID: 4 +>> +>>prepare s from ++>with year_total as ( ++> select c_customer_id customer_id ++> ,c_first_name customer_first_name ++> ,c_last_name customer_last_name ++> ,c_preferred_cust_flag customer_preferred_cust_flag ++> ,c_birth_country customer_birth_country ++> ,c_login customer_login ++> ,c_email_address customer_email_address ++> ,d_year dyear ++> ,sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total ++> ,'s' sale_type ++> from customer ++> ,store_sales ++> ,date_dim ++> where c_customer_sk = ss_customer_sk ++> and ss_sold_date_sk = d_date_sk ++> group by c_customer_id ++> ,c_first_name ++> ,c_last_name ++> ,c_preferred_cust_flag ++> ,c_birth_country ++> ,c_login ++> ,c_email_address ++> ,d_year ++> union all ++> select c_customer_id customer_id ++> ,c_first_name customer_first_name ++> ,c_last_name customer_last_name ++> ,c_preferred_cust_flag customer_preferred_cust_flag ++> ,c_birth_country customer_birth_country ++> ,c_login customer_login ++> ,c_email_address customer_email_address ++> ,d_year dyear ++> ,sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2) ) year_total ++> ,'c' sale_type ++> from customer ++> ,catalog_sales ++> ,date_dim ++> where c_customer_sk = cs_bill_customer_sk ++> and cs_sold_date_sk = d_date_sk ++> group by c_customer_id ++> ,c_first_name ++> ,c_last_name ++> ,c_preferred_cust_flag ++> ,c_birth_country ++> ,c_login ++> ,c_email_address ++> ,d_year ++>union all ++> select c_customer_id customer_id ++> ,c_first_name customer_first_name ++> ,c_last_name customer_last_name ++> ,c_preferred_cust_flag customer_preferred_cust_flag ++> ,c_birth_country customer_birth_country ++> ,c_login customer_login ++> ,c_email_address customer_email_address ++> ,d_year dyear ++> ,sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2) ) year_total ++> ,'w' sale_type ++> from customer ++> ,web_sales ++> ,date_dim ++> where c_customer_sk = ws_bill_customer_sk ++> and ws_sold_date_sk = d_date_sk ++> group by c_customer_id ++> ,c_first_name ++> ,c_last_name ++> ,c_preferred_cust_flag ++> ,c_birth_country ++> ,c_login ++> ,c_email_address ++> ,d_year ++> ) ++>select ++> t_s_secyear.customer_id ++> ,t_s_secyear.customer_first_name ++> ,t_s_secyear.customer_last_name ++> ,t_s_secyear.customer_birth_country ++> from year_total t_s_firstyear ++> ,year_total t_s_secyear ++> ,year_total t_c_firstyear ++> ,year_total t_c_secyear ++> ,year_total t_w_firstyear ++> ,year_total t_w_secyear ++> where t_s_secyear.customer_id = t_s_firstyear.customer_id ++> and t_s_firstyear.customer_id = t_c_secyear.customer_id ++> and t_s_firstyear.customer_id = t_c_firstyear.customer_id ++> and t_s_firstyear.customer_id = t_w_firstyear.customer_id ++> and t_s_firstyear.customer_id = t_w_secyear.customer_id ++> and t_s_firstyear.sale_type = 's' ++> and t_c_firstyear.sale_type = 'c' ++> and t_w_firstyear.sale_type = 'w' ++> and t_s_secyear.sale_type = 's' ++> and t_c_secyear.sale_type = 'c' ++> and t_w_secyear.sale_type = 'w' ++> and t_s_firstyear.dyear = 1998 ++> and t_s_secyear.dyear = 1998+1 ++> and t_c_firstyear.dyear = 1998 ++> and t_c_secyear.dyear = 1998+1 ++> and t_w_firstyear.dyear = 1998 ++> and t_w_secyear.dyear = 1998+1 ++> and t_s_firstyear.year_total > 0 ++> and t_c_firstyear.year_total > 0 ++> and t_w_firstyear.year_total > 0 ++> and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end ++> > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else null end ++> and case when t_c_firstyear.year_total > 0 then t_c_secyear.year_total / t_c_firstyear.year_total else null end ++> > case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else null end ++> order by t_s_secyear.customer_id ++> ,t_s_secyear.customer_first_name ++> ,t_s_secyear.customer_last_name ++> ,t_s_secyear.customer_birth_country ++>limit 100; + +--- SQL command prepared. +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 6 + +--- 3 row(s) selected. +>>execute s; + +--- SQL operation complete. +>> +>> +>>--QID: 11 +>> +>>prepare s from ++>with year_total as ( ++> select c_customer_id customer_id ++> ,c_first_name customer_first_name ++> ,c_last_name customer_last_name ++> ,c_preferred_cust_flag customer_preferred_cust_flag ++> ,c_birth_country customer_birth_country ++> ,c_login customer_login ++> ,c_email_address customer_email_address ++> ,d_year dyear ++> ,sum(ss_ext_list_price-ss_ext_discount_amt) year_total ++> ,'s' sale_type ++> from customer ++> ,store_sales ++> ,date_dim ++> where c_customer_sk = ss_customer_sk ++> and ss_sold_date_sk = d_date_sk ++> group by c_customer_id ++> ,c_first_name ++> ,c_last_name ++> ,c_preferred_cust_flag ++> ,c_birth_country ++> ,c_login ++> ,c_email_address ++> ,d_year ++> union all ++> select c_customer_id customer_id ++> ,c_first_name customer_first_name ++> ,c_last_name customer_last_name ++> ,c_preferred_cust_flag customer_preferred_cust_flag ++> ,c_birth_country customer_birth_country ++> ,c_login customer_login ++> ,c_email_address customer_email_address ++> ,d_year dyear ++> ,sum(ws_ext_list_price-ws_ext_discount_amt) year_total ++> ,'w' sale_type ++> from customer ++> ,web_sales ++> ,date_dim ++> where c_customer_sk = ws_bill_customer_sk ++> and ws_sold_date_sk = d_date_sk ++> group by c_customer_id ++> ,c_first_name ++> ,c_last_name ++> ,c_preferred_cust_flag ++> ,c_birth_country ++> ,c_login ++> ,c_email_address ++> ,d_year ++> ) ++>select ++> t_s_secyear.customer_id ++> ,t_s_secyear.customer_first_name ++> ,t_s_secyear.customer_last_name ++> ,t_s_secyear.customer_preferred_cust_flag ++> from year_total t_s_firstyear ++> ,year_total t_s_secyear ++> ,year_total t_w_firstyear ++> ,year_total t_w_secyear ++> where t_s_secyear.customer_id = t_s_firstyear.customer_id ++> and t_s_firstyear.customer_id = t_w_secyear.customer_id ++> and t_s_firstyear.customer_id = t_w_firstyear.customer_id ++> and t_s_firstyear.sale_type = 's' ++> and t_w_firstyear.sale_type = 'w' ++> and t_s_secyear.sale_type = 's' ++> and t_w_secyear.sale_type = 'w' ++> and t_s_firstyear.dyear = 2001 ++> and t_s_secyear.dyear = 2001+1 ++> and t_w_firstyear.dyear = 2001 ++> and t_w_secyear.dyear = 2001+1 ++> and t_s_firstyear.year_total > 0 ++> and t_w_firstyear.year_total > 0 ++> and case when t_w_firstyear.year_total > 0 then t_w_secyear.year_total / t_w_firstyear.year_total else 0.0 end ++> > case when t_s_firstyear.year_total > 0 then t_s_secyear.year_total / t_s_firstyear.year_total else 0.0 end ++> order by t_s_secyear.customer_id ++> ,t_s_secyear.customer_first_name ++> ,t_s_secyear.customer_last_name ++> ,t_s_secyear.customer_preferred_cust_flag ++>limit 100; + +--- SQL command prepared. +>>execute show_cses; + +OPERATOR HOW_MANY +------------------------------ -------------------- + +BLOCKED_UNION 2 +HIVE_INSERT 1 +SCAN TEMP 4 + +--- 3 row(s) selected. +>>execute s; + +--- SQL operation complete. +>> +>>--QID: 14a +>> +>>prepare s from ++>-- ************** ++>-- VARIANT/ALTERNATIVE Version from TPC-DS (Rollout) is used ++>-- ************** ++> ++>-- NOTE: THIS QUERY HAS A COMPILER ISSUE. See Mantis 1048 ++>-- BOTH MULTI-QUERIES have the same issue. ****************** ++> ++>with cross_items as ++> (select i_item_sk ss_item_sk ++> from item, ++> (select iss.i_brand_id brand_id ++> ,iss.i_class_id class_id ++> ,iss.i_category_id category_id ++> from store_sales ++> ,item iss ++> ,date_dim d1 ++> where ss_item_sk = iss.i_item_sk ++> and ss_sold_date_sk = d1.d_date_sk ++> and d1.d_year between 1999 AND 1999 + 2 ++> intersect ++> select ics.i_brand_id ++> ,ics.i_class_id ++> ,ics.i_category_id ++> from catalog_sales ++> ,item ics ++> ,date_dim d2 ++> where cs_item_sk = ics.i_item_sk ++> and cs_sold_date_sk = d2.d_date_sk ++> and d2.d_year between 1999 AND 1999 + 2 ++> intersect ++> select iws.i_brand_id ++> ,iws.i_class_id ++> ,iws.i_category_id ++> from web_sales ++> ,item iws ++> ,date_dim d3 ++> where ws_item_sk = iws.i_item_sk ++> and ws_sold_date_sk = d3.d_date_sk ++> and d3.d_year between 1999 AND 1999 + 2) x ++> where i_brand_id = brand_id ++> and i_class_id = class_id ++> and i_category_id = category_id ++>) ++>, ++> avg_sales as ++> (select avg(quantity*list_price) average_sales ++> from (select ss_quantity quantity ++> ,ss_list_price list_price ++> from store_sales ++> ,date_dim ++> where ss_sold_date_sk = d_date_sk ++> and d_year between 1999 and 2001 ++> union all ++> select cs_quantity quantity ++> ,cs_list_price list_price ++> from catalog_sales ++> ,date_dim ++> where cs_sold_date_sk = d_date_sk ++> and d_year between 1999 AND 1999 + 2 ++> union all ++> select ws_quantity quantity ++> ,ws_list_price list_price ++> from web_sales ++> ,date_dim ++> where ws_sold_date_sk = d_date_sk ++> and d_year between 1999 AND 1999 + 2) x) ++>, ++> results AS ++>(select channel, i_brand_id, i_class_id, i_category_id, sum(sales) sum_sales, sum(number_sales) number_sales ++> from ( ++> select 'store' channel, i_brand_id,i_class_id ++> ,i_category_id,sum(ss_quantity*ss_list_price) sales ++> , count(*) number_sales ++> from store_sales ++> ,item ++> ,date_dim ++> where ss_item_sk in (select ss_item_sk from cross_items) ++> and ss_item_sk = i_item_sk ++> and ss_sold_date_sk = d_date_sk ++> and d_year = 1999 + 2 ++> and d_moy = 11 ++> group by i_brand_id,i_class_id,i_category_id ++> having sum(ss_quantity*ss_list_price) > (select average_sales from avg_sales) ++> union all ++> select 'catalog' channel, i_brand_id,i_class_id,i_category_id, sum(cs_quantity*cs_list_price) sales, count(*) number_sales ++> from catalog_sales ++> ,item ++> ,date_dim ++> where cs_item_sk in (select ss_item_sk from cross_items) ++> and cs_item_sk = i_item_sk ++> and cs_sold_date_sk = d_date_sk ++> and d_year = 1999 + 2 ++> and d_moy = 11 ++> group by i_brand_id,i_class_id,i_category_id ++> having sum(cs_quantity*cs_list_price) > (select average_sales from avg_sales) ++> union all ++> select 'web' channel, i_brand_id,i_class_id,i_category_id, sum(ws_quantity*ws_list_price) sales , count(*) number_sales ++> from web_sales ++> ,item ++> ,date_dim ++> where ws_item_sk in (select ss_item_sk from cross_items) ++> and ws_item_sk = i_item_sk ++> and ws_sold_date_sk = d_date_sk ++> and d_year = 1999 + 2 ++> and d_moy = 11 ++> group by i_brand_id,i_class_id,i_category_id ++> having sum(ws_quantity*ws_list_price) > (select average_sales from avg_sales) ++> ) y ++> group by channel, i_brand_id,i_class_id,i_category_id) ++> ++>select channel, i_brand_id, i_class_id, i_category_id, sum_sales, number_sales ++>from ( ++> select channel, i_brand_id, i_class_id, i_category_id, sum_sales, number_sales from results ++> union ++> select channel, i_brand_id, i_class_id, null as i_category_id, sum(sum_sales), sum(number_sales) from results ++> group by channel, i_brand_id, i_class_id ++> union ++> select channel, i_brand_id, null as i_class_id, null as i_category_id, sum(sum_sales), sum(number_sales) from results ++> group by channel, i_brand_id ++> union ++> select channel, null as i_brand_id, null as i_class_id, null as i_category_id, sum(sum_sales), sum(number_sales) from results ++> group by channel ++> union ++> select null as channel, null as i_brand_id, null as i_class_id, null as i_category_id, sum(sum_sales), sum(number_sales) from results) z ++>order by channel, i_brand_id, i_class_id, i_category_id ++> limit 100 ; + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Attempting to unnest Subquery) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[2997] (Subquery was not unnested. Reason: No Correlation found) + +*** WARNING[1214] Error Error in creating temp table or temp table insert encountered when executing HiveQL statement ../optimizer/NormRelExpr.cpp. --- End diff -- Wow, you win three bonus points :-) The first for reviewing the expected file, the second for finding a bug with ComDiagsArea::negateAllErrors(). The error message and the parameters are mixed up here, the text belongs to another error entry. Third bonus point for pointing out another issue with the Hive table - Hive doesn't support DECIMAL data types with precision greater than 38, and in this case we want a DECIMAL(57,19). So, thanks very much for pointing out 3 issues-in-1!
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---