blob: db13c0c96eeb1ccdc07245a8d2af977b17408d50 [file] [log] [blame]
set hive.cli.print.header=true;
set hive.mapred.mode=nonstrict;
set hive.explain.user=false;
set hive.fetch.task.conversion=none;
set hive.vectorized.execution.enabled=true;
create table timestamps_txt (tsval timestamp) STORED AS TEXTFILE;
LOAD DATA LOCAL INPATH '../../data/files/timestamps.txt' OVERWRITE INTO TABLE timestamps_txt;
create table timestamps (cdate date, ctimestamp1 timestamp, stimestamp1 string, ctimestamp2 timestamp) stored as orc;
insert overwrite table timestamps
select cast(tsval as date), tsval, cast(tsval as string), tsval - '1 2:3:4' day to second from timestamps_txt;
INSERT INTO TABLE timestamps VALUES (NULL,NULL,NULL,NULL);
SET hive.vectorized.if.expr.mode=adaptor;
EXPLAIN VECTORIZATION DETAIL
SELECT
ctimestamp1,
ctimestamp2,
CASE
WHEN ctimestamp2 <= date '1800-12-31' THEN "1800s or Earlier"
WHEN ctimestamp2 < date '1900-01-01' THEN "1900s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE "Unknown" END AS ctimestamp2_Description,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE NULL END AS ctimestamp2_Description_2,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between timestamp '2006-01-01 00:00:00.000' and timestamp '2010-12-31 23:59:59.999999999' THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN NULL
ELSE NULL END AS ctimestamp2_Description_3,
IF(timestamp '1974-10-04 17:21:03.989' > ctimestamp1, year(ctimestamp1), year(ctimestamp2)) AS field1,
CASE WHEN stimestamp1 LIKE '%19%'
THEN stimestamp1
ELSE timestamp '2018-03-08 23:04:59' END AS Field_2,
IF(ctimestamp1 = timestamp '2021-09-24 03:18:32.413655165' , NULL, minute(ctimestamp1)) AS Field_3,
IF(ctimestamp2 >= timestamp '5344-10-04 18:40:08.165' and ctimestamp2 < timestamp '6631-11-13 16:31:29.702202248', minute(ctimestamp1), NULL) AS Field_4,
IF(cast(ctimestamp1 as double) % 500 > 100, DATE_ADD(cdate, 1), DATE_ADD(cdate, 365)) AS Field_5
FROM timestamps
ORDER BY ctimestamp1, stimestamp1, ctimestamp2;
SELECT
ctimestamp1,
ctimestamp2,
CASE
WHEN ctimestamp2 <= date '1800-12-31' THEN "1800s or Earlier"
WHEN ctimestamp2 < date '1900-01-01' THEN "1900s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE "Unknown" END AS ctimestamp2_Description,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE NULL END AS ctimestamp2_Description_2,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between timestamp '2006-01-01 00:00:00.000' and timestamp '2010-12-31 23:59:59.999999999' THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN NULL
ELSE NULL END AS ctimestamp2_Description_3,
IF(timestamp '1974-10-04 17:21:03.989' > ctimestamp1, year(ctimestamp1), year(ctimestamp2)) AS field1,
CASE WHEN stimestamp1 LIKE '%19%'
THEN stimestamp1
ELSE timestamp '2018-03-08 23:04:59' END AS Field_2,
IF(ctimestamp1 = timestamp '2021-09-24 03:18:32.413655165' , NULL, minute(ctimestamp1)) AS Field_3,
IF(ctimestamp2 >= timestamp '5344-10-04 18:40:08.165' and ctimestamp2 < timestamp '6631-11-13 16:31:29.702202248', minute(ctimestamp1), NULL) AS Field_4,
IF(cast(ctimestamp1 as double) % 500 > 100, DATE_ADD(cdate, 1), DATE_ADD(cdate, 365)) AS Field_5
FROM timestamps
ORDER BY ctimestamp1, stimestamp1, ctimestamp2;
SET hive.vectorized.if.expr.mode=good;
EXPLAIN VECTORIZATION DETAIL
SELECT
ctimestamp1,
ctimestamp2,
CASE
WHEN ctimestamp2 <= date '1800-12-31' THEN "1800s or Earlier"
WHEN ctimestamp2 < date '1900-01-01' THEN "1900s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE "Unknown" END AS ctimestamp2_Description,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE NULL END AS ctimestamp2_Description_2,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between timestamp '2006-01-01 00:00:00.000' and timestamp '2010-12-31 23:59:59.999999999' THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN NULL
ELSE NULL END AS ctimestamp2_Description_3,
IF(timestamp '1974-10-04 17:21:03.989' > ctimestamp1, year(ctimestamp1), year(ctimestamp2)) AS field1,
CASE WHEN stimestamp1 LIKE '%19%'
THEN stimestamp1
ELSE timestamp '2018-03-08 23:04:59' END AS Field_2,
IF(ctimestamp1 = timestamp '2021-09-24 03:18:32.413655165' , NULL, minute(ctimestamp1)) AS Field_3,
IF(ctimestamp2 >= timestamp '5344-10-04 18:40:08.165' and ctimestamp2 < timestamp '6631-11-13 16:31:29.702202248', minute(ctimestamp1), NULL) AS Field_4,
IF(cast(ctimestamp1 as double) % 500 > 100, DATE_ADD(cdate, 1), DATE_ADD(cdate, 365)) AS Field_5
FROM timestamps
ORDER BY ctimestamp1, stimestamp1, ctimestamp2;
SELECT
ctimestamp1,
ctimestamp2,
CASE
WHEN ctimestamp2 <= date '1800-12-31' THEN "1800s or Earlier"
WHEN ctimestamp2 < date '1900-01-01' THEN "1900s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE "Unknown" END AS ctimestamp2_Description,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE NULL END AS ctimestamp2_Description_2,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between timestamp '2006-01-01 00:00:00.000' and timestamp '2010-12-31 23:59:59.999999999' THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN NULL
ELSE NULL END AS ctimestamp2_Description_3,
IF(timestamp '1974-10-04 17:21:03.989' > ctimestamp1, year(ctimestamp1), year(ctimestamp2)) AS field1,
CASE WHEN stimestamp1 LIKE '%19%'
THEN stimestamp1
ELSE timestamp '2018-03-08 23:04:59' END AS Field_2,
IF(ctimestamp1 = timestamp '2021-09-24 03:18:32.413655165' , NULL, minute(ctimestamp1)) AS Field_3,
IF(ctimestamp2 >= timestamp '5344-10-04 18:40:08.165' and ctimestamp2 < timestamp '6631-11-13 16:31:29.702202248', minute(ctimestamp1), NULL) AS Field_4,
IF(cast(ctimestamp1 as double) % 500 > 100, DATE_ADD(cdate, 1), DATE_ADD(cdate, 365)) AS Field_5
FROM timestamps
ORDER BY ctimestamp1, stimestamp1, ctimestamp2;
SET hive.vectorized.if.expr.mode=better;
EXPLAIN VECTORIZATION DETAIL
SELECT
ctimestamp1,
ctimestamp2,
CASE
WHEN ctimestamp2 <= date '1800-12-31' THEN "1800s or Earlier"
WHEN ctimestamp2 < date '1900-01-01' THEN "1900s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE "Unknown" END AS ctimestamp2_Description,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE NULL END AS ctimestamp2_Description_2,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between timestamp '2006-01-01 00:00:00.000' and timestamp '2010-12-31 23:59:59.999999999' THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN NULL
ELSE NULL END AS ctimestamp2_Description_3,
IF(timestamp '1974-10-04 17:21:03.989' > ctimestamp1, year(ctimestamp1), year(ctimestamp2)) AS field1,
CASE WHEN stimestamp1 LIKE '%19%'
THEN stimestamp1
ELSE timestamp '2018-03-08 23:04:59' END AS Field_2,
IF(ctimestamp1 = timestamp '2021-09-24 03:18:32.413655165' , NULL, minute(ctimestamp1)) AS Field_3,
IF(ctimestamp2 >= timestamp '5344-10-04 18:40:08.165' and ctimestamp2 < timestamp '6631-11-13 16:31:29.702202248', minute(ctimestamp1), NULL) AS Field_4,
IF(cast(ctimestamp1 as double) % 500 > 100, DATE_ADD(cdate, 1), DATE_ADD(cdate, 365)) AS Field_5
FROM timestamps
ORDER BY ctimestamp1, stimestamp1, ctimestamp2;
SELECT
ctimestamp1,
ctimestamp2,
CASE
WHEN ctimestamp2 <= date '1800-12-31' THEN "1800s or Earlier"
WHEN ctimestamp2 < date '1900-01-01' THEN "1900s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE "Unknown" END AS ctimestamp2_Description,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between cast('2006-01-01 00:00:00.000' as timestamp) and cast('2010-12-31 23:59:59.999999999' as timestamp) THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN "Early 2010s"
ELSE NULL END AS ctimestamp2_Description_2,
CASE
WHEN ctimestamp2 <= timestamp '2000-12-31 23:59:59.999999999' THEN "Old"
WHEN ctimestamp2 < timestamp '2006-01-01 00:00:00.000' THEN "Early 2000s"
WHEN ctimestamp2 between timestamp '2006-01-01 00:00:00.000' and timestamp '2010-12-31 23:59:59.999999999' THEN "Late 2000s"
WHEN ctimestamp2 <= timestamp '2015-12-31 23:59:59.999999999' THEN NULL
ELSE NULL END AS ctimestamp2_Description_3,
IF(timestamp '1974-10-04 17:21:03.989' > ctimestamp1, year(ctimestamp1), year(ctimestamp2)) AS field1,
CASE WHEN stimestamp1 LIKE '%19%'
THEN stimestamp1
ELSE timestamp '2018-03-08 23:04:59' END AS Field_2,
IF(ctimestamp1 = timestamp '2021-09-24 03:18:32.413655165' , NULL, minute(ctimestamp1)) AS Field_3,
IF(ctimestamp2 >= timestamp '5344-10-04 18:40:08.165' and ctimestamp2 < timestamp '6631-11-13 16:31:29.702202248', minute(ctimestamp1), NULL) AS Field_4,
IF(cast(ctimestamp1 as double) % 500 > 100, DATE_ADD(cdate, 1), DATE_ADD(cdate, 365)) AS Field_5
FROM timestamps
ORDER BY ctimestamp1, stimestamp1, ctimestamp2;
create temporary table foo(q548284 int);
insert into foo values(1),(2),(3),(4),(5),(6);
set hive.cbo.enable=true;
explain vectorization detail select q548284, CASE WHEN ((q548284 = 1)) THEN (0.2)
WHEN ((q548284 = 2)) THEN (0.4) WHEN ((q548284 = 3)) THEN (0.6) WHEN ((q548284 = 4))
THEN (0.8) WHEN ((q548284 = 5)) THEN (1) ELSE (null) END from foo order by q548284 limit 1;
select q548284, CASE WHEN ((q548284 = 1)) THEN (0.2)
WHEN ((q548284 = 2)) THEN (0.4) WHEN ((q548284 = 3)) THEN (0.6) WHEN ((q548284 = 4))
THEN (0.8) WHEN ((q548284 = 5)) THEN (1) ELSE (null) END from foo order by q548284 limit 1;
explain vectorization detail select q548284, CASE WHEN ((q548284 = 4)) THEN (0.8)
WHEN ((q548284 = 5)) THEN (1) ELSE (8) END from foo order by q548284 limit 1;
select q548284, CASE WHEN ((q548284 = 4)) THEN (0.8) WHEN ((q548284 = 5)) THEN (1) ELSE (8) END
from foo order by q548284 limit 1;
set hive.cbo.enable=false;
explain vectorization detail select q548284, CASE WHEN ((q548284 = 1)) THEN (0.2)
WHEN ((q548284 = 2)) THEN (0.4) WHEN ((q548284 = 3)) THEN (0.6) WHEN ((q548284 = 4))
THEN (0.8) WHEN ((q548284 = 5)) THEN (1) ELSE (null) END from foo order by q548284 limit 1;
select q548284, CASE WHEN ((q548284 = 1)) THEN (0.2)
WHEN ((q548284 = 2)) THEN (0.4) WHEN ((q548284 = 3)) THEN (0.6) WHEN ((q548284 = 4))
THEN (0.8) WHEN ((q548284 = 5)) THEN (1) ELSE (null) END from foo order by q548284 limit 1;
explain vectorization detail select q548284, CASE WHEN ((q548284 = 4)) THEN (0.8)
WHEN ((q548284 = 5)) THEN (1) ELSE (8) END from foo order by q548284 limit 1;
select q548284, CASE WHEN ((q548284 = 4)) THEN (0.8) WHEN ((q548284 = 5)) THEN (1) ELSE (8) END
from foo order by q548284 limit 1;