mirror of
https://github.com/MariaDB/server.git
synced 2025-08-23 03:54:27 +03:00
The main.merge test case was failing when tested using row based binlog format. While analyzing the issue it was found the following issues: a) The server is calling binlog related code even when a statement will not be binlogged; b) The child table list was not present into table structure by the time to generate the create table statement; c) The tables in the child table list will not be opened yet when generating table create info using row based replication; d) CREATE TABLE LIKE TEMP_TABLE does not preserve original table storage engine when using row based replication; This patch addressed all above issues. @ sql/sql_class.h Added a function to determine if the binary log is disabled to the current session. This is related with issue (a) above. @ sql/sql_table.cc Added code to skip binary logging related code if the statement will not be binlogged. This is related with issue (a) above. Added code to add the children to the query list of the table that will have its CREATE TABLE generated. This is related with issue (b) above. Added code to force the storage engine to be generated into the CREATE TABLE. This is related with issue (d) above. @ storage/myisammrg/ha_myisammrg.cc Added a test to skip a table getting info about a child table if the child table is not opened. This is related to issue (c) above.
18 lines
684 B
Plaintext
18 lines
684 B
Plaintext
include/master-slave.inc
|
|
[connection master]
|
|
CREATE TABLE t1 (a int) ENGINE=MyISAM;
|
|
CREATE TABLE t2 (a int) ENGINE=MyISAM;
|
|
INSERT INTO t1 VALUES (1), (2), (3);
|
|
INSERT INTO t2 VALUES (4), (5), (6);
|
|
CREATE TEMPORARY TABLE IF NOT EXISTS tt1_merge LIKE t1;
|
|
ALTER TABLE tt1_merge ENGINE=MERGE UNION (t2, t1);
|
|
CREATE TABLE t1_merge LIKE tt1_merge;
|
|
include/diff_tables.inc [master:test.t1, slave:test.t1]
|
|
include/diff_tables.inc [master:test.t2, slave:test.t2]
|
|
UPDATE t1_merge SET a=10 WHERE a=1;
|
|
DELETE FROM t1_merge WHERE a=10;
|
|
include/diff_tables.inc [master:test.t1, slave:test.t1]
|
|
include/diff_tables.inc [master:test.t2, slave:test.t2]
|
|
DROP TABLE t1_merge, t1, t2;
|
|
include/rpl_end.inc
|