From: Luis Soares Date: September 27 2009 9:20pm Subject: bzr commit into mysql-pe branch (luis.soares:3620) Bug#47312 List-Archive: http://lists.mysql.com/commits/84765 X-Bug: 47312 Message-Id: <0KQN00C3QF9DGY10@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_/DOE3/tohTXzbCqUtlQOkA)" --Boundary_(ID_/DOE3/tohTXzbCqUtlQOkA) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/lsoares/Workspace/bzr/work/bugfixing/47312/mysql-pe/ based on revid:dao-gang.qu@stripped 3620 Luis Soares 2009-09-27 [merge] BUG#47312: RBR: Disabling key on slave breaks replication: HA_ERR_WRONG_INDEX Automerge: mysql-5.1-bugteam --> mysql-pe added: mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test modified: sql/log_event.cc === added file 'mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result' --- a/mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result 2009-09-27 21:02:47 +0000 @@ -0,0 +1,26 @@ +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; +SET SQL_LOG_BIN=0; +CREATE TABLE t (a int, b int, c int, key(b)); +SET SQL_LOG_BIN=1; +CREATE TABLE t (a int, b int, c int); +INSERT INTO t VALUES (1,2,4); +INSERT INTO t VALUES (4,3,4); +DELETE FROM t; +DROP TABLE t; +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; +CREATE TABLE t (a int, b int, c int, key(b)); +ALTER TABLE t DISABLE KEYS; +INSERT INTO t VALUES (1,2,4); +INSERT INTO t VALUES (4,3,4); +DELETE FROM t; +DROP TABLE t; === added file 'mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test' --- a/mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test 2009-09-27 21:02:47 +0000 @@ -0,0 +1,73 @@ +# BUG#47312: RBR: Disabling key on slave breaks replication: +# HA_ERR_WRONG_INDEX +# +# Description +# =========== +# +# This test case checks whether disabling a key on a slave breaks +# replication or not. +# +# Case #1, shows that while not using ALTER TABLE... DISABLE KEYS and +# the slave has no key defined while the master has one, replication +# won't break. +# +# Case #2, shows that before patch for BUG#47312, if defining key on +# slave table, and later disable it, replication would break. This +# has been fixed. +# + +-- source include/master-slave.inc +-- source include/have_binlog_format_row.inc + +# +# Case #1: master has key, but slave has not. +# Replication does not break. +# + +SET SQL_LOG_BIN=0; +CREATE TABLE t (a int, b int, c int, key(b)); +SET SQL_LOG_BIN=1; + +-- connection slave + +CREATE TABLE t (a int, b int, c int); + +-- connection master + +INSERT INTO t VALUES (1,2,4); +INSERT INTO t VALUES (4,3,4); +DELETE FROM t; + +-- sync_slave_with_master + +-- connection master +DROP TABLE t; + +-- sync_slave_with_master + +# +# Case #2: master has key, slave also has one, +# but it gets disabled sometime. +# Replication does not break anymore. +# +-- source include/master-slave-reset.inc +-- connection master + +CREATE TABLE t (a int, b int, c int, key(b)); + +-- sync_slave_with_master + +ALTER TABLE t DISABLE KEYS; + +-- connection master + +INSERT INTO t VALUES (1,2,4); +INSERT INTO t VALUES (4,3,4); +DELETE FROM t; + +-- sync_slave_with_master + +-- connection master +DROP TABLE t; + +-- sync_slave_with_master === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2009-09-27 10:24:46 +0000 +++ b/sql/log_event.cc 2009-09-27 21:18:57 +0000 @@ -8930,11 +8930,11 @@ int Rows_log_event::find_row(const Relay */ store_record(table,record[1]); - if (table->s->keys > 0) + if (table->s->keys > 0 && table->s->keys_in_use.is_set(0)) { DBUG_PRINT("info",("locating record using primary key (index_read)")); - /* We have a key: search the table using the index */ + /* The 0th key is active: search the table using the index */ if (!table->file->inited && (error= table->file->ha_index_init(0, FALSE))) { DBUG_PRINT("info",("ha_index_init returns error %d",error)); --Boundary_(ID_/DOE3/tohTXzbCqUtlQOkA) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/luis.soares@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/luis.soares@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: luis.soares@stripped # target_branch: file:///home/lsoares/Workspace/bzr/work/bugfixing\ # /47312/mysql-pe/ # testament_sha1: 6ab17b484e34cfcaa91f82f00ca4a7302485db6e # timestamp: 2009-09-27 22:20:19 +0100 # source_branch: file:///home/lsoares/Workspace/bzr/work/bugfixing\ # /47312/mysql-5.1-bugteam/ # base_revision_id: dao-gang.qu@stripped\ # of79nvai6ecqye9i # # Begin bundle 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 HOjiVlRMxD/4u5IpwoSCJo14OA== --Boundary_(ID_/DOE3/tohTXzbCqUtlQOkA)--