This is an automated email from the ASF dual-hosted git repository.

zstan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 7c06fb3f0c IGNITE-23359 Sql. Additional tests for "out of range" 
arithmetic operations (#4501)
7c06fb3f0c is described below

commit 7c06fb3f0c0fcb4b3ad2e7d0fae64ff4aab5d667
Author: Evgeniy Stanilovskiy <[email protected]>
AuthorDate: Mon Oct 14 10:51:15 2024 +0300

    IGNITE-23359 Sql. Additional tests for "out of range" arithmetic operations 
(#4501)
---
 .../internal/sql/engine/ItDataTypesTest.java       |  66 ------
 .../sql/engine/ItDynamicParameterTest.java         |  36 ++++
 .../sql/insert/test_insert_type.test               | 236 +++++++++++++++++++++
 .../sql/order/test_order_by_in_subquery.test       |   2 +-
 .../integer/integer_integer_overflow_cast.test     |  78 +++++++
 .../sql/types/integer/integer_overflow.test        |  79 +++++++
 6 files changed, 430 insertions(+), 67 deletions(-)

diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
index d96838db87..e96df8bd17 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
@@ -61,8 +61,6 @@ public class ItDataTypesTest extends BaseSqlIntegrationTest {
 
     private static final String NUMERIC_FORMAT_ERROR = "neither a decimal 
digit number";
 
-    private static final Object EMPTY_PARAM = new Object();
-
     /**
      * Drops all created tables.
      */
@@ -535,70 +533,6 @@ public class ItDataTypesTest extends 
BaseSqlIntegrationTest {
         expectResult(checker, result);
     }
 
-    @ParameterizedTest(name = "{1} {2}")
-    @MethodSource("decimalOverflows")
-    public void testCalcOpOverflow(SqlTypeName type, String expr, Object 
param) {
-        if (param == EMPTY_PARAM) {
-            assertThrowsSqlException(RUNTIME_ERR, type.getName() + " out of 
range", () -> sql(expr));
-        } else {
-            assertThrowsSqlException(RUNTIME_ERR, type.getName() + " out of 
range", () -> sql(expr, param));
-        }
-    }
-
-    private static Stream<Arguments> decimalOverflows() {
-        return Stream.of(
-                // BIGINT
-                arguments(SqlTypeName.BIGINT, "SELECT 9223372036854775807 + 
1", EMPTY_PARAM),
-                arguments(SqlTypeName.BIGINT, "SELECT 9223372036854775807 * 
2", EMPTY_PARAM),
-                arguments(SqlTypeName.BIGINT, "SELECT -9223372036854775808 - 
1", EMPTY_PARAM),
-                arguments(SqlTypeName.BIGINT, "SELECT -(-9223372036854775807 - 
1)", EMPTY_PARAM),
-                arguments(SqlTypeName.BIGINT, "SELECT 
-CAST(-9223372036854775808 AS BIGINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.BIGINT, "SELECT -(?)", 
-9223372036854775808L),
-                arguments(SqlTypeName.BIGINT, "SELECT 
-9223372036854775808/-1", EMPTY_PARAM),
-
-                // INTEGER
-                arguments(SqlTypeName.INTEGER, "SELECT 2147483647 + 1", 
EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "SELECT CAST(CAST(2147483648 AS 
BIGINT) AS INTEGER)", EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "SELECT 2147483647 * 2", 
EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "SELECT -2147483648 - 1", 
EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "SELECT -(-2147483647 - 1)", 
EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "SELECT -CAST(-2147483648 AS 
INTEGER)", EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "SELECT -(?)", -2147483648),
-                arguments(SqlTypeName.INTEGER, "SELECT -2147483648/-1", 
EMPTY_PARAM),
-                arguments(SqlTypeName.INTEGER, "select 
CAST(9223372036854775807.5 + 9223372036854775807.5 AS INTEGER)",
-                        EMPTY_PARAM),
-
-                // SMALLINT
-                arguments(SqlTypeName.SMALLINT, "SELECT 32000::SMALLINT + 
1000::SMALLINT", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "select 
CAST(9223372036854775807.5 + 9223372036854775807.5 AS SMALLINT)",
-                        EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT CAST(CAST(33000 AS 
BIGINT) AS SMALLINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT CAST(CAST(33000 AS 
FLOAT) AS SMALLINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT CAST(CAST(33000 + 1 AS 
FLOAT) AS SMALLINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT 17000::SMALLINT * 
2::SMALLINT", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT -32000::SMALLINT - 
1000::SMALLINT", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT -(-32767::SMALLINT - 
1::SMALLINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT -CAST(-32768 AS 
SMALLINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.SMALLINT, "SELECT -CAST(? AS SMALLINT)", 
-32768),
-                arguments(SqlTypeName.SMALLINT, "SELECT CAST (-32768 AS 
SMALLINT)/-1::SMALLINT", EMPTY_PARAM),
-
-                // TINYINT
-                arguments(SqlTypeName.TINYINT, "SELECT 2::TINYINT + 
127::TINYINT", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "select 
CAST(9223372036854775807.5 + 9223372036854775807.5 AS TINYINT)",
-                        EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT CAST(CAST(200 AS 
BIGINT) AS TINYINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT CAST(CAST(200 AS FLOAT) 
AS TINYINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT CAST(CAST(200 + 1 AS 
FLOAT) AS TINYINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT 2::TINYINT * 
127::TINYINT", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT -2::TINYINT - 
127::TINYINT", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT -(-127::TINYINT - 
1::TINYINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT -CAST(-128 AS 
TINYINT)", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT -CAST(? AS TINYINT)", 
-128),
-                arguments(SqlTypeName.TINYINT, "SELECT CAST(-128 AS 
TINYINT)/-1::TINYINT", EMPTY_PARAM),
-                arguments(SqlTypeName.TINYINT, "SELECT CAST(CAST(200 + 1 AS 
FLOAT) AS TINYINT)", EMPTY_PARAM)
-        );
-    }
-
     @ParameterizedTest(name = "{1}")
     @MethodSource("decimalOverflowsValidation")
     public void testCastDecimalOverflows(SqlTypeName type, String expr, 
Boolean withException) {
diff --git 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
index 8ee4f986d3..bb12dcaa8a 100644
--- 
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
+++ 
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.sql.engine;
 import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
 import static 
org.apache.ignite.internal.sql.engine.util.SqlTestUtils.assertThrowsSqlException;
 import static org.apache.ignite.internal.testframework.IgniteTestUtils.await;
+import static org.apache.ignite.lang.ErrorGroups.Sql.RUNTIME_ERR;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.params.provider.Arguments.arguments;
@@ -481,6 +482,41 @@ public class ItDynamicParameterTest extends 
BaseSqlIntegrationTest {
         });
     }
 
+    @ParameterizedTest(name = "{1} {2}")
+    @MethodSource("integerOverflows")
+    @SuppressWarnings("ThrowableNotThrown")
+    public void testCalcOpOverflow(SqlTypeName type, String expr, Object 
param) {
+        assertThrowsSqlException(RUNTIME_ERR, type.getName() + " out of 
range", () -> sql(expr, param));
+    }
+
+    private static Stream<Arguments> integerOverflows() {
+        return Stream.of(
+                // BIGINT
+                arguments(SqlTypeName.BIGINT, "SELECT -(?)", 
-9223372036854775808L),
+                arguments(SqlTypeName.BIGINT, "SELECT CAST(-? AS BIGINT)/-1", 
"9223372036854775808"),
+                arguments(SqlTypeName.BIGINT, "SELECT CAST(-? AS BIGINT) * 
-1", "9223372036854775808"),
+                arguments(SqlTypeName.BIGINT, "SELECT (?::BIGINT/-1)::BIGINT", 
"-9223372036854775808"),
+
+                // INTEGER
+                arguments(SqlTypeName.INTEGER, "SELECT -(?)", -2147483648),
+                arguments(SqlTypeName.INTEGER, "SELECT CAST(-? AS 
INTEGER)/-1", "2147483648"),
+                arguments(SqlTypeName.INTEGER, "SELECT CAST(-? AS INTEGER) * 
-1", "2147483648"),
+                arguments(SqlTypeName.INTEGER, "SELECT (?/-1)::INTEGER", 
"-2147483648"),
+
+                // SMALLINT
+                arguments(SqlTypeName.SMALLINT, "SELECT -CAST(? AS SMALLINT)", 
-32768),
+                arguments(SqlTypeName.SMALLINT, "SELECT (CAST(-? AS 
SMALLINT)/-1)::SMALLINT", 32768),
+                arguments(SqlTypeName.SMALLINT, "SELECT (CAST(-? AS SMALLINT) 
* -1)::SMALLINT", 32768),
+                arguments(SqlTypeName.SMALLINT, "SELECT (?/-1)::SMALLINT", 
-32768),
+
+                // TINYINT
+                arguments(SqlTypeName.TINYINT, "SELECT -CAST(? AS TINYINT)", 
-128),
+                arguments(SqlTypeName.TINYINT, "SELECT (CAST(-? AS 
TINYINT)/-1)::TINYINT", 128),
+                arguments(SqlTypeName.TINYINT, "SELECT (CAST(-? AS TINYINT) * 
-1)::TINYINT", 128),
+                arguments(SqlTypeName.TINYINT, "SELECT (?/-1)::TINYINT", -128)
+        );
+    }
+
     @Override
     protected int initialNodes() {
         return 1;
diff --git 
a/modules/sql-engine/src/integrationTest/sql/insert/test_insert_type.test 
b/modules/sql-engine/src/integrationTest/sql/insert/test_insert_type.test
index 4b8ee7a774..7aecc16ee7 100644
--- a/modules/sql-engine/src/integrationTest/sql/insert/test_insert_type.test
+++ b/modules/sql-engine/src/integrationTest/sql/insert/test_insert_type.test
@@ -30,3 +30,239 @@ SELECT * FROM strings ORDER BY cast(a AS INTEGER)
 4
 13
 NULL
+
+statement ok
+CREATE TABLE t8(id int, i TINYINT);
+
+statement ok
+CREATE TABLE t16(id int, i SMALLINT);
+
+statement ok
+CREATE TABLE t32(id int, i INTEGER);
+
+statement ok
+CREATE TABLE t64(id int, i BIGINT);
+
+statement ok
+INSERT INTO t8 VALUES(1, -128);
+
+statement ok
+INSERT INTO t16 VALUES(1, -32768);
+
+statement ok
+INSERT INTO t32 VALUES(1, -2147483648);
+
+statement ok
+INSERT INTO t64 VALUES(1, -9223372036854775808);
+
+#Multiply
+
+statement error: TINYINT out of range
+INSERT INTO t16 VALUES(2, (SELECT i * i FROM t8 WHERE id=1));
+
+statement error: SMALLINT out of range
+INSERT INTO t32 VALUES(2, (SELECT i * i FROM t16 WHERE id=1));
+
+statement error: INTEGER out of range
+INSERT INTO t64 VALUES(2, (SELECT i * i FROM t32 WHERE id=1));
+
+
+for val in [SMALLINT, INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t16 VALUES(2, (SELECT i * i::${val} FROM t8 WHERE id=1));
+
+query T
+SELECT i FROM t16 WHERE id=2;
+----
+16384
+
+statement ok
+DELETE FROM t16 WHERE id=2;
+
+endfor
+
+
+for val in [INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t32 VALUES(2, (SELECT i * i::${val} FROM t16 WHERE id=1));
+
+query T
+SELECT i FROM t32 WHERE id=2;
+----
+1073741824
+
+statement ok
+DELETE FROM t32 WHERE id=2;
+
+endfor
+
+
+for val in [DECIMAL(19\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t64 VALUES(2, (SELECT i * i::${val} FROM t32 WHERE id=1));
+
+query T
+SELECT i FROM t64 WHERE id=2;
+----
+4611686018427387904
+
+statement ok
+DELETE FROM t64 WHERE id=2;
+
+endfor
+
+
+#Divide
+
+for val in [TINYINT, SMALLINT, INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, 
DOUBLE]
+
+statement ok
+INSERT INTO t16 VALUES(2, (SELECT i::${val}/-1 FROM t8 WHERE id=1));
+
+query T
+SELECT i FROM t16 WHERE id=2;
+----
+128
+
+statement ok
+DELETE FROM t16 WHERE id=2;
+
+endfor
+
+
+for val in [SMALLINT, INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t32 VALUES(2, (SELECT i::${val}/-1 FROM t16 WHERE id=1));
+
+query T
+SELECT i FROM t32 WHERE id=2;
+----
+32768
+
+statement ok
+DELETE FROM t32 WHERE id=2;
+
+endfor
+
+
+for val in [DECIMAL(19\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t64 VALUES(2, (SELECT i::${val}/-1 FROM t32 WHERE id=1));
+
+query T
+SELECT i FROM t64 WHERE id=2;
+----
+2147483648
+
+statement ok
+DELETE FROM t64 WHERE id=2;
+
+endfor
+
+
+
+#Add
+
+for val in [SMALLINT, INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t16 VALUES(2, (SELECT i::${val} + i FROM t8 WHERE id=1));
+
+query T
+SELECT i FROM t16 WHERE id=2;
+----
+-256
+
+statement ok
+DELETE FROM t16 WHERE id=2;
+
+endfor
+
+
+for val in [INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t32 VALUES(2, (SELECT i::${val} + i FROM t16 WHERE id=1));
+
+query T
+SELECT i FROM t32 WHERE id=2;
+----
+-65536
+
+statement ok
+DELETE FROM t32 WHERE id=2;
+
+endfor
+
+
+for val in [DECIMAL(11\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t64 VALUES(2, (SELECT i::${val} + i FROM t32 WHERE id=1));
+
+query T
+SELECT i FROM t64 WHERE id=2;
+----
+-4294967296
+
+statement ok
+DELETE FROM t64 WHERE id=2;
+
+endfor
+
+
+#Subtract
+
+for val in [SMALLINT, INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t16 VALUES(2, (SELECT i::${val} - 1 FROM t8 WHERE id=1));
+
+query T
+SELECT i FROM t16 WHERE id=2;
+----
+-129
+
+statement ok
+DELETE FROM t16 WHERE id=2;
+
+endfor
+
+
+for val in [INT, DECIMAL(10\,0), BIGINT, REAL, FLOAT, DOUBLE]
+
+statement ok
+INSERT INTO t32 VALUES(2, (SELECT i::${val} - 1 FROM t16 WHERE id=1));
+
+query T
+SELECT i FROM t32 WHERE id=2;
+----
+-32769
+
+statement ok
+DELETE FROM t32 WHERE id=2;
+
+endfor
+
+
+for val in [DECIMAL(11\,0), BIGINT, DOUBLE]
+
+statement ok
+INSERT INTO t64 VALUES(2, (SELECT i::${val} - 1 FROM t32 WHERE id=1));
+
+query T
+SELECT i FROM t64 WHERE id=2;
+----
+-2147483649
+
+statement ok
+DELETE FROM t64 WHERE id=2;
+
+endfor
+
+
diff --git 
a/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
 
b/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
index 355358f792..525a792414 100644
--- 
a/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
+++ 
b/modules/sql-engine/src/integrationTest/sql/order/test_order_by_in_subquery.test
@@ -33,7 +33,7 @@ statement error
 SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY l
 
 # ORDER BY on alias in right-most query but related just to the subquery.
-query I
+query I rowsort
 SELECT a-10 AS k FROM test UNION (SELECT a-10 AS l FROM test ORDER BY l)
 ----
 1
diff --git 
a/modules/sql-engine/src/integrationTest/sql/types/integer/integer_integer_overflow_cast.test
 
b/modules/sql-engine/src/integrationTest/sql/types/integer/integer_integer_overflow_cast.test
new file mode 100644
index 0000000000..36e010056f
--- /dev/null
+++ 
b/modules/sql-engine/src/integrationTest/sql/types/integer/integer_integer_overflow_cast.test
@@ -0,0 +1,78 @@
+# name: test/sql/types/integer/integer_integer_overflow_cast.test
+# description: Test casting from integer to integer
+# group: [integer]
+
+statement ok
+PRAGMA enable_verification
+
+statement error: INTEGER out of range
+SELECT CAST (-2147483648 AS INTEGER)/-1::INTEGER
+
+statement error: INTEGER out of range
+SELECT CAST(CAST(2147483648 AS BIGINT) AS INTEGER)
+
+statement error: INTEGER out of range
+SELECT -CAST(-2147483648 AS INTEGER)
+
+statement error: INTEGER out of range
+SELECT CAST(9223372036854775807.5 + 9223372036854775807.5 AS INTEGER)
+
+statement error: INTEGER out of range
+SELECT CAST(CAST(2147483647 + 1 AS FLOAT) AS INTEGER)
+
+
+statement error: SMALLINT out of range
+SELECT CAST (-32768 AS SMALLINT)/-1::SMALLINT
+
+statement error: SMALLINT out of range
+SELECT (CAST (-32768 AS SMALLINT)/-1::SMALLINT)::SMALLINT
+
+statement error: SMALLINT out of range
+SELECT CAST(9223372036854775807.5 + 9223372036854775807.5 AS SMALLINT)
+
+statement error: SMALLINT out of range
+SELECT CAST(CAST(33000 AS BIGINT) AS SMALLINT)
+
+statement error: SMALLINT out of range
+SELECT CAST(CAST(33000 AS FLOAT) AS SMALLINT)
+
+statement error: SMALLINT out of range
+SELECT CAST(CAST(33000 + 1 AS FLOAT) AS SMALLINT)
+
+statement error: SMALLINT out of range
+SELECT -CAST(-32768 AS SMALLINT)
+
+statement error: SMALLINT out of range
+SELECT CAST(CAST(32767 + 1 AS FLOAT) AS SMALLINT)
+
+
+statement error: TINYINT out of range
+SELECT CAST(-128 AS TINYINT)/-1::TINYINT
+
+statement error: TINYINT out of range
+SELECT CAST(9223372036854775807.5 + 9223372036854775807.5 AS TINYINT)
+
+statement error: TINYINT out of range
+SELECT CAST(CAST(200 AS BIGINT) AS TINYINT)
+
+statement error: TINYINT out of range
+SELECT CAST(CAST(200 AS FLOAT) AS TINYINT)
+
+statement error: TINYINT out of range
+SELECT CAST(CAST(200 + 1 AS FLOAT) AS TINYINT)
+
+statement error: TINYINT out of range
+SELECT -CAST(-128 AS TINYINT)
+
+statement error: TINYINT out of range
+SELECT CAST(CAST(200 + 1 AS FLOAT) AS TINYINT)
+
+
+statement error: BIGINT out of range
+SELECT CAST(-9223372036854775808 AS BIGINT)/-1::BIGINT
+
+statement error: BIGINT out of range
+SELECT -CAST(-9223372036854775808 AS BIGINT)
+
+
+
diff --git 
a/modules/sql-engine/src/integrationTest/sql/types/integer/integer_overflow.test
 
b/modules/sql-engine/src/integrationTest/sql/types/integer/integer_overflow.test
new file mode 100644
index 0000000000..ccca1cc8fd
--- /dev/null
+++ 
b/modules/sql-engine/src/integrationTest/sql/types/integer/integer_overflow.test
@@ -0,0 +1,79 @@
+# name: test/sql/types/integer/integer_overflow.test
+# description: Test casting from integer to integer
+# group: [integer]
+
+statement ok
+PRAGMA enable_verification
+
+statement error: INTEGER out of range
+SELECT -2147483648/-1
+
+statement error: INTEGER out of range
+SELECT 2147483648::INTEGER
+
+statement error: INTEGER out of range
+SELECT 2147483647 + 1
+
+statement error: INTEGER out of range
+SELECT 2147483647 * 2
+
+statement error: INTEGER out of range
+SELECT -2147483648 - 1
+
+statement error: INTEGER out of range
+SELECT -(-2147483647 - 1)
+
+statement error: SMALLINT out of range
+SELECT -32768::SMALLINT/-1
+
+statement error: SMALLINT out of range
+SELECT (-32768/-1)::SMALLINT
+
+statement error: SMALLINT out of range
+SELECT 32000::SMALLINT + 1000::SMALLINT
+
+statement error: SMALLINT out of range
+SELECT 17000::SMALLINT * 2::SMALLINT
+
+statement error: SMALLINT out of range
+SELECT -32000::SMALLINT - 1000::SMALLINT
+
+statement error: SMALLINT out of range
+SELECT -(-32767::SMALLINT - 1::SMALLINT)
+
+statement error: TINYINT out of range
+SELECT -128::TINYINT/-1
+
+statement error: TINYINT out of range
+SELECT (-128/-1)::TINYINT
+
+statement error: TINYINT out of range
+SELECT 2::TINYINT + 127::TINYINT
+
+statement error: TINYINT out of range
+SELECT 2::TINYINT * 127::TINYINT
+
+statement error: TINYINT out of range
+SELECT -2::TINYINT - 127::TINYINT
+
+statement error: TINYINT out of range
+SELECT -(-127::TINYINT - 1::TINYINT)
+
+statement error: BIGINT out of range
+SELECT -9223372036854775808/-1
+
+statement error: BIGINT out of range
+SELECT 9223372036854775808
+
+statement error: BIGINT out of range
+SELECT 9223372036854775807 + 1
+
+statement error: BIGINT out of range
+SELECT 9223372036854775807 * 2
+
+statement error: BIGINT out of range
+SELECT -9223372036854775808 - 1
+
+statement error: BIGINT out of range
+SELECT -(-9223372036854775807 - 1)
+

Reply via email to