blob: 51ed1095df8dc4665bf1dd720dbbce90dc7363b5 [file] [log] [blame]
--! qt:dataset:alltypesorc
set hive.fetch.task.conversion=none;
set hive.vectorized.execution.enabled=true;
DESCRIBE FUNCTION trunc;
DESCRIBE FUNCTION EXTENDED trunc;
CREATE TABLE trunc_number(c DOUBLE) STORED AS ORC;
INSERT INTO TABLE trunc_number VALUES (12345.54321);
INSERT INTO TABLE trunc_number VALUES (12345);
INSERT INTO TABLE trunc_number VALUES (0.54321);
INSERT INTO TABLE trunc_number VALUES (NULL);
-- trunc date from timestamp
explain vectorization detail select trunc(ctimestamp1, 'MM') from alltypesorc;
select trunc(ctimestamp1, 'MM'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(ctimestamp1, 'Q'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(ctimestamp1, 'YEAR'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
-- trunc date from string
explain vectorization detail select trunc(CAST(ctimestamp1 AS STRING), 'MM') from alltypesorc;
select trunc(CAST(ctimestamp1 AS STRING), 'MM'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS STRING), 'Q'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS STRING), 'YEAR'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
-- trunc date from date
explain vectorization detail select trunc(CAST(ctimestamp1 AS DATE), 'MM') from alltypesorc;
select trunc(CAST(ctimestamp1 AS DATE), 'MM'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS DATE), 'Q'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS DATE), 'YEAR'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(ctimestamp1, 'MM'), ctimestamp1 from alltypesorc WHERE ctimestamp1 IS NULL LIMIT 10;
-- trunc double
explain vectorization detail
select c, trunc(c,0) from trunc_number order by c;
select c, 0, trunc(c,0) from trunc_number order by c;
select c, -1, trunc(c,-1) from trunc_number order by c;
select c, 1, trunc(c,1) from trunc_number order by c;
-- trunc float
explain vectorization detail
select c, trunc(CAST (c AS FLOAT), 0) from trunc_number order by c;
select c, 0, trunc(CAST (c AS FLOAT), 0) from trunc_number order by c;
select c, -1, trunc(CAST (c AS FLOAT), -1) from trunc_number order by c;
select c, 1, trunc(CAST (c AS FLOAT), 1) from trunc_number order by c;
-- trunc decimal
explain vectorization detail
select c, trunc(CAST (c AS DECIMAL(10,5)), 0) from trunc_number order by c;
select c, 0, trunc(CAST (c AS DECIMAL(10,5)), 0) from trunc_number order by c;
select c, -1, trunc(CAST (c AS DECIMAL(10,5)), -1) from trunc_number order by c;
select c, 1, trunc(CAST (c AS DECIMAL(10,5)), 1) from trunc_number order by c;
-- scale not defined -> 0 (float)
explain vectorization detail
select c, trunc(c) from trunc_number order by c;
select c, trunc(c) from trunc_number order by c;
-- scale not defined -> 0 (decimal)
explain vectorization detail
select c, trunc(CAST (c AS DECIMAL(10,5))) from trunc_number order by c;
select c, trunc(CAST (c AS DECIMAL(10,5))) from trunc_number order by c;
set hive.vectorized.execution.enabled=false;
-- trunc date from timestamp
select trunc(ctimestamp1, 'MM'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(ctimestamp1, 'Q'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(ctimestamp1, 'YEAR'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
-- trunc date from string
select trunc(CAST(ctimestamp1 AS STRING), 'MM'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS STRING), 'Q'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS STRING), 'YEAR'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
-- trunc date from date
select trunc(CAST(ctimestamp1 AS DATE), 'MM'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS DATE), 'Q'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(CAST(ctimestamp1 AS DATE), 'YEAR'), ctimestamp1 from alltypesorc order by ctimestamp1 LIMIT 10;
select trunc(ctimestamp1, 'MM'), ctimestamp1 from alltypesorc WHERE ctimestamp1 IS NULL LIMIT 10;
-- trunc double
select c, 0, trunc(c,0) from trunc_number order by c;
select c, -1, trunc(c,-1) from trunc_number order by c;
select c, 1, trunc(c,1) from trunc_number order by c;
-- trunc float
select c, 0, trunc(CAST (c AS FLOAT), 0) from trunc_number order by c;
select c, -1, trunc(CAST (c AS FLOAT), -1) from trunc_number order by c;
select c, 1, trunc(CAST (c AS FLOAT), 1) from trunc_number order by c;
-- trunc decimal
select c, 0, trunc(CAST (c AS DECIMAL(10,5)), 0) from trunc_number order by c;
select c, -1, trunc(CAST (c AS DECIMAL(10,5)), -1) from trunc_number order by c;
select c, 1, trunc(CAST (c AS DECIMAL(10,5)), 1) from trunc_number order by c;
-- scale not defined -> 0 (float)
select c, trunc(c) from trunc_number order by c;
-- scale not defined -> 0 (decimal)
select c, trunc(CAST (c AS DECIMAL(10,5))) from trunc_number order by c;
drop table trunc_number;