mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
Fixed bug#54375 - Error in stored procedure leaves connection
in different default schema. In strict mode, when data truncation or conversion happens, THD::killed is set to THD::KILL_BAD_DATA. This is abuse of KILL mechanism to guarantee that execution of statement is aborted. The stored procedures execution, on the other hand, upon detection that a connection was killed, would terminate immediately, without trying to restore the caller's context, in particular, restore the caller's current schema. The fix is, when terminating a stored procedure execution, to only bypass cleanup if the entire connection was killed, not in case of other forms of KILL. mysql-test/r/sp-bugs.result: Added result for a test case for bug#54375. mysql-test/t/sp-bugs.test: Added test case for bug#54375. sql/sp_head.cc: sp_head::execute modified: restore saved current db if connection is not killed.
This commit is contained in:
parent
4b0fe88708
commit
871f36357e
3 changed files with 74 additions and 1 deletions
|
|
@ -1372,7 +1372,7 @@ sp_head::execute(THD *thd)
|
|||
If the DB has changed, the pointer has changed too, but the
|
||||
original thd->db will then have been freed
|
||||
*/
|
||||
if (cur_db_changed && !thd->killed)
|
||||
if (cur_db_changed && thd->killed != THD::KILL_CONNECTION)
|
||||
{
|
||||
/*
|
||||
Force switching back to the saved current database, because it may be
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue