mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Fixed BUG#8762: Stored Procedures: Inconsistent behavior
of DROP PROCEDURE IF EXISTS statement.
This commit is contained in:
parent
2d9909aef9
commit
027c5a6dac
3 changed files with 22 additions and 3 deletions
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
#
|
||||
|
|
|
@ -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…
Reference in a new issue