should be it
This commit is contained in:
222
external/duckdb/test/sql/overflow/integer_overflow.test
vendored
Normal file
222
external/duckdb/test/sql/overflow/integer_overflow.test
vendored
Normal file
@@ -0,0 +1,222 @@
|
||||
# name: test/sql/overflow/integer_overflow.test
|
||||
# description: Test handling of integer overflow in arithmetic
|
||||
# group: [overflow]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# addition
|
||||
# tinyint
|
||||
statement ok
|
||||
SELECT 100::TINYINT + 1::TINYINT
|
||||
|
||||
statement error
|
||||
SELECT 100::TINYINT + 50::TINYINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::TINYINT + -127::TINYINT
|
||||
|
||||
statement error
|
||||
SELECT -2::TINYINT + -127::TINYINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# smallint
|
||||
statement ok
|
||||
SELECT 30000::SMALLINT + 1::SMALLINT
|
||||
|
||||
statement error
|
||||
SELECT 30000::SMALLINT + 5000::SMALLINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::SMALLINT + -32767::SMALLINT
|
||||
|
||||
statement error
|
||||
SELECT -2::SMALLINT + -32767::SMALLINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# integer
|
||||
statement ok
|
||||
SELECT 2147483640::INTEGER + 1::INTEGER
|
||||
|
||||
statement error
|
||||
SELECT 2147483640::INTEGER + 5000::INTEGER
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::INTEGER + -2147483647::INTEGER
|
||||
|
||||
statement error
|
||||
SELECT -2::INTEGER + -2147483647::INTEGER
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# bigint
|
||||
statement ok
|
||||
SELECT 9223372036854775800::BIGINT + 1::BIGINT
|
||||
|
||||
statement error
|
||||
SELECT 9223372036854775800::BIGINT + 5000::BIGINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::BIGINT + -9223372036854775807::BIGINT
|
||||
|
||||
statement error
|
||||
SELECT -2::BIGINT + -9223372036854775808::BIGINT
|
||||
----
|
||||
Conversion Error
|
||||
|
||||
# subtraction
|
||||
# tinyint
|
||||
statement ok
|
||||
SELECT -100::TINYINT - 1::TINYINT
|
||||
|
||||
statement error
|
||||
SELECT -100::TINYINT - 50::TINYINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::TINYINT - 127::TINYINT
|
||||
|
||||
statement error
|
||||
SELECT -2::TINYINT - 127::TINYINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# smallint
|
||||
statement ok
|
||||
SELECT -30000::SMALLINT - 1::SMALLINT
|
||||
|
||||
statement error
|
||||
SELECT -30000::SMALLINT - 5000::SMALLINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::SMALLINT - 32767::SMALLINT
|
||||
|
||||
statement error
|
||||
SELECT -2::SMALLINT - 32767::SMALLINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# integer
|
||||
statement ok
|
||||
SELECT -2147483640::INTEGER - 1::INTEGER
|
||||
|
||||
statement error
|
||||
SELECT -2147483640::INTEGER - 5000::INTEGER
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::INTEGER - 2147483647::INTEGER
|
||||
|
||||
statement error
|
||||
SELECT -2::INTEGER - 2147483647::INTEGER
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# bigint
|
||||
statement ok
|
||||
SELECT -9223372036854775800::BIGINT - 1::BIGINT
|
||||
|
||||
statement error
|
||||
SELECT -9223372036854775800::BIGINT - 5000::BIGINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT 0::BIGINT - 9223372036854775807::BIGINT
|
||||
|
||||
statement error
|
||||
SELECT -2::BIGINT - 9223372036854775807::BIGINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# multiplication
|
||||
# tinyint
|
||||
statement ok
|
||||
SELECT 50::TINYINT * 2::TINYINT
|
||||
|
||||
statement error
|
||||
SELECT 50::TINYINT * 3::TINYINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT -1::TINYINT * 127::TINYINT
|
||||
|
||||
statement ok
|
||||
SELECT -2::TINYINT * 64::TINYINT
|
||||
|
||||
statement error
|
||||
SELECT -2::TINYINT * 65::TINYINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# smallint
|
||||
statement ok
|
||||
SELECT 15000::SMALLINT * 2::SMALLINT
|
||||
|
||||
statement error
|
||||
SELECT 15000::SMALLINT * 3::SMALLINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT -1::SMALLINT * 32767::SMALLINT
|
||||
|
||||
statement ok
|
||||
SELECT -2::SMALLINT * 16384::SMALLINT
|
||||
|
||||
statement error
|
||||
SELECT -2::SMALLINT * 16385::SMALLINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# integer
|
||||
statement ok
|
||||
SELECT 1073741820::INTEGER * 2::INTEGER
|
||||
|
||||
statement error
|
||||
SELECT 1073741820::INTEGER * 3::INTEGER
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT -1::INTEGER * 2147483647::INTEGER
|
||||
|
||||
statement ok
|
||||
SELECT -2::INTEGER * 1073741824::INTEGER
|
||||
|
||||
statement error
|
||||
SELECT -2::INTEGER * 1073741825::INTEGER
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
# bigint
|
||||
statement ok
|
||||
SELECT 4611686018427387900::BIGINT * 2::BIGINT
|
||||
|
||||
statement error
|
||||
SELECT 4611686018427387900::BIGINT * 3::BIGINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
|
||||
statement ok
|
||||
SELECT -1::BIGINT * 9223372036854775807::BIGINT
|
||||
|
||||
statement error
|
||||
SELECT -2::BIGINT * 4611686018427387905::BIGINT
|
||||
----
|
||||
Out of Range Error: Overflow
|
||||
Reference in New Issue
Block a user