summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2020-09-08 11:14:37 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2020-09-08 11:14:37 +0300
commitc5517cd86440b6669509211b1ad10f837a929952 (patch)
tree25bba31af74c3dbaa506c15294b06888edcce0d2
parent9842ed4e6dde3f8dfda753e069b72975be73218a (diff)
downloadmariadb-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.result44
-rw-r--r--mysql-test/suite/galera/t/galera_trigger.test36
-rw-r--r--sql/wsrep_mysqld.cc8
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))