blob: 5004fae238f3ae07269ae4509af00dcf3607b089 [file] [log] [blame]
-- SORT_QUERY_RESULTS
--! qt:dataset:lineitem
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 lineitem_test_txt (L_ORDERKEY INT,
L_PARTKEY INT,
L_SUPPKEY INT,
L_LINENUMBER INT,
L_QUANTITY INT,
L_EXTENDEDPRICE DOUBLE,
L_DISCOUNT DOUBLE,
L_TAX DECIMAL(10,2),
L_RETURNFLAG CHAR(1),
L_LINESTATUS CHAR(1),
l_shipdate DATE,
L_COMMITDATE DATE,
L_RECEIPTDATE DATE,
L_SHIPINSTRUCT VARCHAR(20),
L_SHIPMODE CHAR(10),
L_COMMENT STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|';
LOAD DATA LOCAL INPATH '../../data/files/tpch/tiny/lineitem.tbl.bz2' OVERWRITE INTO TABLE lineitem_test_txt;
CREATE TABLE lineitem_test STORED AS ORC AS SELECT * FROM lineitem_test_txt;
INSERT INTO TABLE lineitem_test VALUES (NULL,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
SET hive.vectorized.if.expr.mode=adaptor;
EXPLAIN VECTORIZATION DETAIL
SELECT
L_QUANTITY as Quantity,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE "Huge number" END AS Quantity_Description,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE NULL END AS Quantity_Description_2,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN NULL
ELSE NULL END AS Quantity_Description_3,
IF(L_SHIPMODE = "SHIP", DATE_ADD(l_shipdate, 10), DATE_ADD(l_shipdate, 5)) AS Expected_Date,
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE 0 END AS Field_1, -- The 0 will be an integer and requires implicit casting.
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE CAST(0 AS DOUBLE) END AS Field_2,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", NULL, L_TAX) AS Field_3,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, NULL) AS Field_4,
-- For the next 2 IF stmts, the 0s are integer and require implicit casting to decimal.
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0, L_TAX) AS Field_5,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0) AS Field_6,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0BD, L_TAX) AS Field_7,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0BD) AS Field_8,
IF(L_PARTKEY > 30, CAST(L_RECEIPTDATE AS TIMESTAMP), CAST(L_COMMITDATE AS TIMESTAMP)) AS Field_9,
IF(L_SUPPKEY > 10000, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE), NULL) AS Field_10,
IF(L_SUPPKEY > 10000, NULL, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE)) AS Field_11,
IF(L_SUPPKEY % 500 > 100, DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365)) AS Field_12
FROM lineitem_test;
SELECT
L_QUANTITY as Quantity,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE "Huge number" END AS Quantity_Description,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE NULL END AS Quantity_Description_2,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN NULL
ELSE NULL END AS Quantity_Description_3,
IF(L_SHIPMODE = "SHIP", DATE_ADD(l_shipdate, 10), DATE_ADD(l_shipdate, 5)) AS Expected_Date,
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE 0 END AS Field_1, -- The 0 will be an integer and requires implicit casting.
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE CAST(0 AS DOUBLE) END AS Field_2,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", NULL, L_TAX) AS Field_3,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, NULL) AS Field_4,
-- For the next 2 IF stmts, the 0s are integer and require implicit casting to decimal.
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0, L_TAX) AS Field_5,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0) AS Field_6,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0BD, L_TAX) AS Field_7,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0BD) AS Field_8,
IF(L_PARTKEY > 30, CAST(L_RECEIPTDATE AS TIMESTAMP), CAST(L_COMMITDATE AS TIMESTAMP)) AS Field_9,
IF(L_SUPPKEY > 10000, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE), NULL) AS Field_10,
IF(L_SUPPKEY > 10000, NULL, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE)) AS Field_11,
IF(L_SUPPKEY % 500 > 100, DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365)) AS Field_12
FROM lineitem_test;
SET hive.vectorized.if.expr.mode=good;
EXPLAIN VECTORIZATION DETAIL
SELECT
L_QUANTITY as Quantity,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE "Huge number" END AS Quantity_Description,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE NULL END AS Quantity_Description_2,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN NULL
ELSE NULL END AS Quantity_Description_3,
IF(L_SHIPMODE = "SHIP", DATE_ADD(l_shipdate, 10), DATE_ADD(l_shipdate, 5)) AS Expected_Date,
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE 0 END AS Field_1, -- The 0 will be an integer and requires implicit casting.
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE CAST(0 AS DOUBLE) END AS Field_2,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", NULL, L_TAX) AS Field_3,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, NULL) AS Field_4,
-- For the next 2 IF stmts, the 0s are integer and require implicit casting to decimal.
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0, L_TAX) AS Field_5,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0) AS Field_6,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0BD, L_TAX) AS Field_7,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0BD) AS Field_8,
IF(L_PARTKEY > 30, CAST(L_RECEIPTDATE AS TIMESTAMP), CAST(L_COMMITDATE AS TIMESTAMP)) AS Field_9,
IF(L_SUPPKEY > 10000, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE), NULL) AS Field_10,
IF(L_SUPPKEY > 10000, NULL, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE)) AS Field_11,
IF(L_SUPPKEY % 500 > 100, DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365)) AS Field_12
FROM lineitem_test;
SELECT
L_QUANTITY as Quantity,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE "Huge number" END AS Quantity_Description,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE NULL END AS Quantity_Description_2,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN NULL
ELSE NULL END AS Quantity_Description_3,
IF(L_SHIPMODE = "SHIP", DATE_ADD(l_shipdate, 10), DATE_ADD(l_shipdate, 5)) AS Expected_Date,
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE 0 END AS Field_1, -- The 0 will be an integer and requires implicit casting.
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE CAST(0 AS DOUBLE) END AS Field_2,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", NULL, L_TAX) AS Field_3,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, NULL) AS Field_4,
-- For the next 2 IF stmts, the 0s are integer and require implicit casting to decimal.
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0, L_TAX) AS Field_5,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0) AS Field_6,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0BD, L_TAX) AS Field_7,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0BD) AS Field_8,
IF(L_PARTKEY > 30, CAST(L_RECEIPTDATE AS TIMESTAMP), CAST(L_COMMITDATE AS TIMESTAMP)) AS Field_9,
IF(L_SUPPKEY > 10000, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE), NULL) AS Field_10,
IF(L_SUPPKEY > 10000, NULL, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE)) AS Field_11,
IF(L_SUPPKEY % 500 > 100, DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365)) AS Field_12
FROM lineitem_test;
SET hive.vectorized.if.expr.mode=better;
EXPLAIN VECTORIZATION DETAIL
SELECT
L_QUANTITY as Quantity,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE "Huge number" END AS Quantity_Description,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE NULL END AS Quantity_Description_2,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN NULL
ELSE NULL END AS Quantity_Description_3,
IF(L_SHIPMODE = "SHIP", DATE_ADD(l_shipdate, 10), DATE_ADD(l_shipdate, 5)) AS Expected_Date,
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE 0 END AS Field_1, -- The 0 will be an integer and requires implicit casting.
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE CAST(0 AS DOUBLE) END AS Field_2,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", NULL, L_TAX) AS Field_3,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, NULL) AS Field_4,
-- For the next 2 IF stmts, the 0s are integer and require implicit casting to decimal.
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0, L_TAX) AS Field_5,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0) AS Field_6,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0BD, L_TAX) AS Field_7,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0BD) AS Field_8,
IF(L_PARTKEY > 30, CAST(L_RECEIPTDATE AS TIMESTAMP), CAST(L_COMMITDATE AS TIMESTAMP)) AS Field_9,
IF(L_SUPPKEY > 10000, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE), NULL) AS Field_10,
IF(L_SUPPKEY > 10000, NULL, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE)) AS Field_11,
IF(L_SUPPKEY % 500 > 100, DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365)) AS Field_12
FROM lineitem_test;
SELECT
L_QUANTITY as Quantity,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE "Huge number" END AS Quantity_Description,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN "Many"
ELSE NULL END AS Quantity_Description_2,
CASE
WHEN L_QUANTITY = 1 THEN "Single"
WHEN L_QUANTITY = 2 THEN "Two"
WHEN L_QUANTITY < 10 THEN "Some"
WHEN L_QUANTITY < 100 THEN NULL
ELSE NULL END AS Quantity_Description_3,
IF(L_SHIPMODE = "SHIP", DATE_ADD(l_shipdate, 10), DATE_ADD(l_shipdate, 5)) AS Expected_Date,
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE 0 END AS Field_1, -- The 0 will be an integer and requires implicit casting.
CASE WHEN L_RETURNFLAG = "N"
THEN l_extendedprice * (1 - l_discount)
ELSE CAST(0 AS DOUBLE) END AS Field_2,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", NULL, L_TAX) AS Field_3,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, NULL) AS Field_4,
-- For the next 2 IF stmts, the 0s are integer and require implicit casting to decimal.
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0, L_TAX) AS Field_5,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0) AS Field_6,
IF(L_SHIPINSTRUCT = "DELIVER IN PERSON", 0BD, L_TAX) AS Field_7,
IF(L_SHIPINSTRUCT = "TAKE BACK RETURN", L_TAX, 0BD) AS Field_8,
IF(L_PARTKEY > 30, CAST(L_RECEIPTDATE AS TIMESTAMP), CAST(L_COMMITDATE AS TIMESTAMP)) AS Field_9,
IF(L_SUPPKEY > 10000, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE), NULL) AS Field_10,
IF(L_SUPPKEY > 10000, NULL, DATEDIFF(L_RECEIPTDATE, L_COMMITDATE)) AS Field_11,
IF(L_SUPPKEY % 500 > 100, DATE_ADD('2008-12-31', 1), DATE_ADD('2008-12-31', 365)) AS Field_12
FROM lineitem_test;