Commit 15214a4f authored by Monty's avatar Monty

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.
parent 2c90dc09
...@@ -457,7 +457,6 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) ...@@ -457,7 +457,6 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
thd->variables.lock_wait_timeout)) thd->variables.lock_wait_timeout))
goto end; goto end;
if (!create) if (!create)
{ {
bool if_exists= thd->lex->if_exists(); bool if_exists= thd->lex->if_exists();
...@@ -565,7 +564,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) ...@@ -565,7 +564,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
#ifdef WITH_WSREP #ifdef WITH_WSREP
if (WSREP(thd) && if (WSREP(thd) &&
!wsrep_should_replicate_ddl(thd, table->s->db_type()->db_type)) !wsrep_should_replicate_ddl(thd, table->s->db_type()->db_type))
goto wsrep_error_label; goto end;
#endif #endif
/* Later on we will need it to downgrade the lock */ /* Later on we will need it to downgrade the lock */
...@@ -652,9 +651,11 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) ...@@ -652,9 +651,11 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
thd->mdl_context.release_lock(mdl_request_for_trn.ticket); thd->mdl_context.release_lock(mdl_request_for_trn.ticket);
DBUG_RETURN(result); DBUG_RETURN(result);
#ifdef WITH_WSREP #ifdef WITH_WSREP
wsrep_error_label: wsrep_error_label:
DBUG_RETURN(true); DBUG_ASSERT(result == 1);
goto end;
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment