diff options
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_trans_no_trans.result | 44 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/rpl_trans_no_trans.test | 72 |
2 files changed, 116 insertions, 0 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_trans_no_trans.result b/mysql-test/suite/rpl/r/rpl_trans_no_trans.result new file mode 100644 index 00000000000..a7a6d921bc1 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_trans_no_trans.result @@ -0,0 +1,44 @@ +include/master-slave.inc +[connection master] +create or replace table t1(id int)engine=innodb; +create or replace table t3(id int)engine=myisam; +create or replace function t99 (a int) +returns int(10) +MODIFIES SQL DATA +begin +if (a > 100) +then +insert into t3 values (a); +end if; +return a; +end// +begin; +insert into t1 values(t99(1)); +insert into t1 values(t99(101)); +commit; +select * from t1; +id +1 +101 +select * from t3; +id +101 +insert into t1 values(t99(1)); +drop function t99; +drop table t1,t3; +connection slave; +connection master; +CREATE TABLE t1 (i INT) ENGINE=InnoDB; +CREATE TABLE t2 (j INT) ENGINE=MyISAM; +CREATE TRIGGER tr AFTER INSERT ON t1 FOR EACH ROW +BEGIN +SET @a = unknown_column_just_to_raise_an_error; +INSERT INTO t2 VALUES (NULL) ; +END|| +INSERT INTO t1 VALUES (1); +ERROR 42S22: Unknown column 'unknown_column_just_to_raise_an_error' in 'field list' +connection slave; +connection master; +drop trigger tr; +drop table t1,t2; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_trans_no_trans.test b/mysql-test/suite/rpl/t/rpl_trans_no_trans.test new file mode 100644 index 00000000000..f6e3731dbf8 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_trans_no_trans.test @@ -0,0 +1,72 @@ +# +# Test mixing transactional and non transactional tables +# + +--source include/master-slave.inc +--source include/have_innodb.inc +--source include/have_binlog_format_row.inc + +# +# Test updating conditionally a non transactinal table in a function +# This verifies that we don't write only a table map for a non transactional, +# without any row events +# The original bug caused a crash on the slave when doing a sync_slave +# + +create or replace table t1(id int)engine=innodb; +create or replace table t3(id int)engine=myisam; + +delimiter //; +create or replace function t99 (a int) +returns int(10) +MODIFIES SQL DATA +begin + if (a > 100) + then + insert into t3 values (a); + end if; + return a; +end// +delimiter ;// +begin; +insert into t1 values(t99(1)); +insert into t1 values(t99(101)); +commit; +select * from t1; +select * from t3; +insert into t1 values(t99(1)); + +drop function t99; +drop table t1,t3; + +sync_slave_with_master; +connection master; + +# +# MDEV-8203 +# Assertion `!current_stmt_is_commit || !rgi->tables_to_lock' failed in +# Query_log_event::do_apply_event(rpl_group_info*, const char*, uint32) +# + +CREATE TABLE t1 (i INT) ENGINE=InnoDB; +CREATE TABLE t2 (j INT) ENGINE=MyISAM; + +--delimiter || +CREATE TRIGGER tr AFTER INSERT ON t1 FOR EACH ROW +BEGIN + SET @a = unknown_column_just_to_raise_an_error; + INSERT INTO t2 VALUES (NULL) ; +END|| +--delimiter ; + +--error ER_BAD_FIELD_ERROR +INSERT INTO t1 VALUES (1); +--sync_slave_with_master + +connection master; + +drop trigger tr; +drop table t1,t2; + +# End of 4.1 tests +--source include/rpl_end.inc |