mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-25606: Concurrent CREATE TRIGGER statements mix up in binlog and break replication
The bug is that we don't have a a lock on the trigger name, so it is possible for two threads to try to create the same trigger at the same time and both thinks that they have succeed. Same thing can happen with drop trigger or a combinations of create and drop trigger. Fixed by adding a mdl lock for the trigger name for the duration of the create/drop.
This commit is contained in:
parent
81ad6787cc
commit
99e14aa592
1 changed files with 1 additions and 1 deletions
|
@ -471,7 +471,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
|
|||
}
|
||||
|
||||
/* Protect against concurrent create/drop */
|
||||
MDL_REQUEST_INIT(&mdl_request_for_trn, MDL_key::TABLE,
|
||||
MDL_REQUEST_INIT(&mdl_request_for_trn, MDL_key::TRIGGER,
|
||||
create ? tables->db.str : thd->lex->spname->m_db.str,
|
||||
thd->lex->spname->m_name.str,
|
||||
MDL_EXCLUSIVE, MDL_EXPLICIT);
|
||||
|
|
Loading…
Reference in a new issue