From: Dmitry Shulga Date: November 10 2010 9:01am Subject: bzr push into mysql-5.1-bugteam branch (Dmitry.Shulga:3501 to 3502) Bug#56619 List-Archive: http://lists.mysql.com/commits/123376 X-Bug: 56619 Message-Id: <201011100901.oA9GFTh8023799@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0770497529==" --===============0770497529== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3502 Dmitry Shulga 2010-11-10 Fixed bug#56619 - Assertion failed during ALTER TABLE RENAME, DISABLE KEYS. The code of ALTER TABLE RENAME, DISABLE KEYS could issue a commit while holding LOCK_open mutex. This is a regression introduced by the fix for Bug 54453. This failed an assert guarding us against a potential deadlock with connections trying to execute FLUSH TABLES WITH READ LOCK. The fix is to move acquisition of LOCK_open outside the section that issues ha_autocommit_or_rollback(). LOCK_open is taken to protect against concurrent operations with .frms and the table definition cache, and doesn't need to cover the call to commit. A test case added to innodb_mysql.test. The patch is to be null-merged to 5.5, which already has 54453 null-merged to it. @ mysql-test/suite/innodb/r/innodb_mysql.result Added test results for test for bug#56619. @ mysql-test/suite/innodb/t/innodb_mysql.test Added test for bug#56619. @ sql/sql_table.cc mysql_alter_table() modified: moved acquisition of LOCK_open after call to ha_autocommit_or_rollback. modified: mysql-test/suite/innodb/r/innodb_mysql.result mysql-test/suite/innodb/t/innodb_mysql.test sql/sql_table.cc 3501 Dmitry Shulga 2010-11-10 Fixed Bug#57386 - main.execution_constants segfault on MIPS64EL. @ sql/item_func.cc Item_func::fix_fields modified: increased minimal required stack size in call to check_stack_overrun(). modified: sql/item_func.cc === modified file 'mysql-test/suite/innodb/r/innodb_mysql.result' --- a/mysql-test/suite/innodb/r/innodb_mysql.result 2010-10-05 08:11:56 +0000 +++ b/mysql-test/suite/innodb/r/innodb_mysql.result 2010-11-10 08:32:42 +0000 @@ -2620,3 +2620,11 @@ t2 CREATE TABLE `t2` ( CONSTRAINT `x` FOREIGN KEY (`fk`) REFERENCES `t1` (`pk`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t2, t1; +# +# Test for bug #56619 - Assertion failed during +# ALTER TABLE RENAME, DISABLE KEYS +# +DROP TABLE IF EXISTS t1, t2; +CREATE TABLE t1 (a INT, INDEX(a)) engine=innodb; +ALTER TABLE t1 RENAME TO t2, DISABLE KEYS; +DROP TABLE IF EXISTS t1, t2; === modified file 'mysql-test/suite/innodb/t/innodb_mysql.test' --- a/mysql-test/suite/innodb/t/innodb_mysql.test 2010-10-05 08:11:56 +0000 +++ b/mysql-test/suite/innodb/t/innodb_mysql.test 2010-11-10 08:32:42 +0000 @@ -845,3 +845,16 @@ create table t2 (fk int, key x (fk), constraint x foreign key (FK) references t1 (PK)) engine=InnoDB; show create table t2; drop table t2, t1; + +--echo # +--echo # Test for bug #56619 - Assertion failed during +--echo # ALTER TABLE RENAME, DISABLE KEYS +--echo # +--disable_warnings +DROP TABLE IF EXISTS t1, t2; +--enable_warnings +CREATE TABLE t1 (a INT, INDEX(a)) engine=innodb; +--disable_warnings +ALTER TABLE t1 RENAME TO t2, DISABLE KEYS; +DROP TABLE IF EXISTS t1, t2; +--enable_warnings === modified file 'sql/sql_table.cc' --- a/sql/sql_table.cc 2010-10-19 10:27:09 +0000 +++ b/sql/sql_table.cc 2010-11-10 08:32:42 +0000 @@ -6832,7 +6832,6 @@ view_err: table->alias); } - VOID(pthread_mutex_lock(&LOCK_open)); /* Unlike to the above case close_cached_table() below will remove ALL instances of TABLE from table cache (it will also remove table lock @@ -6853,6 +6852,7 @@ view_err: */ ha_autocommit_or_rollback(thd, 0); + VOID(pthread_mutex_lock(&LOCK_open)); /* Then do a 'simple' rename of the table. First we need to close all instances of 'source' table. @@ -6885,6 +6885,8 @@ view_err: } } } + else + VOID(pthread_mutex_lock(&LOCK_open)); if (error == HA_ERR_WRONG_COMMAND) { --===============0770497529== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.shulga@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.shulga@stripped\ # jxu4hukut4sku5qt # target_branch: file:///Users/shulga/projects/mysql/5.1-bugteam-\ # bug56619/ # testament_sha1: 29add7c86592467136fa7b8471e3e24df2cad228 # timestamp: 2010-11-10 15:01:27 +0600 # base_revision_id: dmitry.shulga@stripped\ # qqndtntsaes91tpl # # Begin bundle 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 dyRThQkL16uRQA== --===============0770497529==--