Fixed BUG#434: Stored procedure which drops itself causes crash.

Simply disallow it, just as we disallow creation of routines from within
other SPs.


include/mysqld_error.h:
  New error code for when attempting to drop a stored routine from within
  another stored routine.
mysql-test/r/sp-error.result:
  New test case for BUG#4344.
mysql-test/t/sp-error.test:
  New test case for BUG#4344.
sql/share/czech/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/danish/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/dutch/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/english/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/estonian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/french/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/german/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/greek/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/hungarian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/italian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/japanese/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/korean/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/norwegian-ny/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/norwegian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/polish/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/portuguese/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/romanian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/russian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/serbian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/slovak/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/spanish/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/swedish/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/share/ukrainian/errmsg.txt:
  New error message for when attempting to drop a stored routine from within
  another stored routine.
sql/sql_yacc.yy:
  Don't allow drop function/procedure from within another function/procedure.
This commit is contained in:
unknown 2004-07-29 17:33:45 +02:00
parent 96aeecf237
commit 4467bcf26e
27 changed files with 48 additions and 1 deletions

View file

@ -372,4 +372,5 @@
#define ER_WARN_VIEW_MERGE 1353 #define ER_WARN_VIEW_MERGE 1353
#define ER_WARN_VIEW_WITHOUT_KEY 1354 #define ER_WARN_VIEW_WITHOUT_KEY 1354
#define ER_VIEW_INVALID 1355 #define ER_VIEW_INVALID 1355
#define ER_ERROR_MESSAGES 356 #define ER_SP_NO_DROP_SP 1356
#define ER_ERROR_MESSAGES 357

View file

@ -413,4 +413,8 @@ call bug2653_2(2, @b)|
ERROR 42S22: Unknown column 'aa' in 'order clause' 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|
ERROR HY000: Can't drop a PROCEDURE from within another stored routine
create procedure bug4344() drop function bug4344|
ERROR HY000: Can't drop a FUNCTION from within another stored routine
drop table t1| drop table t1|

View file

@ -576,6 +576,15 @@ call bug2653_2(2, @b)|
drop procedure bug2653_1| drop procedure bug2653_1|
drop procedure bug2653_2| drop procedure bug2653_2|
#
# BUG#4344
#
--error 1356
create procedure bug4344() drop procedure bug4344|
--error 1356
create procedure bug4344() drop function bug4344|
drop table t1| drop table t1|
delimiter ;| delimiter ;|

View file

@ -368,3 +368,4 @@ character-set=latin2
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -362,3 +362,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -370,3 +370,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -359,3 +359,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -364,3 +364,4 @@ character-set=latin7
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -359,3 +359,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -371,3 +371,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -359,3 +359,4 @@ character-set=greek
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -361,3 +361,4 @@ character-set=latin2
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -359,3 +359,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -361,3 +361,4 @@ character-set=ujis
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -359,3 +359,4 @@ character-set=euckr
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -361,3 +361,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -361,3 +361,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -363,3 +363,4 @@ character-set=latin2
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -360,3 +360,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -363,3 +363,4 @@ character-set=latin2
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -361,3 +361,4 @@ character-set=koi8r
"Алгоритм слияния view не может быть использован сейчас (алгоритм будет неопеределенным)" "Алгоритм слияния view не может быть использован сейчас (алгоритм будет неопеределенным)"
"Обновляемый view не содержит ключа использованной в нем таблиц(ы)" "Обновляемый view не содержит ключа использованной в нем таблиц(ы)"
"View '%-.64s.%-.64s' ссылается на несуществующие таблицы или слолбцы" "View '%-.64s.%-.64s' ссылается на несуществующие таблицы или слолбцы"
"Can't drop a %s from within another stored routine"

View file

@ -365,3 +365,4 @@ character-set=cp1250
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -367,3 +367,4 @@ character-set=latin2
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -361,3 +361,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -359,3 +359,4 @@ character-set=latin1
"View merge algorithm can't be used here for now (assumed undefined algorithm)" "View merge algorithm can't be used here for now (assumed undefined algorithm)"
"View being update does not have complete key of underlying table in it" "View being update does not have complete key of underlying table in it"
"View '%-.64s.%-.64s' references invalid table(s) or column(s)" "View '%-.64s.%-.64s' references invalid table(s) or column(s)"
"Can't drop a %s from within another stored routine"

View file

@ -364,3 +364,4 @@ character-set=koi8u
"Алгоритм зливання view не може бути використаний зараз (алгоритм буде невизначений)" "Алгоритм зливання view не може бути використаний зараз (алгоритм буде невизначений)"
"View, що оновлюеться, не м╕стить повного ключа таблиц╕(ь), що викор╕стана в ньюому" "View, що оновлюеться, не м╕стить повного ключа таблиц╕(ь), що викор╕стана в ньюому"
"View '%-.64s.%-.64s' посила╓тся на не╕снуюч╕ таблиц╕ або стовбц╕" "View '%-.64s.%-.64s' посила╓тся на не╕снуюч╕ таблиц╕ або стовбц╕"
"Can't drop a %s from within another stored routine"

View file

@ -5187,6 +5187,11 @@ drop:
| DROP FUNCTION_SYM if_exists sp_name opt_restrict | DROP FUNCTION_SYM if_exists sp_name opt_restrict
{ {
LEX *lex=Lex; LEX *lex=Lex;
if (lex->sphead)
{
net_printf(YYTHD, ER_SP_NO_DROP_SP, "FUNCTION");
YYABORT;
}
lex->sql_command = SQLCOM_DROP_FUNCTION; lex->sql_command = SQLCOM_DROP_FUNCTION;
lex->drop_if_exists= $3; lex->drop_if_exists= $3;
lex->spname= $4; lex->spname= $4;
@ -5194,6 +5199,11 @@ drop:
| DROP PROCEDURE if_exists sp_name opt_restrict | DROP PROCEDURE if_exists sp_name opt_restrict
{ {
LEX *lex=Lex; LEX *lex=Lex;
if (lex->sphead)
{
net_printf(YYTHD, ER_SP_NO_DROP_SP, "PROCEDURE");
YYABORT;
}
lex->sql_command = SQLCOM_DROP_PROCEDURE; lex->sql_command = SQLCOM_DROP_PROCEDURE;
lex->drop_if_exists= $3; lex->drop_if_exists= $3;
lex->spname= $4; lex->spname= $4;