mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#29223 declare cursor c for SHOW .....
"DECLARE CURSOR FOR SHOW ..." is a syntax that currently appears to work, but is untested for some SHOW commands and does not work for other SHOW commands. Since this is an un-intended feature that leaked as a result of a coding bug (in the parser grammar), the correct fix is to fix the grammar to not accept this construct. In other words, "DECLARE CURSOR FOR SHOW <other commands that don't work>" is not considered a bug, and we will not implement other features to make all the SHOW commands usable inside a cursor just because someone exploited a bug.
This commit is contained in:
@ -142,7 +142,10 @@ declare c cursor for insert into test.t1 values ("foo", 42);
|
||||
open c;
|
||||
close c;
|
||||
end|
|
||||
ERROR 42000: Cursor statement must be a SELECT
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into test.t1 values ("foo", 42);
|
||||
open c;
|
||||
close c;
|
||||
end' at line 3
|
||||
create procedure p()
|
||||
begin
|
||||
declare x int;
|
||||
@ -1491,3 +1494,19 @@ ALTER DATABASE `#mysql50#upgrade-me` UPGRADE DATA DIRECTORY NAME;
|
||||
RETURN 0;
|
||||
END//
|
||||
ERROR HY000: Can't drop or alter a DATABASE from within another stored routine
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c char(100);
|
||||
DECLARE cur1 CURSOR FOR SHOW TABLES;
|
||||
OPEN cur1;
|
||||
FETCH cur1 INTO c;
|
||||
select c;
|
||||
CLOSE cur1;
|
||||
END|
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SHOW TABLES;
|
||||
OPEN cur1;
|
||||
FETCH cur1 INTO c;
|
||||
select c;
|
||||
CLOSE cur1;
|
||||
END' at line 4
|
||||
|
Reference in New Issue
Block a user