mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
537c23e833
This patch adds the ability to store extra field metadata in the table map event. This data can include pack_length() or field_lenght() for fields such as CHAR or VARCHAR enabling developers to add code that can check for compatibilty between master and slave columns. More importantly, the extra field metadata can be used to store data from the master correctly should a VARCHAR field on the master be <= 255 bytes while the same field on the slave is > 255 bytes. The patch also includes the needed changes to unpack to ensure that data which is smaller on the master can be unpacked correctly on the slave. WL#3915 : (NDB) master's cols > slave Slave starts accepting and handling rows of master's tables which have more columns. The most important part of implementation is how to caclulate the amount of bytes to skip for unknown by slave column.
91 lines
3.2 KiB
Text
91 lines
3.2 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;
|
|
**** On Master ****
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
|
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
1 1
|
|
2 2
|
|
**** On Slave ****
|
|
INSERT INTO t1 VALUE (3,3);
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
1 1
|
|
2 2
|
|
3 3
|
|
**** On Master ****
|
|
TRUNCATE TABLE t1;
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
**** On Slave ****
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
**** On Master ****
|
|
DROP TABLE t1;
|
|
SHOW BINLOG EVENTS;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
|
|
master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
|
|
master-bin.000001 223 Query 1 287 BEGIN
|
|
master-bin.000001 287 Table_map 1 330 table_id: # (test.t1)
|
|
master-bin.000001 330 Table_map 1 392 table_id: # (mysql.ndb_apply_status)
|
|
master-bin.000001 392 Write_rows 1 451 table_id: #
|
|
master-bin.000001 451 Write_rows 1 498 table_id: # flags: STMT_END_F
|
|
master-bin.000001 498 Query 1 563 COMMIT
|
|
master-bin.000001 563 Query 1 643 use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 643 Query 1 719 use `test`; DROP TABLE t1
|
|
**** On Master ****
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
|
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
1 1
|
|
2 2
|
|
**** On Slave ****
|
|
INSERT INTO t1 VALUE (3,3);
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
1 1
|
|
2 2
|
|
3 3
|
|
**** On Master ****
|
|
DELETE FROM t1;
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
**** On Slave ****
|
|
SELECT * FROM t1 ORDER BY a,b;
|
|
a b
|
|
3 3
|
|
**** On Master ****
|
|
DROP TABLE t1;
|
|
SHOW BINLOG EVENTS;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
|
|
master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
|
|
master-bin.000001 223 Query 1 287 BEGIN
|
|
master-bin.000001 287 Table_map 1 330 table_id: # (test.t1)
|
|
master-bin.000001 330 Table_map 1 392 table_id: # (mysql.ndb_apply_status)
|
|
master-bin.000001 392 Write_rows 1 451 table_id: #
|
|
master-bin.000001 451 Write_rows 1 498 table_id: # flags: STMT_END_F
|
|
master-bin.000001 498 Query 1 563 COMMIT
|
|
master-bin.000001 563 Query 1 643 use `test`; TRUNCATE TABLE t1
|
|
master-bin.000001 643 Query 1 719 use `test`; DROP TABLE t1
|
|
master-bin.000001 719 Query 1 836 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
|
|
master-bin.000001 836 Query 1 900 BEGIN
|
|
master-bin.000001 900 Table_map 1 943 table_id: # (test.t1)
|
|
master-bin.000001 943 Table_map 1 1005 table_id: # (mysql.ndb_apply_status)
|
|
master-bin.000001 1005 Write_rows 1 1064 table_id: #
|
|
master-bin.000001 1064 Write_rows 1 1111 table_id: # flags: STMT_END_F
|
|
master-bin.000001 1111 Query 1 1176 COMMIT
|
|
master-bin.000001 1176 Query 1 1240 BEGIN
|
|
master-bin.000001 1240 Table_map 1 1283 table_id: # (test.t1)
|
|
master-bin.000001 1283 Table_map 1 1345 table_id: # (mysql.ndb_apply_status)
|
|
master-bin.000001 1345 Write_rows 1 1404 table_id: #
|
|
master-bin.000001 1404 Delete_rows 1 1443 table_id: # flags: STMT_END_F
|
|
master-bin.000001 1443 Query 1 1508 COMMIT
|
|
master-bin.000001 1508 Query 1 1584 use `test`; DROP TABLE t1
|