summaryrefslogtreecommitdiff
path: root/mysql-test/main/parser.test
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2020-07-21 10:31:10 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2020-07-21 10:31:10 +0200
commitec20992e1ecd928be5dee65c272e54de369c0c48 (patch)
treed608082bcea5bbd087ad5d548659d9b770491ed7 /mysql-test/main/parser.test
parentc4d5b6b157b06fe22fd7e01967d7a0194c3686a2 (diff)
downloadmariadb-git-bb-10.4-MDEV-21997.tar.gz
MDEV-21997 Server crashes in LEX::create_item_ident_sp upon use of unknown identifierbb-10.4-MDEV-21997
If there is no current_select and variable is not found among SP variables it can be only an error.
Diffstat (limited to 'mysql-test/main/parser.test')
-rw-r--r--mysql-test/main/parser.test66
1 files changed, 66 insertions, 0 deletions
diff --git a/mysql-test/main/parser.test b/mysql-test/main/parser.test
index 8aa2fb528ea..09fe73b7dbe 100644
--- a/mysql-test/main/parser.test
+++ b/mysql-test/main/parser.test
@@ -1613,4 +1613,70 @@ SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.t1;
SET STATEMENT max_statement_time=180 FOR BACKUP UNLOCK;
set SQL_MODE=@save_sql_mode;
+
+--echo #
+--echo # MDEV-21997: Server crashes in LEX::create_item_ident_sp
+--echo # upon use of unknown identifier
+--echo #
+
+--error ER_SP_UNDECLARED_VAR
+/*! IF 1 IN ( SELECT 2 ) OR foo = 3 THEN */ SELECT 4;
+
+
+DELIMITER $$;
+
+--error ER_SP_UNDECLARED_VAR
+BEGIN NOT ATOMIC
+ IF (SELECT 2) OR foo = 3 THEN
+ SELECT 4;
+ END IF ;
+END;
+$$
+
+--echo # ... but if declare it then it still work
+BEGIN NOT ATOMIC
+ DECLARE foo int;
+ IF (SELECT 2) OR foo = 3 THEN
+ SELECT 4;
+ END IF ;
+END;
+$$
+
+--error ER_SP_UNDECLARED_VAR
+CASE (SELECT 2) OR foo
+WHEN 1 THEN
+ SET @x=10;
+$$
+
+--error ER_SP_UNDECLARED_VAR
+/*! WHILE (SELECT 2) OR foo */
+ SET @x=10;
+END WHILE;
+$$
+
+--error ER_SP_UNDECLARED_VAR
+REPEAT
+ SET @x=10;
+UNTIL (SELECT 2) OR foo
+END REPEAT;
+$$
+
+--error ER_SP_UNDECLARED_VAR
+FOR i IN 1..(SELECT 2) OR foo
+DO
+ SET @x=10;
+END FOR;
+$$
+
+--echo # ... but automatic FOR variable still work
+FOR i IN 1..2
+DO
+ SELECT i;
+END FOR;
+$$
+
+DELIMITER ;$$
+
+
+
--echo # End of 10.4 tests