Loading mysql-test/r/sp.result +4 −0 Original line number Diff line number Diff line Loading @@ -2204,6 +2204,10 @@ call bug8757()| delete from t1| delete from t2| drop procedure bug8757| drop procedure if exists bug8762| drop procedure if exists bug8762; create procedure bug8762() begin end| drop procedure if exists bug8762; create procedure bug8762() begin end| drop procedure bug8762| drop table if exists fac| create table fac (n int unsigned not null primary key, f bigint unsigned)| drop procedure if exists ifac| Loading mysql-test/t/sp.test +13 −0 Original line number Diff line number Diff line Loading @@ -2714,6 +2714,19 @@ delete from t2| drop procedure bug8757| # # BUG#8762: Stored Procedures: Inconsistent behavior # of DROP PROCEDURE IF EXISTS statement. --disable_warnings drop procedure if exists bug8762| --enable_warnings # Doesn't exist drop procedure if exists bug8762; create procedure bug8762() begin end| # Does exist drop procedure if exists bug8762; create procedure bug8762() begin end| drop procedure bug8762| # # Some "real" examples # Loading sql/sp.cc +5 −3 Original line number Diff line number Diff line Loading @@ -288,12 +288,14 @@ db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp) * in thd->lex (the unit and master stuff), and the easiest way to * do it is, is to call mysql_init_query(), but this unfortunately * resets teh value_list where we keep the CALL parameters. So we * copy the list and then restore it. * copy the list and then restore it. (... and found_semicolon too). */ List<Item> vals= thd->lex->value_list; List<Item> tmpvals= thd->lex->value_list; char *tmpfsc= thd->lex->found_semicolon; lex_start(thd, (uchar*)defstr.c_ptr(), defstr.length()); thd->lex->value_list= vals; thd->lex->value_list= tmpvals; thd->lex->found_semicolon= tmpfsc; } if (yyparse(thd) || thd->is_fatal_error || thd->lex->sphead == NULL) Loading Loading
mysql-test/r/sp.result +4 −0 Original line number Diff line number Diff line Loading @@ -2204,6 +2204,10 @@ call bug8757()| delete from t1| delete from t2| drop procedure bug8757| drop procedure if exists bug8762| drop procedure if exists bug8762; create procedure bug8762() begin end| drop procedure if exists bug8762; create procedure bug8762() begin end| drop procedure bug8762| drop table if exists fac| create table fac (n int unsigned not null primary key, f bigint unsigned)| drop procedure if exists ifac| Loading
mysql-test/t/sp.test +13 −0 Original line number Diff line number Diff line Loading @@ -2714,6 +2714,19 @@ delete from t2| drop procedure bug8757| # # BUG#8762: Stored Procedures: Inconsistent behavior # of DROP PROCEDURE IF EXISTS statement. --disable_warnings drop procedure if exists bug8762| --enable_warnings # Doesn't exist drop procedure if exists bug8762; create procedure bug8762() begin end| # Does exist drop procedure if exists bug8762; create procedure bug8762() begin end| drop procedure bug8762| # # Some "real" examples # Loading
sql/sp.cc +5 −3 Original line number Diff line number Diff line Loading @@ -288,12 +288,14 @@ db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp) * in thd->lex (the unit and master stuff), and the easiest way to * do it is, is to call mysql_init_query(), but this unfortunately * resets teh value_list where we keep the CALL parameters. So we * copy the list and then restore it. * copy the list and then restore it. (... and found_semicolon too). */ List<Item> vals= thd->lex->value_list; List<Item> tmpvals= thd->lex->value_list; char *tmpfsc= thd->lex->found_semicolon; lex_start(thd, (uchar*)defstr.c_ptr(), defstr.length()); thd->lex->value_list= vals; thd->lex->value_list= tmpvals; thd->lex->found_semicolon= tmpfsc; } if (yyparse(thd) || thd->is_fatal_error || thd->lex->sphead == NULL) Loading