mirror of
https://github.com/MariaDB/server.git
synced 2025-02-15 18:05:32 +01:00
![Venkatesh Duggirala](/assets/img/avatar_default.png)
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.
52 lines
1.4 KiB
Text
52 lines
1.4 KiB
Text
#
|
|
# BUG#47103
|
|
#
|
|
# This test case checks whether the slave crashes or not when there is
|
|
# a merge table in use.
|
|
#
|
|
# Description
|
|
# ===========
|
|
#
|
|
# The test case creates two regular MyISAM tables on the master and
|
|
# one MERGE table. Then it populates the MyISAM tables, updates and
|
|
# deletes their contents through the merge table. Finally, the slave
|
|
# is synchronized with the master and (after the fix) it won't crash.
|
|
#
|
|
--source include/master-slave.inc
|
|
--source include/have_binlog_format_row.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);
|
|
# Changed a little to check also an issue reported on BUG#20574550
|
|
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;
|
|
|
|
--sync_slave_with_master
|
|
|
|
--let diff_tables=master:test.t1, slave:test.t1
|
|
--source include/diff_tables.inc
|
|
|
|
--let diff_tables=master:test.t2, slave:test.t2
|
|
--source include/diff_tables.inc
|
|
|
|
--connection master
|
|
UPDATE t1_merge SET a=10 WHERE a=1;
|
|
DELETE FROM t1_merge WHERE a=10;
|
|
|
|
--sync_slave_with_master
|
|
--connection master
|
|
|
|
--let diff_tables=master:test.t1, slave:test.t1
|
|
--source include/diff_tables.inc
|
|
|
|
--let diff_tables=master:test.t2, slave:test.t2
|
|
--source include/diff_tables.inc
|
|
|
|
DROP TABLE t1_merge, t1, t2;
|
|
--sync_slave_with_master
|
|
|
|
--source include/rpl_end.inc
|