Browse Source
Bug #29222 Statement mode replicates both statement and rows when writing to an NDB table
Bug #29222 Statement mode replicates both statement and rows when writing to an NDB table
- only log statements locally (changes will not be logged on other servers) mysql-test/r/ndb_binlog_format.result: New BitKeeper file ``mysql-test/r/ndb_binlog_format.result'' mysql-test/t/ndb_binlog_format.test: New BitKeeper file ``mysql-test/t/ndb_binlog_format.test''pull/374/head
4 changed files with 85 additions and 8 deletions
-
30mysql-test/r/ndb_binlog_format.result
-
32mysql-test/t/ndb_binlog_format.test
-
30sql/ha_ndbcluster.cc
-
1sql/ha_ndbcluster.h
@ -0,0 +1,30 @@ |
|||
drop table if exists t1, t2, t3; |
|||
CREATE TABLE t1 (m INT, n INT) ENGINE=MYISAM; |
|||
CREATE TABLE t2 (b INT, c INT) ENGINE=BLACKHOLE; |
|||
CREATE TABLE t3 (e INT, f INT) ENGINE=NDB; |
|||
RESET MASTER; |
|||
SET SESSION BINLOG_FORMAT=STATEMENT; |
|||
INSERT INTO t1 VALUES (1,1), (1,2), (2,1), (2,2); |
|||
INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2); |
|||
UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c; |
|||
START TRANSACTION; |
|||
INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2); |
|||
UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f; |
|||
UPDATE t3, t2 SET e = 2, b = 3 WHERE f = c; |
|||
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 t1 VALUES (1,1), (1,2), (2,1), (2,2) |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2) |
|||
master-bin.000001 # Query # # use `test`; UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c |
|||
master-bin.000001 # Query # # use `test`; BEGIN |
|||
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2) |
|||
master-bin.000001 # Query # # use `test`; UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f |
|||
master-bin.000001 # Query # # use `test`; UPDATE t3, t2 SET e = 2, b = 3 WHERE f = c |
|||
master-bin.000001 # Query # # use `test`; COMMIT |
|||
master-bin.000001 # Query # # BEGIN |
|||
master-bin.000001 # Table_map # # table_id: # (test.t3) |
|||
master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) |
|||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F |
|||
master-bin.000001 # Query # # COMMIT |
|||
DROP TABLE t1, t2, t3; |
|||
@ -0,0 +1,32 @@ |
|||
# |
|||
# test different behavior of ndb using different binlog formats |
|||
# |
|||
|
|||
-- source include/have_ndb.inc |
|||
-- source include/have_log_bin.inc |
|||
|
|||
--disable_warnings |
|||
drop table if exists t1, t2, t3; |
|||
--enable_warnings |
|||
|
|||
# |
|||
# Bug #29222 Statement mode replicates both statement and |
|||
# rows when writing to an NDB table |
|||
# |
|||
CREATE TABLE t1 (m INT, n INT) ENGINE=MYISAM; |
|||
CREATE TABLE t2 (b INT, c INT) ENGINE=BLACKHOLE; |
|||
CREATE TABLE t3 (e INT, f INT) ENGINE=NDB; |
|||
RESET MASTER; |
|||
SET SESSION BINLOG_FORMAT=STATEMENT; |
|||
INSERT INTO t1 VALUES (1,1), (1,2), (2,1), (2,2); |
|||
INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2); |
|||
UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c; |
|||
# A transaction here is not necessary, but I wanted to group the bad statements |
|||
START TRANSACTION; |
|||
INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2); |
|||
UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f; |
|||
UPDATE t3, t2 SET e = 2, b = 3 WHERE f = c; |
|||
COMMIT; |
|||
--source include/show_binlog_events.inc |
|||
DROP TABLE t1, t2, t3; |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue