mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-25708 THD::cleanup(): Assertion `!mdl_context.has_locks()' failed
The reason was that WSREP code in mysql_create_or_drop_trigge() did jump to an exit label that did not do proper cleanup of state. Fixed by ensuring that also WSREP code goes trough the cleanup process.
This commit is contained in:
@ -457,7 +457,6 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
|
||||
thd->variables.lock_wait_timeout))
|
||||
goto end;
|
||||
|
||||
|
||||
if (!create)
|
||||
{
|
||||
bool if_exists= thd->lex->if_exists();
|
||||
@ -565,7 +564,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
|
||||
#ifdef WITH_WSREP
|
||||
if (WSREP(thd) &&
|
||||
!wsrep_should_replicate_ddl(thd, table->s->db_type()->db_type))
|
||||
goto wsrep_error_label;
|
||||
goto end;
|
||||
#endif
|
||||
|
||||
/* Later on we will need it to downgrade the lock */
|
||||
@ -652,9 +651,11 @@ end:
|
||||
thd->mdl_context.release_lock(mdl_request_for_trn.ticket);
|
||||
|
||||
DBUG_RETURN(result);
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
wsrep_error_label:
|
||||
DBUG_RETURN(true);
|
||||
DBUG_ASSERT(result == 1);
|
||||
goto end;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user