summaryrefslogtreecommitdiff
path: root/mysql-test/main/func_hybrid_type.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/func_hybrid_type.test')
-rw-r--r--mysql-test/main/func_hybrid_type.test253
1 files changed, 253 insertions, 0 deletions
diff --git a/mysql-test/main/func_hybrid_type.test b/mysql-test/main/func_hybrid_type.test
index 31a096c3305..cf41d92b01f 100644
--- a/mysql-test/main/func_hybrid_type.test
+++ b/mysql-test/main/func_hybrid_type.test
@@ -825,3 +825,256 @@ SELECT 0 + LEAST(TIME'-10:00:00',TIME'10:00:00') AS c;
--echo #
--echo # End of 10.4 tests
--echo #
+
+
+--echo #
+--echo # Start of 10.5 tests
+--echo #
+
+--echo #
+--echo # MDEV-20332 Wrong UNSIGNED metadata flag returned for COALESCE(unsigned_field,timestamp_field)
+--echo #
+
+CREATE TABLE t1 (a INT UNSIGNED, b TIMESTAMP);
+--disable_ps_protocol
+--enable_metadata
+SELECT COALESCE(a,b) FROM t1;
+--disable_metadata
+--enable_ps_protocol
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20353 Add separate type handlers for unsigned integer data types
+--echo #
+
+--echo # Constant
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT 1=ROW(1,1);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT -1=ROW(1,1);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT 9223372036854775807=ROW(1,1);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT 9223372036854775808=ROW(1,1);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT 18446744073709551615=ROW(1,1);
+
+
+--echo # COALESCE
+
+CREATE TABLE t1 (a TINYINT UNSIGNED, b TINYINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a,a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(b,b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a SMALLINT UNSIGNED, b SMALLINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a,a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(b,b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a MEDIUMINT UNSIGNED, b MEDIUMINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a,a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(b,b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INT UNSIGNED, b INT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a,a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(b,b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BIGINT UNSIGNED, b BIGINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a,a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(b,b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+
+--echo # COALESCE for different types integer types, with the UNSIGNED flag
+
+CREATE TABLE t1 (a1 TINYINT UNSIGNED, a2 SMALLINT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 SMALLINT UNSIGNED, a2 MEDIUMINT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 MEDIUMINT UNSIGNED, a2 INT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 INT UNSIGNED, a2 BIGINT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+
+--echo # COALESCE for different types integer types, without the UNSIGNED flag
+
+CREATE TABLE t1 (a1 TINYINT, a2 SMALLINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 SMALLINT, a2 MEDIUMINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 MEDIUMINT, a2 INT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 INT, a2 BIGINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a1,a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+
+--echo # Operator +
+
+CREATE TABLE t1 (a TINYINT UNSIGNED, b TINYINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a+a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (b+b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a SMALLINT UNSIGNED, b SMALLINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a+a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (b+b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a MEDIUMINT UNSIGNED, b MEDIUMINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a+a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (b+b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INT UNSIGNED, b INT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a+a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (b+b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BIGINT UNSIGNED, b BIGINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a+a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (b+b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+
+--echo # Opetator + for different types integer types, with the UNSIGNED flag
+
+CREATE TABLE t1 (a1 TINYINT UNSIGNED, a2 SMALLINT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 SMALLINT UNSIGNED, a2 MEDIUMINT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 MEDIUMINT UNSIGNED, a2 INT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 INT UNSIGNED, a2 BIGINT UNSIGNED);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+
+--echo # Operator + for different types integer types, without the UNSIGNED flag
+
+CREATE TABLE t1 (a1 TINYINT, a2 SMALLINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 SMALLINT, a2 MEDIUMINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 MEDIUMINT, a2 INT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a1 INT, a2 BIGINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT (a1+a2)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+--echo # SUM
+
+CREATE TABLE t1 (a TINYINT UNSIGNED, b TINYINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a SMALLINT UNSIGNED, b SMALLINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a MEDIUMINT UNSIGNED, b MEDIUMINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INT UNSIGNED, b INT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BIGINT UNSIGNED, b BIGINT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(a)=ROW(1,1) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT MAX(b)=ROW(1,1) FROM t1;
+DROP TABLE t1;
+
+--echo # HEX hybrid
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT 0x20+ROW(1,1);
+
+--echo # System variables
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT @@max_allowed_packet=ROW(1,1);
+
+--echo #
+--echo # End of 10.5 tests
+--echo #