1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
# 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
|