mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
MWL#116: After-review fixes.
Also implement the InnoDB changes for group commit into innodb_plugin.
This commit is contained in:
99
mysql-test/suite/innodb_plugin/r/binlog_consistent.result
Normal file
99
mysql-test/suite/innodb_plugin/r/binlog_consistent.result
Normal file
@@ -0,0 +1,99 @@
|
||||
RESET MASTER;
|
||||
# Connection default
|
||||
CREATE TABLE t1 (a INT, b VARCHAR(100), PRIMARY KEY (a,b)) ENGINE=innodb;
|
||||
SHOW MASTER STATUS;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000001 375
|
||||
SHOW STATUS LIKE 'binlog_snapshot_%';
|
||||
Variable_name Value
|
||||
binlog_snapshot_file master-bin.000001
|
||||
binlog_snapshot_position 375
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (0, "");
|
||||
# Connection con1
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (1, "");
|
||||
# Connection con2
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=myisam;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (2, "first");
|
||||
INSERT INTO t2 VALUES (2);
|
||||
INSERT INTO t1 VALUES (2, "second");
|
||||
# Connection default
|
||||
COMMIT;
|
||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
# Connection con3
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (3, "");
|
||||
INSERT INTO t2 VALUES (3);
|
||||
# Connection con4
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (4, "");
|
||||
COMMIT;
|
||||
# Connection default
|
||||
SELECT * FROM t1 ORDER BY a,b;
|
||||
a b
|
||||
0
|
||||
SHOW STATUS LIKE 'binlog_snapshot_%';
|
||||
Variable_name Value
|
||||
binlog_snapshot_file master-bin.000001
|
||||
binlog_snapshot_position 674
|
||||
SHOW MASTER STATUS;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000001 861
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a
|
||||
2
|
||||
3
|
||||
# Connection con1
|
||||
COMMIT;
|
||||
# Connection con2
|
||||
COMMIT;
|
||||
# Connection con3
|
||||
COMMIT;
|
||||
FLUSH LOGS;
|
||||
# Connection default
|
||||
SELECT * FROM t1 ORDER BY a,b;
|
||||
a b
|
||||
0
|
||||
SHOW STATUS LIKE 'binlog_snapshot_%';
|
||||
Variable_name Value
|
||||
binlog_snapshot_file master-bin.000001
|
||||
binlog_snapshot_position 674
|
||||
SHOW MASTER STATUS;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000002 240
|
||||
COMMIT;
|
||||
SHOW STATUS LIKE 'binlog_snapshot_%';
|
||||
Variable_name Value
|
||||
binlog_snapshot_file master-bin.000002
|
||||
binlog_snapshot_position 240
|
||||
SHOW MASTER STATUS;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000002 240
|
||||
SHOW BINLOG EVENTS;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 4 Format_desc 1 240 Server ver: #, Binlog ver: #
|
||||
master-bin.000001 240 Query 1 375 use `test`; CREATE TABLE t1 (a INT, b VARCHAR(100), PRIMARY KEY (a,b)) ENGINE=innodb
|
||||
master-bin.000001 375 Query 1 487 use `test`; CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=myisam
|
||||
master-bin.000001 487 Query 1 555 BEGIN
|
||||
master-bin.000001 555 Query 1 647 use `test`; INSERT INTO t1 VALUES (0, "")
|
||||
master-bin.000001 647 Xid 1 674 COMMIT /* XID */
|
||||
master-bin.000001 674 Query 1 742 BEGIN
|
||||
master-bin.000001 742 Query 1 834 use `test`; INSERT INTO t1 VALUES (4, "")
|
||||
master-bin.000001 834 Xid 1 861 COMMIT /* XID */
|
||||
master-bin.000001 861 Query 1 929 BEGIN
|
||||
master-bin.000001 929 Query 1 1021 use `test`; INSERT INTO t1 VALUES (1, "")
|
||||
master-bin.000001 1021 Xid 1 1048 COMMIT /* XID */
|
||||
master-bin.000001 1048 Query 1 1116 BEGIN
|
||||
master-bin.000001 1116 Query 1 1213 use `test`; INSERT INTO t1 VALUES (2, "first")
|
||||
master-bin.000001 1213 Query 1 1301 use `test`; INSERT INTO t2 VALUES (2)
|
||||
master-bin.000001 1301 Query 1 1399 use `test`; INSERT INTO t1 VALUES (2, "second")
|
||||
master-bin.000001 1399 Xid 1 1426 COMMIT /* XID */
|
||||
master-bin.000001 1426 Query 1 1494 BEGIN
|
||||
master-bin.000001 1494 Query 1 1586 use `test`; INSERT INTO t1 VALUES (3, "")
|
||||
master-bin.000001 1586 Query 1 1674 use `test`; INSERT INTO t2 VALUES (3)
|
||||
master-bin.000001 1674 Xid 1 1701 COMMIT /* XID */
|
||||
master-bin.000001 1701 Rotate 1 1745 master-bin.000002;pos=4
|
||||
DROP TABLE t1,t2;
|
63
mysql-test/suite/innodb_plugin/r/group_commit.result
Normal file
63
mysql-test/suite/innodb_plugin/r/group_commit.result
Normal file
@@ -0,0 +1,63 @@
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) ENGINE=innodb;
|
||||
SELECT variable_value INTO @commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_commits';
|
||||
SELECT variable_value INTO @group_commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_group_commits';
|
||||
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL group1_running WAIT_FOR group2_queued";
|
||||
INSERT INTO t1 VALUES ("con1");
|
||||
set DEBUG_SYNC= "now WAIT_FOR group1_running";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con2";
|
||||
SET DEBUG_SYNC= "commit_after_release_LOCK_log WAIT_FOR group3_committed";
|
||||
SET DEBUG_SYNC= "commit_after_group_run_commit_ordered SIGNAL group2_visible WAIT_FOR group2_checked";
|
||||
INSERT INTO t1 VALUES ("con2");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_con2";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con3";
|
||||
INSERT INTO t1 VALUES ("con3");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_con3";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con4";
|
||||
INSERT INTO t1 VALUES ("con4");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_con4";
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
SET DEBUG_SYNC= "now SIGNAL group2_queued";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL group3_con5";
|
||||
SET DEBUG_SYNC= "commit_after_get_LOCK_log SIGNAL con5_leader WAIT_FOR con6_queued";
|
||||
INSERT INTO t1 VALUES ("con5");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con5_leader";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con6_queued";
|
||||
INSERT INTO t1 VALUES ("con6");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group3_con5";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
SET DEBUG_SYNC= "now SIGNAL group3_committed";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_visible";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
con2
|
||||
con3
|
||||
con4
|
||||
SET DEBUG_SYNC= "now SIGNAL group2_checked";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
con2
|
||||
con3
|
||||
con4
|
||||
con5
|
||||
con6
|
||||
SELECT variable_value - @commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_commits';
|
||||
variable_value - @commits
|
||||
6
|
||||
SELECT variable_value - @group_commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_group_commits';
|
||||
variable_value - @group_commits
|
||||
3
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
DROP TABLE t1;
|
@@ -0,0 +1,35 @@
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SET DEBUG_SYNC= "commit_after_get_LOCK_log SIGNAL con1_waiting WAIT_FOR con3_queued";
|
||||
SET DEBUG_SYNC= "commit_loop_entry_commit_ordered SIGNAL con1_loop WAIT_FOR con1_loop_cont EXECUTE 3";
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_waiting";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con2_queued";
|
||||
INSERT INTO t1 VALUES (2);
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con2_queued";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con3_queued";
|
||||
INSERT INTO t1 VALUES (3);
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_loop";
|
||||
SET DEBUG_SYNC= "now SIGNAL con1_loop_cont";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_loop";
|
||||
SET DEBUG_SYNC= "now SIGNAL con1_loop_cont";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_loop";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
SET SESSION debug="+d,crash_dispatch_command_before";
|
||||
SELECT 1;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
InnoDB: Last MySQL binlog file position 0 901, file name ./master-bin.000001
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
DROP TABLE t1;
|
@@ -0,0 +1,36 @@
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SET DEBUG_SYNC= "commit_after_get_LOCK_log SIGNAL con1_waiting WAIT_FOR con3_queued";
|
||||
SET DEBUG_SYNC= "commit_loop_entry_commit_ordered SIGNAL con1_loop WAIT_FOR con1_loop_cont";
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_waiting";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con2_queued";
|
||||
SET DEBUG_SYNC= "commit_loop_entry_commit_ordered SIGNAL con1_loop WAIT_FOR con1_loop_cont";
|
||||
INSERT INTO t1 VALUES (2);
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con2_queued";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con3_queued";
|
||||
SET DEBUG_SYNC= "commit_loop_entry_commit_ordered SIGNAL con1_loop WAIT_FOR con1_loop_cont";
|
||||
INSERT INTO t1 VALUES (3);
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_loop";
|
||||
SET DEBUG_SYNC= "now SIGNAL con1_loop_cont";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_loop";
|
||||
SET DEBUG_SYNC= "now SIGNAL con1_loop_cont";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con1_loop";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
SET SESSION debug="+d,crash_dispatch_command_before";
|
||||
SELECT 1;
|
||||
Got one of the listed errors
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
InnoDB: Last MySQL binlog file position 0 901, file name ./master-bin.000001
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
DROP TABLE t1;
|
125
mysql-test/suite/innodb_plugin/r/group_commit_crash.result
Normal file
125
mysql-test/suite/innodb_plugin/r/group_commit_crash.result
Normal file
@@ -0,0 +1,125 @@
|
||||
CREATE TABLE t1(a CHAR(255),
|
||||
b CHAR(255),
|
||||
c CHAR(255),
|
||||
d CHAR(255),
|
||||
id INT AUTO_INCREMENT,
|
||||
PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||
create table t2 like t1;
|
||||
create procedure setcrash(IN i INT)
|
||||
begin
|
||||
CASE i
|
||||
WHEN 1 THEN SET SESSION debug="d,crash_commit_after_prepare";
|
||||
WHEN 2 THEN SET SESSION debug="d,crash_commit_after_log";
|
||||
WHEN 3 THEN SET SESSION debug="d,crash_commit_before_unlog";
|
||||
WHEN 4 THEN SET SESSION debug="d,crash_commit_after";
|
||||
WHEN 5 THEN SET SESSION debug="d,crash_commit_before";
|
||||
ELSE BEGIN END;
|
||||
END CASE;
|
||||
end //
|
||||
FLUSH TABLES;
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(5);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(4);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
a b c d 1
|
||||
a b c d 2
|
||||
a b c d 3
|
||||
a b c d 4
|
||||
a b c d 5
|
||||
a b c d 6
|
||||
a b c d 7
|
||||
a b c d 8
|
||||
a b c d 9
|
||||
a b c d 10
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t2
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(3);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
a b c d 1
|
||||
a b c d 2
|
||||
a b c d 3
|
||||
a b c d 4
|
||||
a b c d 5
|
||||
a b c d 6
|
||||
a b c d 7
|
||||
a b c d 8
|
||||
a b c d 9
|
||||
a b c d 10
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t2
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(2);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
a b c d 1
|
||||
a b c d 2
|
||||
a b c d 3
|
||||
a b c d 4
|
||||
a b c d 5
|
||||
a b c d 6
|
||||
a b c d 7
|
||||
a b c d 8
|
||||
a b c d 9
|
||||
a b c d 10
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t2
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(1);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
delete from t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP PROCEDURE setcrash;
|
@@ -0,0 +1,125 @@
|
||||
CREATE TABLE t1(a CHAR(255),
|
||||
b CHAR(255),
|
||||
c CHAR(255),
|
||||
d CHAR(255),
|
||||
id INT AUTO_INCREMENT,
|
||||
PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||
create table t2 like t1;
|
||||
create procedure setcrash(IN i INT)
|
||||
begin
|
||||
CASE i
|
||||
WHEN 1 THEN SET SESSION debug="d,crash_commit_after_prepare";
|
||||
WHEN 2 THEN SET SESSION debug="d,crash_commit_after_log";
|
||||
WHEN 3 THEN SET SESSION debug="d,crash_commit_before_unlog";
|
||||
WHEN 4 THEN SET SESSION debug="d,crash_commit_after";
|
||||
WHEN 5 THEN SET SESSION debug="d,crash_commit_before";
|
||||
ELSE BEGIN END;
|
||||
END CASE;
|
||||
end //
|
||||
FLUSH TABLES;
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
INSERT INTO t2(a, b, c, d) VALUES ('a', 'b', 'c', 'd');
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(5);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(4);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
a b c d 1
|
||||
a b c d 2
|
||||
a b c d 3
|
||||
a b c d 4
|
||||
a b c d 5
|
||||
a b c d 6
|
||||
a b c d 7
|
||||
a b c d 8
|
||||
a b c d 9
|
||||
a b c d 10
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t2
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(3);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
a b c d 1
|
||||
a b c d 2
|
||||
a b c d 3
|
||||
a b c d 4
|
||||
a b c d 5
|
||||
a b c d 6
|
||||
a b c d 7
|
||||
a b c d 8
|
||||
a b c d 9
|
||||
a b c d 10
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t2
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(2);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
a b c d 1
|
||||
a b c d 2
|
||||
a b c d 3
|
||||
a b c d 4
|
||||
a b c d 5
|
||||
a b c d 6
|
||||
a b c d 7
|
||||
a b c d 8
|
||||
a b c d 9
|
||||
a b c d 10
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 select * from t2
|
||||
delete from t1;
|
||||
SET binlog_format= mixed;
|
||||
RESET MASTER;
|
||||
START TRANSACTION;
|
||||
insert into t1 select * from t2;
|
||||
call setcrash(1);
|
||||
COMMIT;
|
||||
Got one of the listed errors
|
||||
SELECT * FROM t1 ORDER BY id;
|
||||
a b c d id
|
||||
SHOW BINLOG EVENTS LIMIT 2,1;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
delete from t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP PROCEDURE setcrash;
|
@@ -0,0 +1,63 @@
|
||||
CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) ENGINE=innodb;
|
||||
SELECT variable_value INTO @commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_commits';
|
||||
SELECT variable_value INTO @group_commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_group_commits';
|
||||
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL group1_running WAIT_FOR group2_queued";
|
||||
INSERT INTO t1 VALUES ("con1");
|
||||
set DEBUG_SYNC= "now WAIT_FOR group1_running";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con2";
|
||||
SET DEBUG_SYNC= "commit_after_release_LOCK_log WAIT_FOR group3_committed";
|
||||
INSERT INTO t1 VALUES ("con2");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_con2";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con3";
|
||||
INSERT INTO t1 VALUES ("con3");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_con3";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con4";
|
||||
SET DEBUG_SYNC= "commit_after_group_run_commit_ordered SIGNAL group2_visible WAIT_FOR group2_checked";
|
||||
INSERT INTO t1 VALUES ("con4");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_con4";
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
SET DEBUG_SYNC= "now SIGNAL group2_queued";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL group3_con5";
|
||||
SET DEBUG_SYNC= "commit_after_get_LOCK_log SIGNAL con5_leader WAIT_FOR con6_queued";
|
||||
INSERT INTO t1 VALUES ("con5");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR con5_leader";
|
||||
SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con6_queued";
|
||||
INSERT INTO t1 VALUES ("con6");
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group3_con5";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
SET DEBUG_SYNC= "now SIGNAL group3_committed";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR group2_visible";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
con2
|
||||
con3
|
||||
con4
|
||||
SET DEBUG_SYNC= "now SIGNAL group2_checked";
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
con1
|
||||
con2
|
||||
con3
|
||||
con4
|
||||
con5
|
||||
con6
|
||||
SELECT variable_value - @commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_commits';
|
||||
variable_value - @commits
|
||||
6
|
||||
SELECT variable_value - @group_commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_group_commits';
|
||||
variable_value - @group_commits
|
||||
3
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
DROP TABLE t1;
|
Reference in New Issue
Block a user