mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
354f5f7bac
Slave does not correctly handle "expected errors" leading to inconsistencies between the mater and slave. Specifically, when a statement changes both transactional and non-transactional tables, the transactional changes are automatically rolled back on the master but the slave ignores the error and does not roll them back thus leading to inconsistencies. To fix the problem, we automatically roll back a statement that fails on the slave but note that the transaction is not rolled back unless a "rollback" command is in the relay log file. mysql-test/extra/rpl_tests/rpl_mixing_engines.test: Enabled item 13.e which was disabled because of the bug fixed by the current and removed item 14 which was introduced by mistake.
870 lines
39 KiB
Text
870 lines
39 KiB
Text
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;
|
|
###################################################################################
|
|
# CONFIGURATION
|
|
###################################################################################
|
|
SET SQL_LOG_BIN=0;
|
|
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
SET SQL_LOG_BIN=1;
|
|
SET SQL_LOG_BIN=0;
|
|
CREATE TABLE nt_1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE nt_2 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE nt_3 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE nt_4 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
|
|
CREATE TABLE tt_1 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
CREATE TABLE tt_2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
CREATE TABLE tt_3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
CREATE TABLE tt_4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
|
|
SET SQL_LOG_BIN=1;
|
|
CREATE FUNCTION f1 () RETURNS VARCHAR(64)
|
|
BEGIN
|
|
RETURN "Testing...";
|
|
END|
|
|
CREATE FUNCTION f2 () RETURNS VARCHAR(64)
|
|
BEGIN
|
|
RETURN f1();
|
|
END|
|
|
CREATE PROCEDURE pc_i_tt_3 (IN x INT, IN y VARCHAR(64))
|
|
BEGIN
|
|
INSERT INTO tt_3 VALUES (y,x,x);
|
|
END|
|
|
CREATE TRIGGER tr_i_tt_3_to_nt_3 BEFORE INSERT ON tt_3 FOR EACH ROW
|
|
BEGIN
|
|
INSERT INTO nt_3 VALUES (NEW.a, NEW.b, NEW.c);
|
|
END|
|
|
CREATE TRIGGER tr_i_nt_4_to_tt_4 BEFORE INSERT ON nt_4 FOR EACH ROW
|
|
BEGIN
|
|
INSERT INTO tt_4 VALUES (NEW.a, NEW.b, NEW.c);
|
|
END|
|
|
###################################################################################
|
|
# MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
|
|
###################################################################################
|
|
#
|
|
#1) "B T T C" generates in binlog the "B T T C" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4");
|
|
INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4");
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4", 4, "new text 4")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 4", 4, "new text 4")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#1.e) "B T T C" with error in T generates in binlog the "B T T C" entries.
|
|
#
|
|
INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2");
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -2", -2, "new text -2");
|
|
ERROR 23000: Duplicate entry '-2' for key 'PRIMARY'
|
|
INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3");
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5");
|
|
INSERT INTO tt_2 VALUES ("new text -4", -4, "new text -4"), ("new text -5", -5, "new text -5");
|
|
ERROR 23000: Duplicate entry '-5' for key 'PRIMARY'
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -2", -2, "new text -2")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text -3", -3, "new text -3")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text -5", -5, "new text -5")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#2) "B T T R" generates in binlog an "empty" entry.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text 5", 5, "new text 5");
|
|
INSERT INTO tt_2 VALUES ("new text 5", 5, "new text 5");
|
|
ROLLBACK;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
|
|
|
|
|
|
|
|
#
|
|
#2.e) "B T T R" with error in T generates in binlog an "empty" entry.
|
|
#
|
|
INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7");
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text -6", -6, "new text -6"), ("new text -7", -7, "new text -7");
|
|
ERROR 23000: Duplicate entry '-7' for key 'PRIMARY'
|
|
INSERT INTO tt_2 VALUES ("new text -8", -8, "new text -8");
|
|
ROLLBACK;
|
|
BEGIN;
|
|
INSERT INTO tt_2 VALUES ("new text -10", -10, "new text -10");
|
|
INSERT INTO tt_2 VALUES ("new text -9", -9, "new text -9"), ("new text -10", -10, "new text -10");
|
|
ERROR 23000: Duplicate entry '-10' for key 'PRIMARY'
|
|
ROLLBACK;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -7", -7, "new text -7")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#3) "B T N C" generates in binlog the "B T N C" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6");
|
|
INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6");
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 6", 6, "new text 6")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 6", 6, "new text 6")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#3.e) "B T N C" with error in either T or N generates in binlog the "B T N C" entries.
|
|
#
|
|
INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12");
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text -11", -11, "new text -11"), ("new text -12", -12, "new text -12");
|
|
ERROR 23000: Duplicate entry '-12' for key 'PRIMARY'
|
|
INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13");
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14");
|
|
INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16");
|
|
INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16");
|
|
ERROR 23000: Duplicate entry '-16' for key 'PRIMARY'
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -12", -12, "new text -12")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -13", -13, "new text -13")
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -14", -14, "new text -14")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -16", -16, "new text -16")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -15", -15, "new text -15"), ("new text -16", -16, "new text -16")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#4) "B T N R" generates in binlog the "B T N R" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7");
|
|
INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7");
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 7", 7, "new text 7")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 7", 7, "new text 7")
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
|
|
|
|
|
|
|
|
#
|
|
#4.e) "B T N R" with error in either T or N generates in binlog the "B T N R" entries.
|
|
#
|
|
INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17");
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text -16", -16, "new text -16"), ("new text -17", -17, "new text -17");
|
|
ERROR 23000: Duplicate entry '-17' for key 'PRIMARY'
|
|
INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18");
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19");
|
|
INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21");
|
|
INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21");
|
|
ERROR 23000: Duplicate entry '-21' for key 'PRIMARY'
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -17", -17, "new text -17")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -18", -18, "new text -18")
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -19", -19, "new text -19")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -21", -21, "new text -21")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -20", -20, "new text -20"), ("new text -21", -21, "new text -21")
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
|
|
|
|
|
|
|
|
#
|
|
#5) "T" generates in binlog the "B T C" entry.
|
|
#
|
|
INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8");
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 8", 8, "new text 8")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#5.e) "T" with error in T generates in binlog an "empty" entry.
|
|
#
|
|
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1");
|
|
INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1"), ("new text -22", -22, "new text -22");
|
|
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
|
INSERT INTO tt_1 VALUES ("new text -23", -23, "new text -23"), ("new text -1", -1, "new text -1");
|
|
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -1", -1, "new text -1")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#6) "N" generates in binlog the "N" entry.
|
|
#
|
|
INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9");
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 9", 9, "new text 9")
|
|
|
|
|
|
|
|
|
|
#
|
|
#6.e) "N" with error in N generates in binlog an empty entry if the error
|
|
# happens in the first tuple. Otherwise, generates the "N" entry and
|
|
# the error is appended.
|
|
#
|
|
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
|
|
INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1");
|
|
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
|
INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1");
|
|
ERROR 23000: Duplicate entry '-1' for key 'PRIMARY'
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -1", -1, "new text -1")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -24", -24, "new text -24"), ("new text -1", -1, "new text -1")
|
|
|
|
|
|
|
|
|
|
#
|
|
#7) "M" generates in binglog the "B M C" entries.
|
|
#
|
|
DELETE FROM nt_1;
|
|
INSERT INTO nt_1 SELECT * FROM tt_1;
|
|
DELETE FROM tt_1;
|
|
INSERT INTO tt_1 SELECT * FROM nt_1;
|
|
INSERT INTO tt_3 VALUES ("new text 000", 000, '');
|
|
INSERT INTO tt_3 VALUES("new text 100", 100, f1());
|
|
INSERT INTO nt_4 VALUES("new text 100", 100, f1());
|
|
INSERT INTO tt_3 VALUES("new text 200", 200, f2());
|
|
INSERT INTO nt_4 VALUES ("new text 300", 300, '');
|
|
INSERT INTO nt_4 VALUES ("new text 400", 400, f1());
|
|
INSERT INTO nt_4 VALUES ("new text 500", 500, f2());
|
|
CALL pc_i_tt_3(600, "Testing...");
|
|
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 000", 000, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 100", 100, f1())
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 100", 100, f1())
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 200", 200, f2())
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 300", 300, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 400", 400, f1())
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 500", 500, f2())
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',600), NAME_CONST('x',600))
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 1", nt_4.a= "new text 1", tt_3.a= "new text 1", tt_4.a= "new text 1" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 2", tt_4.a= "new text 2", nt_3.a= "new text 2", nt_4.a = "new text 2" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 3", nt_3.a= "new text 3", nt_4.a= "new text 3", tt_4.a = "new text 3" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 4", nt_3.a= "new text 4", nt_4.a= "new text 4", tt_4.a = "new text 4" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#7.e) "M" with error in M generates in binglog the "B M R" entries.
|
|
#
|
|
INSERT INTO nt_3 VALUES ("new text -26", -26, '');
|
|
SELECT * FROM tt_3;
|
|
a b c
|
|
new text 000 0
|
|
new text 4 100 Testing...
|
|
new text 200 200 Testing...
|
|
Testing... 600 600
|
|
INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
|
|
ERROR 23000: Duplicate entry '-26' for key 'PRIMARY'
|
|
SELECT * FROM tt_3;
|
|
a b c
|
|
new text 000 0
|
|
new text 4 100 Testing...
|
|
new text 200 200 Testing...
|
|
Testing... 600 600
|
|
INSERT INTO tt_4 VALUES ("new text -26", -26, '');
|
|
SELECT * FROM nt_4;
|
|
a b c
|
|
new text 4 100 Testing...
|
|
new text 300 300
|
|
new text 400 400 Testing...
|
|
new text 500 500 Testing...
|
|
INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '');
|
|
ERROR 23000: Duplicate entry '-26' for key 'PRIMARY'
|
|
SELECT * FROM nt_4;
|
|
a b c
|
|
new text 4 100 Testing...
|
|
new text 300 300
|
|
new text 400 400 Testing...
|
|
new text 500 500 Testing...
|
|
new text -25 -25
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -26", -26, '')
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -25", -25, ''), ("new text -26", -26, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -26", -26, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -25", -25, ''), ("new text -26", -26, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
|
|
|
|
|
|
|
|
#
|
|
#8) "B N N T C" generates in binglog the "N N B T C" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10");
|
|
INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10");
|
|
INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10");
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 10", 10, "new text 10")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 10", 10, "new text 10")
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 10", 10, "new text 10")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#8.e) "B N N T R" See 6.e and 9.e.
|
|
#
|
|
|
|
|
|
|
|
|
|
#
|
|
#9) "B N N T R" generates in binlog the "N N B T R" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11");
|
|
INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11");
|
|
INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11");
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 11", 11, "new text 11")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 11", 11, "new text 11")
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 11", 11, "new text 11")
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
|
|
|
|
|
|
|
|
#
|
|
#9.e) "B N N T R" with error in N generates in binlog the "N N B T R" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25");
|
|
INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25");
|
|
INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25");
|
|
ERROR 23000: Duplicate entry '-25' for key 'PRIMARY'
|
|
INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27");
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text -25", -25, "new text -25")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text -25", -25, "new text -25")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text -26", -26, "new text -26"), ("new text -25", -25, "new text -25")
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -27", -27, "new text -27")
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
|
|
|
|
|
|
|
|
#
|
|
#10) "B N N C" generates in binglog the "N N" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12");
|
|
INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12");
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 12", 12, "new text 12")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 12", 12, "new text 12")
|
|
|
|
|
|
|
|
|
|
#
|
|
#10.e) "B N N C" See 6.e and 9.e.
|
|
#
|
|
|
|
|
|
|
|
|
|
#
|
|
#11) "B N N R" generates in binlog the "N N" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13");
|
|
INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13");
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 13", 13, "new text 13")
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 13", 13, "new text 13")
|
|
|
|
|
|
|
|
|
|
#
|
|
#11.e) "B N N R" See 6.e and 9.e.
|
|
#
|
|
|
|
|
|
|
|
|
|
#
|
|
#12) "B M T C" generates in the binlog the "B M T C" entries.
|
|
#
|
|
DELETE FROM nt_1;
|
|
BEGIN;
|
|
INSERT INTO nt_1 SELECT * FROM tt_1;
|
|
INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14");
|
|
COMMIT;
|
|
DELETE FROM tt_1;
|
|
BEGIN;
|
|
INSERT INTO tt_1 SELECT * FROM nt_1;
|
|
INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15");
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO tt_3 VALUES ("new text 700", 700, '');
|
|
INSERT INTO tt_1 VALUES ("new text 800", 800, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO tt_3 VALUES("new text 900", 900, f1());
|
|
INSERT INTO tt_1 VALUES ("new text 1000", 1000, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO tt_3 VALUES(1100, 1100, f2());
|
|
INSERT INTO tt_1 VALUES ("new text 1200", 1200, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO nt_4 VALUES ("new text 1300", 1300, '');
|
|
INSERT INTO tt_1 VALUES ("new text 1400", 1400, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO nt_4 VALUES("new text 1500", 1500, f1());
|
|
INSERT INTO tt_1 VALUES ("new text 1600", 1600, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO nt_4 VALUES("new text 1700", 1700, f2());
|
|
INSERT INTO tt_1 VALUES ("new text 1800", 1800, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
CALL pc_i_tt_3(1900, "Testing...");
|
|
INSERT INTO tt_1 VALUES ("new text 2000", 2000, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 2100", 2100, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 2200", 2200, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 2300", 2300, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 2400", 2400, '');
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 14", 14, "new text 14")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 15", 15, "new text 15")
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 700", 700, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 800", 800, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 900", 900, f1())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1000", 1000, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES(1100, 1100, f2())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1200", 1200, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 1300", 1300, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1400", 1400, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 1500", 1500, f1())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1600", 1600, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 1700", 1700, f2())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 1800", 1800, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',1900), NAME_CONST('x',1900))
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2000", 2000, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 5", nt_4.a= "new text 5", tt_3.a= "new text 5", tt_4.a= "new text 5" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2100", 2100, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 6", tt_4.a= "new text 6", nt_3.a= "new text 6", nt_4.a = "new text 6" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2200", 2200, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 7", nt_3.a= "new text 7", nt_4.a= "new text 7", tt_4.a = "new text 7" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2300", 2300, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 8", nt_3.a= "new text 8", nt_4.a= "new text 8", tt_4.a = "new text 8" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2400", 2400, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#12.e) "B M T C" with error in M generates in the binlog the "B M T C" entries.
|
|
#
|
|
# There is a bug in the slave that needs to be fixed before enabling
|
|
# this part of the test. A bug report will be filed referencing this
|
|
# test case.
|
|
BEGIN;
|
|
INSERT INTO nt_3 VALUES ("new text -28", -28, '');
|
|
INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
|
|
ERROR 23000: Duplicate entry '-28' for key 'PRIMARY'
|
|
INSERT INTO tt_1 VALUES ("new text -27", -27, '');
|
|
COMMIT;
|
|
BEGIN;
|
|
INSERT INTO tt_4 VALUES ("new text -28", -28, '');
|
|
INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '');
|
|
ERROR 23000: Duplicate entry '-28' for key 'PRIMARY'
|
|
INSERT INTO tt_1 VALUES ("new text -28", -28, '');
|
|
COMMIT;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -28", -28, '')
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -27", -27, ''), ("new text -28", -28, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -27", -27, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -28", -28, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -27", -27, ''), ("new text -28", -28, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -28", -28, '')
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
|
|
|
|
|
|
|
|
#
|
|
#13) "B M T R" generates in the binlog the "B M T R" entries
|
|
#
|
|
DELETE FROM nt_1;
|
|
BEGIN;
|
|
INSERT INTO nt_1 SELECT * FROM tt_1;
|
|
INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17");
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
DELETE FROM tt_1;
|
|
BEGIN;
|
|
INSERT INTO tt_1 SELECT * FROM nt_1;
|
|
INSERT INTO tt_2 VALUES ("new text 18", 18, "new text 18");
|
|
ROLLBACK;
|
|
INSERT INTO tt_1 SELECT * FROM nt_1;
|
|
BEGIN;
|
|
INSERT INTO tt_3 VALUES ("new text 2500", 2500, '');
|
|
INSERT INTO tt_1 VALUES ("new text 2600", 2600, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO tt_3 VALUES("new text 2700", 2700, f1());
|
|
INSERT INTO tt_1 VALUES ("new text 2800", 2800, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO tt_3 VALUES(2900, 2900, f2());
|
|
INSERT INTO tt_1 VALUES ("new text 3000", 3000, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO nt_4 VALUES ("new text 3100", 3100, '');
|
|
INSERT INTO tt_1 VALUES ("new text 3200", 3200, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO nt_4 VALUES("new text 3300", 3300, f1());
|
|
INSERT INTO tt_1 VALUES ("new text 3400", 3400, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO nt_4 VALUES("new text 3500", 3500, f2());
|
|
INSERT INTO tt_1 VALUES ("new text 3600", 3600, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
CALL pc_i_tt_3(3700, "Testing...");
|
|
INSERT INTO tt_1 VALUES ("new text 3700", 3700, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 3800", 3800, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 3900", 3900, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 4000", 4000, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100;
|
|
INSERT INTO tt_1 VALUES ("new text 4100", 4100, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; DELETE FROM nt_1
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 SELECT * FROM tt_1
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 17", 17, "new text 17")
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; DELETE FROM tt_1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 SELECT * FROM nt_1
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text 2500", 2500, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2600", 2600, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES("new text 2700", 2700, f1())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 2800", 2800, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES(2900, 2900, f2())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3000", 3000, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text 3100", 3100, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3200", 3200, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 3300", 3300, f1())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3400", 3400, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES("new text 3500", 3500, f2())
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3600", 3600, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',3700), NAME_CONST('x',3700))
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3700", 3700, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE nt_3, nt_4, tt_3, tt_4 SET nt_3.a= "new text 9", nt_4.a= "new text 9", tt_3.a= "new text 9", tt_4.a= "new text 9" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3800", 3800, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, tt_4, nt_3, nt_4 SET tt_3.a= "new text 10", tt_4.a= "new text 10", nt_3.a= "new text 10", nt_4.a = "new text 10" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 3900", 3900, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 11", nt_3.a= "new text 11", nt_4.a= "new text 11", tt_4.a = "new text 11" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4000", 4000, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; UPDATE tt_3, nt_3, nt_4, tt_4 SET tt_3.a= "new text 12", nt_3.a= "new text 12", nt_4.a= "new text 12", tt_4.a = "new text 12" where nt_3.b = nt_4.b and nt_4.b = tt_3.b and tt_3.b = tt_4.b and tt_4.b = 100
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 4100", 4100, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
|
|
|
|
|
|
|
|
#
|
|
#13.e) "B M T R" with error in M generates in the binlog the "B M T R" entries.
|
|
#
|
|
BEGIN;
|
|
INSERT INTO nt_3 VALUES ("new text -30", -30, '');
|
|
INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
|
|
ERROR 23000: Duplicate entry '-30' for key 'PRIMARY'
|
|
INSERT INTO tt_1 VALUES ("new text -30", -30, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
BEGIN;
|
|
INSERT INTO tt_4 VALUES ("new text -30", -30, '');
|
|
INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '');
|
|
ERROR 23000: Duplicate entry '-30' for key 'PRIMARY'
|
|
INSERT INTO tt_1 VALUES ("new text -31", -31, '');
|
|
ROLLBACK;
|
|
Warnings:
|
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_3 VALUES ("new text -30", -30, '')
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_3 VALUES ("new text -29", -29, ''), ("new text -30", -30, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -30", -30, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_4 VALUES ("new text -30", -30, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO nt_4 VALUES ("new text -29", -29, ''), ("new text -30", -30, '')
|
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text -31", -31, '')
|
|
master-bin.000001 # Query # # ROLLBACK
|
|
###################################################################################
|
|
# CLEAN
|
|
###################################################################################
|
|
DROP TABLE tt_1;
|
|
DROP TABLE tt_2;
|
|
DROP TABLE tt_3;
|
|
DROP TABLE tt_4;
|
|
DROP TABLE nt_1;
|
|
DROP TABLE nt_2;
|
|
DROP TABLE nt_3;
|
|
DROP TABLE nt_4;
|
|
DROP PROCEDURE pc_i_tt_3;
|
|
DROP FUNCTION f1;
|
|
DROP FUNCTION f2;
|