mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into romeo.(none):/home/bk/w3464-mysql-5.1-new-rpl
This commit is contained in:
commit
e12cc44ac3
47 changed files with 577 additions and 192 deletions
|
@ -95,7 +95,8 @@ DEFS = -DUNDEF_THREADS_HACK \
|
|||
-DDEFAULT_MYSQL_HOME="\"$(prefix)\"" \
|
||||
-DDATADIR="\"$(localstatedir)\""
|
||||
|
||||
sql_src=log_event.h mysql_priv.h log_event.cc my_decimal.h my_decimal.cc
|
||||
sql_src=log_event.h mysql_priv.h rpl_constants.h \
|
||||
log_event.cc my_decimal.h my_decimal.cc
|
||||
strings_src=decimal.c
|
||||
EXTRA_DIST = get_password.c CMakeLists.txt echo.c
|
||||
|
||||
|
|
|
@ -20,9 +20,7 @@ begin;
|
|||
insert t2 values (5);
|
||||
commit;
|
||||
# first COMMIT must be Query_log_event, second - Xid_log_event
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
|
@ -44,10 +42,10 @@ commit;
|
|||
drop table t1;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events in 'master-bin.000001' from 105;
|
||||
show binlog events in 'master-bin.000001' from 106;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events in 'master-bin.000002' from 105;
|
||||
show binlog events in 'master-bin.000002' from 106;
|
||||
|
||||
# Test of a too big SET INSERT_ID: see if the truncated value goes
|
||||
# into binlog (right), or the too big value (wrong); we look at the
|
||||
|
@ -80,9 +78,7 @@ DELETE FROM user WHERE host='localhost' AND user='@#@';
|
|||
--enable_warnings
|
||||
|
||||
use test;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
drop table t1,t2,t3,tt1;
|
||||
|
||||
-- source extra/binlog_tests/binlog_insert_delayed.test
|
||||
|
|
|
@ -23,9 +23,7 @@ inc $count;
|
|||
# moving binlog check affront of multi-rows queries which work is indeterministic (extra table_maps)
|
||||
# todo: better check is to substitute SHOW BINLOG with reading from binlog, probably bug#19459 is in
|
||||
# the way
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
inc $count; inc $count; inc $count; inc $count;
|
||||
|
|
|
@ -26,9 +26,7 @@ SET @var1= x'8300';
|
|||
# code (and I have used it to test the fix) until there is some way to
|
||||
# exercise this code from mysql-test-run.
|
||||
EXECUTE stmt1 USING @var1;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 105;
|
||||
source include/show_binlog_events.inc;
|
||||
SELECT HEX(f1) FROM t1;
|
||||
DROP table t1;
|
||||
# end test for bug#11338
|
||||
|
|
|
@ -9,8 +9,7 @@ create table t2 (c char(30)) charset=ucs2;
|
|||
set @v=convert('abc' using ucs2);
|
||||
reset master;
|
||||
insert into t2 values (@v);
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
||||
# absolutely need variables names to be quoted and strings to be
|
||||
# escaped).
|
||||
|
|
|
@ -29,9 +29,7 @@ insert into t1 values(1);
|
|||
insert into t2 select * from t1;
|
||||
commit;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -43,9 +41,7 @@ insert into t2 select * from t1;
|
|||
# should say some changes to non-transact1onal tables couldn't be rolled back
|
||||
rollback;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -59,9 +55,7 @@ insert into t2 select * from t1;
|
|||
rollback to savepoint my_savepoint;
|
||||
commit;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -77,9 +71,7 @@ insert into t1 values(7);
|
|||
commit;
|
||||
select a from t1 order by a; # check that savepoints work :)
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# and when ROLLBACK is not explicit?
|
||||
delete from t1;
|
||||
|
@ -99,9 +91,7 @@ connection con2;
|
|||
# so SHOW BINLOG EVENTS may come before con1 does the loggin. To be sure that
|
||||
# logging has been done, we use a user lock.
|
||||
select get_lock("a",10);
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# and when not in a transact1on?
|
||||
delete from t1;
|
||||
|
@ -111,9 +101,7 @@ reset master;
|
|||
insert into t1 values(9);
|
||||
insert into t2 select * from t1;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# Check that when the query updat1ng the MyISAM table is the first in the
|
||||
# transaction, we log it immediately.
|
||||
|
@ -124,16 +112,11 @@ reset master;
|
|||
insert into t1 values(10); # first make t1 non-empty
|
||||
begin;
|
||||
insert into t2 select * from t1;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
insert into t1 values(11);
|
||||
commit;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# Check that things work like before this BEGIN/ROLLBACK code was added,
|
||||
# when t2 is INNODB
|
||||
|
@ -149,9 +132,7 @@ insert into t1 values(12);
|
|||
insert into t2 select * from t1;
|
||||
commit;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -162,9 +143,7 @@ insert into t1 values(13);
|
|||
insert into t2 select * from t1;
|
||||
rollback;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -178,9 +157,7 @@ insert into t2 select * from t1;
|
|||
rollback to savepoint my_savepoint;
|
||||
commit;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -196,9 +173,7 @@ insert into t1 values(18);
|
|||
commit;
|
||||
select a from t1 order by a; # check that savepoints work :)
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# Test for BUG#5714, where a MyISAM update in the transaction used to
|
||||
# release row-level locks in InnoDB
|
||||
|
@ -257,9 +232,7 @@ insert into t2 values (3);
|
|||
disconnect con2;
|
||||
connection con3;
|
||||
select get_lock("lock1",60);
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
do release_lock("lock1");
|
||||
drop table t0,t2;
|
||||
|
||||
|
@ -324,9 +297,7 @@ CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select *
|
|||
ROLLBACK;
|
||||
SELECT * from t2;
|
||||
DROP TABLE t1,t2;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# Test for BUG#16559 (ROLLBACK should always have a zero error code in
|
||||
# binlog). Has to be here and not earlier, as the SELECTs influence
|
||||
|
|
|
@ -82,7 +82,7 @@ show slave status;
|
|||
|
||||
stop slave;
|
||||
delete from t3;
|
||||
change master to master_log_pos=547; # the BEGIN log event
|
||||
change master to master_log_pos=548; # the BEGIN log event
|
||||
begin;
|
||||
select * from t2 for update; # hold lock
|
||||
start slave;
|
||||
|
@ -107,7 +107,7 @@ set global max_relay_log_size=0;
|
|||
# This is really copy-paste of 2) of above
|
||||
stop slave;
|
||||
delete from t3;
|
||||
change master to master_log_pos=547;
|
||||
change master to master_log_pos=548;
|
||||
begin;
|
||||
select * from t2 for update;
|
||||
start slave;
|
||||
|
|
|
@ -42,13 +42,13 @@ select count(*) from t1;
|
|||
show binlog events;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105 limit 1;
|
||||
show binlog events from 106 limit 1;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105 limit 2;
|
||||
show binlog events from 106 limit 2;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105 limit 2,1;
|
||||
show binlog events from 106 limit 2,1;
|
||||
flush logs;
|
||||
|
||||
# We need an extra update before doing save_master_pos.
|
||||
|
|
|
@ -23,8 +23,6 @@ delimiter ;/
|
|||
sync_slave_with_master;
|
||||
select * from mysqltest.t1;
|
||||
connection master;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
drop database mysqltest;
|
||||
sync_slave_with_master;
|
||||
|
|
|
@ -113,9 +113,7 @@ select * from mysqltest2.t1 order by a;
|
|||
connection master;
|
||||
drop database mysqltest2;
|
||||
drop database mysqltest3;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
sync_slave_with_master;
|
||||
|
||||
# Check that we can change global.collation_server (since 5.0.3)
|
||||
|
|
|
@ -222,7 +222,7 @@ sync_with_master;
|
|||
select * from test.t3;
|
||||
|
||||
connection master;
|
||||
#show binlog events from 1626;
|
||||
#show binlog events from 1627;
|
||||
|
||||
|
||||
# First lets cleanup
|
||||
|
|
|
@ -65,7 +65,7 @@ sync_slave_with_master;
|
|||
connection slave;
|
||||
SELECT * FROM test.t1;
|
||||
connection master;
|
||||
#show binlog events from 719;
|
||||
#show binlog events from 720;
|
||||
|
||||
DROP PROCEDURE IF EXISTS test.p1;
|
||||
DROP PROCEDURE IF EXISTS test.p2;
|
||||
|
|
|
@ -109,9 +109,7 @@ select * from mysqltest2.t1 order by a;
|
|||
connection master;
|
||||
drop database mysqltest2;
|
||||
drop database mysqltest3;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
sync_slave_with_master;
|
||||
|
||||
# Check that we can change global.collation_server (since 5.0.3)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
--let $binlog_start=105
|
||||
--let $binlog_start=106
|
||||
--replace_result $binlog_start <binlog_start>
|
||||
--replace_column 2 # 4 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
|
|
|
@ -8,7 +8,7 @@ commit;
|
|||
begin;
|
||||
insert t2 values (5);
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=innodb
|
||||
master-bin.000001 # Query 1 # use `test`; create table t2 (a int) engine=innodb
|
||||
|
@ -26,7 +26,7 @@ create table t1 (n int) engine=innodb;
|
|||
begin;
|
||||
commit;
|
||||
drop table t1;
|
||||
show binlog events in 'master-bin.000001' from 105;
|
||||
show binlog events in 'master-bin.000001' from 106;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
|
@ -232,7 +232,7 @@ master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
|
||||
show binlog events in 'master-bin.000002' from 105;
|
||||
show binlog events in 'master-bin.000002' from 106;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000002 # Query 1 # use `test`; drop table t1
|
||||
reset master;
|
||||
|
@ -254,7 +254,7 @@ INSERT INTO user SET host='localhost', user='@#@', password=password('Just a tes
|
|||
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
|
||||
DELETE FROM user WHERE host='localhost' AND user='@#@';
|
||||
use test;
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -279,7 +279,7 @@ set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
|||
insert delayed into t1 values (207);
|
||||
insert delayed into t1 values (null);
|
||||
insert delayed into t1 values (300);
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
|
|
@ -3,10 +3,10 @@ create table t2 (c char(30)) charset=ucs2;
|
|||
set @v=convert('abc' using ucs2);
|
||||
reset master;
|
||||
insert into t2 values (@v);
|
||||
show binlog events from 105;
|
||||
show binlog events from 106;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 105 Table_map 1 144 table_id: # (test.t2)
|
||||
master-bin.000001 144 Write_rows 1 234 table_id: # flags: STMT_END_F
|
||||
master-bin.000001 106 Table_map 1 145 table_id: # (test.t2)
|
||||
master-bin.000001 145 Write_rows 1 235 table_id: # flags: STMT_END_F
|
||||
flush logs;
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
|
|
|
@ -6,11 +6,10 @@ insert into t2 values(1),(2);
|
|||
reset master;
|
||||
insert into t1 select * from t2;
|
||||
ERROR 23000: Duplicate entry '2' for key 'a'
|
||||
show binlog events;
|
||||
source include/show_binlog_events.inc;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 4 Format_desc 1 105 Server ver: VERSION, Binlog ver: 4
|
||||
master-bin.000001 105 Table_map 1 144 table_id: # (test.t1)
|
||||
master-bin.000001 144 Write_rows 1 178 table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
|
@ -21,7 +20,6 @@ insert into t1 values(1),(1);
|
|||
reset master;
|
||||
create table t2(unique(a)) select a from t1;
|
||||
ERROR 23000: Duplicate entry '1' for key 'a'
|
||||
show binlog events;
|
||||
source include/show_binlog_events.inc;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 4 Format_desc 1 105 Server ver: VERSION, Binlog ver: 4
|
||||
drop table t1;
|
||||
|
|
|
@ -6,7 +6,7 @@ begin;
|
|||
insert into t1 values(1);
|
||||
insert into t2 select * from t1;
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -23,7 +23,7 @@ insert into t2 select * from t1;
|
|||
rollback;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -43,7 +43,7 @@ rollback to savepoint my_savepoint;
|
|||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -72,7 +72,7 @@ select a from t1 order by a;
|
|||
a
|
||||
5
|
||||
7
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -98,7 +98,7 @@ insert into t2 select * from t1;
|
|||
select get_lock("a",10);
|
||||
get_lock("a",10)
|
||||
1
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -111,7 +111,7 @@ delete from t2;
|
|||
reset master;
|
||||
insert into t1 values(9);
|
||||
insert into t2 select * from t1;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
|
@ -124,7 +124,7 @@ reset master;
|
|||
insert into t1 values(10);
|
||||
begin;
|
||||
insert into t2 select * from t1;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
|
@ -133,7 +133,7 @@ master-bin.000001 # Table_map 1 # table_id: # (test.t2)
|
|||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
insert into t1 values(11);
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
|
@ -152,7 +152,7 @@ begin;
|
|||
insert into t1 values(12);
|
||||
insert into t2 select * from t1;
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -167,7 +167,7 @@ begin;
|
|||
insert into t1 values(13);
|
||||
insert into t2 select * from t1;
|
||||
rollback;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -179,7 +179,7 @@ insert into t1 values(15);
|
|||
insert into t2 select * from t1;
|
||||
rollback to savepoint my_savepoint;
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -200,7 +200,7 @@ select a from t1 order by a;
|
|||
a
|
||||
16
|
||||
18
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -252,7 +252,7 @@ insert into t2 values (3);
|
|||
select get_lock("lock1",60);
|
||||
get_lock("lock1",60)
|
||||
1
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
@ -355,7 +355,7 @@ SELECT * from t2;
|
|||
a b
|
||||
100 100
|
||||
DROP TABLE t1,t2;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
|
|
|
@ -2,13 +2,12 @@ create table t1 (a int, b int) engine=innodb;
|
|||
begin;
|
||||
insert into t1 values (1,2);
|
||||
commit;
|
||||
show binlog events;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 4 Format_desc 1 105 Server ver: #, Binlog ver: #
|
||||
master-bin.000001 105 Query 1 212 use `test`; create table t1 (a int, b int) engine=innodb
|
||||
master-bin.000001 212 Query 1 280 use `test`; BEGIN
|
||||
master-bin.000001 280 Query 1 90 use `test`; insert into t1 values (1,2)
|
||||
master-bin.000001 370 Xid 1 397 COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; create table t1 (a int, b int) engine=innodb
|
||||
master-bin.000001 # Query # # use `test`; BEGIN
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values (1,2)
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
drop table t1;
|
||||
drop table if exists t1, t2;
|
||||
reset master;
|
||||
|
@ -20,7 +19,7 @@ commit;
|
|||
begin;
|
||||
insert t2 values (5);
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (a int) engine=innodb
|
||||
master-bin.000001 # Query 1 # use `test`; create table t2 (a int) engine=innodb
|
||||
|
@ -36,7 +35,7 @@ create table t1 (n int) engine=innodb;
|
|||
begin;
|
||||
commit;
|
||||
drop table t1;
|
||||
show binlog events in 'master-bin.000001' from 105;
|
||||
show binlog events in 'master-bin.000001' from 106;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
|
@ -142,7 +141,7 @@ master-bin.000001 # Query 1 # use `test`; insert into t1 values(2 + 4)
|
|||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(1 + 4)
|
||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
|
||||
show binlog events in 'master-bin.000002' from 105;
|
||||
show binlog events in 'master-bin.000002' from 106;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000002 # Query 1 # use `test`; drop table t1
|
||||
reset master;
|
||||
|
@ -164,7 +163,7 @@ INSERT INTO user SET host='localhost', user='@#@', password=password('Just a tes
|
|||
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
|
||||
DELETE FROM user WHERE host='localhost' AND user='@#@';
|
||||
use test;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Intvar 1 # INSERT_ID=127
|
||||
|
@ -183,7 +182,7 @@ set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
|||
insert delayed into t1 values (207);
|
||||
insert delayed into t1 values (null);
|
||||
insert delayed into t1 values (300);
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; create table t1 (id tinyint auto_increment primary key)
|
||||
master-bin.000001 # Intvar 1 # INSERT_ID=127
|
||||
|
|
|
@ -3,10 +3,10 @@ create table t2 (c char(30)) charset=ucs2;
|
|||
set @v=convert('abc' using ucs2);
|
||||
reset master;
|
||||
insert into t2 values (@v);
|
||||
show binlog events from 105;
|
||||
show binlog events from 106;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 105 User var 1 145 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
||||
master-bin.000001 145 Query 1 234 use `test`; insert into t2 values (@v)
|
||||
master-bin.000001 106 User var 1 145 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
||||
master-bin.000001 145 Query 1 235 use `test`; insert into t2 values (@v)
|
||||
flush logs;
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
|
|
|
@ -6,10 +6,9 @@ insert into t2 values(1),(2);
|
|||
reset master;
|
||||
insert into t1 select * from t2;
|
||||
ERROR 23000: Duplicate entry '2' for key 'a'
|
||||
show binlog events;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 4 Format_desc 1 105 Server ver: VERSION, Binlog ver: 4
|
||||
master-bin.000001 105 Query 1 199 use `test`; insert into t1 select * from t2
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 select * from t2
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
|
@ -20,7 +19,6 @@ insert into t1 values(1),(1);
|
|||
reset master;
|
||||
create table t2(unique(a)) select a from t1;
|
||||
ERROR 23000: Duplicate entry '1' for key 'a'
|
||||
show binlog events;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 4 Format_desc 1 105 Server ver: VERSION, Binlog ver: 4
|
||||
drop table t1;
|
||||
|
|
|
@ -6,7 +6,7 @@ begin;
|
|||
insert into t1 values(1);
|
||||
insert into t2 select * from t1;
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(1)
|
||||
|
@ -21,7 +21,7 @@ insert into t2 select * from t1;
|
|||
rollback;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(2)
|
||||
|
@ -39,7 +39,7 @@ rollback to savepoint my_savepoint;
|
|||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(3)
|
||||
|
@ -65,7 +65,7 @@ select a from t1 order by a;
|
|||
a
|
||||
5
|
||||
7
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(5)
|
||||
|
@ -87,7 +87,7 @@ insert into t2 select * from t1;
|
|||
select get_lock("a",10);
|
||||
get_lock("a",10)
|
||||
1
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(8)
|
||||
|
@ -98,7 +98,7 @@ delete from t2;
|
|||
reset master;
|
||||
insert into t1 values(9);
|
||||
insert into t2 select * from t1;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(9)
|
||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
||||
|
@ -109,14 +109,14 @@ reset master;
|
|||
insert into t1 values(10);
|
||||
begin;
|
||||
insert into t2 select * from t1;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(10)
|
||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t2 select * from t1
|
||||
insert into t1 values(11);
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(10)
|
||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
||||
|
@ -132,7 +132,7 @@ begin;
|
|||
insert into t1 values(12);
|
||||
insert into t2 select * from t1;
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(12)
|
||||
|
@ -145,7 +145,7 @@ begin;
|
|||
insert into t1 values(13);
|
||||
insert into t2 select * from t1;
|
||||
rollback;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
|
@ -157,7 +157,7 @@ insert into t1 values(15);
|
|||
insert into t2 select * from t1;
|
||||
rollback to savepoint my_savepoint;
|
||||
commit;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(14)
|
||||
|
@ -177,7 +177,7 @@ select a from t1 order by a;
|
|||
a
|
||||
16
|
||||
18
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>s;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(16)
|
||||
|
@ -227,7 +227,7 @@ insert into t2 values (3);
|
|||
select get_lock("lock1",60);
|
||||
get_lock("lock1",60)
|
||||
1
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(16)
|
||||
|
@ -331,7 +331,7 @@ SELECT * from t2;
|
|||
a b
|
||||
100 100
|
||||
DROP TABLE t1,t2;
|
||||
show binlog events from 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 values (1,1),(1,2)
|
||||
master-bin.000001 # Query 1 # use `test`; DROP TABLE if exists t2
|
||||
|
|
|
@ -6,7 +6,7 @@ CREATE TABLE t1(f1 blob);
|
|||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
||||
SET @var1= x'8300';
|
||||
EXECUTE stmt1 USING @var1;
|
||||
SHOW BINLOG EVENTS FROM 105;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(f1 blob)
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
||||
|
|
108
mysql-test/r/rpl_incident.result
Normal file
108
mysql-test/r/rpl_incident.result
Normal file
|
@ -0,0 +1,108 @@
|
|||
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;
|
||||
**** On Master ****
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
SET @saved = @@debug;
|
||||
SET SESSION debug="d,incident_database_resync_on_replace";
|
||||
REPLACE INTO t1 VALUES (4);
|
||||
SET SESSION debug=@saved;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
**** On Slave ****
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000002
|
||||
Read_Master_Log_Pos #
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000001
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running No
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 1583
|
||||
Last_Error The incident LOST_EVENTS occured on the master. Message: <none>
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
SHOW SLAVE STATUS;
|
||||
Slave_IO_State #
|
||||
Master_Host 127.0.0.1
|
||||
Master_User root
|
||||
Master_Port MASTER_PORT
|
||||
Connect_Retry 1
|
||||
Master_Log_File master-bin.000002
|
||||
Read_Master_Log_Pos #
|
||||
Relay_Log_File #
|
||||
Relay_Log_Pos #
|
||||
Relay_Master_Log_File master-bin.000002
|
||||
Slave_IO_Running Yes
|
||||
Slave_SQL_Running Yes
|
||||
Replicate_Do_DB
|
||||
Replicate_Ignore_DB
|
||||
Replicate_Do_Table
|
||||
Replicate_Ignore_Table
|
||||
Replicate_Wild_Do_Table
|
||||
Replicate_Wild_Ignore_Table
|
||||
Last_Errno 0
|
||||
Last_Error
|
||||
Skip_Counter 0
|
||||
Exec_Master_Log_Pos #
|
||||
Relay_Log_Space #
|
||||
Until_Condition None
|
||||
Until_Log_File
|
||||
Until_Log_Pos 0
|
||||
Master_SSL_Allowed No
|
||||
Master_SSL_CA_File
|
||||
Master_SSL_CA_Path
|
||||
Master_SSL_Cert
|
||||
Master_SSL_Cipher
|
||||
Master_SSL_Key
|
||||
Seconds_Behind_Master #
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1;
|
|
@ -12,7 +12,7 @@
|
|||
# ER_SERVER_SHUTDOWN (i.e. disconnection just rolls back transaction
|
||||
# and does not make slave to stop)
|
||||
flush logs;
|
||||
--exec $MYSQL_BINLOG --start-position=554 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
|
||||
--exec $MYSQL_BINLOG --start-position=555 $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval select
|
||||
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
|
||||
|
|
|
@ -22,7 +22,7 @@ CALL bug18293("Foo's a Bar", _cp932 0xED40ED41ED42, 47.93)|
|
|||
SELECT HEX(s1),HEX(s2),d FROM t4|
|
||||
DROP PROCEDURE bug18293|
|
||||
DROP TABLE t4|
|
||||
SHOW BINLOG EVENTS FROM 409|
|
||||
SHOW BINLOG EVENTS FROM 410|
|
||||
delimiter ;|
|
||||
|
||||
# End of 5.0 tests
|
||||
|
|
|
@ -65,7 +65,7 @@ select "--- --database --" as "";
|
|||
select "--- --position --" as "";
|
||||
--enable_query_log
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=238 $MYSQLTEST_VARDIR/log/master-bin.000002
|
||||
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=239 $MYSQLTEST_VARDIR/log/master-bin.000002
|
||||
|
||||
# These are tests for remote binlog.
|
||||
# They should return the same as previous test.
|
||||
|
@ -97,7 +97,7 @@ select "--- --database --" as "";
|
|||
select "--- --position --" as "";
|
||||
--enable_query_log
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=238 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
|
||||
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=239 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
|
||||
|
||||
# Bug#7853 (mysqlbinlog does not accept input from stdin)
|
||||
--disable_query_log
|
||||
|
|
|
@ -52,11 +52,11 @@ select "--- offset --" as "";
|
|||
--disable_query_log
|
||||
select "--- start-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=607 $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=608 $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
--disable_query_log
|
||||
select "--- stop-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=607 $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=608 $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
--disable_query_log
|
||||
select "--- start-datetime --" as "";
|
||||
--enable_query_log
|
||||
|
@ -82,11 +82,11 @@ select "--- offset --" as "";
|
|||
--disable_query_log
|
||||
select "--- start-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=607 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=608 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
|
||||
--disable_query_log
|
||||
select "--- stop-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=133 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=134 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
|
||||
--disable_query_log
|
||||
select "--- start-datetime --" as "";
|
||||
--enable_query_log
|
||||
|
@ -109,11 +109,11 @@ select "--- offset --" as "";
|
|||
--disable_query_log
|
||||
select "--- start-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=607 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=608 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
|
||||
--disable_query_log
|
||||
select "--- stop-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=607 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=608 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
|
||||
--disable_query_log
|
||||
select "--- start-datetime --" as "";
|
||||
--enable_query_log
|
||||
|
@ -136,11 +136,11 @@ select "--- offset --" as "";
|
|||
--disable_query_log
|
||||
select "--- start-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=607 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
|
||||
--exec $MYSQL_BINLOG --short-form --start-position=608 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
|
||||
--disable_query_log
|
||||
select "--- stop-position --" as "";
|
||||
--enable_query_log
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=133 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
|
||||
--exec $MYSQL_BINLOG --short-form --stop-position=134 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
|
||||
--disable_query_log
|
||||
select "--- start-datetime --" as "";
|
||||
--enable_query_log
|
||||
|
|
47
mysql-test/t/rpl_incident.test
Normal file
47
mysql-test/t/rpl_incident.test
Normal file
|
@ -0,0 +1,47 @@
|
|||
--source include/master-slave.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
--echo **** On Master ****
|
||||
CREATE TABLE t1 (a INT);
|
||||
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT * FROM t1;
|
||||
|
||||
SET @saved = @@debug;
|
||||
SET SESSION debug="d,incident_database_resync_on_replace";
|
||||
|
||||
# This will generate an incident log event and store it in the binary
|
||||
# log before the replace statement.
|
||||
REPLACE INTO t1 VALUES (4);
|
||||
SET SESSION debug=@saved;
|
||||
--save_master_pos
|
||||
SELECT * FROM t1;
|
||||
|
||||
connection slave;
|
||||
--wait_for_slave_to_stop
|
||||
|
||||
# The 4 should not be inserted into the table, since the incident log
|
||||
# event should have stop the slave.
|
||||
--echo **** On Slave ****
|
||||
SELECT * FROM t1;
|
||||
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 #
|
||||
--query_vertical SHOW SLAVE STATUS
|
||||
|
||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
||||
START SLAVE;
|
||||
--sync_with_master
|
||||
|
||||
# Now, we should have inserted the row into the table and the slave
|
||||
# should be running. We should also have rotated to a new binary log.
|
||||
|
||||
SELECT * FROM t1;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 #
|
||||
--query_vertical SHOW SLAVE STATUS
|
||||
|
||||
DROP TABLE t1;
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
|
|
@ -20,9 +20,7 @@ save_master_pos;
|
|||
connection slave;
|
||||
sync_with_master;
|
||||
select count(*) from test.t1; # check that LOAD was replicated
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105; # should be nothing
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# Cleanup
|
||||
connection master;
|
||||
|
|
|
@ -18,12 +18,12 @@ sync_slave_with_master;
|
|||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
show slave status;
|
||||
stop slave;
|
||||
change master to master_log_pos=74;
|
||||
change master to master_log_pos=75;
|
||||
start slave;
|
||||
sleep 5;
|
||||
stop slave;
|
||||
|
||||
change master to master_log_pos=74;
|
||||
change master to master_log_pos=75;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
show slave status;
|
||||
|
@ -33,7 +33,7 @@ sleep 5;
|
|||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
show slave status;
|
||||
stop slave;
|
||||
change master to master_log_pos=177;
|
||||
change master to master_log_pos=178;
|
||||
start slave;
|
||||
sleep 2;
|
||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
||||
|
@ -49,7 +49,7 @@ insert into t1 values (1),(2),(3);
|
|||
save_master_pos;
|
||||
connection slave;
|
||||
stop slave;
|
||||
change master to master_log_pos=105;
|
||||
change master to master_log_pos=106;
|
||||
start slave;
|
||||
sync_with_master;
|
||||
select * from t1 ORDER BY n;
|
||||
|
|
|
@ -24,8 +24,7 @@ USE test_ignore;
|
|||
CREATE TABLE t2 (a INT, b INT);
|
||||
SHOW TABLES;
|
||||
INSERT INTO t2 VALUES (3,3), (4,4);
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 105;
|
||||
source include/show_binlog_events.inc;
|
||||
sync_slave_with_master;
|
||||
--echo **** On Slave ****
|
||||
SHOW DATABASES;
|
||||
|
|
|
@ -36,7 +36,7 @@ CREATE TABLE t3 (a INT, b INT) CHARSET=utf8;
|
|||
CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8;
|
||||
--replace_column 1 # 4 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
--query_vertical SHOW BINLOG EVENTS FROM 215
|
||||
--query_vertical SHOW BINLOG EVENTS FROM 216
|
||||
--echo **** On Master ****
|
||||
--query_vertical SHOW CREATE TABLE t1
|
||||
--query_vertical SHOW CREATE TABLE t2
|
||||
|
@ -72,7 +72,7 @@ CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3;
|
|||
# Shouldn't be written to the binary log
|
||||
--replace_column 1 # 4 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 1097;
|
||||
SHOW BINLOG EVENTS FROM 1098;
|
||||
|
||||
# Test that INSERT-SELECT works the same way as for SBR.
|
||||
CREATE TABLE t7 (a INT, b INT UNIQUE);
|
||||
|
@ -82,7 +82,7 @@ SELECT * FROM t7 ORDER BY a,b;
|
|||
# Should be written to the binary log
|
||||
--replace_column 1 # 4 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 1097;
|
||||
SHOW BINLOG EVENTS FROM 1098;
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM t7 ORDER BY a,b;
|
||||
|
||||
|
@ -94,7 +94,7 @@ INSERT INTO t7 SELECT a,b FROM tt4;
|
|||
ROLLBACK;
|
||||
--replace_column 1 # 4 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 1293;
|
||||
SHOW BINLOG EVENTS FROM 1294;
|
||||
SELECT * FROM t7 ORDER BY a,b;
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM t7 ORDER BY a,b;
|
||||
|
@ -110,7 +110,7 @@ CREATE TEMPORARY TABLE tt7 SELECT 1;
|
|||
--query_vertical SHOW CREATE TABLE t9
|
||||
--replace_column 1 # 4 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 1389;
|
||||
SHOW BINLOG EVENTS FROM 1390;
|
||||
sync_slave_with_master;
|
||||
--echo **** On Slave ****
|
||||
--query_vertical SHOW CREATE TABLE t8
|
||||
|
@ -227,7 +227,7 @@ ROLLBACK;
|
|||
SELECT * FROM t2 ORDER BY a;
|
||||
--replace_column 1 # 4 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS FROM 630;
|
||||
SHOW BINLOG EVENTS FROM 631;
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# depends on the binlog output
|
||||
-- source include/have_binlog_format_row.inc
|
||||
|
||||
let $rename_event_pos= 618;
|
||||
let $rename_event_pos= 619;
|
||||
|
||||
# Bug#18326: Do not lock table for writing during prepare of statement
|
||||
# The use of the ps protocol causes extra table maps in the binlog, so
|
||||
|
|
|
@ -162,12 +162,12 @@ connection master;
|
|||
|
||||
|
||||
# this test for position option
|
||||
# By setting this position to 412, we should only get the create of t3
|
||||
# By setting this position to 413, we should only get the create of t3
|
||||
--disable_query_log
|
||||
select "--- Test 2 position test --" as "";
|
||||
--enable_query_log
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=415 $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --position=416 $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
|
||||
# These are tests for remote binlog.
|
||||
# They should return the same as previous test.
|
||||
|
@ -263,7 +263,7 @@ select "--- Test 6 reading stdin --" as "";
|
|||
select "--- Test 7 reading stdin w/position --" as "";
|
||||
--enable_query_log
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
--exec $MYSQL_BINLOG --short-form --position=415 - < $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
--exec $MYSQL_BINLOG --short-form --position=416 - < $MYSQLTEST_VARDIR/log/master-bin.000001
|
||||
|
||||
# Bug#16217 (mysql client did not know how not switch its internal charset)
|
||||
--disable_query_log
|
||||
|
|
|
@ -566,7 +566,7 @@ connection master;
|
|||
# were written to the binary log.
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events in 'master-bin.000001' from 105;
|
||||
show binlog events in 'master-bin.000001' from 106;
|
||||
|
||||
|
||||
# Restore log_bin_trust_function_creators to its original value.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# depends on the binlog output
|
||||
--source include/have_binlog_format_mixed_or_statement.inc
|
||||
|
||||
let $rename_event_pos= 655;
|
||||
let $rename_event_pos= 656;
|
||||
-- source extra/rpl_tests/rpl_flsh_tbls.test
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
|
@ -519,9 +519,7 @@ LOCK TABLES t12 WRITE;
|
|||
INSERT INTO t12 VALUES(UUID());
|
||||
UNLOCK TABLES;
|
||||
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
sync_slave_with_master;
|
||||
|
||||
# as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID
|
||||
|
@ -536,9 +534,7 @@ sync_slave_with_master;
|
|||
diff_files $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_slave.sql;
|
||||
|
||||
connection master;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# Now test that mysqlbinlog works fine on a binlog generated by the
|
||||
# mixed mode
|
||||
|
|
|
@ -13,9 +13,8 @@ INSERT INTO t1 VALUES(@`a b`);
|
|||
set @var1= "';aaa";
|
||||
SET @var2=char(ascii('a'));
|
||||
insert into t1 values (@var1),(@var2);
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
show binlog events from 105;
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
||||
# absolutely need variables names to be quoted and strings to be
|
||||
# escaped).
|
||||
|
|
|
@ -52,7 +52,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
|
|||
sql_error.h field.h handler.h mysqld_suffix.h \
|
||||
ha_partition.h \
|
||||
ha_ndbcluster.h ha_ndbcluster_binlog.h \
|
||||
ha_ndbcluster_tables.h \
|
||||
ha_ndbcluster_tables.h rpl_constants.h \
|
||||
opt_range.h protocol.h rpl_tblmap.h rpl_utility.h \
|
||||
log.h sql_show.h rpl_rli.h rpl_mi.h \
|
||||
sql_select.h structs.h table.h sql_udf.h hash_filo.h \
|
||||
|
|
132
sql/log_event.cc
132
sql/log_event.cc
|
@ -305,7 +305,7 @@ static bool write_str(IO_CACHE *file, char *str, uint length)
|
|||
read_str()
|
||||
*/
|
||||
|
||||
static inline int read_str(char **buf, char *buf_end, char **str,
|
||||
static inline int read_str(const char **buf, const char *buf_end, const char **str,
|
||||
uint8 *len)
|
||||
{
|
||||
if (*buf + ((uint) (uchar) **buf) >= buf_end)
|
||||
|
@ -420,6 +420,7 @@ const char* Log_event::get_type_str()
|
|||
case DELETE_ROWS_EVENT: return "Delete_rows";
|
||||
case BEGIN_LOAD_QUERY_EVENT: return "Begin_load_query";
|
||||
case EXECUTE_LOAD_QUERY_EVENT: return "Execute_load_query";
|
||||
case INCIDENT_EVENT: return "Incident";
|
||||
default: return "Unknown"; /* impossible */
|
||||
}
|
||||
}
|
||||
|
@ -1011,7 +1012,10 @@ Log_event* Log_event::read_log_event(const char* buf, uint event_len,
|
|||
ev = new Begin_load_query_log_event(buf, event_len, description_event);
|
||||
break;
|
||||
case EXECUTE_LOAD_QUERY_EVENT:
|
||||
ev = new Execute_load_query_log_event(buf, event_len, description_event);
|
||||
ev= new Execute_load_query_log_event(buf, event_len, description_event);
|
||||
break;
|
||||
case INCIDENT_EVENT:
|
||||
ev = new Incident_log_event(buf, event_len, description_event);
|
||||
break;
|
||||
default:
|
||||
DBUG_PRINT("error",("Unknown event code: %d",
|
||||
|
@ -2481,6 +2485,7 @@ Format_description_log_event(uint8 binlog_ver, const char* server_ver)
|
|||
post_header_len[DELETE_ROWS_EVENT-1]= 6;);
|
||||
post_header_len[BEGIN_LOAD_QUERY_EVENT-1]= post_header_len[APPEND_BLOCK_EVENT-1];
|
||||
post_header_len[EXECUTE_LOAD_QUERY_EVENT-1]= EXECUTE_LOAD_QUERY_HEADER_LEN;
|
||||
post_header_len[INCIDENT_EVENT-1]= INCIDENT_HEADER_LEN;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -5520,7 +5525,7 @@ bool sql_ex_info::write_data(IO_CACHE* file)
|
|||
sql_ex_info::init()
|
||||
*/
|
||||
|
||||
char* sql_ex_info::init(char* buf,char* buf_end,bool use_new_format)
|
||||
char *sql_ex_info::init(char *buf, char *buf_end, bool use_new_format)
|
||||
{
|
||||
cached_new_format = use_new_format;
|
||||
if (use_new_format)
|
||||
|
@ -5533,11 +5538,12 @@ char* sql_ex_info::init(char* buf,char* buf_end,bool use_new_format)
|
|||
the case when we have old format because we will be reusing net buffer
|
||||
to read the actual file before we write out the Create_file event.
|
||||
*/
|
||||
if (read_str(&buf, buf_end, &field_term, &field_term_len) ||
|
||||
read_str(&buf, buf_end, &enclosed, &enclosed_len) ||
|
||||
read_str(&buf, buf_end, &line_term, &line_term_len) ||
|
||||
read_str(&buf, buf_end, &line_start, &line_start_len) ||
|
||||
read_str(&buf, buf_end, &escaped, &escaped_len))
|
||||
const char *ptr= buf;
|
||||
if (read_str(&ptr, buf_end, (const char **) &field_term, &field_term_len) ||
|
||||
read_str(&ptr, buf_end, (const char **) &enclosed, &enclosed_len) ||
|
||||
read_str(&ptr, buf_end, (const char **) &line_term, &line_term_len) ||
|
||||
read_str(&ptr, buf_end, (const char **) &line_start, &line_start_len) ||
|
||||
read_str(&ptr, buf_end, (const char **) &escaped, &escaped_len))
|
||||
return 0;
|
||||
opt_flags = *buf++;
|
||||
}
|
||||
|
@ -7869,3 +7875,113 @@ void Update_rows_log_event::print(FILE *file,
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
Incident_log_event::Incident_log_event(const char *buf, uint event_len,
|
||||
const Format_description_log_event *descr_event)
|
||||
: Log_event(buf, descr_event)
|
||||
{
|
||||
DBUG_ENTER("Incident_log_event::Incident_log_event");
|
||||
uint8 const common_header_len=
|
||||
descr_event->common_header_len;
|
||||
uint8 const post_header_len=
|
||||
descr_event->post_header_len[INCIDENT_EVENT-1];
|
||||
|
||||
DBUG_PRINT("info",("event_len: %u; common_header_len: %d; post_header_len: %d",
|
||||
event_len, common_header_len, post_header_len));
|
||||
|
||||
m_incident= static_cast<Incident>(uint2korr(buf + common_header_len));
|
||||
char const *ptr= buf + common_header_len + post_header_len;
|
||||
char const *const str_end= buf + event_len;
|
||||
uint8 len;
|
||||
const char *str;
|
||||
read_str(&ptr, str_end, &str, &len);
|
||||
m_message.str= const_cast<char*>(str);
|
||||
m_message.length= len;
|
||||
DBUG_PRINT("info", ("m_incident: %d", m_incident));
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
Incident_log_event::~Incident_log_event()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
const char *
|
||||
Incident_log_event::description() const
|
||||
{
|
||||
static const char *const description[]= {
|
||||
"NOTHING", // Not used
|
||||
"LOST_EVENTS"
|
||||
};
|
||||
|
||||
DBUG_PRINT("info", ("m_incident: %d", m_incident));
|
||||
|
||||
DBUG_ASSERT(0 <= m_incident);
|
||||
DBUG_ASSERT((my_size_t) m_incident <= sizeof(description)/sizeof(*description));
|
||||
|
||||
return description[m_incident];
|
||||
}
|
||||
|
||||
|
||||
#ifndef MYSQL_CLIENT
|
||||
void Incident_log_event::pack_info(Protocol *protocol)
|
||||
{
|
||||
char buf[256];
|
||||
my_size_t bytes;
|
||||
if (m_message.length > 0)
|
||||
bytes= my_snprintf(buf, sizeof(buf), "#%d (%s)",
|
||||
m_incident, description());
|
||||
else
|
||||
bytes= my_snprintf(buf, sizeof(buf), "#%d (%s): %s",
|
||||
m_incident, description(), m_message.str);
|
||||
protocol->store(buf, bytes, &my_charset_bin);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef MYSQL_CLIENT
|
||||
void
|
||||
Incident_log_event::print(FILE *file,
|
||||
PRINT_EVENT_INFO *print_event_info)
|
||||
{
|
||||
if (print_event_info->short_form)
|
||||
return;
|
||||
|
||||
Write_on_release_cache cache(&print_event_info->head_cache, file);
|
||||
print_header(&cache, print_event_info, FALSE);
|
||||
my_b_printf(&cache, "\n# Incident: %s", description());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
|
||||
int
|
||||
Incident_log_event::exec_event(st_relay_log_info *rli)
|
||||
{
|
||||
DBUG_ENTER("Incident_log_event::exec_event");
|
||||
slave_print_msg(ERROR_LEVEL, rli, ER_SLAVE_INCIDENT,
|
||||
ER(ER_SLAVE_INCIDENT),
|
||||
description(),
|
||||
m_message.length > 0 ? m_message.str : "<none>");
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
Incident_log_event::write_data_header(IO_CACHE *file)
|
||||
{
|
||||
DBUG_ENTER("Incident_log_event::write_data_header");
|
||||
DBUG_PRINT("enter", ("m_incident: %d", m_incident));
|
||||
byte buf[sizeof(int16)];
|
||||
int2store(buf, (int16) m_incident);
|
||||
DBUG_RETURN(my_b_safe_write(file, buf, sizeof(buf)));
|
||||
}
|
||||
|
||||
bool
|
||||
Incident_log_event::write_data_body(IO_CACHE *file)
|
||||
{
|
||||
DBUG_ENTER("Incident_log_event::write_data_body");
|
||||
DBUG_RETURN(write_str(file, m_message.str, m_message.length));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#endif
|
||||
|
||||
#include <my_bitmap.h>
|
||||
#include "rpl_constants.h"
|
||||
|
||||
#define LOG_READ_EOF -1
|
||||
#define LOG_READ_BOGUS -2
|
||||
|
@ -198,7 +199,7 @@ struct sql_ex_info
|
|||
#define TABLE_MAP_HEADER_LEN 8
|
||||
#define EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN (4 + 4 + 4 + 1)
|
||||
#define EXECUTE_LOAD_QUERY_HEADER_LEN (QUERY_HEADER_LEN + EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN)
|
||||
|
||||
#define INCIDENT_HEADER_LEN 2
|
||||
/*
|
||||
Max number of possible extra bytes in a replication event compared to a
|
||||
packet (i.e. a query) sent from client to master;
|
||||
|
@ -486,6 +487,11 @@ enum Log_event_type
|
|||
UPDATE_ROWS_EVENT = 24,
|
||||
DELETE_ROWS_EVENT = 25,
|
||||
|
||||
/*
|
||||
Something out of the ordinary happened on the master
|
||||
*/
|
||||
INCIDENT_EVENT= 23,
|
||||
|
||||
/*
|
||||
Add new events here - right above this comment!
|
||||
Existing events (except ENUM_END_EVENT) should never change their numbers
|
||||
|
@ -2512,6 +2518,96 @@ private:
|
|||
#endif
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
Class representing an incident, an occurance out of the ordinary,
|
||||
that happened on the master.
|
||||
|
||||
The event is used to inform the slave that something out of the
|
||||
ordinary happened on the master that might cause the database to be
|
||||
in an inconsistent state.
|
||||
|
||||
<table id="IncidentFormat">
|
||||
<caption>Incident event format</caption>
|
||||
<tr>
|
||||
<th>Symbol</th>
|
||||
<th>Size<br/>(bytes)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>INCIDENT</td>
|
||||
<td align="right">2</td>
|
||||
<td>Incident number as an unsigned integer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MSGLEN</td>
|
||||
<td align="right">1</td>
|
||||
<td>Message length as an unsigned integer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>MESSAGE</td>
|
||||
<td align="right">MSGLEN</td>
|
||||
<td>The message, if present. Not null terminated.</td>
|
||||
</tr>
|
||||
</table>
|
||||
*/
|
||||
class Incident_log_event : public Log_event {
|
||||
public:
|
||||
#ifndef MYSQL_CLIENT
|
||||
Incident_log_event(THD *thd_arg, Incident incident)
|
||||
: Log_event(thd_arg, 0, FALSE), m_incident(incident)
|
||||
{
|
||||
DBUG_ENTER("Incident_log_event::Incident_log_event");
|
||||
DBUG_PRINT("enter", ("m_incident: %d", m_incident));
|
||||
m_message.str= NULL; /* Just as a precaution */
|
||||
m_message.length= 0;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
Incident_log_event(THD *thd_arg, Incident incident, LEX_STRING const msg)
|
||||
: Log_event(thd_arg, 0, FALSE), m_incident(incident)
|
||||
{
|
||||
DBUG_ENTER("Incident_log_event::Incident_log_event");
|
||||
DBUG_PRINT("enter", ("m_incident: %d", m_incident));
|
||||
m_message= msg;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef MYSQL_CLIENT
|
||||
void pack_info(Protocol*);
|
||||
#endif
|
||||
|
||||
Incident_log_event(const char *buf, uint event_len,
|
||||
const Format_description_log_event *descr_event);
|
||||
|
||||
virtual ~Incident_log_event();
|
||||
|
||||
#ifdef MYSQL_CLIENT
|
||||
virtual void print(FILE *file, PRINT_EVENT_INFO *print_event_info);
|
||||
#endif
|
||||
|
||||
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
||||
virtual int exec_event(struct st_relay_log_info *rli);
|
||||
#endif
|
||||
|
||||
virtual bool write_data_header(IO_CACHE *file);
|
||||
virtual bool write_data_body(IO_CACHE *file);
|
||||
|
||||
virtual Log_event_type get_type_code() { return INCIDENT_EVENT; }
|
||||
|
||||
virtual bool is_valid() const { return 1; }
|
||||
virtual int get_data_size() {
|
||||
return INCIDENT_HEADER_LEN + 1 + m_message.length;
|
||||
}
|
||||
|
||||
private:
|
||||
const char *description() const;
|
||||
|
||||
Incident m_incident;
|
||||
LEX_STRING m_message;
|
||||
};
|
||||
|
||||
static inline bool copy_event_cache_to_file_and_reinit(IO_CACHE *cache,
|
||||
FILE *file)
|
||||
{
|
||||
|
|
18
sql/rpl_constants.h
Normal file
18
sql/rpl_constants.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#ifndef RPL_CONSTANTS_H
|
||||
#define RPL_CONSTANTS_H
|
||||
|
||||
/**
|
||||
Enumeration of the incidents that can occur for the server.
|
||||
*/
|
||||
enum Incident {
|
||||
/** No incident */
|
||||
INCIDENT_NONE,
|
||||
|
||||
/** There are possibly lost events in the replication stream */
|
||||
INCIDENT_LOST_EVENTS,
|
||||
|
||||
/** Shall be last event of the enumeration */
|
||||
INCIDENT_COUNT
|
||||
};
|
||||
|
||||
#endif /* RPL_CONSTANTS_H */
|
|
@ -188,3 +188,21 @@ void injector::new_trans(THD *thd, injector::transaction *ptr)
|
|||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
int injector::record_incident(THD *thd, Incident incident)
|
||||
{
|
||||
Incident_log_event ev(thd, incident);
|
||||
if (int error= mysql_bin_log.write(&ev))
|
||||
return error;
|
||||
mysql_bin_log.rotate_and_purge(RP_FORCE_ROTATE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int injector::record_incident(THD *thd, Incident incident, LEX_STRING message)
|
||||
{
|
||||
Incident_log_event ev(thd, incident, message);
|
||||
if (int error= mysql_bin_log.write(&ev))
|
||||
return error;
|
||||
mysql_bin_log.rotate_and_purge(RP_FORCE_ROTATE);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -18,9 +18,10 @@
|
|||
|
||||
/* Pull in 'byte', 'my_off_t', and 'uint32' */
|
||||
#include <my_global.h>
|
||||
|
||||
#include <my_bitmap.h>
|
||||
|
||||
#include "rpl_constants.h"
|
||||
|
||||
/* Forward declarations */
|
||||
class handler;
|
||||
class MYSQL_BIN_LOG;
|
||||
|
@ -322,6 +323,9 @@ public:
|
|||
transaction new_trans(THD *);
|
||||
void new_trans(THD *, transaction *);
|
||||
|
||||
int record_incident(THD*, Incident incident);
|
||||
int record_incident(THD*, Incident incident, LEX_STRING message);
|
||||
|
||||
private:
|
||||
explicit injector();
|
||||
~injector() { } /* Nothing needs to be done */
|
||||
|
|
|
@ -6055,3 +6055,5 @@ ER_EVENT_CANNOT_CREATE_IN_THE_PAST
|
|||
eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created"
|
||||
ER_EVENT_CANNOT_ALTER_IN_THE_PAST
|
||||
eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been altered"
|
||||
ER_SLAVE_INCIDENT
|
||||
eng "The incident %s occured on the master. Message: %-.64s"
|
||||
|
|
|
@ -2595,6 +2595,36 @@ end_with_restore_list:
|
|||
break;
|
||||
}
|
||||
case SQLCOM_REPLACE:
|
||||
#ifndef DBUG_OFF
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
/*
|
||||
Generate an incident log event before writing the real event
|
||||
to the binary log. We put this event is before the statement
|
||||
since that makes it simpler to check that the statement was
|
||||
not executed on the slave (since incidents usually stop the
|
||||
slave).
|
||||
|
||||
Observe that any row events that are generated will be
|
||||
generated before.
|
||||
|
||||
This is only for testing purposes and will not be present in a
|
||||
release build.
|
||||
*/
|
||||
|
||||
Incident incident= INCIDENT_NONE;
|
||||
DBUG_PRINT("debug", ("Just before generate_incident()"));
|
||||
DBUG_EXECUTE_IF("incident_database_resync_on_replace",
|
||||
incident= INCIDENT_LOST_EVENTS;);
|
||||
if (incident)
|
||||
{
|
||||
Incident_log_event ev(thd, incident);
|
||||
mysql_bin_log.write(&ev);
|
||||
mysql_bin_log.rotate_and_purge(RP_FORCE_ROTATE);
|
||||
}
|
||||
DBUG_PRINT("debug", ("Just after generate_incident()"));
|
||||
}
|
||||
#endif
|
||||
case SQLCOM_INSERT:
|
||||
{
|
||||
DBUG_ASSERT(first_table == all_tables && first_table != 0);
|
||||
|
@ -5181,6 +5211,7 @@ void mysql_init_multi_delete(LEX *lex)
|
|||
lex->query_tables_last= &lex->query_tables;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
When you modify mysql_parse(), you may need to mofify
|
||||
mysql_test_parse_for_slave() in this same file.
|
||||
|
@ -5193,6 +5224,7 @@ void mysql_parse(THD *thd, char *inBuf, uint length)
|
|||
DBUG_EXECUTE_IF("parser_debug", turn_parser_debug_on(););
|
||||
|
||||
mysql_init_query(thd, (uchar*) inBuf, length);
|
||||
|
||||
if (query_cache_send_result_to_client(thd, inBuf, length) <= 0)
|
||||
{
|
||||
LEX *lex= thd->lex;
|
||||
|
|
Loading…
Reference in a new issue