diff options
Diffstat (limited to 'mysql-test/include/rpl_events.inc')
-rw-r--r-- | mysql-test/include/rpl_events.inc | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/mysql-test/include/rpl_events.inc b/mysql-test/include/rpl_events.inc new file mode 100644 index 00000000000..b8fac61c383 --- /dev/null +++ b/mysql-test/include/rpl_events.inc @@ -0,0 +1,105 @@ +################################################################## +# Author: Giuseppe, Chuck Bell # +# Date: 17-January-2007 # +# Purpose: To test that event effects are replicated # +# in both row based and statement based format # +################################################################## + +--disable_warnings +DROP EVENT IF EXISTS test.justonce; +drop table if exists t1,t2; +--enable_warnings + +# first, we need a table to record something from an event + +eval CREATE TABLE `t1` ( + `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `c` VARCHAR(50) NOT NULL, + `ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=$engine_type DEFAULT CHARSET=utf8; + +INSERT INTO t1 (c) VALUES ('manually'); + +# then, we create the event +CREATE EVENT test.justonce ON SCHEDULE AT NOW() + INTERVAL 2 SECOND DO INSERT INTO t1 +(c) VALUES ('from justonce'); + +SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce'; + +# wait 3 seconds, so the event can trigger +--real_sleep 3 + +# check that table t1 contains something +--echo "in the master" +--enable_info +--replace_column 3 TIMESTAMP +SELECT * FROM t1; +--disable_info + +sync_slave_with_master; + +--echo "in the slave" +--enable_info +--replace_column 3 TIMESTAMP +SELECT * FROM t1; +--disable_info + +SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'justonce'; + +# Create an event on the slave and check to see what the originator is. +--disable_warnings +DROP EVENT IF EXISTS test.slave_once; +--enable_warnings + +CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE DO +INSERT INTO t1(c) VALUES ('from slave_once'); +SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once'; + +--disable_warnings +DROP EVENT IF EXISTS test.slave_once; +--enable_warnings + +connection master; + +# BUG#20384 - disable events on slave +--disable_warnings +DROP EVENT IF EXISTS test.justonce; +--enable_warnings + +CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND DO +INSERT INTO t1(c) VALUES ('from er'); +SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er'; + +sync_slave_with_master; + +--echo "in the slave" +SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er'; + +connection master; +--echo "in the master" +ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND DO INSERT into t1(c) VALUES ('from alter er'); +SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er'; + +sync_slave_with_master; + +--echo "in the slave" +SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er'; + +connection master; +--echo "in the master" +DROP EVENT test.er; +SELECT db, name, status, originator FROM mysql.event WHERE db = 'test'; + +--disable_info + +sync_slave_with_master; + +--echo "in the slave" +SELECT db, name, status, originator FROM mysql.event WHERE db = 'test'; + +--echo "in the master" +connection master; +DROP TABLE t1; + |