blob: d867241e2df29ec27aaf60df2d76e4dd26d73a90 [file] [log] [blame]
set hive.mapred.mode=nonstrict;
set hive.optimize.ppd=true;
set hive.optimize.index.filter=true;
set hive.tez.bucket.pruning=true;
set hive.explain.user=false;
set hive.fetch.task.conversion=none;
CREATE TABLE srcbucket_pruned(key int, value string) partitioned by (ds string) CLUSTERED BY (key) INTO 16 BUCKETS STORED AS TEXTFILE;
-- cannot prune 2-key scenarios without a smarter optimizer
CREATE TABLE srcbucket_unpruned(key int, value string) partitioned by (ds string) CLUSTERED BY (key,value) INTO 16 BUCKETS STORED AS TEXTFILE;
-- valid AND cases: when an AND condition is a bucket column, then pruning should work
explain extended
select * from srcbucket_pruned where key = 1 and value is not null;
-- good cases
explain extended
select * from srcbucket_pruned where key = 1;
explain extended
select * from srcbucket_pruned where key = 16;
explain extended
select * from srcbucket_pruned where key = 17;
explain extended
select * from srcbucket_pruned where key = 16+1;
explain extended
select * from srcbucket_pruned where key = '11';
explain extended
select * from srcbucket_pruned where key = 1 and ds='2008-04-08';
explain extended
select * from srcbucket_pruned where key = 1 and ds='2008-04-08' and value='One';
explain extended
select * from srcbucket_pruned where value='One' and key = 1 and ds='2008-04-08';
explain extended
select * from srcbucket_pruned where key in (2,3);
explain extended
select * from srcbucket_pruned where key in (2,3) and ds='2008-04-08';
explain extended
select * from srcbucket_pruned where key in (2,3) and ds='2008-04-08' and value='One';
explain extended
select * from srcbucket_pruned where value='One' and key in (2,3) and ds='2008-04-08';
explain extended
select * from srcbucket_pruned where (key=1 or key=2) and ds='2008-04-08';
explain extended
select * from srcbucket_pruned where (key=1 or key=2) and value = 'One' and ds='2008-04-08';
-- compat case (-15 = 1 & 15)
explain extended
select * from srcbucket_pruned where key = -15;
-- valid but irrelevant case (all buckets selected)
explain extended
select * from srcbucket_pruned where key in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
explain extended
select * from srcbucket_pruned where key in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17) and ds='2008-04-08';
explain extended
select * from srcbucket_pruned where key in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17) and ds='2008-04-08' and value='One';
explain extended
select * from srcbucket_pruned where value='One' and key in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17) and ds='2008-04-08';
-- valid, but unimplemented cases
explain extended
select * from srcbucket_pruned where key = 1 and ds='2008-04-08' or key = 2;
explain extended
select * from srcbucket_pruned where key = 1 and ds='2008-04-08' and (value='One' or value = 'Two');
explain extended
select * from srcbucket_pruned where key = 1 or value = "One" or key = 2 and value = "Two";
-- Invalid cases
explain extended
select * from srcbucket_pruned where key = 'x11';
explain extended
select * from srcbucket_pruned where key = 1 or value = "One";
explain extended
select * from srcbucket_pruned where key = 1 or value = "One" or key = 2;
explain extended
select * from srcbucket_unpruned where key in (3, 5);
explain extended
select * from srcbucket_unpruned where key = 1;