mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fixed BUG#7047: Stored procedure crash if alter procedure
by simply disallowing alter procedure/function in an SP (as for drop). mysql-test/r/sp-error.result: Added test case for BUG#7047. mysql-test/t/sp-error.test: Added test case for BUG#7047. sql/share/errmsg.txt: Modified error message for "update procedure/function" too. sql/sql_yacc.yy: Don't allow alter procedure/function in an SP.
This commit is contained in:
@ -457,9 +457,9 @@ ERROR 42S22: Unknown column 'aa' in 'order clause'
|
|||||||
drop procedure bug2653_1|
|
drop procedure bug2653_1|
|
||||||
drop procedure bug2653_2|
|
drop procedure bug2653_2|
|
||||||
create procedure bug4344() drop procedure bug4344|
|
create procedure bug4344() drop procedure bug4344|
|
||||||
ERROR HY000: Can't drop a PROCEDURE from within another stored routine
|
ERROR HY000: Can't drop or alter a PROCEDURE from within another stored routine
|
||||||
create procedure bug4344() drop function bug4344|
|
create procedure bug4344() drop function bug4344|
|
||||||
ERROR HY000: Can't drop a FUNCTION from within another stored routine
|
ERROR HY000: Can't drop or alter a FUNCTION from within another stored routine
|
||||||
drop procedure if exists bug3294|
|
drop procedure if exists bug3294|
|
||||||
create procedure bug3294()
|
create procedure bug3294()
|
||||||
begin
|
begin
|
||||||
@ -585,4 +585,13 @@ end;
|
|||||||
end;
|
end;
|
||||||
end|
|
end|
|
||||||
drop procedure bug9073|
|
drop procedure bug9073|
|
||||||
|
create procedure bug7047()
|
||||||
|
alter procedure bug7047|
|
||||||
|
ERROR HY000: Can't drop or alter a PROCEDURE from within another stored routine
|
||||||
|
create function bug7047() returns int
|
||||||
|
begin
|
||||||
|
alter function bug7047;
|
||||||
|
return 0;
|
||||||
|
end|
|
||||||
|
ERROR HY000: Can't drop or alter a FUNCTION from within another stored routine
|
||||||
drop table t1|
|
drop table t1|
|
||||||
|
@ -817,6 +817,20 @@ end|
|
|||||||
drop procedure bug9073|
|
drop procedure bug9073|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#7047: Stored procedure crash if alter procedure
|
||||||
|
#
|
||||||
|
--error ER_SP_NO_DROP_SP
|
||||||
|
create procedure bug7047()
|
||||||
|
alter procedure bug7047|
|
||||||
|
--error ER_SP_NO_DROP_SP
|
||||||
|
create function bug7047() returns int
|
||||||
|
begin
|
||||||
|
alter function bug7047;
|
||||||
|
return 0;
|
||||||
|
end|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG#NNNN: New bug synopsis
|
# BUG#NNNN: New bug synopsis
|
||||||
#
|
#
|
||||||
|
@ -5213,7 +5213,7 @@ ER_VIEW_INVALID
|
|||||||
eng "View '%-.64s.%-.64s' references invalid table(s) or column(s) or function(s)"
|
eng "View '%-.64s.%-.64s' references invalid table(s) or column(s) or function(s)"
|
||||||
rus "View '%-.64s.%-.64s' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
rus "View '%-.64s.%-.64s' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||||
ER_SP_NO_DROP_SP
|
ER_SP_NO_DROP_SP
|
||||||
eng "Can't drop a %s from within another stored routine"
|
eng "Can't drop or alter a %s from within another stored routine"
|
||||||
ER_SP_GOTO_IN_HNDLR
|
ER_SP_GOTO_IN_HNDLR
|
||||||
eng "GOTO is not allowed in a stored procedure handler"
|
eng "GOTO is not allowed in a stored procedure handler"
|
||||||
ER_TRG_ALREADY_EXISTS
|
ER_TRG_ALREADY_EXISTS
|
||||||
|
@ -3305,6 +3305,11 @@ alter:
|
|||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
|
|
||||||
|
if (lex->sphead)
|
||||||
|
{
|
||||||
|
my_error(ER_SP_NO_DROP_SP, MYF(0), "PROCEDURE");
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics));
|
bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics));
|
||||||
}
|
}
|
||||||
sp_a_chistics
|
sp_a_chistics
|
||||||
@ -3318,6 +3323,11 @@ alter:
|
|||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
|
|
||||||
|
if (lex->sphead)
|
||||||
|
{
|
||||||
|
my_error(ER_SP_NO_DROP_SP, MYF(0), "FUNCTION");
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics));
|
bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics));
|
||||||
}
|
}
|
||||||
sp_a_chistics
|
sp_a_chistics
|
||||||
|
Reference in New Issue
Block a user