blob: 39cb3518b2720250edce4f31e3341bec6f13952a [file] [log] [blame]
--! qt:dataset:src
set hive.optimize.point.lookup.min=31;
explain
SELECT key
FROM src
WHERE
((key = '0' AND value = 'val_0') OR
(key = '1' AND value = 'val_1') OR
(key = '2' AND value = 'val_2') OR
(key = '3' AND value = 'val_3') OR
(key = '4' AND value = 'val_4') OR
(key = '5' AND value = 'val_5') OR
(key = '6' AND value = 'val_6') OR
(key = '7' AND value = 'val_7') OR
(key = '8' AND value = 'val_8') OR
(key = '9' AND value = 'val_9') OR
(key = '10' AND value = 'val_10'))
;
create table orOutput as
SELECT key
FROM src
WHERE
((key = '0' AND value = 'val_0') OR
(key = '1' AND value = 'val_1') OR
(key = '2' AND value = 'val_2') OR
(key = '3' AND value = 'val_3') OR
(key = '4' AND value = 'val_4') OR
(key = '5' AND value = 'val_5') OR
(key = '6' AND value = 'val_6') OR
(key = '7' AND value = 'val_7') OR
(key = '8' AND value = 'val_8') OR
(key = '9' AND value = 'val_9') OR
(key = '10' AND value = 'val_10'))
;
set hive.optimize.point.lookup.min=3;
set hive.optimize.partition.columns.separate=false;
explain
SELECT key
FROM src
WHERE
((key = '0' AND value = 'val_0') OR
(key = '1' AND value = 'val_1') OR
(key = '2' AND value = 'val_2') OR
(key = '3' AND value = 'val_3') OR
(key = '4' AND value = 'val_4') OR
(key = '5' AND value = 'val_5') OR
(key = '6' AND value = 'val_6') OR
(key = '7' AND value = 'val_7') OR
(key = '8' AND value = 'val_8') OR
(key = '9' AND value = 'val_9') OR
(key = '10' AND value = 'val_10'))
;
create table inOutput as
SELECT key
FROM src
WHERE
((key = '0' AND value = 'val_0') OR
(key = '1' AND value = 'val_1') OR
(key = '2' AND value = 'val_2') OR
(key = '3' AND value = 'val_3') OR
(key = '4' AND value = 'val_4') OR
(key = '5' AND value = 'val_5') OR
(key = '6' AND value = 'val_6') OR
(key = '7' AND value = 'val_7') OR
(key = '8' AND value = 'val_8') OR
(key = '9' AND value = 'val_9') OR
(key = '10' AND value = 'val_10'))
;
set hive.optimize.partition.columns.separate=true;
explain
SELECT key
FROM src
WHERE
((key = '0' AND value = 'val_0') OR
(key = '1' AND value = 'val_1') OR
(key = '2' AND value = 'val_2') OR
(key = '3' AND value = 'val_3') OR
(key = '4' AND value = 'val_4') OR
(key = '5' AND value = 'val_5') OR
(key = '6' AND value = 'val_6') OR
(key = '7' AND value = 'val_7') OR
(key = '8' AND value = 'val_8') OR
(key = '9' AND value = 'val_9') OR
(key = '10' AND value = 'val_10'))
;
create table inOutputOpt as
SELECT key
FROM src
WHERE
((key = '0' AND value = 'val_0') OR
(key = '1' AND value = 'val_1') OR
(key = '2' AND value = 'val_2') OR
(key = '3' AND value = 'val_3') OR
(key = '4' AND value = 'val_4') OR
(key = '5' AND value = 'val_5') OR
(key = '6' AND value = 'val_6') OR
(key = '7' AND value = 'val_7') OR
(key = '8' AND value = 'val_8') OR
(key = '9' AND value = 'val_9') OR
(key = '10' AND value = 'val_10'))
;
-- Output from all these tables should be the same
select count(*) from orOutput;
select count(*) from inOutput;
select count(*) from inOutputOpt;
-- check that orOutput and inOutput matches using full outer join
select orOutput.key, inOutput.key
from orOutput full outer join inOutput on (orOutput.key = inOutput.key)
where orOutput.key is null
or inOutput.key is null;
-- check that ourOutput and inOutputOpt matches using full outer join
select orOutput.key, inOutputOpt.key
from orOutput full outer join inOutputOpt on (orOutput.key = inOutputOpt.key)
where orOutput.key is null
or inOutputOpt.key is null;
drop table orOutput;
drop table inOutput;
drop table inOutputOpt;
-- test case(s) for HIVE-26320 for ORC
SET hive.optimize.point.lookup=true;
SET hive.optimize.point.lookup.min=2;
CREATE EXTERNAL TABLE hive26230_orc(kob varchar(2), enhanced_type_code int) STORED AS ORC;
INSERT INTO hive26230_orc VALUES('BB',18),('BC',18),('AB',18);
SELECT CASE WHEN ((kob='BB' AND enhanced_type_code=18) OR (kob='BC' AND enhanced_type_code=18)) THEN 1 ELSE 0 END AS logic_check
FROM hive26230_orc;
DROP TABLE hive26230_orc;
CREATE EXTERNAL TABLE hive26230_char_orc(kob char(2), enhanced_type_code int) STORED AS ORC;
INSERT INTO hive26230_char_orc VALUES('B',18),('BC',18),('AB',18);
SELECT CASE WHEN ((kob='B' AND enhanced_type_code=18) OR (kob='BC' AND enhanced_type_code=18)) THEN 1 ELSE 0 END AS logic_check
FROM hive26230_char_orc;
DROP TABLE hive26230_char_orc;
-- test case(s) for HIVE-26320 for PARQUET
CREATE EXTERNAL TABLE hive26230_parq(kob varchar(2), enhanced_type_code int) STORED AS PARQUET;
INSERT INTO hive26230_parq VALUES('BB',18),('BC',18),('AB',18);
SELECT CASE WHEN ((kob='BB' AND enhanced_type_code=18) OR (kob='BC' AND enhanced_type_code=18)) THEN 1 ELSE 0 END AS logic_check
FROM hive26230_parq;
DROP TABLE hive26230_parq;
CREATE EXTERNAL TABLE hive26230_char_parq(kob char(2), enhanced_type_code int) STORED AS PARQUET;
INSERT INTO hive26230_char_parq VALUES('B',18),('BC',18),('AB',18);
SELECT CASE WHEN ((kob='B' AND enhanced_type_code=18) OR (kob='BC' AND enhanced_type_code=18)) THEN 1 ELSE 0 END AS logic_check
FROM hive26230_char_parq;
DROP TABLE hive26230_char_parq;
CREATE EXTERNAL TABLE hive26230_int_parq(kob int, enhanced_type_code int) STORED AS PARQUET;
INSERT INTO hive26230_int_parq VALUES(2,18),(23,18),(12,18);
SELECT CASE WHEN ((kob=2 AND enhanced_type_code=18) OR (kob=23 AND enhanced_type_code=18)) THEN 1 ELSE 0 END AS logic_check FROM hive26230_int_parq;
DROP TABLE hive26230_int_parq;