65 changed files with 2686 additions and 515 deletions
			
			
		- 
					2.bzr-mysql/default.conf
- 
					28dbug/dbug.c
- 
					19include/my_dbug.h
- 
					1mysql-test/collections/default.experimental
- 
					72mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
- 
					364mysql-test/extra/rpl_tests/rpl_not_null.test
- 
					15mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
- 
					121mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc
- 
					27mysql-test/include/show_binlog_events.inc
- 
					35mysql-test/include/show_relaylog_events.inc
- 
					2mysql-test/include/test_fieldsize.inc
- 
					2mysql-test/include/wait_until_disconnected.inc
- 
					8mysql-test/suite/binlog/r/binlog_max_extension.result
- 
					92mysql-test/suite/binlog/t/binlog_max_extension.test
- 
					16mysql-test/suite/rpl/r/rpl_empty_master_host.result
- 
					54mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
- 
					54mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
- 
					1mysql-test/suite/rpl/r/rpl_flushlog_loop.result
- 
					202mysql-test/suite/rpl/r/rpl_not_null_innodb.result
- 
					202mysql-test/suite/rpl/r/rpl_not_null_myisam.result
- 
					274mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result
- 
					46mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
- 
					46mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
- 
					47mysql-test/suite/rpl/r/rpl_slow_query_log.result
- 
					148mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result
- 
					40mysql-test/suite/rpl/r/rpl_sync.result
- 
					51mysql-test/suite/rpl/t/rpl_empty_master_host.test
- 
					19mysql-test/suite/rpl/t/rpl_not_null_innodb.test
- 
					18mysql-test/suite/rpl/t/rpl_not_null_myisam.test
- 
					18mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test
- 
					4mysql-test/suite/rpl/t/rpl_slave_skip.test
- 
					1mysql-test/suite/rpl/t/rpl_slow_query_log-slave.opt
- 
					187mysql-test/suite/rpl/t/rpl_slow_query_log.test
- 
					18mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test
- 
					1mysql-test/suite/rpl/t/rpl_sync-slave.opt
- 
					148mysql-test/suite/rpl/t/rpl_sync.test
- 
					58mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
- 
					40mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result
- 
					24mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test
- 
					1sql/lex.h
- 
					111sql/log.cc
- 
					42sql/log.h
- 
					16sql/log_event.cc
- 
					8sql/log_event.h
- 
					99sql/mysql_priv.h
- 
					63sql/mysqld.cc
- 
					27sql/rpl_mi.cc
- 
					8sql/rpl_mi.h
- 
					78sql/rpl_record.cc
- 
					7sql/rpl_record.h
- 
					15sql/rpl_rli.cc
- 
					15sql/rpl_rli.h
- 
					17sql/set_var.cc
- 
					21sql/set_var.h
- 
					73sql/slave.cc
- 
					1sql/slave.h
- 
					1sql/sp_head.cc
- 
					2sql/sql_binlog.cc
- 
					3sql/sql_class.cc
- 
					3sql/sql_class.h
- 
					2sql/sql_lex.h
- 
					5sql/sql_parse.cc
- 
					4sql/sql_partition.cc
- 
					67sql/sql_repl.cc
- 
					7sql/sql_yacc.yy
| @ -1,4 +1,4 @@ | |||
| [MYSQL] | |||
| post_commit_to = "commits@lists.mysql.com" | |||
| post_push_to = "commits@lists.mysql.com" | |||
| tree_name = "mysql-5.1" | |||
| tree_name = "mysql-5.1-rep+2" | |||
| @ -0,0 +1,364 @@ | |||
| ################################################################################# | |||
| # This test checks if the replication between "null" fields to either "null" | |||
| # fields or "not null" fields works properly. In the first case, the execution | |||
| # should work fine. In the second case, it may fail according to the sql_mode | |||
| # being used. | |||
| # | |||
| # The test is devided in three main parts: | |||
| # | |||
| # 1 - NULL --> NULL (no failures) | |||
| # 2 - NULL --> NOT NULL ( sql-mode  = STRICT and failures) | |||
| # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) | |||
| # | |||
| ################################################################################# | |||
| connection master; | |||
| 
 | |||
| SET SQL_LOG_BIN= 0; | |||
| eval CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| eval CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| eval CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| eval CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| SET SQL_LOG_BIN= 1; | |||
| 
 | |||
| connection slave; | |||
| 
 | |||
| eval CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| eval CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| eval CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', | |||
| `c` INT DEFAULT 500,  | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| eval CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| --echo ************* EXECUTION WITH INSERTS ************* | |||
| connection master; | |||
| INSERT INTO t1(a,b,c) VALUES (1, null, 1); | |||
| INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| INSERT INTO t1(a,b) VALUES (3, null); | |||
| INSERT INTO t1(a,c) VALUES (4, 4); | |||
| INSERT INTO t1(a) VALUES (5); | |||
| 
 | |||
| INSERT INTO t2(a,b) VALUES (1, null); | |||
| INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); | |||
| INSERT INTO t2(a) VALUES (3); | |||
| 
 | |||
| INSERT INTO t3(a,b) VALUES (1, null); | |||
| INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); | |||
| INSERT INTO t3(a) VALUES (3); | |||
| 
 | |||
| INSERT INTO t4(a,b,c) VALUES (1, null, 1); | |||
| INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| INSERT INTO t4(a,b) VALUES (3, null); | |||
| INSERT INTO t4(a,c) VALUES (4, 4); | |||
| INSERT INTO t4(a) VALUES (5); | |||
| 
 | |||
| --echo ************* SHOWING THE RESULT SETS WITH INSERTS ************* | |||
| sync_slave_with_master; | |||
| 
 | |||
| --echo TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| let $diff_table_1=master:test.t1; | |||
| let $diff_table_2=slave:test.t1; | |||
| source include/diff_tables.inc; | |||
|   | |||
| let $diff_table_1=master:test.t2; | |||
| let $diff_table_2=slave:test.t2; | |||
| source include/diff_tables.inc; | |||
| 
 | |||
| --echo TABLES t2 and t3 must be different. | |||
| connection master; | |||
| SELECT * FROM t3 ORDER BY a; | |||
| connection slave; | |||
| SELECT * FROM t3 ORDER BY a; | |||
| connection master; | |||
| SELECT * FROM t4 ORDER BY a; | |||
| connection slave; | |||
| SELECT * FROM t4 ORDER BY a; | |||
| 
 | |||
| --echo ************* EXECUTION WITH UPDATES and REPLACES ************* | |||
| connection master; | |||
| DELETE FROM t1; | |||
| INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); | |||
| REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| UPDATE t1 set b= NULL, c= 300 where a= 1; | |||
| REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); | |||
| 
 | |||
| --echo ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* | |||
| sync_slave_with_master; | |||
| 
 | |||
| --echo TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| let $diff_table_1=master:test.t1; | |||
| let $diff_table_2=slave:test.t1; | |||
| source include/diff_tables.inc; | |||
| 
 | |||
| --echo ************* CLEANING ************* | |||
| connection master; | |||
| 
 | |||
| DROP TABLE t1; | |||
| DROP TABLE t2; | |||
| DROP TABLE t3; | |||
| DROP TABLE t4; | |||
| 
 | |||
| sync_slave_with_master; | |||
|    | |||
| connection master; | |||
| 
 | |||
| SET SQL_LOG_BIN= 0; | |||
| eval CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL,  | |||
| PRIMARY KEY (`a`)) ENGINE= $engine; | |||
| SET SQL_LOG_BIN= 1; | |||
| 
 | |||
| connection slave; | |||
| 
 | |||
| eval CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, | |||
| PRIMARY KEY (`a`)) ENGINE= $engine; | |||
| 
 | |||
| --echo ************* EXECUTION WITH INSERTS ************* | |||
| connection master; | |||
| INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); | |||
| INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); | |||
| INSERT INTO t1(a,b) VALUES (3, null); | |||
| INSERT INTO t1(a,c) VALUES (4, b'01'); | |||
| INSERT INTO t1(a) VALUES (5); | |||
| 
 | |||
| --echo ************* SHOWING THE RESULT SETS WITH INSERTS ************* | |||
| --echo TABLES t1 and t2 must be different. | |||
| sync_slave_with_master; | |||
| connection master; | |||
| SELECT a,b+0,c+0 FROM t1 ORDER BY a; | |||
| connection slave; | |||
| SELECT a,b+0,c+0 FROM t1 ORDER BY a; | |||
| 
 | |||
| --echo ************* EXECUTION WITH UPDATES and REPLACES ************* | |||
| connection master; | |||
| DELETE FROM t1; | |||
| INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); | |||
| REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); | |||
| UPDATE t1 set b= NULL, c= b'00' where a= 1; | |||
| REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); | |||
| 
 | |||
| --echo ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* | |||
| --echo TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| 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; | |||
|    | |||
| --echo ################################################################################ | |||
| --echo #                       NULL ---> NOT NULL (STRICT MODE) | |||
| --echo #                    UNCOMMENT THIS AFTER FIXING BUG#43992 | |||
| --echo ################################################################################ | |||
| #connection slave; | |||
| #SET GLOBAL sql_mode="TRADITIONAL"; | |||
| # | |||
| #STOP SLAVE; | |||
| #--source include/wait_for_slave_to_stop.inc | |||
| #START SLAVE; | |||
| #--source include/wait_for_slave_to_start.inc | |||
| # | |||
| #let $y=0; | |||
| #while (`select $y < 6`) | |||
| #{ | |||
| #  connection master; | |||
| # | |||
| #  SET SQL_LOG_BIN= 0; | |||
| #  eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT, | |||
| #  PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| #  eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT, | |||
| #  PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| #  eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT, | |||
| #  PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| #  SET SQL_LOG_BIN= 1; | |||
| #   | |||
| #  connection slave; | |||
| #   | |||
| #  eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,  | |||
| #  `c` INT NOT NULL, | |||
| #  PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| #  eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| #  `c` INT,  | |||
| #  PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| #  eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| #  `c` INT DEFAULT 500,  | |||
| #  PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| #   | |||
| #  if (`select $y=0`) | |||
| #  { | |||
| #    --echo ************* EXECUTION WITH INSERTS ************* | |||
| #    connection master; | |||
| #    INSERT INTO t1(a) VALUES (1); | |||
| #  } | |||
| #   | |||
| #  if (`select $y=1`) | |||
| #  { | |||
| #    --echo ************* EXECUTION WITH INSERTS ************* | |||
| #    connection master; | |||
| #    INSERT INTO t1(a, b) VALUES (1, NULL); | |||
| #  } | |||
| #   | |||
| #  if (`select $y=2`) | |||
| #  { | |||
| #    --echo ************* EXECUTION WITH UPDATES ************* | |||
| #    connection master; | |||
| #    INSERT INTO t3(a, b) VALUES (1, 1); | |||
| #    INSERT INTO t3(a, b) VALUES (2, 1); | |||
| #    UPDATE t3 SET b = NULL where a= 1; | |||
| #  } | |||
| #   | |||
| #  if (`select $y=3`) | |||
| #  { | |||
| #    --echo ************* EXECUTION WITH INSERTS/REPLACES ************* | |||
| #    connection master; | |||
| #    REPLACE INTO t3(a, b) VALUES (1, null); | |||
| #  } | |||
| #    | |||
| #  if (`select $y=4`) | |||
| #  { | |||
| #    --echo ************* EXECUTION WITH UPDATES/REPLACES ************* | |||
| #    connection master; | |||
| #    INSERT INTO t3(a, b) VALUES (1, 1); | |||
| #    REPLACE INTO t3(a, b) VALUES (1, null); | |||
| #  } | |||
| #    | |||
| #  if (`select $y=5`) | |||
| #  { | |||
| #    --echo ************* EXECUTION WITH MULTI-ROW INSERTS ************* | |||
| #    connection master; | |||
| # | |||
| #    SET SQL_LOG_BIN= 0; | |||
| #    INSERT INTO t2(a, b) VALUES (1, 1); | |||
| #    INSERT INTO t2(a, b) VALUES (2, 1); | |||
| #    INSERT INTO t2(a, b) VALUES (3, null); | |||
| #    INSERT INTO t2(a, b) VALUES (4, 1); | |||
| #    INSERT INTO t2(a, b) VALUES (5, 1); | |||
| #    SET SQL_LOG_BIN= 1; | |||
| # | |||
| #    INSERT INTO t2 SELECT a + 10, b from t2; | |||
| #    --echo The statement below is just executed to stop processing | |||
| #    INSERT INTO t1(a) VALUES (1); | |||
| #  } | |||
| #   | |||
| #  --echo ************* SHOWING THE RESULT SETS ************* | |||
| #  connection slave; | |||
| #  --source include/wait_for_slave_sql_to_stop.inc | |||
| #  connection master; | |||
| #  SELECT * FROM t1 ORDER BY a; | |||
| #  connection slave; | |||
| #  SELECT * FROM t1 ORDER BY a; | |||
| #  connection master; | |||
| #  SELECT * FROM t2 ORDER BY a; | |||
| #  connection slave; | |||
| #  SELECT * FROM t2 ORDER BY a; | |||
| #  connection master; | |||
| #  SELECT * FROM t3 ORDER BY a; | |||
| #  connection slave; | |||
| #  SELECT * FROM t3 ORDER BY a; | |||
| #  --source include/reset_master_and_slave.inc | |||
| #   | |||
| #  connection master; | |||
| #   | |||
| #  DROP TABLE t1; | |||
| #  DROP TABLE t2; | |||
| #  DROP TABLE t3; | |||
| #   | |||
| #  sync_slave_with_master; | |||
| # | |||
| #  inc $y; | |||
| #} | |||
| #connection slave; | |||
| #SET GLOBAL sql_mode=""; | |||
| # | |||
| #STOP SLAVE; | |||
| #source include/wait_for_slave_to_stop.inc; | |||
| #START SLAVE; | |||
| #--source include/wait_for_slave_to_start.inc | |||
| 
 | |||
| --echo ################################################################################ | |||
| --echo #                       NULL ---> NOT NULL (NON-STRICT MODE) | |||
| --echo ################################################################################ | |||
| connection master; | |||
| 
 | |||
| SET SQL_LOG_BIN= 0; | |||
| eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| SET SQL_LOG_BIN= 1; | |||
| 
 | |||
| connection slave; | |||
| 
 | |||
| eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,  | |||
| `c` INT NOT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| `c` INT,  | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| `c` INT DEFAULT 500,  | |||
| PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; | |||
| 
 | |||
| --echo ************* EXECUTION WITH INSERTS ************* | |||
| connection master; | |||
| INSERT INTO t1(a) VALUES (1); | |||
| INSERT INTO t1(a, b) VALUES (2, NULL); | |||
| INSERT INTO t1(a, b) VALUES (3, 1); | |||
| 
 | |||
| INSERT INTO t2(a) VALUES (1); | |||
| INSERT INTO t2(a, b) VALUES (2, NULL); | |||
| INSERT INTO t2(a, b) VALUES (3, 1); | |||
| 
 | |||
| INSERT INTO t3(a) VALUES (1); | |||
| INSERT INTO t3(a, b) VALUES (2, NULL); | |||
| INSERT INTO t3(a, b) VALUES (3, 1); | |||
| INSERT INTO t3(a, b) VALUES (4, 1); | |||
| REPLACE INTO t3(a, b) VALUES (5, null); | |||
| 
 | |||
| REPLACE INTO t3(a, b) VALUES (3, null); | |||
| UPDATE t3 SET b = NULL where a = 4; | |||
| 
 | |||
| --echo ************* SHOWING THE RESULT SETS ************* | |||
| connection master; | |||
| sync_slave_with_master; | |||
| 
 | |||
| connection master; | |||
| SELECT * FROM t1 ORDER BY a; | |||
| connection slave; | |||
| SELECT * FROM t1 ORDER BY a; | |||
| connection master; | |||
| SELECT * FROM t2 ORDER BY a; | |||
| connection slave; | |||
| SELECT * FROM t2 ORDER BY a; | |||
| connection master; | |||
| SELECT * FROM t3 ORDER BY a; | |||
| connection slave; | |||
| SELECT * FROM t3 ORDER BY a; | |||
| 
 | |||
| connection master; | |||
| 
 | |||
| DROP TABLE t1; | |||
| DROP TABLE t2; | |||
| DROP TABLE t3; | |||
| 
 | |||
| sync_slave_with_master; | |||
| @ -0,0 +1,121 @@ | |||
| -- connection master | |||
| 
 | |||
| CREATE TABLE t1 (a INT); | |||
| INSERT INTO t1 VALUES (1); | |||
| INSERT INTO t1 VALUES (2); | |||
| INSERT INTO t1 VALUES (3); | |||
| INSERT INTO t1 VALUES (4); | |||
| INSERT INTO t1 VALUES (5); | |||
| INSERT INTO t1 VALUES (6); | |||
| 
 | |||
| -- echo [MASTER] ********* SOW BINLOG EVENTS IN ...  ********* | |||
| let $binary_log_file= master-bin.000001; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [MASTER] ********* SOW BINLOG EVENTS         ********* | |||
| let $binary_log_file= ; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [MASTER] ********* SOW BINLOG EVENTS ... LIMIT rows  ********* | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= 3; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [MASTER] ********* SOW BINLOG EVENTS ... LIMIT offset,rows  ********* | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= 3; | |||
| let $binary_log_limit_offset= 1; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| # clear show_binlog_event/show_relaylog_events parameters | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= ; | |||
| let $binary_log_limit_offset= ; | |||
| 
 | |||
| -- sync_slave_with_master | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW BINLOG EVENTS IN ...   ********* | |||
| let $binary_log_file= slave-bin.000001; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW BINLOG EVENTS          ********* | |||
| let $binary_log_file= ; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT rows  ********* | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= 3; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows  ********* | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= 3; | |||
| let $binary_log_limit_offset= 1; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| # clear show_binlog_event/show_relaylog_events parameters | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= ; | |||
| let $binary_log_limit_offset= ; | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW RELAYLOG EVENTS IN ... ********* | |||
| let $binary_log_file= slave-relay-bin.000003; | |||
| -- source include/show_relaylog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW RELAYLOG EVENTS        ********* | |||
| let $binary_log_file= ; | |||
| -- source include/show_relaylog_events.inc | |||
| 
 | |||
| -- echo [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT rows  ********* | |||
| let $binary_log_file= slave-relay-bin.000003; | |||
| let $binary_log_limit_row= 3; | |||
| let $binary_log_limit_offset= ; | |||
| -- source include/show_relaylog_events.inc | |||
| 
 | |||
| -- echo [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT offset,rows  ********* | |||
| let $binary_log_file= slave-relay-bin.000003; | |||
| let $binary_log_limit_offset= 1; | |||
| let $binary_log_limit_row= 3; | |||
| -- source include/show_relaylog_events.inc | |||
| 
 | |||
| FLUSH LOGS; | |||
| 
 | |||
| -- connection master | |||
| FLUSH LOGS; | |||
| DROP TABLE t1; | |||
| 
 | |||
| # clear show_binlog_event/show_relaylog_events parameters | |||
| let $binary_log_file= ; | |||
| let $binary_log_limit_row= ; | |||
| let $binary_log_limit_offset= ; | |||
| 
 | |||
| -- echo [MASTER] ********* SOW BINLOG EVENTS IN ...  ********* | |||
| let $binary_log_file= master-bin.000002; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [MASTER] ********* SOW BINLOG EVENTS         ********* | |||
| let $binary_log_file= ; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- sync_slave_with_master | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW BINLOG EVENTS IN ...   ********* | |||
| let $binary_log_file= slave-bin.000002; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW BINLOG EVENTS          ********* | |||
| let $binary_log_file= ; | |||
| -- source include/show_binlog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW RELAYLOG EVENTS IN ... ********* | |||
| let $binary_log_file= slave-relay-bin.000005; | |||
| -- source include/show_relaylog_events.inc | |||
| 
 | |||
| -- echo [SLAVE] ********* SOW RELAYLOG EVENTS        ********* | |||
| let $binary_log_file= ; | |||
| -- source include/show_relaylog_events.inc | |||
| 
 | |||
| # clear show_binlog_event/show_relaylog_events parameters | |||
| let $binary_log_name= ; | |||
| let $binary_log_limit_row= ; | |||
| let $binary_log_limit_offset= ; | |||
| @ -1,10 +1,35 @@ | |||
| # $binlog_start can be set by caller or take a default value | |||
| # $binary_log_file the name of the log file show | |||
| # $binary_log_limit_row - sets the number of binlog rows to be returned | |||
| # $binary_log_limit_offset - sets the offset where to start returning events | |||
| 
 | |||
| let $show_binlog_events= show binlog events; | |||
| 
 | |||
| if (!$binlog_start) | |||
| { | |||
|   # defaults to chop the first event in the binary log | |||
|   let $binlog_start=107; | |||
| } | |||
| 
 | |||
| if (!`SELECT '$binary_log_file' = ''`) | |||
| { | |||
|     let $show_binlog_events= $show_binlog_events in '$binary_log_file'; | |||
| } | |||
| let $show_binlog_events= $show_binlog_events from $binlog_start; | |||
| 
 | |||
| if ($binary_log_limit_row) | |||
| { | |||
|   let $limit= limit; | |||
|   if ($binary_log_limit_offset) | |||
|   { | |||
|     let $limit= $limit $binary_log_limit_offset, ; | |||
|   } | |||
| 
 | |||
|   let $limit= $limit $binary_log_limit_row; | |||
|   let $show_binlog_events= $show_binlog_events $limit; | |||
| } | |||
| 
 | |||
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $binlog_start <binlog_start> | |||
| --replace_column 2 # 4 # 5 # | |||
| --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ | |||
| --eval show binlog events from $binlog_start | |||
| --eval $show_binlog_events | |||
| @ -0,0 +1,35 @@ | |||
| # $binlog_start can be set by caller or take a default value | |||
| # $binary_log_file the name of the log file show | |||
| # $binary_log_limit_row - sets the number of binlog rows to be returned | |||
| # $binary_log_limit_offset - sets the offset where to start returning events | |||
| 
 | |||
| let $show_binlog_events= show relaylog events; | |||
| 
 | |||
| if (!$binlog_start) | |||
| { | |||
|   # defaults to chop the first event in the binary log | |||
|   let $binlog_start=106; | |||
| } | |||
| 
 | |||
| if (!`SELECT '$binary_log_file' = ''`) | |||
| { | |||
|     let $show_binlog_events= $show_binlog_events in '$binary_log_file'; | |||
| } | |||
| let $show_binlog_events= $show_binlog_events from $binlog_start; | |||
| 
 | |||
| if ($binary_log_limit_row) | |||
| { | |||
|   let $limit= limit; | |||
|   if ($binary_log_limit_offset) | |||
|   { | |||
|     let $limit= $limit $binary_log_limit_offset, ; | |||
|   } | |||
| 
 | |||
|   let $limit= $limit $binary_log_limit_row; | |||
|   let $show_binlog_events= $show_binlog_events $limit; | |||
| } | |||
| 
 | |||
| --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $binlog_start <binlog_start> | |||
| --replace_column 2 # 4 # 5 # | |||
| --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /Server ver:.*$/SERVER_VERSION, BINLOG_VERSION/ | |||
| --eval $show_binlog_events | |||
| @ -0,0 +1,8 @@ | |||
| call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0."); | |||
| call mtr.add_suppression("Log filename extension number exhausted:"); | |||
| call mtr.add_suppression("Can't generate a unique log-filename"); | |||
| RESET MASTER; | |||
| FLUSH LOGS; | |||
| Warnings: | |||
| Warning	1098	Can't generate a unique log-filename master-bin.(1-999) | |||
| 
 | |||
| @ -0,0 +1,92 @@ | |||
| #  BUG#40611: MySQL cannot make a binary log after sequential number beyond  | |||
| #             unsigned long. | |||
| #  | |||
| #  Problem statement | |||
| #  ================= | |||
| # | |||
| #    Extension for log file names might be created with negative  | |||
| #    numbers (when counter used would wrap around), causing server  | |||
| #    failure when incrementing -00001 (reaching number 000000  | |||
| #    extension). | |||
| # | |||
| #  Test | |||
| #  ==== | |||
| #    This tests aims at testing the a patch that removes negatives  | |||
| #    numbers from log name extensions and checks that the server  | |||
| #    reports gracefully that the limit has been reached. | |||
| # | |||
| #    It instruments index file to point to a log file close to | |||
| #    the new maximum and calls flush logs to get warning. | |||
| # | |||
| 
 | |||
| call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0."); | |||
| call mtr.add_suppression("Log filename extension number exhausted:"); | |||
| call mtr.add_suppression("Can't generate a unique log-filename"); | |||
| 
 | |||
| 
 | |||
| -- source include/have_log_bin.inc | |||
| RESET MASTER; | |||
| 
 | |||
| -- let $MYSQLD_DATADIR= `select @@datadir` | |||
| 
 | |||
| ############################################### | |||
| # check hitting maximum file name extension: | |||
| ############################################### | |||
| 
 | |||
| ########## | |||
| # Prepare | |||
| ########## | |||
| 
 | |||
| # 1. Stop master server | |||
| -- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect | |||
| wait | |||
| EOF | |||
| -- shutdown_server 10 | |||
| -- source include/wait_until_disconnected.inc | |||
| 
 | |||
| # 2. Prepare log and index file | |||
| -- copy_file $MYSQLD_DATADIR/master-bin.index $MYSQLD_DATADIR/master-bin.index.orig | |||
| -- copy_file $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.2147483646 | |||
| -- append_file $MYSQLD_DATADIR/master-bin.index | |||
| master-bin.2147483646 | |||
| EOF | |||
| 
 | |||
| # 3. Restart the server | |||
| -- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect | |||
| restart | |||
| EOF | |||
| -- enable_reconnect | |||
| -- source include/wait_until_connected_again.inc | |||
| 
 | |||
| ########### | |||
| # Assertion | |||
| ########### | |||
| 
 | |||
| # assertion: should throw warning | |||
| FLUSH LOGS; | |||
| 
 | |||
| ############## | |||
| # Clean up | |||
| ############## | |||
| 
 | |||
| # 1. Stop the server | |||
| -- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect | |||
| wait | |||
| EOF | |||
| -- shutdown_server 10 | |||
| -- source include/wait_until_disconnected.inc | |||
| 
 | |||
| # 2. Undo changes to index and log files | |||
| -- remove_file $MYSQLD_DATADIR/master-bin.index | |||
| -- copy_file $MYSQLD_DATADIR/master-bin.index.orig $MYSQLD_DATADIR/master-bin.index | |||
| -- remove_file $MYSQLD_DATADIR/master-bin.index.orig | |||
| 
 | |||
| -- remove_file $MYSQLD_DATADIR/master-bin.2147483646 | |||
| -- remove_file $MYSQLD_DATADIR/master-bin.2147483647 | |||
| 
 | |||
| # 3. Restart the server | |||
| -- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect | |||
| restart | |||
| EOF | |||
| -- enable_reconnect | |||
| -- source include/wait_until_connected_again.inc | |||
| @ -0,0 +1,16 @@ | |||
| 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; | |||
| Master_Host = '127.0.0.1' (expected '127.0.0.1') | |||
| CHANGE MASTER TO MASTER_HOST=""; | |||
| ERROR HY000: Incorrect arguments to MASTER_HOST | |||
| Master_Host = '127.0.0.1' (expected '127.0.0.1') | |||
| CHANGE MASTER TO MASTER_HOST="foo"; | |||
| Master_Host = 'foo' (expected 'foo') | |||
| CHANGE MASTER TO MASTER_HOST="127.0.0.1"; | |||
| Master_Host = '127.0.0.1' (expected '127.0.0.1') | |||
| START SLAVE; | |||
| @ -0,0 +1,202 @@ | |||
| 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; | |||
| SET SQL_LOG_BIN= 0; | |||
| CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| SET SQL_LOG_BIN= 1; | |||
| CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', | |||
| `c` INT DEFAULT 500,  | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| ************* EXECUTION WITH INSERTS ************* | |||
| INSERT INTO t1(a,b,c) VALUES (1, null, 1); | |||
| INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| INSERT INTO t1(a,b) VALUES (3, null); | |||
| INSERT INTO t1(a,c) VALUES (4, 4); | |||
| INSERT INTO t1(a) VALUES (5); | |||
| INSERT INTO t2(a,b) VALUES (1, null); | |||
| INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); | |||
| INSERT INTO t2(a) VALUES (3); | |||
| INSERT INTO t3(a,b) VALUES (1, null); | |||
| INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); | |||
| INSERT INTO t3(a) VALUES (3); | |||
| INSERT INTO t4(a,b,c) VALUES (1, null, 1); | |||
| INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| INSERT INTO t4(a,b) VALUES (3, null); | |||
| INSERT INTO t4(a,c) VALUES (4, 4); | |||
| INSERT INTO t4(a) VALUES (5); | |||
| ************* SHOWING THE RESULT SETS WITH INSERTS ************* | |||
| TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| Comparing tables master:test.t2 and slave:test.t2 | |||
| TABLES t2 and t3 must be different. | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	1111-11-11 | |||
| 3	NULL | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b	c | |||
| 1	NULL	500 | |||
| 2	1111-11-11	500 | |||
| 3	NULL	500 | |||
| SELECT * FROM t4 ORDER BY a; | |||
| a	b	c | |||
| 1	NULL	1 | |||
| 2	1111-11-11	2 | |||
| 3	NULL	NULL | |||
| 4	NULL	4 | |||
| 5	NULL	NULL | |||
| SELECT * FROM t4 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	1111-11-11 | |||
| 3	NULL | |||
| 4	NULL | |||
| 5	NULL | |||
| ************* EXECUTION WITH UPDATES and REPLACES ************* | |||
| DELETE FROM t1; | |||
| INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); | |||
| REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| UPDATE t1 set b= NULL, c= 300 where a= 1; | |||
| REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); | |||
| ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* | |||
| TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| ************* CLEANING ************* | |||
| DROP TABLE t1; | |||
| DROP TABLE t2; | |||
| DROP TABLE t3; | |||
| DROP TABLE t4; | |||
| SET SQL_LOG_BIN= 0; | |||
| CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL,  | |||
| PRIMARY KEY (`a`)) ENGINE= Innodb; | |||
| SET SQL_LOG_BIN= 1; | |||
| CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, | |||
| PRIMARY KEY (`a`)) ENGINE= Innodb; | |||
| ************* EXECUTION WITH INSERTS ************* | |||
| INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); | |||
| INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); | |||
| INSERT INTO t1(a,b) VALUES (3, null); | |||
| INSERT INTO t1(a,c) VALUES (4, b'01'); | |||
| INSERT INTO t1(a) VALUES (5); | |||
| ************* SHOWING THE RESULT SETS WITH INSERTS ************* | |||
| TABLES t1 and t2 must be different. | |||
| SELECT a,b+0,c+0 FROM t1 ORDER BY a; | |||
| a	b+0	c+0 | |||
| 1	NULL	1 | |||
| 2	0	1 | |||
| 3	NULL	NULL | |||
| 4	NULL	1 | |||
| 5	NULL	NULL | |||
| SELECT a,b+0,c+0 FROM t1 ORDER BY a; | |||
| a	b+0	c+0 | |||
| 1	NULL	1 | |||
| 2	0	1 | |||
| 3	NULL	NULL | |||
| 4	NULL	1 | |||
| 5	NULL	NULL | |||
| ************* EXECUTION WITH UPDATES and REPLACES ************* | |||
| DELETE FROM t1; | |||
| INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); | |||
| REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); | |||
| UPDATE t1 set b= NULL, c= b'00' where a= 1; | |||
| REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); | |||
| ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* | |||
| TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| DROP TABLE t1; | |||
| ################################################################################ | |||
| #                       NULL ---> NOT NULL (STRICT MODE) | |||
| #                    UNCOMMENT THIS AFTER FIXING BUG#43992 | |||
| ################################################################################ | |||
| ################################################################################ | |||
| #                       NULL ---> NOT NULL (NON-STRICT MODE) | |||
| ################################################################################ | |||
| SET SQL_LOG_BIN= 0; | |||
| CREATE TABLE t1(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| SET SQL_LOG_BIN= 1; | |||
| CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,  | |||
| `c` INT NOT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| `c` INT,  | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| `c` INT DEFAULT 500,  | |||
| PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; | |||
| ************* EXECUTION WITH INSERTS ************* | |||
| INSERT INTO t1(a) VALUES (1); | |||
| INSERT INTO t1(a, b) VALUES (2, NULL); | |||
| INSERT INTO t1(a, b) VALUES (3, 1); | |||
| INSERT INTO t2(a) VALUES (1); | |||
| INSERT INTO t2(a, b) VALUES (2, NULL); | |||
| INSERT INTO t2(a, b) VALUES (3, 1); | |||
| INSERT INTO t3(a) VALUES (1); | |||
| INSERT INTO t3(a, b) VALUES (2, NULL); | |||
| INSERT INTO t3(a, b) VALUES (3, 1); | |||
| INSERT INTO t3(a, b) VALUES (4, 1); | |||
| REPLACE INTO t3(a, b) VALUES (5, null); | |||
| REPLACE INTO t3(a, b) VALUES (3, null); | |||
| UPDATE t3 SET b = NULL where a = 4; | |||
| ************* SHOWING THE RESULT SETS ************* | |||
| SELECT * FROM t1 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	NULL | |||
| 3	1 | |||
| SELECT * FROM t1 ORDER BY a; | |||
| a	b	c | |||
| 1	0	0 | |||
| 2	0	0 | |||
| 3	1	0 | |||
| SELECT * FROM t2 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	NULL | |||
| 3	1 | |||
| SELECT * FROM t2 ORDER BY a; | |||
| a	b	c | |||
| 1	0	NULL | |||
| 2	0	NULL | |||
| 3	1	NULL | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	NULL | |||
| 3	NULL | |||
| 4	NULL | |||
| 5	NULL | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b	c | |||
| 1	0	500 | |||
| 2	0	500 | |||
| 3	0	500 | |||
| 4	0	500 | |||
| 5	0	500 | |||
| DROP TABLE t1; | |||
| DROP TABLE t2; | |||
| DROP TABLE t3; | |||
| @ -0,0 +1,202 @@ | |||
| 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; | |||
| SET SQL_LOG_BIN= 0; | |||
| CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| SET SQL_LOG_BIN= 1; | |||
| CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, | |||
| `c` INT DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', | |||
| `c` INT DEFAULT 500,  | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| ************* EXECUTION WITH INSERTS ************* | |||
| INSERT INTO t1(a,b,c) VALUES (1, null, 1); | |||
| INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| INSERT INTO t1(a,b) VALUES (3, null); | |||
| INSERT INTO t1(a,c) VALUES (4, 4); | |||
| INSERT INTO t1(a) VALUES (5); | |||
| INSERT INTO t2(a,b) VALUES (1, null); | |||
| INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); | |||
| INSERT INTO t2(a) VALUES (3); | |||
| INSERT INTO t3(a,b) VALUES (1, null); | |||
| INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); | |||
| INSERT INTO t3(a) VALUES (3); | |||
| INSERT INTO t4(a,b,c) VALUES (1, null, 1); | |||
| INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| INSERT INTO t4(a,b) VALUES (3, null); | |||
| INSERT INTO t4(a,c) VALUES (4, 4); | |||
| INSERT INTO t4(a) VALUES (5); | |||
| ************* SHOWING THE RESULT SETS WITH INSERTS ************* | |||
| TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| Comparing tables master:test.t2 and slave:test.t2 | |||
| TABLES t2 and t3 must be different. | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	1111-11-11 | |||
| 3	NULL | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b	c | |||
| 1	NULL	500 | |||
| 2	1111-11-11	500 | |||
| 3	NULL	500 | |||
| SELECT * FROM t4 ORDER BY a; | |||
| a	b	c | |||
| 1	NULL	1 | |||
| 2	1111-11-11	2 | |||
| 3	NULL	NULL | |||
| 4	NULL	4 | |||
| 5	NULL	NULL | |||
| SELECT * FROM t4 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	1111-11-11 | |||
| 3	NULL | |||
| 4	NULL | |||
| 5	NULL | |||
| ************* EXECUTION WITH UPDATES and REPLACES ************* | |||
| DELETE FROM t1; | |||
| INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); | |||
| REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); | |||
| UPDATE t1 set b= NULL, c= 300 where a= 1; | |||
| REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); | |||
| ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* | |||
| TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| ************* CLEANING ************* | |||
| DROP TABLE t1; | |||
| DROP TABLE t2; | |||
| DROP TABLE t3; | |||
| DROP TABLE t4; | |||
| SET SQL_LOG_BIN= 0; | |||
| CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL,  | |||
| PRIMARY KEY (`a`)) ENGINE= MyISAM; | |||
| SET SQL_LOG_BIN= 1; | |||
| CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, | |||
| PRIMARY KEY (`a`)) ENGINE= MyISAM; | |||
| ************* EXECUTION WITH INSERTS ************* | |||
| INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); | |||
| INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); | |||
| INSERT INTO t1(a,b) VALUES (3, null); | |||
| INSERT INTO t1(a,c) VALUES (4, b'01'); | |||
| INSERT INTO t1(a) VALUES (5); | |||
| ************* SHOWING THE RESULT SETS WITH INSERTS ************* | |||
| TABLES t1 and t2 must be different. | |||
| SELECT a,b+0,c+0 FROM t1 ORDER BY a; | |||
| a	b+0	c+0 | |||
| 1	NULL	1 | |||
| 2	0	1 | |||
| 3	NULL	NULL | |||
| 4	NULL	1 | |||
| 5	NULL	NULL | |||
| SELECT a,b+0,c+0 FROM t1 ORDER BY a; | |||
| a	b+0	c+0 | |||
| 1	NULL	1 | |||
| 2	0	1 | |||
| 3	NULL	NULL | |||
| 4	NULL	1 | |||
| 5	NULL	NULL | |||
| ************* EXECUTION WITH UPDATES and REPLACES ************* | |||
| DELETE FROM t1; | |||
| INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); | |||
| REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); | |||
| UPDATE t1 set b= NULL, c= b'00' where a= 1; | |||
| REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); | |||
| ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* | |||
| TABLES t1 and t2 must be equal otherwise an error will be thrown.  | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| DROP TABLE t1; | |||
| ################################################################################ | |||
| #                       NULL ---> NOT NULL (STRICT MODE) | |||
| #                    UNCOMMENT THIS AFTER FIXING BUG#43992 | |||
| ################################################################################ | |||
| ################################################################################ | |||
| #                       NULL ---> NOT NULL (NON-STRICT MODE) | |||
| ################################################################################ | |||
| SET SQL_LOG_BIN= 0; | |||
| CREATE TABLE t1(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT NOT NULL, `b` INT, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| SET SQL_LOG_BIN= 1; | |||
| CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,  | |||
| `c` INT NOT NULL, | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| `c` INT,  | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, | |||
| `c` INT DEFAULT 500,  | |||
| PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; | |||
| ************* EXECUTION WITH INSERTS ************* | |||
| INSERT INTO t1(a) VALUES (1); | |||
| INSERT INTO t1(a, b) VALUES (2, NULL); | |||
| INSERT INTO t1(a, b) VALUES (3, 1); | |||
| INSERT INTO t2(a) VALUES (1); | |||
| INSERT INTO t2(a, b) VALUES (2, NULL); | |||
| INSERT INTO t2(a, b) VALUES (3, 1); | |||
| INSERT INTO t3(a) VALUES (1); | |||
| INSERT INTO t3(a, b) VALUES (2, NULL); | |||
| INSERT INTO t3(a, b) VALUES (3, 1); | |||
| INSERT INTO t3(a, b) VALUES (4, 1); | |||
| REPLACE INTO t3(a, b) VALUES (5, null); | |||
| REPLACE INTO t3(a, b) VALUES (3, null); | |||
| UPDATE t3 SET b = NULL where a = 4; | |||
| ************* SHOWING THE RESULT SETS ************* | |||
| SELECT * FROM t1 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	NULL | |||
| 3	1 | |||
| SELECT * FROM t1 ORDER BY a; | |||
| a	b	c | |||
| 1	0	0 | |||
| 2	0	0 | |||
| 3	1	0 | |||
| SELECT * FROM t2 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	NULL | |||
| 3	1 | |||
| SELECT * FROM t2 ORDER BY a; | |||
| a	b	c | |||
| 1	0	NULL | |||
| 2	0	NULL | |||
| 3	1	NULL | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b | |||
| 1	NULL | |||
| 2	NULL | |||
| 3	NULL | |||
| 4	NULL | |||
| 5	NULL | |||
| SELECT * FROM t3 ORDER BY a; | |||
| a	b	c | |||
| 1	0	500 | |||
| 2	0	500 | |||
| 3	0	500 | |||
| 4	0	500 | |||
| 5	0	500 | |||
| DROP TABLE t1; | |||
| DROP TABLE t2; | |||
| DROP TABLE t3; | |||
| @ -0,0 +1,274 @@ | |||
| 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 (a INT); | |||
| INSERT INTO t1 VALUES (1); | |||
| INSERT INTO t1 VALUES (2); | |||
| INSERT INTO t1 VALUES (3); | |||
| INSERT INTO t1 VALUES (4); | |||
| INSERT INTO t1 VALUES (5); | |||
| INSERT INTO t1 VALUES (6); | |||
| [MASTER] ********* SOW BINLOG EVENTS IN ...  ********* | |||
| show binlog events in 'master-bin.000001' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| [MASTER] ********* SOW BINLOG EVENTS         ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| [MASTER] ********* SOW BINLOG EVENTS ... LIMIT rows  ********* | |||
| show binlog events from <binlog_start> limit 3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| [MASTER] ********* SOW BINLOG EVENTS ... LIMIT offset,rows  ********* | |||
| show binlog events from <binlog_start> limit 1,  3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| [SLAVE] ********* SOW BINLOG EVENTS IN ...   ********* | |||
| show binlog events in 'slave-bin.000001' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| [SLAVE] ********* SOW BINLOG EVENTS          ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT rows  ********* | |||
| show binlog events from <binlog_start> limit 3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows  ********* | |||
| show binlog events from <binlog_start> limit 1,  3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS IN ... ********* | |||
| show relaylog events in 'slave-relay-bin.000003' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000003	#	Rotate	#	#	master-bin.000001;pos=4 | |||
| slave-relay-bin.000003	#	Format_desc	#	#	SERVER_VERSION, BINLOG_VERSION | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| slave-relay-bin.000003	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-relay-bin.000003	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-relay-bin.000003	#	Query	#	#	COMMIT | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| slave-relay-bin.000003	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-relay-bin.000003	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-relay-bin.000003	#	Query	#	#	COMMIT | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| slave-relay-bin.000003	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-relay-bin.000003	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-relay-bin.000003	#	Query	#	#	COMMIT | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| slave-relay-bin.000003	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-relay-bin.000003	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-relay-bin.000003	#	Query	#	#	COMMIT | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| slave-relay-bin.000003	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-relay-bin.000003	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-relay-bin.000003	#	Query	#	#	COMMIT | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| slave-relay-bin.000003	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-relay-bin.000003	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-relay-bin.000003	#	Query	#	#	COMMIT | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS        ********* | |||
| show relaylog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000002	#	Rotate	#	#	slave-relay-bin.000003;pos=4 | |||
| [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT rows  ********* | |||
| show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000003	#	Rotate	#	#	master-bin.000001;pos=4 | |||
| slave-relay-bin.000003	#	Format_desc	#	#	SERVER_VERSION, BINLOG_VERSION | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT offset,rows  ********* | |||
| show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 1,  3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000003	#	Format_desc	#	#	SERVER_VERSION, BINLOG_VERSION | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-relay-bin.000003	#	Query	#	#	BEGIN | |||
| FLUSH LOGS; | |||
| FLUSH LOGS; | |||
| DROP TABLE t1; | |||
| [MASTER] ********* SOW BINLOG EVENTS IN ...  ********* | |||
| show binlog events in 'master-bin.000002' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000002	#	Query	#	#	use `test`; DROP TABLE t1 | |||
| [MASTER] ********* SOW BINLOG EVENTS         ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Query	#	#	BEGIN | |||
| master-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| master-bin.000001	#	Query	#	#	COMMIT | |||
| master-bin.000001	#	Rotate	#	#	master-bin.000002;pos=4 | |||
| [SLAVE] ********* SOW BINLOG EVENTS IN ...   ********* | |||
| show binlog events in 'slave-bin.000002' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000002	#	Query	#	#	use `test`; DROP TABLE t1 | |||
| [SLAVE] ********* SOW BINLOG EVENTS          ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Query	#	#	BEGIN | |||
| slave-bin.000001	#	Table_map	#	#	table_id: # (test.t1) | |||
| slave-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F | |||
| slave-bin.000001	#	Query	#	#	COMMIT | |||
| slave-bin.000001	#	Rotate	#	#	slave-bin.000002;pos=4 | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS IN ... ********* | |||
| show relaylog events in 'slave-relay-bin.000005' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000005	#	Rotate	#	#	master-bin.000002;pos=4 | |||
| slave-relay-bin.000005	#	Rotate	#	#	slave-relay-bin.000006;pos=4 | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS        ********* | |||
| show relaylog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000005	#	Rotate	#	#	master-bin.000002;pos=4 | |||
| slave-relay-bin.000005	#	Rotate	#	#	slave-relay-bin.000006;pos=4 | |||
| @ -0,0 +1,47 @@ | |||
| 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; | |||
| include/stop_slave.inc | |||
| SET @old_log_output= @@log_output; | |||
| SET GLOBAL log_output= 'TABLE'; | |||
| SET @old_long_query_time= @@long_query_time; | |||
| SET GLOBAL long_query_time= 2; | |||
| TRUNCATE mysql.slow_log; | |||
| include/start_slave.inc | |||
| CREATE TABLE t1 (a int, b int); | |||
| INSERT INTO t1 values(1, 1); | |||
| INSERT INTO t1 values(1, sleep(3)); | |||
| TRUNCATE mysql.slow_log; | |||
| SELECT 1, sleep(3); | |||
| 1	sleep(3) | |||
| 1	0 | |||
| SELECT 1; | |||
| 1 | |||
| 1 | |||
| TRUNCATE mysql.slow_log; | |||
| SET TIMESTAMP= 1; | |||
| SELECT 2, sleep(3); | |||
| 2	sleep(3) | |||
| 2	0 | |||
| SELECT 2; | |||
| 2 | |||
| 2 | |||
| TRUNCATE mysql.slow_log; | |||
| SET @old_slow_query_log= @@slow_query_log; | |||
| SET GLOBAL slow_query_log= 'OFF'; | |||
| SELECT 3, sleep(3); | |||
| 3	sleep(3) | |||
| 3	0 | |||
| SELECT 3; | |||
| 3 | |||
| 3 | |||
| TRUNCATE mysql.slow_log; | |||
| SET GLOBAL slow_query_log= @old_slow_query_log; | |||
| DROP TABLE t1; | |||
| include/stop_slave.inc | |||
| SET GLOBAL long_query_time= @old_long_query_time; | |||
| SET GLOBAL log_output= @old_log_output; | |||
| include/start_slave.inc | |||
| @ -0,0 +1,148 @@ | |||
| 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 (a INT); | |||
| INSERT INTO t1 VALUES (1); | |||
| INSERT INTO t1 VALUES (2); | |||
| INSERT INTO t1 VALUES (3); | |||
| INSERT INTO t1 VALUES (4); | |||
| INSERT INTO t1 VALUES (5); | |||
| INSERT INTO t1 VALUES (6); | |||
| [MASTER] ********* SOW BINLOG EVENTS IN ...  ********* | |||
| show binlog events in 'master-bin.000001' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| [MASTER] ********* SOW BINLOG EVENTS         ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| [MASTER] ********* SOW BINLOG EVENTS ... LIMIT rows  ********* | |||
| show binlog events from <binlog_start> limit 3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| [MASTER] ********* SOW BINLOG EVENTS ... LIMIT offset,rows  ********* | |||
| show binlog events from <binlog_start> limit 1,  3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| [SLAVE] ********* SOW BINLOG EVENTS IN ...   ********* | |||
| show binlog events in 'slave-bin.000001' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| [SLAVE] ********* SOW BINLOG EVENTS          ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT rows  ********* | |||
| show binlog events from <binlog_start> limit 3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows  ********* | |||
| show binlog events from <binlog_start> limit 1,  3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS IN ... ********* | |||
| show relaylog events in 'slave-relay-bin.000003' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000003	#	Rotate	#	#	master-bin.000001;pos=4 | |||
| slave-relay-bin.000003	#	Format_desc	#	#	SERVER_VERSION, BINLOG_VERSION | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS        ********* | |||
| show relaylog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000002	#	Rotate	#	#	slave-relay-bin.000003;pos=4 | |||
| [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT rows  ********* | |||
| show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000003	#	Rotate	#	#	master-bin.000001;pos=4 | |||
| slave-relay-bin.000003	#	Format_desc	#	#	SERVER_VERSION, BINLOG_VERSION | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| [MASTER] ********* SOW RELAYLOG EVENTS ... LIMIT offset,rows  ********* | |||
| show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 1,  3; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000003	#	Format_desc	#	#	SERVER_VERSION, BINLOG_VERSION | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-relay-bin.000003	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| FLUSH LOGS; | |||
| FLUSH LOGS; | |||
| DROP TABLE t1; | |||
| [MASTER] ********* SOW BINLOG EVENTS IN ...  ********* | |||
| show binlog events in 'master-bin.000002' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000002	#	Query	#	#	use `test`; DROP TABLE t1 | |||
| [MASTER] ********* SOW BINLOG EVENTS         ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| master-bin.000001	#	Rotate	#	#	master-bin.000002;pos=4 | |||
| [SLAVE] ********* SOW BINLOG EVENTS IN ...   ********* | |||
| show binlog events in 'slave-bin.000002' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000002	#	Query	#	#	use `test`; DROP TABLE t1 | |||
| [SLAVE] ********* SOW BINLOG EVENTS          ********* | |||
| show binlog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (2) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (3) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (4) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (5) | |||
| slave-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (6) | |||
| slave-bin.000001	#	Rotate	#	#	slave-bin.000002;pos=4 | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS IN ... ********* | |||
| show relaylog events in 'slave-relay-bin.000005' from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000005	#	Rotate	#	#	master-bin.000002;pos=4 | |||
| slave-relay-bin.000005	#	Rotate	#	#	slave-relay-bin.000006;pos=4 | |||
| [SLAVE] ********* SOW RELAYLOG EVENTS        ********* | |||
| show relaylog events from <binlog_start>; | |||
| Log_name	Pos	Event_type	Server_id	End_log_pos	Info | |||
| slave-relay-bin.000005	#	Rotate	#	#	master-bin.000002;pos=4 | |||
| slave-relay-bin.000005	#	Rotate	#	#	slave-relay-bin.000006;pos=4 | |||
| @ -0,0 +1,40 @@ | |||
| =====Configuring the enviroment=======; | |||
| 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; | |||
| call mtr.add_suppression('Attempting backtrace'); | |||
| call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); | |||
| CREATE TABLE t1(a INT, PRIMARY KEY(a)) engine=innodb; | |||
| insert into t1(a) values(1); | |||
| insert into t1(a) values(2); | |||
| insert into t1(a) values(3); | |||
| =====Inserting data on the master but without the SQL Thread being running=======; | |||
| stop slave SQL_THREAD; | |||
| insert into t1(a) values(4); | |||
| insert into t1(a) values(5); | |||
| insert into t1(a) values(6); | |||
| =====Removing relay log files and crashing/recoverying the slave=======; | |||
| stop slave IO_THREAD; | |||
| SET SESSION debug="d,crash_before_rotate_relaylog"; | |||
| FLUSH LOGS; | |||
| ERROR HY000: Lost connection to MySQL server during query | |||
| =====Dumping and comparing tables=======; | |||
| start slave; | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| =====Corrupting the master.info=======; | |||
| stop slave; | |||
| FLUSH LOGS; | |||
| insert into t1(a) values(7); | |||
| insert into t1(a) values(8); | |||
| insert into t1(a) values(9); | |||
| SET SESSION debug="d,crash_before_rotate_relaylog"; | |||
| FLUSH LOGS; | |||
| ERROR HY000: Lost connection to MySQL server during query | |||
| =====Dumping and comparing tables=======; | |||
| start slave; | |||
| Comparing tables master:test.t1 and slave:test.t1 | |||
| =====Clean up=======; | |||
| drop table t1; | |||
| @ -0,0 +1,51 @@ | |||
| #  | |||
| # BUG | |||
| # --- | |||
| #   BUG#28796: CHANGE MASTER TO MASTER_HOST="" leads to invalid master.info | |||
| # | |||
| # Description | |||
| # ----------- | |||
| # | |||
| #   This test aims at:  | |||
| #     i) verifying that an error is thrown when setting MASTER_HOST='' | |||
| #     ii) no error is thrown when setting non empty MASTER_HOST | |||
| #     iii) replication works after setting a correct host name/ip | |||
| # | |||
| #   Implementation is performed by feeding different values (according | |||
| #   to i), ii) and iii) ) to CHANGE MASTER TO MASTER_HOST= x and checking | |||
| #   along the way if error/no error is thrown and/or if replication starts | |||
| #   working when expected. | |||
| 
 | |||
| --source include/master-slave.inc | |||
| 
 | |||
| connection slave; | |||
| STOP SLAVE; | |||
| --source include/wait_for_slave_to_stop.inc | |||
| 
 | |||
| let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1); | |||
| --echo Master_Host = '$master_host' (expected '127.0.0.1') | |||
| 
 | |||
| # attempt to change to an empty master host should  | |||
| # result in error ER_WRONG_ARGUMENTS: "Incorrect arguments to ..." | |||
| error ER_WRONG_ARGUMENTS; | |||
| CHANGE MASTER TO MASTER_HOST=""; | |||
| 
 | |||
| # show slave status still holds previous information | |||
| let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1); | |||
| --echo Master_Host = '$master_host' (expected '127.0.0.1') | |||
| 
 | |||
| # changing master to other than empty master host succeeds | |||
| CHANGE MASTER TO MASTER_HOST="foo"; | |||
| 
 | |||
| # show slave status should hold "foo" as master host | |||
| let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1); | |||
| --echo Master_Host = '$master_host' (expected 'foo') | |||
| 
 | |||
| # changing back to localhost | |||
| CHANGE MASTER TO MASTER_HOST="127.0.0.1"; | |||
| let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1); | |||
| --echo Master_Host = '$master_host' (expected '127.0.0.1') | |||
| 
 | |||
| # start slave must succeed. | |||
| START SLAVE; | |||
| --source include/wait_for_slave_to_start.inc | |||
| @ -0,0 +1,19 @@ | |||
| ################################################################################# | |||
| # This test checks if the replication between "null" fields to either "null" | |||
| # fields or "not null" fields works properly. In the first case, the execution | |||
| # should work fine. In the second case, it may fail according to the sql_mode | |||
| # being used. | |||
| # | |||
| # The test is devided in three main parts: | |||
| # | |||
| # 1 - NULL --> NULL (no failures) | |||
| # 2 - NULL --> NOT NULL ( sql-mode  = STRICT and failures) | |||
| # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) | |||
| # | |||
| ################################################################################# | |||
| --source include/master-slave.inc | |||
| --source include/have_innodb.inc | |||
| --source include/have_binlog_format_row.inc | |||
| 
 | |||
| let $engine=Innodb; | |||
| --source extra/rpl_tests/rpl_not_null.test | |||
| @ -0,0 +1,18 @@ | |||
| ################################################################################# | |||
| # This test checks if the replication between "null" fields to either "null" | |||
| # fields or "not null" fields works properly. In the first case, the execution | |||
| # should work fine. In the second case, it may fail according to the sql_mode | |||
| # being used. | |||
| # | |||
| # The test is devided in three main parts: | |||
| # | |||
| # 1 - NULL --> NULL (no failures) | |||
| # 2 - NULL --> NOT NULL ( sql-mode  = STRICT and failures) | |||
| # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) | |||
| # | |||
| ################################################################################# | |||
| --source include/master-slave.inc | |||
| --source include/have_binlog_format_row.inc | |||
| 
 | |||
| let $engine=MyISAM; | |||
| --source extra/rpl_tests/rpl_not_null.test | |||
| @ -0,0 +1,18 @@ | |||
| # BUG#28777 SHOW BINLOG EVENTS does not work on relay log files | |||
| # | |||
| # GOAL | |||
| # ====  | |||
| #  | |||
| #   Test that SHOW BINLOG EVENTS and the new SHOW RELAYLOG EVENTS works after | |||
| #   the patch, both on master and slave. | |||
| # | |||
| # HOW | |||
| # === | |||
| # | |||
| #   This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after  | |||
| #   some statements have been issued. | |||
| 
 | |||
| -- source include/master-slave.inc | |||
| -- source include/have_binlog_format_row.inc | |||
| 
 | |||
| -- source extra/rpl_tests/rpl_show_relaylog_events.inc | |||
| @ -0,0 +1 @@ | |||
| --force-restart --log-slow-slave-statements --log-slow-queries | |||
| @ -0,0 +1,187 @@ | |||
| # | |||
| # BUG#23300: Slow query log on slave does not log slow replicated statements | |||
| # | |||
| # Description: | |||
| #   The slave should log slow queries replicated from master when | |||
| #   --log-slow-slave-statements is used. | |||
| # | |||
| #   Test is implemented as follows: | |||
| #      i) stop slave | |||
| #     ii) On slave, set long_query_time to a small value. | |||
| #     ii) start slave so that long_query_time variable is picked by sql thread | |||
| #    iii) On master, do one short time query and one long time query, on slave | |||
| #         and check that slow query is logged to slow query log but fast query  | |||
| #         is not. | |||
| #     iv) On slave, check that slow queries go into the slow log and fast dont, | |||
| #         when issued through a regular client connection | |||
| #      v) On slave, check that slow queries go into the slow log and fast dont | |||
| #         when we use SET TIMESTAMP= 1 on a regular client connection. | |||
| #     vi) check that when setting slow_query_log= OFF in a connection 'extra2' | |||
| #         prevents logging slow queries in a connection 'extra' | |||
| # | |||
| # OBS:  | |||
| #   This test only runs for statement and mixed binlogging firmat because on | |||
| #   row format slow queries do not get slow query logged.  | |||
| 
 | |||
| source include/master-slave.inc; | |||
| source include/have_binlog_format_mixed_or_statement.inc; | |||
| 
 | |||
| 
 | |||
| # Prepare slave for different long_query_time we need to stop the slave  | |||
| # and restart it as long_query_time variable is dynamic and, after  | |||
| # setting it, it only takes effect on new connections.  | |||
| # | |||
| # Reference:  | |||
| #   http://dev.mysql.com/doc/refman/6.0/en/set-option.html | |||
| connection slave; | |||
| 
 | |||
| source include/stop_slave.inc; | |||
| 
 | |||
| SET @old_log_output= @@log_output; | |||
| SET GLOBAL log_output= 'TABLE'; | |||
| SET @old_long_query_time= @@long_query_time; | |||
| SET GLOBAL long_query_time= 2; | |||
| TRUNCATE mysql.slow_log; | |||
| 
 | |||
| source include/start_slave.inc; | |||
| 
 | |||
| connection master; | |||
| CREATE TABLE t1 (a int, b int);  | |||
| 
 | |||
| # test: | |||
| #   check that slave logs the slow query to the slow log, but not the fast one. | |||
| 
 | |||
| let $slow_query= INSERT INTO t1 values(1, sleep(3)); | |||
| let $fast_query= INSERT INTO t1 values(1, 1); | |||
| 
 | |||
| eval $fast_query; | |||
| eval $slow_query; | |||
| sync_slave_with_master; | |||
| 
 | |||
| let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`; | |||
| let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`; | |||
| 
 | |||
| if ($found_fast_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Fast query FOUND in slow query log. Bailing out!"; | |||
| } | |||
| 
 | |||
| if (!$found_slow_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!"; | |||
| } | |||
| TRUNCATE mysql.slow_log; | |||
| 
 | |||
| # regular checks for slow query log (using a new connection - 'extra' - to slave) | |||
| 
 | |||
| # test:  | |||
| #   when using direct connections to the slave, check that slow query is logged  | |||
| #   but not the fast one. | |||
| 
 | |||
| connect(extra,127.0.0.1,root,,test,$SLAVE_MYPORT); | |||
| connection extra; | |||
| 
 | |||
| let $fast_query= SELECT 1; | |||
| let $slow_query= SELECT 1, sleep(3); | |||
| 
 | |||
| eval $slow_query; | |||
| eval $fast_query; | |||
| 
 | |||
| let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`; | |||
| let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`; | |||
| 
 | |||
| if ($found_fast_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Fast query FOUND in slow query log. Bailing out!"; | |||
| } | |||
| 
 | |||
| if (!$found_slow_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!"; | |||
| } | |||
| TRUNCATE mysql.slow_log; | |||
| 
 | |||
| # test: | |||
| #   when using direct connections to the slave, check that when setting timestamp to 1 the  | |||
| #   slow query is logged but the fast one is not. | |||
| 
 | |||
| let $fast_query= SELECT 2; | |||
| let $slow_query= SELECT 2, sleep(3); | |||
| 
 | |||
| SET TIMESTAMP= 1; | |||
| eval $slow_query; | |||
| eval $fast_query; | |||
| 
 | |||
| let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`; | |||
| let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`; | |||
| 
 | |||
| if ($found_fast_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Fast query FOUND in slow query log. Bailing out!"; | |||
| } | |||
| 
 | |||
| if (!$found_slow_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Slow query NOT FOUND in slow query log. Bailing out!"; | |||
| } | |||
| TRUNCATE mysql.slow_log; | |||
| 
 | |||
| # test:  | |||
| #   check that when setting the slow_query_log= OFF on connection 'extra2' | |||
| #   prevents connection 'extra' from logging to slow query log. | |||
| 
 | |||
| let $fast_query= SELECT 3; | |||
| let $slow_query= SELECT 3, sleep(3); | |||
| 
 | |||
| connect(extra2,127.0.0.1,root,,test,$SLAVE_MYPORT); | |||
| connection extra2; | |||
| 
 | |||
| SET @old_slow_query_log= @@slow_query_log; | |||
| SET GLOBAL slow_query_log= 'OFF'; | |||
| 
 | |||
| connection extra; | |||
| 
 | |||
| eval $slow_query; | |||
| eval $fast_query; | |||
| 
 | |||
| let $found_fast_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$fast_query'`; | |||
| let $found_slow_query= `SELECT count(*) = 1 FROM mysql.slow_log WHERE sql_text like '$slow_query'`; | |||
| 
 | |||
| if ($found_fast_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Fast query FOUND in slow query log when slow_query_log= OFF. Bailing out!"; | |||
| } | |||
| 
 | |||
| if ($found_slow_query) | |||
| { | |||
|   SELECT * FROM mysql.slow_log; | |||
|   die "Assertion failed! Slow query FOUND in slow query log when slow_query_log= OFF. Bailing out!"; | |||
| } | |||
| TRUNCATE mysql.slow_log; | |||
| 
 | |||
| # clean up: drop tables, reset the variables back to the previous value, | |||
| #           disconnect extra connections | |||
| connection extra2; | |||
| 
 | |||
| SET GLOBAL slow_query_log= @old_slow_query_log; | |||
| 
 | |||
| connection master; | |||
| DROP TABLE t1; | |||
| sync_slave_with_master; | |||
| 
 | |||
| source include/stop_slave.inc; | |||
| 
 | |||
| SET GLOBAL long_query_time= @old_long_query_time; | |||
| SET GLOBAL log_output= @old_log_output; | |||
| 
 | |||
| source include/start_slave.inc; | |||
| 
 | |||
| disconnect extra; | |||
| disconnect extra2; | |||
| @ -0,0 +1,18 @@ | |||
| # BUG#28777 SHOW BINLOG EVENTS does not work on relay log files | |||
| # | |||
| # GOAL | |||
| # ====  | |||
| #  | |||
| #   Test that SHOW BINLOG EVENTS and the new SHOW RELAYLOG EVENTS works after | |||
| #   the patch, both on master and slave. | |||
| # | |||
| # HOW | |||
| # === | |||
| # | |||
| #   This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after  | |||
| #   some statements have been issued. | |||
| 
 | |||
| -- source include/master-slave.inc | |||
| -- source include/have_binlog_format_mixed_or_statement.inc | |||
| 
 | |||
| -- source extra/rpl_tests/rpl_show_relaylog_events.inc | |||
| @ -0,0 +1 @@ | |||
| --sync-relay-log-info=1 --relay-log-recovery=1 | |||
| @ -0,0 +1,148 @@ | |||
| ######################################################################################## | |||
| # This test verifies the options --sync-relay-log-info and --relay-log-recovery by  | |||
| # crashing the slave in two different situations: | |||
| #  (case-1) - Corrupt the relay log with changes which were not processed by | |||
| #  the SQL Thread and crashes it. | |||
| #  (case-2) - Corrupt the master.info with wrong coordinates and crashes it. | |||
| # | |||
| #  Case 1: | |||
| #    1 - Stops the SQL Thread | |||
| #    2 - Inserts new records into the master. | |||
| #    3 - Corrupts the relay-log.bin* which most likely has such changes. | |||
| #    4 - Crashes the slave | |||
| #    5 - Verifies if the slave is sync with the master which means that the information | |||
| #    loss was circumvented by the recovery process. | |||
| # | |||
| #  Case 2: | |||
| #    1 - Stops the SQL/IO Threads | |||
| #    2 - Inserts new records into the master. | |||
| #    3 - Corrupts the master.info with wrong coordinates. | |||
| #    4 - Crashes the slave | |||
| #    5 - Verifies if the slave is sync with the master which means that the information | |||
| #    loss was circumvented by the recovery process. | |||
| ######################################################################################## | |||
| 
 | |||
| ######################################################################################## | |||
| #                                Configuring the environment | |||
| ######################################################################################## | |||
| --echo =====Configuring the enviroment=======; | |||
| --source include/master-slave.inc | |||
| --source include/not_embedded.inc | |||
| --source include/not_valgrind.inc | |||
| --source include/have_debug.inc | |||
| --source include/have_innodb.inc | |||
| 
 | |||
| call mtr.add_suppression('Attempting backtrace'); | |||
| call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); | |||
| CREATE TABLE t1(a INT, PRIMARY KEY(a)) engine=innodb; | |||
| 
 | |||
| insert into t1(a) values(1); | |||
| insert into t1(a) values(2); | |||
| insert into t1(a) values(3); | |||
| 
 | |||
| ######################################################################################## | |||
| #                             Case 1: Corrupt a relay-log.bin* | |||
| ######################################################################################## | |||
| --echo =====Inserting data on the master but without the SQL Thread being running=======; | |||
| sync_slave_with_master; | |||
| 
 | |||
| connection slave; | |||
| let $MYSQLD_SLAVE_DATADIR= `select @@datadir`; | |||
| --replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR | |||
| --copy_file $MYSQLD_SLAVE_DATADIR/master.info $MYSQLD_SLAVE_DATADIR/master.backup | |||
| stop slave SQL_THREAD; | |||
| source include/wait_for_slave_sql_to_stop.inc; | |||
| 
 | |||
| connection master; | |||
| insert into t1(a) values(4); | |||
| insert into t1(a) values(5); | |||
| insert into t1(a) values(6); | |||
| 
 | |||
| --echo =====Removing relay log files and crashing/recoverying the slave=======; | |||
| connection slave; | |||
| stop slave IO_THREAD; | |||
| source include/wait_for_slave_io_to_stop.inc; | |||
| 
 | |||
| let $file= query_get_value("SHOW SLAVE STATUS", Relay_Log_File, 1); | |||
| --replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR | |||
| --exec echo "failure" > $MYSQLD_SLAVE_DATADIR/$file | |||
| 
 | |||
| --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect | |||
| SET SESSION debug="d,crash_before_rotate_relaylog"; | |||
| --error 2013 | |||
| FLUSH LOGS; | |||
| 
 | |||
| --enable_reconnect | |||
| --source include/wait_until_connected_again.inc | |||
| 
 | |||
| --echo =====Dumping and comparing tables=======; | |||
| start slave; | |||
| source include/wait_for_slave_to_start.inc; | |||
| 
 | |||
| connection master; | |||
| sync_slave_with_master; | |||
| 
 | |||
| let $diff_table_1=master:test.t1; | |||
| let $diff_table_2=slave:test.t1; | |||
| source include/diff_tables.inc; | |||
| 
 | |||
| ######################################################################################## | |||
| #                             Case 2: Corrupt a master.info | |||
| ######################################################################################## | |||
| --echo =====Corrupting the master.info=======; | |||
| connection slave; | |||
| stop slave; | |||
| source include/wait_for_slave_to_stop.inc; | |||
| 
 | |||
| connection master; | |||
| FLUSH LOGS; | |||
| 
 | |||
| insert into t1(a) values(7); | |||
| insert into t1(a) values(8); | |||
| insert into t1(a) values(9); | |||
| 
 | |||
| connection slave; | |||
| --replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR | |||
| --exec cat $MYSQLD_SLAVE_DATADIR/master.backup > $MYSQLD_SLAVE_DATADIR/master.info | |||
| 
 | |||
| let MYSQLD_SLAVE_DATADIR=`select @@datadir`; | |||
| 
 | |||
| --perl | |||
| use strict; | |||
| use warnings; | |||
| my $src= "$ENV{'MYSQLD_SLAVE_DATADIR'}/master.backup"; | |||
| my $dst= "$ENV{'MYSQLD_SLAVE_DATADIR'}/master.info"; | |||
| open(FILE, "<", $src) or die; | |||
| my @content= <FILE>; | |||
| close FILE; | |||
| open(FILE, ">", $dst) or die; | |||
| binmode FILE; | |||
| print FILE @content; | |||
| close FILE; | |||
| EOF | |||
| 
 | |||
| --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect | |||
| SET SESSION debug="d,crash_before_rotate_relaylog"; | |||
| --error 2013 | |||
| FLUSH LOGS; | |||
| 
 | |||
| --enable_reconnect | |||
| --source include/wait_until_connected_again.inc | |||
| 
 | |||
| --echo =====Dumping and comparing tables=======; | |||
| start slave; | |||
| source include/wait_for_slave_to_start.inc; | |||
| 
 | |||
| connection master; | |||
| sync_slave_with_master; | |||
| 
 | |||
| let $diff_table_1=master:test.t1; | |||
| let $diff_table_2=slave:test.t1; | |||
| source include/diff_tables.inc; | |||
| 
 | |||
| ######################################################################################## | |||
| #                                      Clean up | |||
| ######################################################################################## | |||
| --echo =====Clean up=======; | |||
| connection master; | |||
| drop table t1; | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue