# 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