From: Jon Olav Hauglid Date: December 9 2009 12:27pm Subject: bzr push into mysql-5.6-next-mr branch (jon.hauglid:3014 to 3016) List-Archive: http://lists.mysql.com/commits/93321 Message-Id: <200912091227.nB9CRrbL002425@dm-uk-02.uk.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6482045646362577847==" --===============6482045646362577847== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3016 Jon Olav Hauglid 2009-12-09 Backport of revno: 2617.76.3 Bug#47107 Add missing line in previous change set. @ mysql-test/r/create.result Bug#47107 Add missing line in previous change set. modified: mysql-test/r/create.result 3015 Jon Olav Hauglid 2009-12-09 Backport of revno: 2617.76.2 Bug #47107 assert in notify_shared_lock on incorrect CREATE TABLE , HANDLER Attempts to create a table (using CREATE TABLE, CREATE TABLE LIKE or CREATE TABLE SELECT statements) which already existed and was opened by the same connection through HANDLER statement, led to a stalled connection (for production builds of the server) or to the server being aborted due to an assertion failure (for debug builds of the server). This problem was introduced by the new implementation of a metadata locking subsystem and didn't affect earlier versions of the server. The cause of the problem was that the HANDLER was not closed by CREATE TABLE before CREATE tried to open and lock the table. Acquiring an exclusive MDL lock on the table to be created would therefore fail since HANDLER already had a shared MDL lock. This triggered an assert as the HANDLER and CREATE statements came from the same thread (self-deadlock). This patch resolves the issue by closing any open HANDLERs on tables to be created by CREATE TABLE, similar to what is already done for DROP and ALTER TABLE. Test case added to create.test. modified: mysql-test/r/create.result mysql-test/t/create.test sql/sql_parse.cc 3014 Jon Olav Hauglid 2009-12-09 Backport of revno: 3711.1.1 Bug #48725 Assert !thd->is_error() in delayed_get_table() This bug is a regression introduced by the patch for Bug #45949. If the handler thread for INSERT DELAYED was killed by e.g. FLUSH TABLES, the error message is copied from the handler thread to the connection thread. But the error was not reacted on, so the connection thread continued as normal, leading to an eventual assert. No test case added as it would have required sync points to work for handler threads. The plan is to add this in the scope of Bug #48725 / Bug #48541. The patch has been tested with the non-deterministic test case given in the bug description. modified: sql/sql_insert.cc === modified file 'mysql-test/r/create.result' --- a/mysql-test/r/create.result 2009-11-30 15:55:03 +0000 +++ b/mysql-test/r/create.result 2009-12-09 12:27:24 +0000 @@ -1961,3 +1961,22 @@ END ;| ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' DROP TABLE t1; DROP TABLE B; +# +# Bug #47107 assert in notify_shared_lock on incorrect +# CREATE TABLE , HANDLER +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(f1 integer); +# The following CREATE TABLEs before gave an assert. +HANDLER t1 OPEN AS A; +CREATE TABLE t1 SELECT 1 AS f2; +ERROR 42S01: Table 't1' already exists +HANDLER t1 OPEN AS A; +CREATE TABLE t1(f1 integer); +ERROR 42S01: Table 't1' already exists +CREATE TABLE t2(f1 integer); +HANDLER t1 OPEN AS A; +CREATE TABLE t1 LIKE t2; +ERROR 42S01: Table 't1' already exists +DROP TABLE t2; +DROP TABLE t1; === modified file 'mysql-test/t/create.test' --- a/mysql-test/t/create.test 2009-11-30 15:55:03 +0000 +++ b/mysql-test/t/create.test 2009-12-09 12:15:35 +0000 @@ -1639,3 +1639,33 @@ END ;| DROP TABLE t1; DROP TABLE B; + + +--echo # +--echo # Bug #47107 assert in notify_shared_lock on incorrect +--echo # CREATE TABLE , HANDLER +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(f1 integer); + +--echo # The following CREATE TABLEs before gave an assert. + +HANDLER t1 OPEN AS A; +--error ER_TABLE_EXISTS_ERROR +CREATE TABLE t1 SELECT 1 AS f2; + +HANDLER t1 OPEN AS A; +--error ER_TABLE_EXISTS_ERROR +CREATE TABLE t1(f1 integer); + +CREATE TABLE t2(f1 integer); +HANDLER t1 OPEN AS A; +--error ER_TABLE_EXISTS_ERROR +CREATE TABLE t1 LIKE t2; + +DROP TABLE t2; +DROP TABLE t1; === modified file 'sql/sql_parse.cc' --- a/sql/sql_parse.cc 2009-12-09 08:51:20 +0000 +++ b/sql/sql_parse.cc 2009-12-09 12:15:35 +0000 @@ -2311,6 +2311,12 @@ case SQLCOM_PREPARE: thd->work_part_info= part_info; } #endif + + /* + Close any open handlers for the table + */ + mysql_ha_rm_tables(thd, create_table); + if (select_lex->item_list.elements) // With select { select_result *result; --===============6482045646362577847== 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/z/mysql-next-4284-bp1/ # testament_sha1: 26d7e11e046b562aaab2216c92db725d44887df9 # timestamp: 2009-12-09 13:27:52 +0100 # source_branch: file:///export/home/z/mysql-6.0-codebase-bugfixing/ # base_revision_id: jon.hauglid@stripped\ # rcxh5v6dox6pbw79 # # Begin bundle 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 iw4G1GZ/8XckU4UJB7BEizA= --===============6482045646362577847==--