mirror of
https://github.com/MariaDB/server.git
synced 2025-04-24 18:27:21 +03:00
into pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-mtr BitKeeper/etc/ignore: auto-union BitKeeper/deleted/.del-rpl_row_charset.test: Auto merged BitKeeper/deleted/.del-rpl_row_charset_innodb.test: Auto merged CMakeLists.txt: Auto merged client/mysqltest.c: Auto merged configure.in: Auto merged mysql-test/extra/binlog_tests/blackhole.test: Auto merged mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test: Auto merged mysql-test/include/mix1.inc: Auto merged mysql-test/r/ctype_big5.result: Auto merged mysql-test/r/gis.result: Auto merged mysql-test/r/mysqlbinlog.result: Auto merged mysql-test/r/query_cache.result: Auto merged mysql-test/r/sp.result: Auto merged mysql-test/r/system_mysql_db.result: Auto merged mysql-test/r/trigger.result: Auto merged mysql-test/r/type_blob.result: Auto merged mysql-test/r/view.result: Auto merged mysql-test/r/warnings.result: Auto merged mysql-test/suite/federated/federated.result: Auto merged mysql-test/suite/federated/federated.test: Auto merged mysql-test/suite/ndb_team/r/ndb_dd_backuprestore.result: Auto merged mysql-test/suite/ndb_team/r/rpl_ndb_dd_advance.result: Auto merged mysql-test/suite/ndb_team/t/rpl_ndb_dd_advance.test: Auto merged mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result: Auto merged mysql-test/suite/rpl/r/rpl_row_log_innodb.result: Auto merged mysql-test/suite/rpl/r/rpl_timezone.result: Auto merged mysql-test/suite/rpl/t/rpl_load_from_master.test: Auto merged mysql-test/suite/rpl/t/rpl_rotate_logs.test: Auto merged mysql-test/suite/rpl/t/rpl_trigger.test: Auto merged mysql-test/t/csv.test: Auto merged mysql-test/t/ctype_big5.test: Auto merged mysql-test/t/gis.test: Auto merged mysql-test/t/innodb.test: Auto merged mysql-test/t/mysqldump.test: Auto merged mysql-test/t/partition.test: Auto merged mysql-test/t/query_cache.test: Auto merged mysql-test/t/show_check.test: Auto merged mysql-test/t/sp.test: Auto merged mysql-test/t/system_mysql_db_fix50117.test: Auto merged mysql-test/t/trigger.test: Auto merged mysql-test/t/trigger_notembedded.test: Auto merged mysql-test/t/type_blob.test: Auto merged mysql-test/t/view.test: Auto merged mysql-test/t/warnings.test: Auto merged sql/ha_ndbcluster.cc: Auto merged mysql-test/Makefile.am: SCCS merged mysql-test/mysql-test-run.pl: Use local version of mtr.pl mysql-test/lib/mtr_cases.pm: Use local mtr_cases.pm mysql-test/suite/rpl/t/disabled.def: Use remote disabled file mysql-test/t/disabled.def: Use remote disabled file sql/ha_ndbcluster_binlog.cc: Use remote mysql-test/extra/rpl_tests/rpl_charset.test: Manual merge mysql-test/lib/mtr_report.pm: Manual merge mysql-test/suite/binlog/r/binlog_killed_simulate.result: Manual merge mysql-test/suite/binlog/r/binlog_multi_engine.result: Manual merge mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result: Manual merge mysql-test/suite/binlog/r/binlog_stm_blackhole.result: Manual merge mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result: Manual merge mysql-test/suite/binlog/t/binlog_killed.test: Manual merge mysql-test/suite/binlog/t/binlog_killed_simulate.test: Manual merge mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test: Manual merge mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test: Manual merge mysql-test/suite/ndb/r/ndb_binlog_format.result: Manual merge mysql-test/suite/ndb/r/ndb_restore.result: Manual merge mysql-test/suite/ndb/t/ndb_restore.test: Manual merge mysql-test/suite/rpl/include/rpl_mixed_dml.inc: Manual merge mysql-test/suite/rpl/r/rpl_stm_log.result: Manual merge mysql-test/suite/rpl/t/rpl_row_sp005.test: Manual merge mysql-test/t/log_state.test: Manual merge mysql-test/t/mysqlbinlog.test: Manual merge mysql-test/t/mysqlbinlog2.test: Manual merge mysql-test/t/upgrade.test: Manual merge
295 lines
6.4 KiB
Plaintext
295 lines
6.4 KiB
Plaintext
# the file to be sourced from binlog.binlog_mix_innodb_myisam
|
|
|
|
#
|
|
# Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack
|
|
# bug #28960 non-trans temp table changes with insert .. select
|
|
# not binlogged after rollback
|
|
#
|
|
# testing appearence of insert into temp_table in binlog.
|
|
# There are two branches of execution that require different setup.
|
|
|
|
# checking binlog content filled with row-based events due to
|
|
# a used stored function modifies non-transactional table
|
|
|
|
## send_eof() branch
|
|
|
|
# prepare
|
|
|
|
create temporary table tt (a int unique);
|
|
create table ti (a int) engine=innodb;
|
|
reset master;
|
|
|
|
# action
|
|
|
|
begin;
|
|
insert into ti values (1);
|
|
insert into ti values (2) ;
|
|
insert into tt select * from ti;
|
|
rollback;
|
|
|
|
# check
|
|
|
|
select count(*) from tt /* 2 */;
|
|
source include/show_binlog_events.inc;
|
|
select count(*) from ti /* zero */;
|
|
insert into ti select * from tt;
|
|
select * from ti /* that is what slave would miss - bug#28960 */;
|
|
|
|
|
|
## send_error() branch
|
|
delete from ti;
|
|
delete from tt where a=1;
|
|
reset master;
|
|
|
|
# action
|
|
|
|
begin;
|
|
insert into ti values (1);
|
|
insert into ti values (2) /* to make the dup error in the following */;
|
|
--error ER_DUP_ENTRY
|
|
insert into tt select * from ti /* one affected and error */;
|
|
rollback;
|
|
|
|
# check
|
|
|
|
source include/show_binlog_events.inc; # nothing in binlog with row bilog format
|
|
select count(*) from ti /* zero */;
|
|
insert into ti select * from tt;
|
|
select * from tt /* that is what otherwise slave missed - the bug */;
|
|
|
|
drop table ti;
|
|
|
|
|
|
#
|
|
# Bug #27417 thd->no_trans_update.stmt lost value inside of SF-exec-stack
|
|
#
|
|
# Testing asserts: if there is a side effect of modifying non-transactional
|
|
# table thd->no_trans_update.stmt must be TRUE;
|
|
# the assert is active with debug build
|
|
#
|
|
|
|
--disable_warnings
|
|
drop function if exists bug27417;
|
|
drop table if exists t1,t2;
|
|
--enable_warnings
|
|
# side effect table
|
|
CREATE TABLE t1 (a int NOT NULL auto_increment primary key) ENGINE=MyISAM;
|
|
# target tables
|
|
CREATE TABLE t2 (a int NOT NULL auto_increment, PRIMARY KEY (a));
|
|
|
|
delimiter |;
|
|
create function bug27417(n int)
|
|
RETURNS int(11)
|
|
begin
|
|
insert into t1 values (null);
|
|
return n;
|
|
end|
|
|
delimiter ;|
|
|
|
|
reset master;
|
|
|
|
# execute
|
|
|
|
insert into t2 values (bug27417(1));
|
|
insert into t2 select bug27417(2);
|
|
reset master;
|
|
|
|
--error ER_DUP_ENTRY
|
|
insert into t2 values (bug27417(2));
|
|
source include/show_binlog_events.inc; #only (!) with fixes for #23333 will show there is the query
|
|
select count(*) from t1 /* must be 3 */;
|
|
|
|
reset master;
|
|
select count(*) from t2;
|
|
delete from t2 where a=bug27417(3);
|
|
select count(*) from t2 /* nothing got deleted */;
|
|
source include/show_binlog_events.inc; # the query must be in regardless of #23333
|
|
select count(*) from t1 /* must be 5 */;
|
|
|
|
--enable_info
|
|
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
|
|
--disable_info
|
|
select count(*) from t1 /* must be 7 */;
|
|
|
|
# function bug27417 remains for the following testing of bug#23333
|
|
drop table t1,t2;
|
|
|
|
#
|
|
# Bug#23333 using the patch (and the test) for bug#27471
|
|
# throughout the bug tests
|
|
# t1 - non-trans side effects gatherer;
|
|
# t2 - transactional table;
|
|
#
|
|
CREATE TABLE t1 (a int NOT NULL auto_increment primary key) ENGINE=MyISAM;
|
|
CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
|
|
CREATE TABLE t3 (a int, PRIMARY KEY (a), b int unique) ENGINE=MyISAM;
|
|
CREATE TABLE t4 (a int, PRIMARY KEY (a), b int unique) ENGINE=Innodb;
|
|
CREATE TABLE t5 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
|
|
|
|
|
|
#
|
|
# INSERT
|
|
#
|
|
|
|
# prepare
|
|
|
|
insert into t2 values (1);
|
|
reset master;
|
|
|
|
# execute
|
|
|
|
--error ER_DUP_ENTRY
|
|
insert into t2 values (bug27417(1));
|
|
|
|
# check
|
|
|
|
source include/show_binlog_events.inc; # must be event of the query
|
|
select count(*) from t1 /* must be 1 */;
|
|
|
|
#
|
|
# INSERT SELECT
|
|
#
|
|
|
|
# prepare
|
|
delete from t1;
|
|
delete from t2;
|
|
insert into t2 values (2);
|
|
reset master;
|
|
|
|
# execute
|
|
|
|
--error ER_DUP_ENTRY
|
|
insert into t2 select bug27417(1) union select bug27417(2);
|
|
|
|
# check
|
|
|
|
source include/show_binlog_events.inc; # must be events of the query
|
|
select count(*) from t1 /* must be 2 */;
|
|
|
|
#
|
|
# UPDATE inc multi-update
|
|
#
|
|
|
|
# prepare
|
|
delete from t1;
|
|
insert into t3 values (1,1),(2,3),(3,4);
|
|
reset master;
|
|
|
|
# execute
|
|
--error ER_DUP_ENTRY
|
|
update t3 set b=b+bug27417(1);
|
|
|
|
# check
|
|
source include/show_binlog_events.inc; # must be events of the query
|
|
select count(*) from t1 /* must be 2 */;
|
|
|
|
## multi_update::send_eof() branch
|
|
|
|
# prepare
|
|
delete from t3;
|
|
delete from t4;
|
|
insert into t3 values (1,1);
|
|
insert into t4 values (1,1),(2,2);
|
|
|
|
reset master;
|
|
|
|
# execute
|
|
--error ER_DUP_ENTRY
|
|
UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
|
|
|
|
# check
|
|
source include/show_binlog_events.inc; # the offset must denote there is the query
|
|
select count(*) from t1 /* must be 4 */;
|
|
|
|
## send_error() branch of multi_update
|
|
|
|
# prepare
|
|
delete from t1;
|
|
delete from t3;
|
|
delete from t4;
|
|
insert into t3 values (1,1),(2,2);
|
|
insert into t4 values (1,1),(2,2);
|
|
|
|
reset master;
|
|
|
|
# execute
|
|
--error ER_DUP_ENTRY
|
|
UPDATE t3,t4 SET t3.a=t4.a + bug27417(1);
|
|
|
|
# check
|
|
select count(*) from t1 /* must be 1 */;
|
|
|
|
# cleanup
|
|
drop table t4;
|
|
|
|
|
|
#
|
|
# DELETE incl multi-delete
|
|
#
|
|
|
|
# prepare
|
|
delete from t1;
|
|
delete from t2;
|
|
delete from t3;
|
|
insert into t2 values (1);
|
|
insert into t3 values (1,1);
|
|
create trigger trg_del before delete on t2 for each row
|
|
insert into t3 values (bug27417(1), 2);
|
|
reset master;
|
|
|
|
# execute
|
|
--error ER_DUP_ENTRY
|
|
delete from t2;
|
|
# check
|
|
source include/show_binlog_events.inc; # the offset must denote there is the query
|
|
select count(*) from t1 /* must be 1 */;
|
|
|
|
# cleanup
|
|
drop trigger trg_del;
|
|
|
|
# prepare
|
|
delete from t1;
|
|
delete from t2;
|
|
delete from t5;
|
|
create trigger trg_del_t2 after delete on t2 for each row
|
|
insert into t1 values (1);
|
|
insert into t2 values (2),(3);
|
|
insert into t5 values (1),(2);
|
|
reset master;
|
|
|
|
# execute
|
|
--error ER_DUP_ENTRY
|
|
delete t2.* from t2,t5 where t2.a=t5.a + 1;
|
|
|
|
# check
|
|
source include/show_binlog_events.inc; # must be events of the query
|
|
select count(*) from t1 /* must be 1 */;
|
|
|
|
|
|
#
|
|
# LOAD DATA
|
|
#
|
|
|
|
# prepare
|
|
delete from t1;
|
|
create table t4 (a int default 0, b int primary key) engine=innodb;
|
|
insert into t4 values (0, 17);
|
|
reset master;
|
|
|
|
# execute
|
|
--error ER_DUP_ENTRY
|
|
load data infile '../../std_data/rpl_loaddata.dat' into table t4 (a, @b) set b= @b + bug27417(2);
|
|
# check
|
|
select * from t4;
|
|
select count(*) from t1 /* must be 2 */;
|
|
source include/show_binlog_events.inc; # must be events of the query
|
|
|
|
#
|
|
# bug#23333 cleanup
|
|
#
|
|
|
|
|
|
drop trigger trg_del_t2;
|
|
drop table t1,t2,t3,t4,t5;
|
|
drop function bug27417;
|