From: Jon Olav Hauglid Date: August 10 2010 11:16am Subject: bzr commit into mysql-5.5-bugfixing branch (jon.hauglid:3098) Bug#54360 List-Archive: http://lists.mysql.com/commits/115394 X-Bug: 54360 Message-Id: <201008101117.o7AAs1Z7003770@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7389873391130064080==" --===============7389873391130064080== 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-runtime-bug54360/ based on revid:kostja@stripped 3098 Jon Olav Hauglid 2010-08-10 Followup for Bug #54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER This patch changes the code for table renames to not drop metadata locks. Since table renames are done as a part of ALTER DATABASE ... UPGRADE, dropping metadata locks in the middle of execution can result in wrong binlog order since it means that no locks are held when the binlog is written to. The RENAME TABLE statement is unafffected since it auto commits and therefore already drops metadata locks at the end of execution. This patch also reverts the regression test for Bug#48940 back to its original version. The test was temporarily changed due to the issue mentioned above. modified: mysql-test/r/schema.result mysql-test/t/mdl_sync.test mysql-test/t/schema.test sql/sql_rename.cc === modified file 'mysql-test/r/schema.result' --- a/mysql-test/r/schema.result 2010-07-19 08:27:53 +0000 +++ b/mysql-test/r/schema.result 2010-08-10 11:16:44 +0000 @@ -16,21 +16,19 @@ drop schema foo; # Bug #48940 MDL deadlocks against mysql_rm_db # DROP SCHEMA IF EXISTS schema1; -DROP SCHEMA IF EXISTS schema2; # Connection default CREATE SCHEMA schema1; -CREATE SCHEMA schema2; CREATE TABLE schema1.t1 (a INT); SET autocommit= FALSE; INSERT INTO schema1.t1 VALUES (1); # Connection 2 DROP SCHEMA schema1; # Connection default -ALTER SCHEMA schema2 DEFAULT CHARACTER SET utf8; +ALTER SCHEMA schema1 DEFAULT CHARACTER SET utf8; +Got one of the listed errors SET autocommit= TRUE; # Connection 2 # Connection default -DROP SCHEMA schema2; # # Bug #49988 MDL deadlocks with mysql_create_db, reload_acl_and_cache # === modified file 'mysql-test/t/mdl_sync.test' --- a/mysql-test/t/mdl_sync.test 2010-08-06 11:29:37 +0000 +++ b/mysql-test/t/mdl_sync.test 2010-08-10 11:16:44 +0000 @@ -4041,7 +4041,9 @@ connection default; --echo # Connection con2 connection con2; --echo # Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8 ---error 1,1 # Wrong error pending followup patch for bug#54360 +# Error 1 is from ALTER DATABASE when the database does not exist. +# Listing the error twice to prevent result diffences based on filename. +--error 1,1 --reap @@ -4153,7 +4155,9 @@ connection default; --echo # Connection con2 connection con2; --echo # Reaping: RENAME TABLE test.t2 TO db1.t2 ---error 7, 7 # Wrong error pending followup patch for bug#54360 +# Error 7 is from RENAME TABLE where the target database does not exist. +# Listing the error twice to prevent result diffences based on filename. +--error 7, 7 --reap DROP TABLE test.t2; === modified file 'mysql-test/t/schema.test' --- a/mysql-test/t/schema.test 2010-08-06 11:29:37 +0000 +++ b/mysql-test/t/schema.test 2010-08-10 11:16:44 +0000 @@ -23,7 +23,6 @@ drop schema foo; --disable_warnings DROP SCHEMA IF EXISTS schema1; -DROP SCHEMA IF EXISTS schema2; --enable_warnings connect(con2, localhost, root); @@ -32,7 +31,6 @@ connect(con2, localhost, root); connection default; CREATE SCHEMA schema1; -CREATE SCHEMA schema2; CREATE TABLE schema1.t1 (a INT); SET autocommit= FALSE; @@ -48,7 +46,10 @@ let $wait_condition= SELECT COUNT(*)= 1 WHERE state= 'Waiting for table metadata lock' AND info='DROP SCHEMA schema1'; --source include/wait_condition.inc -ALTER SCHEMA schema2 DEFAULT CHARACTER SET utf8; +# Error 1 is from ALTER DATABASE when the database does not exist. +# Listing the error twice to prevent result diffences based on filename. +--error 1,1 +ALTER SCHEMA schema1 DEFAULT CHARACTER SET utf8; SET autocommit= TRUE; --echo # Connection 2 @@ -57,7 +58,6 @@ connection con2; --echo # Connection default connection default; -DROP SCHEMA schema2; disconnect con2; === modified file 'sql/sql_rename.cc' --- a/sql/sql_rename.cc 2010-08-09 18:33:47 +0000 +++ b/sql/sql_rename.cc 2010-08-10 11:16:44 +0000 @@ -188,8 +188,6 @@ bool mysql_rename_tables(THD *thd, TABLE if (!error) query_cache_invalidate3(thd, table_list, 0); - thd->mdl_context.release_transactional_locks(); - err: thd->global_read_lock.start_waiting_global_read_lock(thd); DBUG_RETURN(error || binlog_error); --===============7389873391130064080== 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-runtime-bug54360/ # testament_sha1: dc73e27f6364a4f2c0666b1eb62f0d1ce9c08c0c # timestamp: 2010-08-10 13:16:47 +0200 # base_revision_id: kostja@stripped # # Begin bundle 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 BODqLRizrRtBXF6FQy7z/4u5IpwoSDH5wEgA --===============7389873391130064080==--