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

144 lines
2.6 KiB
SQL

# name: test/sql/overflow/bigint_overflow.test
# description: Test handling of overflow bigint; this is tested extra because the multiply overflow detection code is tricky
# group: [overflow]
statement ok
PRAGMA enable_verification
query I
SELECT 251658240::BIGINT * 251658240::BIGINT
----
63331869759897600
statement error
SELECT 251658240::BIGINT * 1080863910568919040::BIGINT
----
Out of Range Error: Overflow
statement error
SELECT 1080863910568919040::BIGINT * 251658240::BIGINT
----
Out of Range Error: Overflow
statement error
SELECT 1080863910568919040::BIGINT * 1080863910568919040::BIGINT
----
Out of Range Error: Overflow
query I
SELECT -1::BIGINT * 9223372036854775807::BIGINT
----
-9223372036854775807
statement error
SELECT -2::BIGINT * 4611686018427387905::BIGINT
----
Out of Range Error: Overflow
query I
SELECT 8589934592::BIGINT * 1073741823::BIGINT
----
9223372028264841216
statement error
SELECT 10737418240::BIGINT * 1073741823::BIGINT
----
Out of Range Error: Overflow
query I
SELECT 1073741823::BIGINT * 8589934592::BIGINT
----
9223372028264841216
statement error
SELECT 1073741823::BIGINT * 10737418240::BIGINT
----
Out of Range Error: Overflow
query I
SELECT 1073741823::BIGINT * 8589934592::BIGINT
----
9223372028264841216
# int64_min
statement error
SELECT (-9223372036854775808)::BIGINT * 2::BIGINT
----
Out of Range Error: Overflow
statement error
SELECT (-9223372036854775808)::BIGINT * -1::BIGINT
----
Out of Range Error: Overflow
statement error
SELECT -1::BIGINT * (-9223372036854775808)::BIGINT
----
Out of Range Error: Overflow
statement error
SELECT -2::BIGINT * (-9223372036854775808)::BIGINT
----
Out of Range Error: Overflow
query I
SELECT (-9223372036854775808)::BIGINT * 0::BIGINT
----
0
query I
SELECT (-9223372036854775808)::BIGINT * 1::BIGINT
----
-9223372036854775808
query I
SELECT 0::BIGINT * (-9223372036854775808)::BIGINT
----
0
query I
SELECT 1::BIGINT * (-9223372036854775808)::BIGINT
----
-9223372036854775808
# int64_min + 1
statement error
SELECT (-9223372036854775807)::BIGINT * 2::BIGINT
----
Out of Range Error: Overflow
query I
SELECT (-9223372036854775807)::BIGINT * -1::BIGINT
----
9223372036854775807
query I
SELECT -1::BIGINT * (-9223372036854775807)::BIGINT
----
9223372036854775807
statement error
SELECT -2::BIGINT * (-9223372036854775807)::BIGINT
----
Out of Range Error: Overflow
query I
SELECT (-9223372036854775807)::BIGINT * 0::BIGINT
----
0
query I
SELECT (-9223372036854775807)::BIGINT * 1::BIGINT
----
-9223372036854775807
query I
SELECT 0::BIGINT * (-9223372036854775807)::BIGINT
----
0
query I
SELECT 1::BIGINT * (-9223372036854775807)::BIGINT
----
-9223372036854775807