mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
automerge: mysql-5.1-bugteam branch --> mysql-5.1-bugteam latest
NOTE: added TODO to the comments requested by reviewer during this
merge.
This commit is contained in:
86
mysql-test/extra/rpl_tests/rpl_set_null.test
Normal file
86
mysql-test/extra/rpl_tests/rpl_set_null.test
Normal file
@@ -0,0 +1,86 @@
|
||||
# Both of the following tests check that comparison of binlog BI
|
||||
# against SE record will not fail due to remains from previous values
|
||||
# in the SE record (before a given field was set to null).
|
||||
#
|
||||
# In MIXED mode:
|
||||
# - Insert and update are executed as statements
|
||||
# - Delete is executed as a row event
|
||||
# - Assertion: checks that comparison will not fail because the update
|
||||
# statement will clear the record contents for the nulled
|
||||
# field. If data was not cleared, some engines may keep
|
||||
# the value and return it later as garbage - despite the
|
||||
# fact that field is null. This may cause slave to
|
||||
# falsely fail in the comparison (memcmp would fail
|
||||
# because of "garbage" in record data).
|
||||
#
|
||||
# In ROW mode:
|
||||
# - Insert, update and delete are executed as row events.
|
||||
# - Assertion: checks that comparison will not fail because the update
|
||||
# rows event will clear the record contents before
|
||||
# feeding the new value to the SE. This protects against
|
||||
# SEs that do not clear record contents when storing
|
||||
# nulled fields. If the engine did not clear the data it
|
||||
# would cause slave to falsely fail in the comparison
|
||||
# (memcmp would fail because of "garbage" in record
|
||||
# data). This scenario is pretty much the same described
|
||||
# above in MIXED mode, but checks different execution
|
||||
# path in the slave.
|
||||
|
||||
# BUG#49481: RBR: MyISAM and bit fields may cause slave to stop on
|
||||
# delete cant find record
|
||||
|
||||
-- source include/master-slave-reset.inc
|
||||
|
||||
-- connection master
|
||||
-- eval CREATE TABLE t1 (c1 BIT, c2 INT) Engine=$engine
|
||||
INSERT INTO `t1` VALUES ( 1, 1 );
|
||||
UPDATE t1 SET c1=NULL where c2=1;
|
||||
-- sync_slave_with_master
|
||||
|
||||
-- let $diff_table_1=master:test.t1
|
||||
-- let $diff_table_2=slave:test.t1
|
||||
-- source include/diff_tables.inc
|
||||
|
||||
-- connection master
|
||||
# triggers switch to row mode when on mixed
|
||||
DELETE FROM t1 WHERE c2=1 LIMIT 1;
|
||||
-- sync_slave_with_master
|
||||
|
||||
-- let $diff_table_1=master:test.t1
|
||||
-- let $diff_table_2=slave:test.t1
|
||||
-- source include/diff_tables.inc
|
||||
|
||||
-- connection master
|
||||
DROP TABLE t1;
|
||||
-- sync_slave_with_master
|
||||
|
||||
-- source include/master-slave-reset.inc
|
||||
|
||||
-- connection master
|
||||
|
||||
# BUG#49482: RBR: Replication may break on deletes when MyISAM tables
|
||||
# + char field are used
|
||||
|
||||
-- eval CREATE TABLE t1 (c1 CHAR) Engine=$engine
|
||||
|
||||
INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
|
||||
SELECT * FROM t1;
|
||||
UPDATE t1 SET c1=NULL WHERE c1='w';
|
||||
-- sync_slave_with_master
|
||||
|
||||
-- let $diff_table_1=master:test.t1
|
||||
-- let $diff_table_2=slave:test.t1
|
||||
-- source include/diff_tables.inc
|
||||
|
||||
-- connection master
|
||||
# triggers switch to row mode when on mixed
|
||||
DELETE FROM t1 LIMIT 2;
|
||||
-- sync_slave_with_master
|
||||
|
||||
-- let $diff_table_1=master:test.t1
|
||||
-- let $diff_table_2=slave:test.t1
|
||||
-- source include/diff_tables.inc
|
||||
|
||||
-- connection master
|
||||
DROP TABLE t1;
|
||||
-- sync_slave_with_master
|
||||
35
mysql-test/suite/rpl/r/rpl_set_null_innodb.result
Normal file
35
mysql-test/suite/rpl/r/rpl_set_null_innodb.result
Normal file
@@ -0,0 +1,35 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (c1 BIT, c2 INT) Engine=InnoDB;
|
||||
INSERT INTO `t1` VALUES ( 1, 1 );
|
||||
UPDATE t1 SET c1=NULL where c2=1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 WHERE c2=1 LIMIT 1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (c1 CHAR) Engine=InnoDB;
|
||||
INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
w
|
||||
UPDATE t1 SET c1=NULL WHERE c1='w';
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 LIMIT 2;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
35
mysql-test/suite/rpl/r/rpl_set_null_myisam.result
Normal file
35
mysql-test/suite/rpl/r/rpl_set_null_myisam.result
Normal file
@@ -0,0 +1,35 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (c1 BIT, c2 INT) Engine=MyISAM;
|
||||
INSERT INTO `t1` VALUES ( 1, 1 );
|
||||
UPDATE t1 SET c1=NULL where c2=1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 WHERE c2=1 LIMIT 1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (c1 CHAR) Engine=MyISAM;
|
||||
INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
w
|
||||
UPDATE t1 SET c1=NULL WHERE c1='w';
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 LIMIT 2;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
6
mysql-test/suite/rpl/t/rpl_set_null_innodb.test
Normal file
6
mysql-test/suite/rpl/t/rpl_set_null_innodb.test
Normal file
@@ -0,0 +1,6 @@
|
||||
-- source include/have_binlog_format_mixed_or_row.inc
|
||||
-- source include/master-slave.inc
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
-- let $engine= InnoDB
|
||||
-- source extra/rpl_tests/rpl_set_null.test
|
||||
5
mysql-test/suite/rpl/t/rpl_set_null_myisam.test
Normal file
5
mysql-test/suite/rpl/t/rpl_set_null_myisam.test
Normal file
@@ -0,0 +1,5 @@
|
||||
-- source include/have_binlog_format_mixed_or_row.inc
|
||||
-- source include/master-slave.inc
|
||||
|
||||
-- let $engine= MyISAM
|
||||
-- source extra/rpl_tests/rpl_set_null.test
|
||||
35
mysql-test/suite/rpl_ndb/r/rpl_ndb_set_null.result
Normal file
35
mysql-test/suite/rpl_ndb/r/rpl_ndb_set_null.result
Normal file
@@ -0,0 +1,35 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (c1 BIT, c2 INT) Engine=NDB;
|
||||
INSERT INTO `t1` VALUES ( 1, 1 );
|
||||
UPDATE t1 SET c1=NULL where c2=1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 WHERE c2=1 LIMIT 1;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 (c1 CHAR) Engine=NDB;
|
||||
INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
|
||||
SELECT * FROM t1;
|
||||
c1
|
||||
w
|
||||
UPDATE t1 SET c1=NULL WHERE c1='w';
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DELETE FROM t1 LIMIT 2;
|
||||
Comparing tables master:test.t1 and slave:test.t1
|
||||
DROP TABLE t1;
|
||||
6
mysql-test/suite/rpl_ndb/t/rpl_ndb_set_null.test
Normal file
6
mysql-test/suite/rpl_ndb/t/rpl_ndb_set_null.test
Normal file
@@ -0,0 +1,6 @@
|
||||
-- source include/have_ndb.inc
|
||||
-- source include/have_binlog_format_mixed_or_row.inc
|
||||
-- source include/ndb_master-slave.inc
|
||||
|
||||
-- let $engine= NDB
|
||||
-- source extra/rpl_tests/rpl_set_null.test
|
||||
Reference in New Issue
Block a user