--source include/master-slave.inc #--source include/have_innodb.inc --connect(con1,localhost,root,,) --connect(con2,localhost,root,,) --connect(con3,localhost,root,,) --connect(con4,localhost,root,,) DROP DATABASE IF EXISTS test; create database if not exists test; use test; drop table if exists test1; drop table if exists test2; create table test1( a int not null, b char(2) not null, primary key(a, b) ) ENGINE=INNODB; create table test2( a int not null, b char(2) not null, primary key(a, b) ) ENGINE=INNODB; insert into test1 values(1, 'en'), (2, 'ca'); drop table if exists test3, test4; create table test3 ( id int not null primary key, name varchar(255) ); create table test4 ( id int not null primary key, name varchar(255) ); insert into test3(id, name) values(15034, '51707'),(1, '001'); insert into test4(id, name) values(15034, '051707'),(1, '1'); --connection con1 set autocommit=0; SET @@binlog_format := 'STATEMENT'; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; --connection con2 set autocommit=0; SET @@binlog_format := 'STATEMENT'; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; --connection con3 set autocommit=0; SET @@binlog_format := 'STATEMENT'; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; --connection con4 set autocommit=0; SET @@binlog_format := 'STATEMENT'; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; --connection con1 LOCK TABLES `test`.`test1` WRITE; SET @crc := '', @cnt := 0; SELECT /*nibble boundary 0*/ `a`,`b` FROM `test`.`test1` FORCE INDEX (`PRIMARY`) ORDER BY `a`,`b` LIMIT 999, 1; --connection con3 LOCK TABLES `test`.`test2` WRITE; SHOW TABLES FROM `test` LIKE 'test2' ; SHOW TRIGGERS FROM `test` ; SET @crc := '', @cnt := 0; SELECT /*test.test2:1/1*/ 0 AS chunk_num, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `a`, `b`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`test2` FORCE INDEX (`PRIMARY`) WHERE (1=1) FOR UPDATE ; --connection con1 SET @crc := '', @cnt := 0; --connection con3 SET @crc := '', @cnt := 0; --connection con1 SELECT /*test.test1:1/1*/ 0 AS chunk_num, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `a`, `b`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `test`.`test1` FORCE INDEX (`PRIMARY`) WHERE (1=1) LOCK IN SHARE MODE; --connection con3 SELECT /*rows in nibble*/ `a`, `b`, CRC32(CONCAT_WS('#', `a`, `b`)) AS __crc FROM `test`.`test2` FORCE INDEX (`PRIMARY`) WHERE (1=1) ORDER BY `a`, `b` FOR UPDATE; --connection con1 SELECT `a`, `b` FROM `test`.`test1` WHERE `a`='1' AND `b`='en' LIMIT 1; --connection con3 INSERT INTO `test`.`test2`(`a`, `b`) VALUES ('1', 'en'); --connection con1 SELECT `a`, `b` FROM `test`.`test1` WHERE `a`='2' AND `b`='ca' LIMIT 1 ; --connection con3 INSERT INTO `test`.`test2`(`a`, `b`) VALUES ('2', 'ca'); --connection con1 ALTER TABLE `test`.`test1` RENAME `test`.`test1_tmp_16810`; --connection con3 ALTER TABLE `test`.`test2` RENAME `test`.`test1`; unlock tables; --connection con1 unlock tables; drop table if exists test1; drop table if exists test2; drop table if exists test3; drop table if exists test4; --sync_slave_with_master