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:
Monty 2021-05-23 19:30:05 +03:00
parent 2c90dc091c
commit 15214a4f11

View file

@ -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
}