blob: 17abfb4148b070d16076dfade3e9aa0df78da08f [file] [log] [blame]
# name: test/sql/types/decimal/decimal_decimal_overflow_cast.test
# description: Test decimal-decimal overflow cast
# group: [decimal]
statement ok
PRAGMA enable_verification
# casting 1.0 from various width/scales to different width/scales
# these should all work
query IIII
SELECT 1.0::DECIMAL(4,3)::DECIMAL(2,1), 1.0::DECIMAL(4,3)::DECIMAL(9,1), 1.0::DECIMAL(4,3)::DECIMAL(18,1), 1.0::DECIMAL(4,3)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
query IIII
SELECT 1.0::DECIMAL(9,8)::DECIMAL(2,1), 1.0::DECIMAL(9,8)::DECIMAL(9,1), 1.0::DECIMAL(9,8)::DECIMAL(18,1), 1.0::DECIMAL(9,8)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
query IIII
SELECT 1.0::DECIMAL(18,17)::DECIMAL(2,1), 1.0::DECIMAL(18,17)::DECIMAL(9,1), 1.0::DECIMAL(18,17)::DECIMAL(18,1), 1.0::DECIMAL(18,17)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
query IIII
SELECT 1.0::DECIMAL(38,37)::DECIMAL(2,1), 1.0::DECIMAL(38,37)::DECIMAL(9,1), 1.0::DECIMAL(38,37)::DECIMAL(18,1), 1.0::DECIMAL(38,37)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
# overflow on casting UP on scale
statement error
SELECT 10.00::DECIMAL(4,2)::DECIMAL(4,3);
statement error
SELECT 10.00::DECIMAL(4,2)::DECIMAL(9,8);
statement error
SELECT 10.00::DECIMAL(4,2)::DECIMAL(18,17);
statement error
SELECT 10.00::DECIMAL(4,2)::DECIMAL(38,37);
# overflow on casting DOWN on scale
statement error
SELECT 10.00::DECIMAL(4,2)::DECIMAL(2,1);
statement error
SELECT 10.00::DECIMAL(9,7)::DECIMAL(7,6);
statement error
SELECT 10.00::DECIMAL(18,16)::DECIMAL(16,15);
statement error
SELECT 10.00::DECIMAL(38,36)::DECIMAL(36,35);
# casting up in a manner that will always fit
query II
SELECT 1.0::DECIMAL(3,1)::DECIMAL(18,2), 1.0::DECIMAL(3,1)::DECIMAL(38,2)
----
1.00 1.00
# testing the same scale
query IIII
SELECT 1.0::DECIMAL(3,1)::DECIMAL(2,1), 1.0::DECIMAL(3,1)::DECIMAL(9,1), 1.0::DECIMAL(3,1)::DECIMAL(18,1), 1.0::DECIMAL(3,1)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
query IIII
SELECT 1.0::DECIMAL(9,1)::DECIMAL(2,1), 1.0::DECIMAL(9,1)::DECIMAL(8,1), 1.0::DECIMAL(9,1)::DECIMAL(18,1), 1.0::DECIMAL(9,1)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
query IIII
SELECT 1.0::DECIMAL(18,1)::DECIMAL(2,1), 1.0::DECIMAL(18,1)::DECIMAL(8,1), 1.0::DECIMAL(18,1)::DECIMAL(17,1), 1.0::DECIMAL(18,1)::DECIMAL(38,1)
----
1.0 1.0 1.0 1.0
query IIII
SELECT 1.0::DECIMAL(38,1)::DECIMAL(2,1), 1.0::DECIMAL(38,1)::DECIMAL(8,1), 1.0::DECIMAL(38,1)::DECIMAL(17,1), 1.0::DECIMAL(38,1)::DECIMAL(37,1)
----
1.0 1.0 1.0 1.0
# overflow on same scale
statement error
SELECT 1.0::DECIMAL(3,1)::DECIMAL(1,1)
statement error
SELECT 1.0::DECIMAL(9,1)::DECIMAL(1,1)
statement error
SELECT 1.0::DECIMAL(18,1)::DECIMAL(1,1)
statement error
SELECT 1.0::DECIMAL(38,1)::DECIMAL(1,1)