diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2020-09-08 11:14:37 +0300 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2020-09-08 11:14:37 +0300 |
commit | c5517cd86440b6669509211b1ad10f837a929952 (patch) | |
tree | 25bba31af74c3dbaa506c15294b06888edcce0d2 | |
parent | 9842ed4e6dde3f8dfda753e069b72975be73218a (diff) | |
download | mariadb-git-c5517cd86440b6669509211b1ad10f837a929952.tar.gz |
MDEV-23638 : DROP TRIGGER in Galera Cluster not replicating
Drop trigger handling was missing from wsrep_can_run_in_toi
in 10.5 for some reason.
-rw-r--r-- | mysql-test/suite/galera/r/galera_trigger.result | 44 | ||||
-rw-r--r-- | mysql-test/suite/galera/t/galera_trigger.test | 36 | ||||
-rw-r--r-- | sql/wsrep_mysqld.cc | 8 |
3 files changed, 88 insertions, 0 deletions
diff --git a/mysql-test/suite/galera/r/galera_trigger.result b/mysql-test/suite/galera/r/galera_trigger.result index 48147492979..40b63b327af 100644 --- a/mysql-test/suite/galera/r/galera_trigger.result +++ b/mysql-test/suite/galera/r/galera_trigger.result @@ -32,3 +32,47 @@ id 200 DROP TRIGGER tr1; DROP TABLE t1; +connection node_1; +CREATE TABLE t1(id int not null auto_increment, value int not null, primary key (id)) engine=innodb; +CREATE TABLE t2(id int not null auto_increment, tbl varchar(64) not null, action varchar(64) not null, primary key (id)); +create trigger log_insert after insert on t1 +for each row begin +insert into t2(tbl, action) values ('t1', 'INSERT'); +end| +insert into t1(value) values (1); +insert into t1(value) values (2); +connection node_2; +set session wsrep_sync_wait=15; +insert into t1(value) values (3); +insert into t1(value) values (4); +select * from t2; +id tbl action +1 t1 INSERT +3 t1 INSERT +4 t1 INSERT +6 t1 INSERT +connection node_1; +drop trigger if exists log_insert; +insert into t1(value) values (5); +select * from t2; +id tbl action +1 t1 INSERT +3 t1 INSERT +4 t1 INSERT +6 t1 INSERT +connection node_2; +insert into t1(value) values (6); +select * from t2; +id tbl action +1 t1 INSERT +3 t1 INSERT +4 t1 INSERT +6 t1 INSERT +connection node_1; +select * from t2; +id tbl action +1 t1 INSERT +3 t1 INSERT +4 t1 INSERT +6 t1 INSERT +drop table t1, t2; diff --git a/mysql-test/suite/galera/t/galera_trigger.test b/mysql-test/suite/galera/t/galera_trigger.test index 54508583f4b..f85a75d0ff1 100644 --- a/mysql-test/suite/galera/t/galera_trigger.test +++ b/mysql-test/suite/galera/t/galera_trigger.test @@ -33,4 +33,40 @@ SELECT * FROM t1; DROP TRIGGER tr1; DROP TABLE t1; +# +# MDEV-23638 : DROP TRIGGER in Galera Cluster not replicating +# +--connection node_1 +CREATE TABLE t1(id int not null auto_increment, value int not null, primary key (id)) engine=innodb; + +CREATE TABLE t2(id int not null auto_increment, tbl varchar(64) not null, action varchar(64) not null, primary key (id)); + +--delimiter | +create trigger log_insert after insert on t1 +for each row begin + insert into t2(tbl, action) values ('t1', 'INSERT'); +end| +--delimiter ; + +insert into t1(value) values (1); +insert into t1(value) values (2); + +--connection node_2 +set session wsrep_sync_wait=15; +insert into t1(value) values (3); +insert into t1(value) values (4); +select * from t2; + +--connection node_1 +drop trigger if exists log_insert; +insert into t1(value) values (5); +select * from t2; + +--connection node_2 +insert into t1(value) values (6); +select * from t2; + +--connection node_1 +select * from t2; +drop table t1, t2; diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index ae664e951b5..a6b0991e82b 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -1927,6 +1927,14 @@ bool wsrep_can_run_in_toi(THD *thd, const char *db, const char *table, } return true; break; + case SQLCOM_DROP_TRIGGER: + DBUG_ASSERT(table_list); + if (thd->find_temporary_table(table_list)) + { + return false; + } + return true; + break; case SQLCOM_ALTER_TABLE: if (create_info && !wsrep_should_replicate_ddl(thd, create_info->db_type->db_type)) |