blob: ad5795e7d935bf56ec7cd0f03df075af9d2004c8 [file] [log] [blame]
--! qt:dataset:src
set hive.fetch.task.conversion=more;
DESCRIBE FUNCTION conv;
DESCRIBE FUNCTION EXTENDED conv;
-- conv must work on both strings and integers up to 64-bit precision
-- Some simple conversions to test different bases
SELECT
conv('4521', 10, 36),
conv('22', 10, 10),
conv('110011', 2, 16),
conv('facebook', 36, 16)
FROM src tablesample (1 rows);
-- Test negative numbers. If to_base is positive, the number should be handled
-- as a two's complement (64-bit)
SELECT
conv('-641', 10, -10),
conv('1011', 2, -16),
conv('-1', 10, 16),
conv('-15', 10, 16)
FROM src tablesample (1 rows);
-- Test overflow. If a number is two large, the result should be -1 (if signed)
-- or MAX_LONG (if unsigned)
SELECT
conv('9223372036854775807', 36, 16),
conv('9223372036854775807', 36, -16),
conv('-9223372036854775807', 36, 16),
conv('-9223372036854775807', 36, -16)
FROM src tablesample (1 rows);
-- Test with invalid input. If one of the bases is invalid, the result should
-- be NULL. If there is an invalid digit in the number, the longest valid
-- prefix should be converted.
SELECT
conv('123455', 3, 10),
conv('131', 1, 5),
conv('515', 5, 100),
conv('10', -2, 2)
FROM src tablesample (1 rows);
-- Perform the same tests with number arguments.
SELECT
conv(4521, 10, 36),
conv(22, 10, 10),
conv(110011, 2, 16)
FROM src tablesample (1 rows);
SELECT
conv(-641, 10, -10),
conv(1011, 2, -16),
conv(-1, 10, 16),
conv(-15, 10, 16)
FROM src tablesample (1 rows);
SELECT
conv(9223372036854775807, 36, 16),
conv(9223372036854775807, 36, -16),
conv(-9223372036854775807, 36, 16),
conv(-9223372036854775807, 36, -16)
FROM src tablesample (1 rows);
SELECT
conv(123455, 3, 10),
conv(131, 1, 5),
conv(515, 5, 100),
conv('10', -2, 2)
FROM src tablesample (1 rows);
-- Make sure that state is properly reset.
SELECT conv(key, 10, 16),
conv(key, 16, 10)
FROM src tablesample (3 rows);
create table test (a string);
insert into test values (""),(10),(NULL);
select conv(a,16,10) from test;
drop table test;