summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/main/sp-row.result1
-rw-r--r--mysql-test/main/sp-row.test12
-rw-r--r--sql/sql_prepare.cc2
3 files changed, 9 insertions, 6 deletions
diff --git a/mysql-test/main/sp-row.result b/mysql-test/main/sp-row.result
index 3751b70b260..2764b4cd999 100644
--- a/mysql-test/main/sp-row.result
+++ b/mysql-test/main/sp-row.result
@@ -228,6 +228,7 @@ CREATE FUNCTION f1(a INT) RETURNS INT
BEGIN
RETURN a;
END;
+$$
CREATE PROCEDURE p1()
BEGIN
DECLARE a ROW (a INT,b INT);
diff --git a/mysql-test/main/sp-row.test b/mysql-test/main/sp-row.test
index cbd1e940475..527ff9455bd 100644
--- a/mysql-test/main/sp-row.test
+++ b/mysql-test/main/sp-row.test
@@ -2,11 +2,6 @@
--echo # MDEV-10914 ROW data type for stored routine variables
--echo #
-if (`SELECT $PS_PROTOCOL != 0`)
-{
- --skip Test temporarily disabled for ps-protocol
-}
-
--echo #
--echo # ROW of ROWs is not supported yet
--echo #
@@ -304,6 +299,7 @@ CREATE FUNCTION f1(a INT) RETURNS INT
BEGIN
RETURN a;
END;
+$$
CREATE PROCEDURE p1()
BEGIN
DECLARE a ROW (a INT,b INT);
@@ -1340,6 +1336,7 @@ DROP PROCEDURE p1;
--echo # ROW variable with a wrong column count
+--enable_prepare_warnings
CREATE TABLE t1 (a INT, b VARCHAR(32));
INSERT INTO t1 VALUES (10,'b10');
DELIMITER $$;
@@ -1351,6 +1348,7 @@ BEGIN
END;
$$
DELIMITER ;$$
+--disable_prepare_warnings
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
CALL p1();
DROP TABLE t1;
@@ -1360,6 +1358,7 @@ DROP PROCEDURE p1;
--echo # Multiple ROW variables
CREATE TABLE t1 (a INT, b VARCHAR(32));
INSERT INTO t1 VALUES (10,'b10');
+--enable_prepare_warnings
DELIMITER $$;
CREATE PROCEDURE p1()
BEGIN
@@ -1369,6 +1368,7 @@ BEGIN
END;
$$
DELIMITER ;$$
+--disable_prepare_warnings
--error ER_OPERAND_COLUMNS
CALL p1();
DROP TABLE t1;
@@ -1378,6 +1378,7 @@ DROP PROCEDURE p1;
--echo # ROW variables working example
CREATE TABLE t1 (a INT, b VARCHAR(32));
INSERT INTO t1 VALUES (10,'b10');
+--enable_prepare_warnings
DELIMITER $$;
CREATE PROCEDURE p1()
BEGIN
@@ -1387,6 +1388,7 @@ BEGIN
END;
$$
DELIMITER ;$$
+--disable_prepare_warnings
CALL p1();
DROP TABLE t1;
DROP PROCEDURE p1;
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index 2f5470db123..31d27779def 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -1731,7 +1731,7 @@ static bool mysql_test_call_fields(Prepared_statement *stmt,
while ((item= it++))
{
- if (item->fix_fields_if_needed_for_scalar(thd, it.ref()))
+ if (item->fix_fields_if_needed(thd, it.ref()))
goto err;
}
DBUG_RETURN(FALSE);