--! qt:dataset:src
--! qt:dataset:part
-- SORT_QUERY_RESULTS

set hive.mapred.mode=nonstrict;
set hive.exec.infer.bucket.sort=true;

-- This tests inferring how data is bucketed/sorted from the operators in the reducer
-- and populating that information in partitions' metadata, in particular, this tests
-- the grouping operators rollup/cube/grouping sets

CREATE TABLE test_table_out (key STRING, value STRING, agg STRING) PARTITIONED BY (part STRING);

CREATE TABLE test_table_out_2 (key STRING, value STRING, grouping_key STRING, agg STRING) PARTITIONED BY (part STRING);

-- Test rollup, should not be bucketed or sorted because its missing the grouping ID
EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
SELECT key, value, count(1) FROM src GROUP BY key, value WITH ROLLUP;
SELECT key, value, count(1) FROM src GROUP BY ROLLUP (key, value);

INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
SELECT key, value, count(1) FROM src GROUP BY key, value WITH ROLLUP;

DESCRIBE FORMATTED test_table_out PARTITION (part = '1');

-- Test rollup, should be bucketed and sorted on key, value, grouping_key

INSERT OVERWRITE TABLE test_table_out_2 PARTITION (part = '1') 
SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY key, value WITH ROLLUP;
SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY ROLLUP (key, value);

DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1');

-- Test cube, should not be bucketed or sorted because its missing the grouping ID
EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
SELECT key, value, count(1) FROM src GROUP BY key, value WITH CUBE;

INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
SELECT key, value, count(1) FROM src GROUP BY key, value WITH CUBE;

DESCRIBE FORMATTED test_table_out PARTITION (part = '1');

-- Test cube, should be bucketed and sorted on key, value, grouping_key

INSERT OVERWRITE TABLE test_table_out_2 PARTITION (part = '1') 
SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY key, value WITH CUBE;

DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1');

-- Test grouping sets, should not be bucketed or sorted because its missing the grouping ID
EXPLAIN INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
SELECT key, value, count(1) FROM src GROUP BY key, value GROUPING SETS (key, value);

INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
SELECT key, value, count(1) FROM src GROUP BY key, value GROUPING SETS (key, value);

DESCRIBE FORMATTED test_table_out PARTITION (part = '1');

-- Test grouping sets, should be bucketed and sorted on key, value, grouping_key

INSERT OVERWRITE TABLE test_table_out_2 PARTITION (part = '1') 
SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY key, value GROUPING SETS (key, value);

DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1');
