From: Jon Olav Hauglid Date: March 9 2011 1:45pm Subject: bzr commit into mysql-5.5 branch (jon.hauglid:3378) Bug#11815600 List-Archive: http://lists.mysql.com/commits/132675 X-Bug: 11815600 Message-Id: <201103091347.p29AEOnQ014642@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5313131964833924283==" --===============5313131964833924283== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-5.5-bug11815600/ based on revid:marc.alff@stripped 3378 Jon Olav Hauglid 2011-03-09 Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY KEY NO 0 FOR TABLE IN ERROR LOG With the changes made by the patches for Bug#11751388 and Bug#11784056, concurrent reads are allowed while secondary indexes are created in InnoDB. This means that the metadata lock on the affected table is not upgraded to exclusive until the .FRM is updated at the end of ALTER TABLE processing. The problem was that if this lock upgrade failed for some reason (e.g. timeout), the index information in the server and inside InnoDB would be out of sync. This would happen since the add index operation already was committed inside InnoDB but the table metadata inside the server had not been updated yet. This patch fixes the problem by (for now) reverting the effects of the patches for Bug#11751388 and Bug#11784056. Concurrent reads will now again be blocked during creation of secondary indexes in InnoDB. Test case added to innodb_mysql_lock.test. modified: mysql-test/r/innodb_mysql_lock.result mysql-test/r/innodb_mysql_sync.result mysql-test/t/innodb_mysql_lock.test mysql-test/t/innodb_mysql_sync.test storage/innobase/handler/ha_innodb.cc === modified file 'mysql-test/r/innodb_mysql_lock.result' --- a/mysql-test/r/innodb_mysql_lock.result 2010-06-26 20:23:28 +0000 +++ b/mysql-test/r/innodb_mysql_lock.result 2011-03-09 13:45:05 +0000 @@ -148,3 +148,25 @@ COMMIT; # Connection default DROP TABLE t1, t2; DROP VIEW v1; +# +# Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY +# KEY NO 0 FOR TABLE IN ERROR LOG +# +DROP TABLE IF EXISTS t1; +# Connection default +CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB; +INSERT INTO t1 VALUES (1, 12345); +START TRANSACTION; +SELECT * FROM t1; +id value +1 12345 +# Connection con1 +SET lock_wait_timeout=1; +ALTER TABLE t1 ADD INDEX idx(value); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +# Connection default +SELECT * FROM t1; +id value +1 12345 +COMMIT; +DROP TABLE t1; === modified file 'mysql-test/r/innodb_mysql_sync.result' --- a/mysql-test/r/innodb_mysql_sync.result 2011-03-07 13:30:49 +0000 +++ b/mysql-test/r/innodb_mysql_sync.result 2011-03-09 13:45:05 +0000 @@ -94,74 +94,6 @@ SET DEBUG_SYNC= 'RESET'; # Bug#42230 during add index, cannot do queries on storage engines # that implement add_index # -DROP DATABASE IF EXISTS db1; -DROP TABLE IF EXISTS t1; -# Test 1: Secondary index, should not block reads (original test case). -# Connection default -CREATE DATABASE db1; -CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb; -INSERT INTO db1.t1(value) VALUES (1), (2); -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; -# Sending: -ALTER TABLE db1.t1 ADD INDEX(value); -# Connection con1 -SET DEBUG_SYNC= "now WAIT_FOR manage"; -USE db1; -SELECT * FROM t1; -id value -1 1 -2 2 -SET DEBUG_SYNC= "now SIGNAL query"; -# Connection default -# Reaping: ALTER TABLE db1.t1 ADD INDEX(value) -DROP DATABASE db1; -# Test 2: Primary index (implicit), should block reads. -CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb; -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; -# Sending: -ALTER TABLE t1 ADD UNIQUE INDEX(a); -# Connection con1 -SET DEBUG_SYNC= "now WAIT_FOR manage"; -USE test; -# Sending: -SELECT * FROM t1; -# Connection con2 -# Waiting for SELECT to be blocked by the metadata lock on t1 -SET DEBUG_SYNC= "now SIGNAL query"; -# Connection default -# Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a) -# Connection con1 -# Reaping: SELECT * FROM t1 -a b -# Test 3: Primary index (explicit), should block reads. -# Connection default -ALTER TABLE t1 DROP INDEX a; -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; -# Sending: -ALTER TABLE t1 ADD PRIMARY KEY (a); -# Connection con1 -SET DEBUG_SYNC= "now WAIT_FOR manage"; -# Sending: -SELECT * FROM t1; -# Connection con2 -# Waiting for SELECT to be blocked by the metadata lock on t1 -SET DEBUG_SYNC= "now SIGNAL query"; -# Connection default -# Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a) -# Connection con1 -# Reaping: SELECT * FROM t1 -a b -# Test 4: Secondary unique index, should not block reads. -# Connection default -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; -# Sending: -ALTER TABLE t1 ADD UNIQUE (b); -# Connection con1 -SET DEBUG_SYNC= "now WAIT_FOR manage"; -SELECT * FROM t1; -a b -SET DEBUG_SYNC= "now SIGNAL query"; -# Connection default -# Reaping: ALTER TABLE t1 ADD UNIQUE (b) -SET DEBUG_SYNC= "RESET"; -DROP TABLE t1; +# +# DISABLED due to Bug#11815600 +# === modified file 'mysql-test/t/innodb_mysql_lock.test' --- a/mysql-test/t/innodb_mysql_lock.test 2010-08-06 11:29:37 +0000 +++ b/mysql-test/t/innodb_mysql_lock.test 2011-03-09 13:45:05 +0000 @@ -279,6 +279,38 @@ disconnect con2; disconnect con3; +--echo # +--echo # Bug#11815600 [ERROR] INNODB COULD NOT FIND INDEX PRIMARY +--echo # KEY NO 0 FOR TABLE IN ERROR LOG +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +--connect (con1,localhost,root) + +--echo # Connection default +connection default; +CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB; +INSERT INTO t1 VALUES (1, 12345); +START TRANSACTION; +SELECT * FROM t1; + +--echo # Connection con1 +--connection con1 +SET lock_wait_timeout=1; +--error ER_LOCK_WAIT_TIMEOUT +ALTER TABLE t1 ADD INDEX idx(value); + +--echo # Connection default +--connection default +SELECT * FROM t1; +COMMIT; +DROP TABLE t1; +disconnect con1; + + # Check that all connections opened by test cases in this file are really # gone so execution of other tests won't be affected by their presence. --source include/wait_until_count_sessions.inc === modified file 'mysql-test/t/innodb_mysql_sync.test' --- a/mysql-test/t/innodb_mysql_sync.test 2011-03-07 13:30:49 +0000 +++ b/mysql-test/t/innodb_mysql_sync.test 2011-03-09 13:45:05 +0000 @@ -152,129 +152,133 @@ disconnect con1; --echo # that implement add_index --echo # ---disable_warnings -DROP DATABASE IF EXISTS db1; -DROP TABLE IF EXISTS t1; ---enable_warnings - -connect(con1,localhost,root); -connect(con2,localhost,root); - ---echo # Test 1: Secondary index, should not block reads (original test case). - ---echo # Connection default -connection default; -CREATE DATABASE db1; -CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb; -INSERT INTO db1.t1(value) VALUES (1), (2); -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; ---echo # Sending: ---send ALTER TABLE db1.t1 ADD INDEX(value) - ---echo # Connection con1 -connection con1; -SET DEBUG_SYNC= "now WAIT_FOR manage"; -# Neither of these two statements should be blocked -USE db1; -SELECT * FROM t1; -SET DEBUG_SYNC= "now SIGNAL query"; - ---echo # Connection default -connection default; ---echo # Reaping: ALTER TABLE db1.t1 ADD INDEX(value) ---reap -DROP DATABASE db1; - ---echo # Test 2: Primary index (implicit), should block reads. - -CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb; -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; ---echo # Sending: ---send ALTER TABLE t1 ADD UNIQUE INDEX(a) - ---echo # Connection con1 -connection con1; -SET DEBUG_SYNC= "now WAIT_FOR manage"; -USE test; ---echo # Sending: ---send SELECT * FROM t1 - ---echo # Connection con2 -connection con2; ---echo # Waiting for SELECT to be blocked by the metadata lock on t1 -let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist - WHERE state= 'Waiting for table metadata lock' - AND info='SELECT * FROM t1'; ---source include/wait_condition.inc -SET DEBUG_SYNC= "now SIGNAL query"; - ---echo # Connection default -connection default; ---echo # Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a) ---reap - ---echo # Connection con1 -connection con1; ---echo # Reaping: SELECT * FROM t1 ---reap - ---echo # Test 3: Primary index (explicit), should block reads. - ---echo # Connection default -connection default; -ALTER TABLE t1 DROP INDEX a; -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; ---echo # Sending: ---send ALTER TABLE t1 ADD PRIMARY KEY (a) - ---echo # Connection con1 -connection con1; -SET DEBUG_SYNC= "now WAIT_FOR manage"; ---echo # Sending: ---send SELECT * FROM t1 - ---echo # Connection con2 -connection con2; ---echo # Waiting for SELECT to be blocked by the metadata lock on t1 -let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist - WHERE state= 'Waiting for table metadata lock' - AND info='SELECT * FROM t1'; ---source include/wait_condition.inc -SET DEBUG_SYNC= "now SIGNAL query"; - ---echo # Connection default -connection default; ---echo # Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a) ---reap - ---echo # Connection con1 -connection con1; ---echo # Reaping: SELECT * FROM t1 ---reap - ---echo # Test 4: Secondary unique index, should not block reads. - ---echo # Connection default -connection default; -SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; ---echo # Sending: ---send ALTER TABLE t1 ADD UNIQUE (b) - ---echo # Connection con1 -connection con1; -SET DEBUG_SYNC= "now WAIT_FOR manage"; -SELECT * FROM t1; -SET DEBUG_SYNC= "now SIGNAL query"; - ---echo # Connection default -connection default; ---echo # Reaping: ALTER TABLE t1 ADD UNIQUE (b) ---reap +--echo # +--echo # DISABLED due to Bug#11815600 +--echo # -disconnect con1; -disconnect con2; -SET DEBUG_SYNC= "RESET"; -DROP TABLE t1; +#--disable_warnings +#DROP DATABASE IF EXISTS db1; +#DROP TABLE IF EXISTS t1; +#--enable_warnings +# +#connect(con1,localhost,root); +#connect(con2,localhost,root); +# +#--echo # Test 1: Secondary index, should not block reads (original test case). +# +#--echo # Connection default +#connection default; +#CREATE DATABASE db1; +#CREATE TABLE db1.t1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value INT) engine=innodb; +#INSERT INTO db1.t1(value) VALUES (1), (2); +#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; +#--echo # Sending: +#--send ALTER TABLE db1.t1 ADD INDEX(value) +# +#--echo # Connection con1 +#connection con1; +#SET DEBUG_SYNC= "now WAIT_FOR manage"; +# # Neither of these two statements should be blocked +#USE db1; +#SELECT * FROM t1; +#SET DEBUG_SYNC= "now SIGNAL query"; +# +#--echo # Connection default +#connection default; +#--echo # Reaping: ALTER TABLE db1.t1 ADD INDEX(value) +#--reap +#DROP DATABASE db1; +# +#--echo # Test 2: Primary index (implicit), should block reads. +# +#CREATE TABLE t1(a INT NOT NULL, b INT NOT NULL) engine=innodb; +#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; +#--echo # Sending: +#--send ALTER TABLE t1 ADD UNIQUE INDEX(a) +# +#--echo # Connection con1 +#connection con1; +#SET DEBUG_SYNC= "now WAIT_FOR manage"; +#USE test; +#--echo # Sending: +#--send SELECT * FROM t1 +# +#--echo # Connection con2 +#connection con2; +#--echo # Waiting for SELECT to be blocked by the metadata lock on t1 +#let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist +# WHERE state= 'Waiting for table metadata lock' +# AND info='SELECT * FROM t1'; +#--source include/wait_condition.inc +#SET DEBUG_SYNC= "now SIGNAL query"; +# +#--echo # Connection default +#connection default; +#--echo # Reaping: ALTER TABLE t1 ADD UNIQUE INDEX(a) +#--reap +# +#--echo # Connection con1 +#connection con1; +#--echo # Reaping: SELECT * FROM t1 +#--reap +# +#--echo # Test 3: Primary index (explicit), should block reads. +# +#--echo # Connection default +#connection default; +#ALTER TABLE t1 DROP INDEX a; +#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; +#--echo # Sending: +#--send ALTER TABLE t1 ADD PRIMARY KEY (a) +# +#--echo # Connection con1 +#connection con1; +#SET DEBUG_SYNC= "now WAIT_FOR manage"; +#--echo # Sending: +#--send SELECT * FROM t1 +# +#--echo # Connection con2 +#connection con2; +#--echo # Waiting for SELECT to be blocked by the metadata lock on t1 +#let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist +# WHERE state= 'Waiting for table metadata lock' +# AND info='SELECT * FROM t1'; +#--source include/wait_condition.inc +#SET DEBUG_SYNC= "now SIGNAL query"; +# +#--echo # Connection default +#connection default; +#--echo # Reaping: ALTER TABLE t1 ADD PRIMARY KEY (a) +#--reap +# +#--echo # Connection con1 +#connection con1; +#--echo # Reaping: SELECT * FROM t1 +#--reap +# +#--echo # Test 4: Secondary unique index, should not block reads. +# +#--echo # Connection default +#connection default; +#SET DEBUG_SYNC= "alter_table_manage_keys SIGNAL manage WAIT_FOR query"; +#--echo # Sending: +#--send ALTER TABLE t1 ADD UNIQUE (b) +# +#--echo # Connection con1 +#connection con1; +#SET DEBUG_SYNC= "now WAIT_FOR manage"; +#SELECT * FROM t1; +#SET DEBUG_SYNC= "now SIGNAL query"; +# +#--echo # Connection default +#connection default; +#--echo # Reaping: ALTER TABLE t1 ADD UNIQUE (b) +#--reap +# +#disconnect con1; +#disconnect con2; +#SET DEBUG_SYNC= "RESET"; +#DROP TABLE t1; # Check that all connections opened by test cases in this file are really === modified file 'storage/innobase/handler/ha_innodb.cc' --- a/storage/innobase/handler/ha_innodb.cc 2011-03-07 13:30:49 +0000 +++ b/storage/innobase/handler/ha_innodb.cc 2011-03-09 13:45:05 +0000 @@ -2594,10 +2594,8 @@ innobase_alter_table_flags( uint flags) { return(HA_INPLACE_ADD_INDEX_NO_READ_WRITE - | HA_INPLACE_ADD_INDEX_NO_WRITE | HA_INPLACE_DROP_INDEX_NO_READ_WRITE | HA_INPLACE_ADD_UNIQUE_INDEX_NO_READ_WRITE - | HA_INPLACE_ADD_UNIQUE_INDEX_NO_WRITE | HA_INPLACE_DROP_UNIQUE_INDEX_NO_READ_WRITE | HA_INPLACE_ADD_PK_INDEX_NO_READ_WRITE); } --===============5313131964833924283== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-5.5-bug11815600/ # testament_sha1: 5c2982033c4f7db257c2bb08595bb0db57f6fbde # timestamp: 2011-03-09 14:45:08 +0100 # base_revision_id: marc.alff@stripped\ # 94sl2jmraho7yxzp # # Begin bundle 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 GtuK --===============5313131964833924283==--