mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Bug #50412 Assertion `! is_set()' failed in
Diagnostics_area::set_ok_status at PREPARE The problem occured during processing of stored routines. Routines are loaded from mysql.proc, parsed and put into the sp cache by sp_cache_routine(). The assert occured because the return value from sp_cache_routine() was not checked for top level CALLs. This meant that any errors during sp_cache_routine() went unoticed and triggered the assert when my_ok() was later called. This is a regression introduced by the patch for Bug#30977, only visible in source trees with MDL and using debug builds of the server. This patch fixes the problem by checking the return value from sp_cache_routine() for top level CALLs and propagating any errors similar to what is done for other calls to sp_cache_routine(). No test case added.
This commit is contained in:
parent
c2beb68385
commit
c005126107
1 changed files with 2 additions and 1 deletions
|
@ -3955,7 +3955,8 @@ open_and_process_routine(THD *thd, Query_tables_list *prelocking_ctx,
|
|||
Validating routine version is unnecessary, since CALL
|
||||
does not affect the prepared statement prelocked list.
|
||||
*/
|
||||
sp_cache_routine(thd, rt, FALSE, &sp);
|
||||
if (sp_cache_routine(thd, rt, FALSE, &sp))
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue