1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-28963 Incompatible data type assignment through SP vars is not consistent with columns

This commit is contained in:
Alexander Barkov
2022-06-27 18:01:16 +04:00
parent c4bfb61803
commit 4a7e337e5f
26 changed files with 1801 additions and 29 deletions

View File

@@ -10,6 +10,9 @@ SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
AND TABLE_NAME='t1'
AND TABLE_SCHEMA='test');
let $source_type= `(SELECT @source_type)`;
let $target_type= `(SELECT @target_type)`;
CREATE TABLE t2 LIKE t1;
ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
@@ -134,4 +137,122 @@ EXECUTE IMMEDIATE @alter;
DROP TABLE t3;
DROP TABLE t2;
#
# MDEV-28963 Incompatible data type assignment through SP vars is not consistent with columns
#
#
# SP local variables
#
DELIMITER $$;
eval CREATE PROCEDURE p1()
BEGIN
DECLARE src $source_type DEFAULT NULL;
DECLARE dst $target_type DEFAULT NULL;
SET dst=src;
END;
$$
DELIMITER ;$$
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1;
DROP PROCEDURE p1;
#
# SP IN parameters
#
--eval CREATE FUNCTION f1(a $target_type) RETURNS INT RETURN NULL;
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
DROP FUNCTION f1;
--eval CREATE PROCEDURE p1(a $target_type) BEGIN END;
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
DROP PROCEDURE p1;
#
# SP OUT parameters
#
DELIMITER $$;
eval CREATE PROCEDURE p1(OUT dst $target_type)
BEGIN
DECLARE src $source_type DEFAULT NULL;
SET dst=src;
END;
$$
eval CREATE PROCEDURE p2()
BEGIN
DECLARE dst $target_type DEFAULT NULL;
CALL p1(dst);
END;
$$
DELIMITER ;$$
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p2();
SHOW WARNINGS;
DROP PROCEDURE p2;
DROP PROCEDURE p1;
#
# SF RETURN
#
DELIMITER $$;
eval CREATE FUNCTION f1() RETURNS $target_type
BEGIN
DECLARE rc $source_type DEFAULT NULL;
RETURN rc;
END;
$$
DELIMITER ;$$
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
SELECT f1();
DROP FUNCTION f1;
#
# Cursor IN parameters
#
DELIMITER $$;
eval CREATE PROCEDURE p1()
BEGIN
DECLARE src $source_type DEFAULT NULL;
DECLARE cur1 CURSOR(t $target_type) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
DELIMITER ;$$
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1();
DROP PROCEDURE p1;
#
# FETCH
#
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
DELIMITER $$;
eval CREATE PROCEDURE p1()
BEGIN
DECLARE dst $target_type DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
DELIMITER ;$$
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1();
DROP PROCEDURE p1;
DROP TABLE t2;
--echo # End of type_store_assignment_incompatible.inc

View File

@@ -226,7 +226,7 @@ Warning 1356 View 'test.v1' references invalid table(s) or column(s) or function
SELECT * FROM v1;
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
UPDATE t2 SET f = f + 10;
ERROR 42S22: Unknown column 'd' in 'OLD'
ERROR 42S22: Unknown column 'd' in 'NEW'
CALL sp1();
ERROR 42S22: Unknown column 'd' in 'field list'
DROP TRIGGER trg1;

View File

@@ -20,7 +20,7 @@ RETURN a;
END;
$$
SELECT f1(ROW(10,20));
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP FUNCTION f1;
#
# ROW as an SP parameter
@@ -236,7 +236,7 @@ SELECT f1(a);
END;
$$
CALL p1();
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP PROCEDURE p1;
DROP FUNCTION f1;
#
@@ -286,7 +286,7 @@ RETURN rec;
END;
$$
SELECT f1(10);
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP FUNCTION f1;
#
# Using the entire ROW in SELECT..CREATE

View File

@@ -27,7 +27,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
SELECT f1(ROW(10,20));
DROP FUNCTION f1;
@@ -307,7 +307,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1();
DROP PROCEDURE p1;
DROP FUNCTION f1;
@@ -393,7 +393,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
SELECT f1(10);
DROP FUNCTION f1;

View File

@@ -1026,11 +1026,11 @@ BEGIN
SELECT arg;
END|
CALL p1((1, 2));
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types tinyint and row for operation 'SET'
CALL p1((SELECT * FROM t1 LIMIT 1));
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types tinyint and row for operation 'SET'
CALL p1((SELECT col1, col2 FROM t1 LIMIT 1));
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types tinyint and row for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t1;

View File

@@ -1221,13 +1221,13 @@ BEGIN
END|
delimiter ;|
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1((1, 2));
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1((SELECT * FROM t1 LIMIT 1));
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1((SELECT col1, col2 FROM t1 LIMIT 1));
#

View File

@@ -255,7 +255,7 @@ return i+1|
call sub1("sub1a", (select 7))|
call sub1("sub1b", (select max(i) from t2))|
call sub1("sub1c", (select i,d from t2 limit 1))|
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
call sub1("sub1d", (select 1 from (select 1) a))|
call sub2("sub2")|
select * from t1 order by id|

View File

@@ -386,7 +386,7 @@ create function sub3(i int) returns int deterministic
call sub1("sub1a", (select 7))|
call sub1("sub1b", (select max(i) from t2))|
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
call sub1("sub1c", (select i,d from t2 limit 1))|
call sub1("sub1d", (select 1 from (select 1) a))|
call sub2("sub2")|

View File

@@ -92,6 +92,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(11) DEFAULT NULL;
DECLARE dst geometry DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a geometry) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a geometry) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst geometry)
BEGIN
DECLARE src int(11) DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst geometry DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types geometry and int for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS geometry
BEGIN
DECLARE rc int(11) DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(11) DEFAULT NULL;
DECLARE cur1 CURSOR(t geometry) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst geometry DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target INT DEFAULT 0, source GEOMETRY DEFAULT POINT(1,1));
@@ -185,6 +259,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types geometry and int for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src geometry DEFAULT NULL;
DECLARE dst int(11) DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a int(11)) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a int(11)) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst int(11))
BEGIN
DECLARE src geometry DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst int(11) DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types int and geometry for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS int(11)
BEGIN
DECLARE rc geometry DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src geometry DEFAULT NULL;
DECLARE cur1 CURSOR(t int(11)) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst int(11) DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int and geometry for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -24,7 +24,7 @@ RETURN a;
END;
$$
SELECT f1(ROW(10,20));
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP FUNCTION f1;
#
# ROW as an SP parameter
@@ -261,7 +261,7 @@ SELECT f1(a);
END;
$$
CALL p1();
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP PROCEDURE p1;
DROP FUNCTION f1;
CREATE FUNCTION f1(a INT) RETURN INT
@@ -278,7 +278,7 @@ SELECT f1(a);
END;
$$
CALL p1();
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP PROCEDURE p1;
DROP FUNCTION f1;
#
@@ -332,7 +332,7 @@ RETURN rec;
END;
$$
SELECT f1(10);
ERROR 21000: Operand should contain 1 column(s)
ERROR HY000: Illegal parameter data types int and row for operation 'SET'
DROP FUNCTION f1;
#
# Using the entire ROW in SELECT..CREATE

View File

@@ -35,7 +35,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
SELECT f1(ROW(10,20));
DROP FUNCTION f1;
@@ -334,7 +334,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1();
DROP PROCEDURE p1;
DROP FUNCTION f1;
@@ -355,7 +355,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1();
DROP PROCEDURE p1;
DROP FUNCTION f1;
@@ -427,7 +427,7 @@ BEGIN
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
SELECT f1(10);
DROP FUNCTION f1;

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src decimal(38,0) DEFAULT NULL;
DECLARE dst inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a inet6) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a inet6) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst inet6)
BEGIN
DECLARE src decimal(38,0) DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types inet6 and decimal for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS inet6
BEGIN
DECLARE rc decimal(38,0) DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src decimal(38,0) DEFAULT NULL;
DECLARE cur1 CURSOR(t inet6) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target DECIMAL(38,0) DEFAULT 0, source INET6 DEFAULT '::0');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types inet6 and decimal for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE dst decimal(38,0) DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a decimal(38,0)) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a decimal(38,0)) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst decimal(38,0))
BEGIN
DECLARE src inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst decimal(38,0) DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types decimal and inet6 for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS decimal(38,0)
BEGIN
DECLARE rc inet6 DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE cur1 CURSOR(t decimal(38,0)) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst decimal(38,0) DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types decimal and inet6 for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src double DEFAULT NULL;
DECLARE dst inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a inet6) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a inet6) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst inet6)
BEGIN
DECLARE src double DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types inet6 and double for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS inet6
BEGIN
DECLARE rc double DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src double DEFAULT NULL;
DECLARE cur1 CURSOR(t inet6) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target DOUBLE DEFAULT 0, source INET6 DEFAULT '::0');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types inet6 and double for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE dst double DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a double) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a double) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst double)
BEGIN
DECLARE src inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst double DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types double and inet6 for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS double
BEGIN
DECLARE rc inet6 DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE cur1 CURSOR(t double) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst double DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types double and inet6 for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(11) DEFAULT NULL;
DECLARE dst inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a inet6) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a inet6) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst inet6)
BEGIN
DECLARE src int(11) DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types inet6 and int for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS inet6
BEGIN
DECLARE rc int(11) DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(11) DEFAULT NULL;
DECLARE cur1 CURSOR(t inet6) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target INT DEFAULT 0, source INET6 DEFAULT '::0');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE dst int(11) DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a int(11)) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a int(11)) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst int(11))
BEGIN
DECLARE src inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst int(11) DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types int and inet6 for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS int(11)
BEGIN
DECLARE rc inet6 DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE cur1 CURSOR(t int(11)) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst int(11) DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int and inet6 for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src time DEFAULT NULL;
DECLARE dst inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a inet6) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a inet6) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst inet6)
BEGIN
DECLARE src time DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types inet6 and time for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS inet6
BEGIN
DECLARE rc time DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src time DEFAULT NULL;
DECLARE cur1 CURSOR(t inet6) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target TIME DEFAULT '00:00:00', source INET6 DEFAULT '::0');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types inet6 and time for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE dst time DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a time) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a time) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst time)
BEGIN
DECLARE src inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst time DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types time and inet6 for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS time
BEGIN
DECLARE rc inet6 DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE cur1 CURSOR(t time) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst time DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types time and inet6 for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(10) unsigned DEFAULT NULL;
DECLARE dst inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a inet6) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a inet6) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst inet6)
BEGIN
DECLARE src int(10) unsigned DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types inet6 and int unsigned for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS inet6
BEGIN
DECLARE rc int(10) unsigned DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(10) unsigned DEFAULT NULL;
DECLARE cur1 CURSOR(t inet6) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst inet6 DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target INT UNSIGNED DEFAULT 0, source INET6 DEFAULT '::0');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types inet6 and int unsigned for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE dst int(10) unsigned DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a int(10) unsigned) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a int(10) unsigned) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst int(10) unsigned)
BEGIN
DECLARE src inet6 DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst int(10) unsigned DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types int unsigned and inet6 for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS int(10) unsigned
BEGIN
DECLARE rc inet6 DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src inet6 DEFAULT NULL;
DECLARE cur1 CURSOR(t int(10) unsigned) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst int(10) unsigned DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int unsigned and inet6 for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src decimal(38,0) DEFAULT NULL;
DECLARE dst uuid DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a uuid) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a uuid) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst uuid)
BEGIN
DECLARE src decimal(38,0) DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst uuid DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types uuid and decimal for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS uuid
BEGIN
DECLARE rc decimal(38,0) DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src decimal(38,0) DEFAULT NULL;
DECLARE cur1 CURSOR(t uuid) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst uuid DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target DECIMAL(38,0) DEFAULT 0, source UUID DEFAULT '00000000-0000-0000-0000-000000000000');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types uuid and decimal for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE dst decimal(38,0) DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a decimal(38,0)) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a decimal(38,0)) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst decimal(38,0))
BEGIN
DECLARE src uuid DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst decimal(38,0) DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types decimal and uuid for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS decimal(38,0)
BEGIN
DECLARE rc uuid DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE cur1 CURSOR(t decimal(38,0)) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst decimal(38,0) DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types decimal and uuid for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src double DEFAULT NULL;
DECLARE dst uuid DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a uuid) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a uuid) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst uuid)
BEGIN
DECLARE src double DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst uuid DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types uuid and double for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS uuid
BEGIN
DECLARE rc double DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src double DEFAULT NULL;
DECLARE cur1 CURSOR(t uuid) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst uuid DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target DOUBLE DEFAULT 0, source UUID DEFAULT '00000000-0000-0000-0000-000000000000');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types uuid and double for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE dst double DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a double) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a double) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst double)
BEGIN
DECLARE src uuid DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst double DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types double and uuid for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS double
BEGIN
DECLARE rc uuid DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE cur1 CURSOR(t double) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst double DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types double and uuid for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(11) DEFAULT NULL;
DECLARE dst uuid DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a uuid) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a uuid) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst uuid)
BEGIN
DECLARE src int(11) DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst uuid DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types uuid and int for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS uuid
BEGIN
DECLARE rc int(11) DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(11) DEFAULT NULL;
DECLARE cur1 CURSOR(t uuid) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst uuid DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target INT DEFAULT 0, source UUID DEFAULT '00000000-0000-0000-0000-000000000000');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types uuid and int for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE dst int(11) DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a int(11)) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a int(11)) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst int(11))
BEGIN
DECLARE src uuid DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst int(11) DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types int and uuid for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS int(11)
BEGIN
DECLARE rc uuid DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE cur1 CURSOR(t int(11)) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst int(11) DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int and uuid for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src time DEFAULT NULL;
DECLARE dst uuid DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a uuid) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a uuid) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst uuid)
BEGIN
DECLARE src time DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst uuid DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types uuid and time for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS uuid
BEGIN
DECLARE rc time DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src time DEFAULT NULL;
DECLARE cur1 CURSOR(t uuid) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst uuid DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target TIME DEFAULT '00:00:00', source UUID DEFAULT '00000000-0000-0000-0000-000000000000');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types uuid and time for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE dst time DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a time) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a time) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst time)
BEGIN
DECLARE src uuid DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst time DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types time and uuid for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS time
BEGIN
DECLARE rc uuid DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE cur1 CURSOR(t time) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst time DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types time and uuid for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -95,6 +95,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(10) unsigned DEFAULT NULL;
DECLARE dst uuid DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a uuid) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a uuid) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst uuid)
BEGIN
DECLARE src int(10) unsigned DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst uuid DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types uuid and int unsigned for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS uuid
BEGIN
DECLARE rc int(10) unsigned DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src int(10) unsigned DEFAULT NULL;
DECLARE cur1 CURSOR(t uuid) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst uuid DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
CREATE TABLE t1 (target INT UNSIGNED DEFAULT 0, source UUID DEFAULT '00000000-0000-0000-0000-000000000000');
@@ -188,6 +262,80 @@ EXECUTE IMMEDIATE @alter;
ERROR HY000: Illegal parameter data types uuid and int unsigned for operation 'SET'
DROP TABLE t3;
DROP TABLE t2;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE dst int(10) unsigned DEFAULT NULL;
SET dst=src;
END;
$$
CALL p1;
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE FUNCTION f1(a int(10) unsigned) RETURNS INT RETURN NULL;;
SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1(a int(10) unsigned) BEGIN END;;
CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE PROCEDURE p1(OUT dst int(10) unsigned)
BEGIN
DECLARE src uuid DEFAULT NULL;
SET dst=src;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE dst int(10) unsigned DEFAULT NULL;
CALL p1(dst);
END;
$$
CALL p2();
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
SHOW WARNINGS;
Level Code Message
Error 4078 Illegal parameter data types int unsigned and uuid for operation 'SET'
Note 4094 At line 4 in test.p1
Note 4094 At line 4 in test.p2
DROP PROCEDURE p2;
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURNS int(10) unsigned
BEGIN
DECLARE rc uuid DEFAULT NULL;
RETURN rc;
END;
$$
SELECT f1();
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP FUNCTION f1;
CREATE PROCEDURE p1()
BEGIN
DECLARE src uuid DEFAULT NULL;
DECLARE cur1 CURSOR(t int(10) unsigned) FOR SELECT * FROM t1 WHERE target=t;
OPEN cur1(src);
CLOSE cur1;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP PROCEDURE p1;
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES ();
CREATE PROCEDURE p1()
BEGIN
DECLARE dst int(10) unsigned DEFAULT NULL;
DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
OPEN cur2;
FETCH cur2 INTO dst;
CLOSE cur2;
END;
$$
CALL p1();
ERROR HY000: Illegal parameter data types int unsigned and uuid for operation 'SET'
DROP PROCEDURE p1;
DROP TABLE t2;
# End of type_store_assignment_incompatible.inc
DROP TABLE t1;
#

View File

@@ -1453,7 +1453,7 @@ bool Field::sp_prepare_and_store_item(THD *thd, Item **value)
Item *expr_item;
if (!(expr_item= thd->sp_prepare_func_item(value, 1)))
if (!(expr_item= thd->sp_fix_func_item_for_assignment(this, value)))
goto error;
/*

View File

@@ -9892,9 +9892,11 @@ void Item_trigger_field::set_required_privilege(bool rw)
bool Item_trigger_field::set_value(THD *thd, sp_rcontext * /*ctx*/, Item **it)
{
Item *item= thd->sp_prepare_func_item(it);
if (fix_fields_if_needed(thd, NULL))
return true;
if (!item || fix_fields_if_needed(thd, NULL))
Item *item= thd->sp_fix_func_item_for_assignment(field, it);
if (!item)
return true;
// NOTE: field->table->copy_blobs should be false here, but let's

View File

@@ -410,6 +410,26 @@ Item *THD::sp_fix_func_item(Item **it_addr)
}
/**
Prepare an Item for evaluation as an assignment source,
for assignment to the given target.
@param to - the assignment target
@param it_addr - a pointer on item refernce
@retval - NULL on error
@retval - a prepared item pointer on success
*/
Item *THD::sp_fix_func_item_for_assignment(const Field *to, Item **it_addr)
{
DBUG_ENTER("THD::sp_fix_func_item_for_assignment");
Item *res= sp_fix_func_item(it_addr);
if (res && (!res->check_assignability_to(to)))
DBUG_RETURN(res);
DBUG_RETURN(NULL);
}
/**
Evaluate an expression and store the result in the field.
@@ -4071,7 +4091,7 @@ sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp)
Item *it;
int res;
it= thd->sp_prepare_func_item(&m_expr);
it= thd->sp_prepare_func_item(&m_expr, 1);
if (! it)
{
res= -1;

View File

@@ -715,7 +715,7 @@ Item_cache *sp_rcontext::create_case_expr_holder(THD *thd,
bool sp_rcontext::set_case_expr(THD *thd, int case_expr_id,
Item **case_expr_item_ptr)
{
Item *case_expr_item= thd->sp_prepare_func_item(case_expr_item_ptr);
Item *case_expr_item= thd->sp_prepare_func_item(case_expr_item_ptr, 1);
if (!case_expr_item)
return true;

View File

@@ -5493,7 +5493,8 @@ public:
bool restore_from_local_lex_to_old_lex(LEX *oldlex);
Item *sp_fix_func_item(Item **it_addr);
Item *sp_prepare_func_item(Item **it_addr, uint cols= 1);
Item *sp_fix_func_item_for_assignment(const Field *to, Item **it_addr);
Item *sp_prepare_func_item(Item **it_addr, uint cols);
bool sp_eval_expr(Field *result_field, Item **expr_item_ptr);
bool sql_parser(LEX *old_lex, LEX *lex,