Files
email-tracker/external/duckdb/test/sql/overflow/test_overflow.test
2025-10-24 19:21:19 -05:00

99 lines
1.8 KiB
SQL

# name: test/sql/overflow/test_overflow.test
# description: Test handling of overflows in basic types
# group: [overflow]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE test (a INTEGER, b INTEGER);
# insert too large value for domain should cause error
statement error
INSERT INTO test VALUES (-1099511627776, 3)
----
Conversion Error
statement ok
INSERT INTO test VALUES (11, 22), (12, 21), (14, 22)
# Casting NULL should still work though
query I
SELECT ALL CAST ( - SUM ( DISTINCT - CAST ( NULL AS INTEGER ) ) AS INTEGER ) FROM test
----
NULL
# proper upcasting of integer columns in AVG
query IR
SELECT b, AVG(a) FROM test GROUP BY b ORDER BY b;
----
21 12.000000
22 12.500000
# cast overflows
statement error
SELECT cast(200 AS TINYINT)
----
Conversion Error
statement error
SELECT cast(-129 AS TINYINT)
----
Conversion Error
# addition overflow
statement error
SELECT cast(100 AS TINYINT) + cast(100 AS TINYINT)
----
Out of Range Error: Overflow
# also with tables
statement ok
CREATE TABLE test2 (a INTEGER, b TINYINT);
statement ok
INSERT INTO test2 VALUES (200, 60), (12, 60), (14, 60)
statement error
SELECT cast(a AS TINYINT) FROM test2
----
Conversion Error
query I
SELECT SUM(b) FROM test2
----
180
# subtraction
statement error
SELECT 100::TINYINT - -50::TINYINT
----
Out of Range Error: Overflow
statement error
SELECT 100::TINYINT * 2::TINYINT
----
Out of Range Error: Overflow
# tables
statement error
SELECT 100::TINYINT + b::TINYINT FROM test2
----
Out of Range Error: Overflow
statement error
SELECT 100::TINYINT - -b::TINYINT FROM test2
----
Out of Range Error: Overflow
statement error
SELECT 100::TINYINT * b::TINYINT FROM test2
----
Out of Range Error: Overflow
# more complex expressions
statement error
SELECT a + b FROM (SELECT cast(100 AS TINYINT) AS a, cast(100 AS TINYINT) AS b) tbl1
----
Out of Range Error: Overflow