mariadb/mysql-test/t/rpl_row_basic_11bugs.test

184 lines
4.9 KiB
Text
Raw Normal View History

--source include/have_binlog_format_row.inc
let $SERVER_VERSION=`select version()`;
#This test case is not written for NDB, the result files
#will not match when NDB is the default engine
-- source include/not_ndb_default.inc
--source include/master-slave.inc
# Bug#15942 (RBR ignores --binlog_ignore_db and tries to map to table
# on slave for writes)
CREATE DATABASE test_ignore; # --binlog_ignore_db=mysqltest_ignore
--echo **** On Master ****
SHOW DATABASES;
USE test;
CREATE TABLE t1 (a INT, b INT);
SHOW TABLES;
INSERT INTO t1 VALUES (1,1), (2,2);
USE test_ignore;
CREATE TABLE t2 (a INT, b INT);
SHOW TABLES;
INSERT INTO t2 VALUES (3,3), (4,4);
WL#3023 (RBR: Use locks in a statement-like manner): Adaptions to make it work with NDB. mysql-test/extra/binlog_tests/binlog.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/blackhole.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/ctype_cp932.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/ctype_cp932_binlog.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/ctype_ucs_binlog.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/drop_temp_table.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/insert_select-binlog.test: Using replace_regex to remove table id. mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test: Using replace_regex to remove table id. mysql-test/extra/rpl_tests/rpl_flsh_tbls.test: Using replace_regex to remove table id. mysql-test/extra/rpl_tests/rpl_log.test: Using replace_regex to remove table id. mysql-test/extra/rpl_tests/rpl_multi_query.test: Using replace_regex to remove table id. mysql-test/extra/rpl_tests/rpl_row_charset.test: Using replace_regex to remove table id. mysql-test/extra/rpl_tests/rpl_row_delayed_ins.test: Using replace_regex to remove table id. mysql-test/extra/rpl_tests/rpl_stm_charset.test: Using replace_regex to remove table id. mysql-test/include/rpl_row_basic.inc: Removing sync with master on cleanup since there are engines that does not work in a "syncronized" fashion on dropping tables. mysql-test/r/binlog_row_binlog.result: Result change mysql-test/r/binlog_row_blackhole.result: Result change mysql-test/r/binlog_row_ctype_cp932.result: Result change mysql-test/r/binlog_row_ctype_ucs.result: Result change mysql-test/r/binlog_row_insert_select.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/ctype_cp932_binlog_row.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_row_basic_2myisam.result: Result change mysql-test/r/rpl_row_basic_3innodb.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/r/rpl_row_delayed_ins.result: Result change mysql-test/r/rpl_row_log.result: Result change mysql-test/r/rpl_row_log_innodb.result: Result change mysql-test/r/rpl_row_max_relay_size.result: Result change mysql-test/r/rpl_row_sp008.result: Result change mysql-test/t/binlog_stm_binlog.test: Using replace_regex to remove table id. mysql-test/t/ndb_binlog_ddl_multi.test: Using replace_regex to remove table id. mysql-test/t/ndb_binlog_ignore_db.test: Using replace_regex to remove table id. mysql-test/t/rpl_heap.test: Using replace_regex to remove table id. mysql-test/t/rpl_loaddata_s.test: Using replace_regex to remove table id. mysql-test/t/rpl_ndb_blob.test: Using replace_regex to remove table id. mysql-test/t/rpl_ndb_disk.test: Using replace_regex to remove table id. mysql-test/t/rpl_row_basic_11bugs.test: Using replace_regex to remove table id. mysql-test/t/rpl_row_create_table.test: Using replace_regex to remove table id. mysql-test/t/rpl_row_drop.test: Using replace_regex to remove table id. mysql-test/t/rpl_row_sp008.test: Using replace_regex to remove table id. mysql-test/t/rpl_sp.test: Using replace_regex to remove table id. mysql-test/t/sp.test: Using replace_regex to remove table id. mysql-test/t/sp_notembedded.test: Using replace_regex to remove table id. mysql-test/t/user_var-binlog.test: Using replace_regex to remove table id. sql/ha_ndbcluster_binlog.cc: Assign_new_table_id() now takes table share. Removed gratuitous friend declaration of ndb_add_binlog_index(). Turning of binlogging during execution of ndb_add_binlog_index(). sql/handler.h: Removed gratuitous friend declaration of ndb_add_binlog_index(). sql/log.cc: Adding debug printout. sql/log_event.cc: Closing thread tables on dummy event. sql/rpl_injector.cc: Added support for new locking scheme. sql/rpl_injector.h: Added support for new locking scheme.
2006-02-24 16:19:55 +01:00
--replace_regex /table_id: [0-9]+/table_id: #/
BUG#22583 (RBR between MyISAM and non-MyISAM tables containing BIT field does not work): Changing packed row format to only include null bits for those columns that are present in the row as well as writing BIT columns in a storage engine-independent format. The change in row format is incompatible with the previous format and a slave will not be able to read the new events. mysql-test/extra/rpl_tests/rpl_deadlock.test: Position change since Format_description_log_event is longer. mysql-test/extra/rpl_tests/rpl_log.test: Position change since Format_description_log_event is longer. mysql-test/extra/rpl_tests/rpl_row_charset.test: Position change since Format_description_log_event is longer. mysql-test/r/rpl_000015.result: Result change. mysql-test/r/rpl_change_master.result: Result change. mysql-test/r/rpl_deadlock_innodb.result: Result change. mysql-test/r/rpl_flushlog_loop.result: Result change. mysql-test/r/rpl_log_pos.result: Result change. mysql-test/r/rpl_row_basic_11bugs.result: Result change. mysql-test/r/rpl_row_charset.result: Result change. mysql-test/r/rpl_row_create_table.result: Result change. mysql-test/r/rpl_row_delayed_ins.result: Result change. mysql-test/r/rpl_row_drop.result: Result change. mysql-test/r/rpl_row_flsh_tbls.result: Result change. mysql-test/r/rpl_row_inexist_tbl.result: Result change. mysql-test/r/rpl_row_log.result: Result change. mysql-test/r/rpl_row_log_innodb.result: Result change. mysql-test/r/rpl_row_max_relay_size.result: Result change. mysql-test/r/rpl_row_reset_slave.result: Result change. mysql-test/r/rpl_row_until.result: Result change. mysql-test/r/rpl_server_id1.result: Result change. mysql-test/r/rpl_server_id2.result: Result change. mysql-test/r/rpl_switch_stm_row_mixed.result: Result change. mysql-test/r/rpl_truncate_2myisam.result: Result change. mysql-test/r/rpl_truncate_3innodb.result: Result change. mysql-test/t/rpl_loaddata_s.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_log_pos.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_basic_11bugs-master.opt: Adding --innodb option mysql-test/t/rpl_row_basic_11bugs.test: Testing explicitly for RBR MyISAM -> InnoDB and vice versa. Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_create_table.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_flsh_tbls.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_mysqlbinlog.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_switch_stm_row_mixed.test: Position change since Format_description_log_event is longer. mysql-test/t/user_var-binlog.test: Position change since Format_description_log_event is longer. sql/log_event.cc: Changing packed row format to only include null bits for those columns that are present in the row as well as writing BIT columns in a storage engine-independent format. Changing unpack_row() to accomodate for the changes. sql/log_event.h: Renumbering old row events and adding new codes. sql/sql_class.cc: Changing packed row format to only include null bits for those columns that are present in the row as well as writing BIT columns in a storage engine-independent format. Changing THD::pack_row() to accomodate for the changes and adding documentation. mysql-test/t/rpl_row_basic_11bugs-slave.opt: New BitKeeper file ``mysql-test/t/rpl_row_basic_11bugs-slave.opt''
2007-02-12 16:46:42 +01:00
SHOW BINLOG EVENTS FROM 105;
sync_slave_with_master;
--echo **** On Slave ****
SHOW DATABASES;
USE test;
SHOW TABLES;
--error 1049
USE test_ignore;
connection master;
DROP DATABASE test_ignore;
sync_slave_with_master;
Bug#19995 (Extreneous table maps generated for statements that do not generate rows): Switched to writing out table maps for tables that are locked when the first row in a statement is seen. mysql-test/include/master-slave.inc: Moved code to reset master and slave into separate file. mysql-test/r/binlog_row_blackhole.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/ndb_binlog_ignore_db.result: Result change mysql-test/r/rpl_ndb_charset.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/t/rpl_row_basic_11bugs.test: Added test to check that no events are generated when no rows are changed. mysql-test/t/rpl_row_create_table.test: Master log position changed sql/handler.cc: Adding function write_locked_table_maps() that will write table maps for all tables locked for write. Using "table->in_use" instead of "current_thd" since tables are now locked when the function is called. Removing old code to write table map. sql/log_event.cc: Added assertion sql/sql_class.cc: Removing code to write "dummy termination event". sql/sql_class.h: Adding getter for binlog_table_maps. sql/sql_insert.cc: Setting thd->lock before calling write_record for the execution of CREATE-SELECT and INSERT-SELECT since they keep multiple locks in the air at the same time. mysql-test/include/master-slave-reset.inc: New BitKeeper file ``mysql-test/include/master-slave-reset.inc''
2006-05-31 19:21:52 +02:00
# Bug#19995: Extreneous table maps generated for statements that does
# not generate rows
--disable_query_log
--source include/master-slave-reset.inc
--enable_query_log
connection master;
CREATE TABLE t1 (a INT);
DELETE FROM t1;
INSERT INTO t1 VALUES (1),(2);
DELETE FROM t1 WHERE a = 0;
UPDATE t1 SET a=99 WHERE a = 0;
--replace_result $SERVER_VERSION SERVER_VERSION
Bug#19995 (Extreneous table maps generated for statements that do not generate rows): Switched to writing out table maps for tables that are locked when the first row in a statement is seen. mysql-test/include/master-slave.inc: Moved code to reset master and slave into separate file. mysql-test/r/binlog_row_blackhole.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/ndb_binlog_ignore_db.result: Result change mysql-test/r/rpl_ndb_charset.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/t/rpl_row_basic_11bugs.test: Added test to check that no events are generated when no rows are changed. mysql-test/t/rpl_row_create_table.test: Master log position changed sql/handler.cc: Adding function write_locked_table_maps() that will write table maps for all tables locked for write. Using "table->in_use" instead of "current_thd" since tables are now locked when the function is called. Removing old code to write table map. sql/log_event.cc: Added assertion sql/sql_class.cc: Removing code to write "dummy termination event". sql/sql_class.h: Adding getter for binlog_table_maps. sql/sql_insert.cc: Setting thd->lock before calling write_record for the execution of CREATE-SELECT and INSERT-SELECT since they keep multiple locks in the air at the same time. mysql-test/include/master-slave-reset.inc: New BitKeeper file ``mysql-test/include/master-slave-reset.inc''
2006-05-31 19:21:52 +02:00
--replace_regex /table_id: [0-9]+/table_id: #/
SHOW BINLOG EVENTS;
DROP TABLE t1;
# BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
# slave
--echo ================ Test for BUG#17620 ================
--disable_query_log
--source include/master-slave-reset.inc
--enable_query_log
--echo **** On Slave ****
connection slave;
SET GLOBAL QUERY_CACHE_SIZE=0;
--echo **** On Master ****
connection master;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2),(3);
--echo **** On Slave ****
sync_slave_with_master;
SET GLOBAL QUERY_CACHE_SIZE=16*1024*1024;
--echo **** On Master ****
connection master;
INSERT INTO t1 VALUES (4),(5),(6);
--echo **** On Slave ****
sync_slave_with_master;
SELECT * FROM t1;
--echo **** On Master ****
connection master;
INSERT INTO t1 VALUES (7),(8),(9);
--echo **** On Slave ****
sync_slave_with_master;
SELECT * FROM t1;
# Bug#22550: Replication of BIT columns failing
--echo ================ Test for BUG#22550 ================
--disable_query_log
--source include/master-slave-reset.inc
--enable_query_log
connection master;
CREATE TABLE t1 (a BIT(1), b INT) ENGINE=MYISAM;
sync_slave_with_master;
connection master;
INSERT INTO t1 VALUES(1,2);
SELECT HEX(a),b FROM t1;
sync_slave_with_master;
SELECT HEX(a),b FROM t1;
connection master;
UPDATE t1 SET a=0 WHERE b=2;
SELECT HEX(a),b FROM t1;
sync_slave_with_master;
SELECT HEX(a),b FROM t1;
BUG#22583 (RBR between MyISAM and non-MyISAM tables containing BIT field does not work): Changing packed row format to only include null bits for those columns that are present in the row as well as writing BIT columns in a storage engine-independent format. The change in row format is incompatible with the previous format and a slave will not be able to read the new events. mysql-test/extra/rpl_tests/rpl_deadlock.test: Position change since Format_description_log_event is longer. mysql-test/extra/rpl_tests/rpl_log.test: Position change since Format_description_log_event is longer. mysql-test/extra/rpl_tests/rpl_row_charset.test: Position change since Format_description_log_event is longer. mysql-test/r/rpl_000015.result: Result change. mysql-test/r/rpl_change_master.result: Result change. mysql-test/r/rpl_deadlock_innodb.result: Result change. mysql-test/r/rpl_flushlog_loop.result: Result change. mysql-test/r/rpl_log_pos.result: Result change. mysql-test/r/rpl_row_basic_11bugs.result: Result change. mysql-test/r/rpl_row_charset.result: Result change. mysql-test/r/rpl_row_create_table.result: Result change. mysql-test/r/rpl_row_delayed_ins.result: Result change. mysql-test/r/rpl_row_drop.result: Result change. mysql-test/r/rpl_row_flsh_tbls.result: Result change. mysql-test/r/rpl_row_inexist_tbl.result: Result change. mysql-test/r/rpl_row_log.result: Result change. mysql-test/r/rpl_row_log_innodb.result: Result change. mysql-test/r/rpl_row_max_relay_size.result: Result change. mysql-test/r/rpl_row_reset_slave.result: Result change. mysql-test/r/rpl_row_until.result: Result change. mysql-test/r/rpl_server_id1.result: Result change. mysql-test/r/rpl_server_id2.result: Result change. mysql-test/r/rpl_switch_stm_row_mixed.result: Result change. mysql-test/r/rpl_truncate_2myisam.result: Result change. mysql-test/r/rpl_truncate_3innodb.result: Result change. mysql-test/t/rpl_loaddata_s.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_log_pos.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_basic_11bugs-master.opt: Adding --innodb option mysql-test/t/rpl_row_basic_11bugs.test: Testing explicitly for RBR MyISAM -> InnoDB and vice versa. Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_create_table.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_flsh_tbls.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_row_mysqlbinlog.test: Position change since Format_description_log_event is longer. mysql-test/t/rpl_switch_stm_row_mixed.test: Position change since Format_description_log_event is longer. mysql-test/t/user_var-binlog.test: Position change since Format_description_log_event is longer. sql/log_event.cc: Changing packed row format to only include null bits for those columns that are present in the row as well as writing BIT columns in a storage engine-independent format. Changing unpack_row() to accomodate for the changes. sql/log_event.h: Renumbering old row events and adding new codes. sql/sql_class.cc: Changing packed row format to only include null bits for those columns that are present in the row as well as writing BIT columns in a storage engine-independent format. Changing THD::pack_row() to accomodate for the changes and adding documentation. mysql-test/t/rpl_row_basic_11bugs-slave.opt: New BitKeeper file ``mysql-test/t/rpl_row_basic_11bugs-slave.opt''
2007-02-12 16:46:42 +01:00
connection master;
DROP TABLE IF EXISTS t1;
sync_slave_with_master;
# BUG#22583: RBR between MyISAM and non-MyISAM tables containing a BIT
# field does not work
--echo ================ Test for BUG#22583 ================
--disable_query_log
--source include/master-slave-reset.inc
--enable_query_log
--echo **** On Master ****
connection master;
CREATE TABLE t1_myisam (k INT, a BIT(1), b BIT(9)) ENGINE=MYISAM;
CREATE TABLE t1_innodb (k INT, a BIT(1), b BIT(9)) ENGINE=INNODB;
CREATE TABLE t2_myisam (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=MYISAM;
CREATE TABLE t2_innodb (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=INNODB;
--echo **** On Slave ****
sync_slave_with_master;
ALTER TABLE t1_myisam ENGINE=INNODB;
ALTER TABLE t1_innodb ENGINE=MYISAM;
ALTER TABLE t2_myisam ENGINE=INNODB;
ALTER TABLE t2_innodb ENGINE=MYISAM;
--echo **** On Master ****
connection master;
INSERT INTO t1_myisam VALUES(1, b'0', 257);
INSERT INTO t1_myisam VALUES(2, b'1', 256);
INSERT INTO t1_innodb VALUES(1, b'0', 257);
INSERT INTO t1_innodb VALUES(2, b'1', 256);
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
INSERT INTO t2_myisam VALUES(1, b'0', 9);
INSERT INTO t2_myisam VALUES(2, b'1', 8);
INSERT INTO t2_innodb VALUES(1, b'0', 9);
INSERT INTO t2_innodb VALUES(2, b'1', 8);
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
--echo **** On Slave ****
sync_slave_with_master;
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
--echo **** On Master ****
connection master;
UPDATE t1_myisam SET a=0 WHERE k=2;
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
UPDATE t1_innodb SET a=0 WHERE k=2;
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
UPDATE t2_myisam SET a=0 WHERE k=2;
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
UPDATE t2_innodb SET a=0 WHERE k=2;
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
--echo **** On Slave ****
sync_slave_with_master;
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
--echo **** On Master ****
connection master;
DROP TABLE IF EXISTS t1_myisam, t1_innodb, t2_myisam, t2_innodb;
sync_slave_with_master;