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