mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-14857: problem with 10.2.11 server crashing when executing stored procedure
Counter for select numbering made stored with the statement (before was global) So now it does have always accurate value which does not depend on interruption of statement prepare by errors like lack of table in a view definition.
This commit is contained in:
@ -6903,7 +6903,12 @@ void THD::reset_for_next_command(bool do_clear_error)
|
||||
clear_error(1);
|
||||
|
||||
thd->free_list= 0;
|
||||
thd->select_number= 1;
|
||||
/*
|
||||
We also assign thd->stmt_lex in lex_start(), but during bootstrap this
|
||||
code is executed first.
|
||||
*/
|
||||
thd->stmt_lex= &main_lex; thd->stmt_lex->current_select_number= 1;
|
||||
DBUG_PRINT("info", ("Lex %p stmt_lex: %p", thd->lex, thd->stmt_lex));
|
||||
/*
|
||||
Those two lines below are theoretically unneeded as
|
||||
THD::cleanup_after_query() should take care of this already.
|
||||
@ -7021,7 +7026,7 @@ mysql_new_select(LEX *lex, bool move_down)
|
||||
|
||||
if (!(select_lex= new (thd->mem_root) SELECT_LEX()))
|
||||
DBUG_RETURN(1);
|
||||
select_lex->select_number= ++thd->select_number;
|
||||
select_lex->select_number= ++thd->stmt_lex->current_select_number;
|
||||
select_lex->parent_lex= lex; /* Used in init_query. */
|
||||
select_lex->init_query();
|
||||
select_lex->init_select();
|
||||
|
Reference in New Issue
Block a user