MDEV-18929 2nd execution of SP does not detect ER_VERS_NOT_VERSIONED
Related to 87731177 and Bug#47649. Don't set Query_arena::STMT_EXECUTED for any error code. skip_setup_conds() depends on STMT_INITIALIZED_FOR_SP, but sp_lex_keeper::reset_lex_and_exec_core() sets it to STMT_EXECUTED on ER_TABLE_NOT_LOCKED_FOR_WRITE. There are other error codes that can break skip_setup_conds() (ER_IT_IS_A_VIEW, ER_NON_UPDATABLE_TABLE, etc).
This commit is contained in:
parent
477629d2cd
commit
f6d8640d67
@ -3379,11 +3379,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
|
|||||||
Update the state of the active arena if no errors on
|
Update the state of the active arena if no errors on
|
||||||
open_tables stage.
|
open_tables stage.
|
||||||
*/
|
*/
|
||||||
if (likely(!res) || likely(!thd->is_error()) ||
|
if (likely(!res) || likely(!thd->is_error()))
|
||||||
(thd->get_stmt_da()->sql_errno() != ER_CANT_REOPEN_TABLE &&
|
|
||||||
thd->get_stmt_da()->sql_errno() != ER_NO_SUCH_TABLE &&
|
|
||||||
thd->get_stmt_da()->sql_errno() != ER_NO_SUCH_TABLE_IN_ENGINE &&
|
|
||||||
thd->get_stmt_da()->sql_errno() != ER_UPDATE_TABLE_USED))
|
|
||||||
thd->stmt_arena->state= Query_arena::STMT_EXECUTED;
|
thd->stmt_arena->state= Query_arena::STMT_EXECUTED;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user