Navigation Menu

Skip to content

Commit

Permalink
MDEV-21578 : CREATE OR REPLACE TRIGGER in Galera cluster not replicating
Browse files Browse the repository at this point in the history
While doing TOI buffer OR REPLACE option was not added to replicated
string.
  • Loading branch information
Jan Lindström committed Aug 28, 2020
1 parent df07ea0 commit c710c45
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 1 deletion.
32 changes: 32 additions & 0 deletions mysql-test/suite/galera/r/galera_trigger.result
@@ -0,0 +1,32 @@
CREATE TABLE IF NOT EXISTS t1 (id int(10) not null primary key) engine=innodb;
CREATE OR REPLACE TRIGGER tr1
BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
SET NEW.id = 100;
END|
INSERT INTO t1 VALUES (1);
SELECT * from t1;
id
100
CREATE OR REPLACE TRIGGER tr1
BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
SET NEW.id = 200;
END|
connection node_2;
SET SESSION wsrep_sync_wait=15;
SELECT * FROM t1;
id
100
INSERT INTO t1 values (2);
SELECT * FROM t1;
id
100
200
connection node_1;
SELECT * FROM t1;
id
100
200
DROP TRIGGER tr1;
DROP TABLE t1;
36 changes: 36 additions & 0 deletions mysql-test/suite/galera/t/galera_trigger.test
@@ -0,0 +1,36 @@
--source include/galera_cluster.inc
#
# MDEV-21578 CREATE OR REPLACE TRIGGER in Galera cluster not replicating
#
CREATE TABLE IF NOT EXISTS t1 (id int(10) not null primary key) engine=innodb;
--delimiter |
CREATE OR REPLACE TRIGGER tr1
BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
SET NEW.id = 100;
END|
--delimiter ;

INSERT INTO t1 VALUES (1);
SELECT * from t1;

--delimiter |
CREATE OR REPLACE TRIGGER tr1
BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
SET NEW.id = 200;
END|
--delimiter ;

--connection node_2
SET SESSION wsrep_sync_wait=15;
SELECT * FROM t1;
INSERT INTO t1 values (2);
SELECT * FROM t1;

--connection node_1
SELECT * FROM t1;

DROP TRIGGER tr1;
DROP TABLE t1;

7 changes: 6 additions & 1 deletion sql/wsrep_mysqld.cc
Expand Up @@ -2924,7 +2924,12 @@ static int wsrep_create_trigger_query(THD *thd, uchar** buf, size_t* buf_len)
definer_host.length= 0;
}

stmt_query.append(STRING_WITH_LEN("CREATE "));
const LEX_STRING command[3]=
{{ C_STRING_WITH_LEN("CREATE ") },
{ C_STRING_WITH_LEN("ALTER ") },
{ C_STRING_WITH_LEN("CREATE OR REPLACE ") }};
stmt_query.append(command[thd->lex->create_view_mode].str,
command[thd->lex->create_view_mode].length);

append_definer(thd, &stmt_query, &definer_user, &definer_host);

Expand Down

0 comments on commit c710c45

Please sign in to comment.