include/master-slave.inc [connection master] CREATE TABLE tmyisam (a int) ENGINE = MYISAM; CREATE TABLE tinnodb (a int) ENGINE = INNODB; CREATE TABLE tndb (a int) ENGINE = NDB; SHOW CREATE TABLE tmyisam; Table Create Table tmyisam CREATE TABLE `tmyisam` ( `a` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 SHOW CREATE TABLE tinnodb; Table Create Table tinnodb CREATE TABLE `tinnodb` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 SHOW CREATE TABLE tndb; Table Create Table tndb CREATE TABLE `tndb` ( `a` int(11) DEFAULT NULL ) ENGINE=ndbcluster DEFAULT CHARSET=latin1 [on master] ==== Single-engine transactions ==== ---- autocommitted ---- SET AUTOCOMMIT = 1; INSERT INTO tmyisam VALUES (0); INSERT INTO tinnodb VALUES (1); INSERT INTO tndb VALUES (2); ---- committed with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (3); INSERT INTO tmyisam VALUES (4); COMMIT; BEGIN; INSERT INTO tinnodb VALUES (5); INSERT INTO tinnodb VALUES (6); COMMIT; BEGIN; INSERT INTO tndb VALUES (7); INSERT INTO tndb VALUES (8); COMMIT; ---- rolled back with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (9); INSERT INTO tmyisam VALUES (10); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tinnodb VALUES (11); INSERT INTO tinnodb VALUES (12); ROLLBACK; BEGIN; INSERT INTO tndb VALUES (13); INSERT INTO tndb VALUES (14); ROLLBACK; ---- committed with AUTOCOMMIT = 0 ---- SET AUTOCOMMIT = 0; INSERT INTO tmyisam VALUES (15); INSERT INTO tmyisam VALUES (16); COMMIT; INSERT INTO tinnodb VALUES (17); INSERT INTO tinnodb VALUES (18); COMMIT; INSERT INTO tndb VALUES (19); INSERT INTO tndb VALUES (20); COMMIT; ---- rolled back with AUTOCOMMIT = 0 ---- INSERT INTO tmyisam VALUES (21); INSERT INTO tmyisam VALUES (22); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tinnodb VALUES (23); INSERT INTO tinnodb VALUES (24); ROLLBACK; INSERT INTO tndb VALUES (25); INSERT INTO tndb VALUES (26); ROLLBACK; SET AUTOCOMMIT = 1; ==== MyISAM + InnoDB ==== ---- committed with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (27); INSERT INTO tinnodb VALUES (28); COMMIT; BEGIN; INSERT INTO tinnodb VALUES (29); INSERT INTO tmyisam VALUES (30); COMMIT; ---- rolled back with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (31); INSERT INTO tinnodb VALUES (32); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tinnodb VALUES (33); INSERT INTO tmyisam VALUES (34); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back ---- committed with AUTOCOMMIT = 0 ---- SET AUTOCOMMIT = 0; INSERT INTO tmyisam VALUES (35); INSERT INTO tinnodb VALUES (36); COMMIT; INSERT INTO tinnodb VALUES (37); INSERT INTO tmyisam VALUES (38); COMMIT; ---- rolled back with AUTOCOMMIT = 0 ---- INSERT INTO tmyisam VALUES (39); INSERT INTO tinnodb VALUES (40); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tinnodb VALUES (41); INSERT INTO tmyisam VALUES (42); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back SET AUTOCOMMIT = 1; ==== MyISAM + NDB ==== ---- committed with BEGIN---- BEGIN; INSERT INTO tmyisam VALUES (43); INSERT INTO tndb VALUES (44); COMMIT; BEGIN; INSERT INTO tndb VALUES (45); INSERT INTO tmyisam VALUES (46); COMMIT; ---- rolled back with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (47); INSERT INTO tndb VALUES (48); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tndb VALUES (49); INSERT INTO tmyisam VALUES (50); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back ---- committed with AUTOCOMMIT = 0 ---- SET AUTOCOMMIT = 0; INSERT INTO tmyisam VALUES (51); INSERT INTO tndb VALUES (52); COMMIT; INSERT INTO tndb VALUES (53); INSERT INTO tmyisam VALUES (54); COMMIT; ---- rolled back with AUTOCOMMIT = 0 ---- INSERT INTO tmyisam VALUES (55); INSERT INTO tndb VALUES (56); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tndb VALUES (57); INSERT INTO tmyisam VALUES (58); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back SET AUTOCOMMIT = 1; ==== InnoDB + NDB ==== ---- committed with BEGIN ---- BEGIN; INSERT INTO tinnodb VALUES (59); INSERT INTO tndb VALUES (60); COMMIT; BEGIN; INSERT INTO tndb VALUES (61); INSERT INTO tinnodb VALUES (62); COMMIT; ---- rolled back with BEGIN ---- BEGIN; INSERT INTO tinnodb VALUES (63); INSERT INTO tndb VALUES (64); ROLLBACK; BEGIN; INSERT INTO tndb VALUES (65); INSERT INTO tinnodb VALUES (66); ROLLBACK; ---- committed with AUTOCOMMIT = 0 ---- SET AUTOCOMMIT = 0; INSERT INTO tinnodb VALUES (67); INSERT INTO tndb VALUES (68); COMMIT; INSERT INTO tndb VALUES (69); INSERT INTO tinnodb VALUES (70); COMMIT; ---- rolled back with AUTOCOMMIT = 0 ---- INSERT INTO tinnodb VALUES (71); INSERT INTO tndb VALUES (72); ROLLBACK; INSERT INTO tndb VALUES (73); INSERT INTO tinnodb VALUES (74); ROLLBACK; SET AUTOCOMMIT = 1; ==== MyISAM + InnoDB + NDB ==== ---- committed with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (75); INSERT INTO tinnodb VALUES (76); INSERT INTO tndb VALUES (77); COMMIT; BEGIN; INSERT INTO tmyisam VALUES (78); INSERT INTO tndb VALUES (79); INSERT INTO tinnodb VALUES (80); COMMIT; BEGIN; INSERT INTO tinnodb VALUES (81); INSERT INTO tmyisam VALUES (82); INSERT INTO tndb VALUES (83); COMMIT; BEGIN; INSERT INTO tinnodb VALUES (84); INSERT INTO tndb VALUES (85); INSERT INTO tmyisam VALUES (86); COMMIT; BEGIN; INSERT INTO tndb VALUES (87); INSERT INTO tmyisam VALUES (88); INSERT INTO tinnodb VALUES (89); COMMIT; BEGIN; INSERT INTO tndb VALUES (90); INSERT INTO tinnodb VALUES (91); INSERT INTO tmyisam VALUES (92); COMMIT; ---- rolled back with BEGIN ---- BEGIN; INSERT INTO tmyisam VALUES (93); INSERT INTO tinnodb VALUES (94); INSERT INTO tndb VALUES (95); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tmyisam VALUES (96); INSERT INTO tndb VALUES (97); INSERT INTO tinnodb VALUES (98); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tinnodb VALUES (99); INSERT INTO tmyisam VALUES (100); INSERT INTO tndb VALUES (101); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tinnodb VALUES (102); INSERT INTO tndb VALUES (103); INSERT INTO tmyisam VALUES (104); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tndb VALUES (105); INSERT INTO tmyisam VALUES (106); INSERT INTO tinnodb VALUES (107); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back BEGIN; INSERT INTO tndb VALUES (108); INSERT INTO tinnodb VALUES (109); INSERT INTO tmyisam VALUES (110); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back ---- committed with AUTOCOMMIT = 0 ---- SET AUTOCOMMIT = 0; INSERT INTO tmyisam VALUES (111); INSERT INTO tinnodb VALUES (112); INSERT INTO tndb VALUES (113); COMMIT; INSERT INTO tmyisam VALUES (114); INSERT INTO tndb VALUES (115); INSERT INTO tinnodb VALUES (116); COMMIT; INSERT INTO tinnodb VALUES (117); INSERT INTO tmyisam VALUES (118); INSERT INTO tndb VALUES (119); COMMIT; INSERT INTO tinnodb VALUES (120); INSERT INTO tndb VALUES (121); INSERT INTO tmyisam VALUES (122); COMMIT; INSERT INTO tndb VALUES (123); INSERT INTO tmyisam VALUES (124); INSERT INTO tinnodb VALUES (125); COMMIT; INSERT INTO tndb VALUES (126); INSERT INTO tinnodb VALUES (127); INSERT INTO tmyisam VALUES (128); COMMIT; ---- rolled back with AUTOCOMMIT = 0 ---- INSERT INTO tmyisam VALUES (129); INSERT INTO tinnodb VALUES (130); INSERT INTO tndb VALUES (131); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tmyisam VALUES (132); INSERT INTO tndb VALUES (133); INSERT INTO tinnodb VALUES (134); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tinnodb VALUES (135); INSERT INTO tmyisam VALUES (136); INSERT INTO tndb VALUES (137); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tinnodb VALUES (138); INSERT INTO tndb VALUES (139); INSERT INTO tmyisam VALUES (140); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tndb VALUES (141); INSERT INTO tmyisam VALUES (142); INSERT INTO tinnodb VALUES (143); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back INSERT INTO tndb VALUES (144); INSERT INTO tinnodb VALUES (145); INSERT INTO tmyisam VALUES (146); ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back SET AUTOCOMMIT = 1; ---- Mixed statements Innodb ---- BEGIN; INSERT INTO tndb VALUES (147); INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; COMMIT; INSERT INTO tndb VALUES (148); BEGIN; INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; INSERT INTO tndb VALUES (149); COMMIT; BEGIN; INSERT INTO tndb VALUES (150); INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; COMMIT; INSERT INTO tndb VALUES (151); BEGIN; INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; INSERT INTO tndb VALUES (152); COMMIT; ==== Verify the result ==== SELECT * FROM tmyisam ORDER BY a; a 0 3 4 9 10 15 16 21 22 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 75 78 82 86 88 92 93 96 100 104 106 110 111 114 118 122 124 128 129 132 136 140 142 146 150 151 SELECT * FROM tinnodb ORDER BY a; a 1 5 6 17 18 28 29 36 37 59 62 67 70 76 80 81 84 89 91 112 116 117 120 125 127 147 148 SELECT * FROM tndb ORDER BY a; a 2 7 8 19 20 44 45 52 53 60 61 68 69 77 79 83 85 87 90 113 115 119 121 123 126 147 148 149 150 151 152 [on slave] include/diff_tables.inc [master:tmyisam, slave:tmyisam] include/diff_tables.inc [master:tinnodb, slave:tinnodb] include/diff_tables.inc [master:tndb, slave:tndb] ==== Clean up ==== [on master] DROP TABLE tmyisam, tinnodb, tndb; [on slave] include/rpl_end.inc