93 lines
1.3 KiB
SQL
93 lines
1.3 KiB
SQL
# name: test/sql/function/numeric/test_trunc.test
|
|
# description: Truncation test
|
|
# group: [numeric]
|
|
|
|
statement ok
|
|
CREATE TABLE truncme(a DOUBLE, b INTEGER, c UINTEGER)
|
|
|
|
statement ok
|
|
INSERT INTO truncme VALUES (42.123456, 3, 19), (-3.141592, -7, 5);
|
|
|
|
# Non-intergral should truncate
|
|
foreach datatype DOUBLE FLOAT DECIMAL(10,6)
|
|
|
|
query R
|
|
select trunc(42.12345::${datatype})
|
|
----
|
|
42.000000
|
|
|
|
query R
|
|
select trunc(-42.12345::${datatype})
|
|
----
|
|
-42.000000
|
|
|
|
query R
|
|
select trunc(127::${datatype})
|
|
----
|
|
127.000000
|
|
|
|
query R
|
|
select trunc(-127::${datatype})
|
|
----
|
|
-127.000000
|
|
|
|
query R
|
|
select trunc(0::${datatype})
|
|
----
|
|
0.000000
|
|
|
|
query I
|
|
select trunc(a::${datatype}) from truncme
|
|
----
|
|
42.000000
|
|
-3.000000
|
|
|
|
endloop
|
|
|
|
# Signed integers should be a NOP
|
|
foreach signed TINYINT SMALLINT INTEGER BIGINT HUGEINT
|
|
|
|
query R
|
|
select trunc(54::${signed})
|
|
----
|
|
54
|
|
|
|
query R
|
|
select trunc(-27::${signed})
|
|
----
|
|
-27
|
|
|
|
query I
|
|
select trunc(b::${signed}) from truncme
|
|
----
|
|
3
|
|
-7
|
|
|
|
endloop
|
|
|
|
# Unsigned integers should be a NOP
|
|
foreach unsigned UTINYINT USMALLINT UINTEGER UBIGINT UHUGEINT
|
|
|
|
query R
|
|
select trunc(15::${unsigned})
|
|
----
|
|
15
|
|
|
|
query I
|
|
select trunc(c::${unsigned}) from truncme
|
|
----
|
|
19
|
|
5
|
|
|
|
endloop
|
|
|
|
# Test specials
|
|
foreach special DOUBLE FLOAT
|
|
|
|
query III
|
|
select trunc('NAN'::${special}), trunc('infinity'::${special}), trunc('-infinity'::${special});
|
|
----
|
|
NAN infinity -infinity
|
|
|
|
endloop
|