From: Dmitry Lenev Date: June 8 2011 2:03pm Subject: bzr commit into mysql-5.5 branch (Dmitry.Lenev:3432) Bug#11759990 List-Archive: http://lists.mysql.com/commits/138933 X-Bug: 11759990 Message-Id: <20110608140318.EC68674066C@bandersnatch> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0347844219==" --===============0347844219== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/dlenev/src/bzr/mysql-5.5-11759990/ based on revid:ramil@stripped 3432 Dmitry Lenev 2011-06-08 Fix for bug #11759990 - "52354: 'CREATE TABLE .. LIKE ... ' STATEMENTS FAIL". Attempt to execute CREATE TABLE LIKE statement on a MyISAM table with INDEX or DATA DIRECTORY options specified as a source resulted in "MyISAM table '...' is in use..." error. According to our documentation such a statement should create a copy of source table with DATA/INDEX DIRECTORY options omitted. The problem was that new implementation of CREATE TABLE LIKE statement in 5.5 tried to copy value of INDEX and DATA DIRECTORY parameters from the source table. Since in description of source table this parameters also included name of this table, attempt to create target table with these parameter led to file name conflict and error. This fix addresses the problem by preserving documented and backward-compatible behavior. I.e. by ensuring that contents of DATA/INDEX DIRECTORY clauses for the source table is ignored when target table is created. @ mysql-test/r/symlink.result Added test for bug #11759990 - "52354: 'CREATE TABLE .. LIKE ... ' STATEMENTS FAIL". @ mysql-test/t/symlink.test Added test for bug #11759990 - "52354: 'CREATE TABLE .. LIKE ... ' STATEMENTS FAIL". @ sql/sql_table.cc Changed CREATE TABLE LIKE implementation to ignore contents of DATA/INDEX DIRECTORY clauses for source table when target table is created. This is documented and backward-compatible behavior. modified: mysql-test/r/symlink.result mysql-test/t/symlink.test sql/sql_table.cc === modified file 'mysql-test/r/symlink.result' --- a/mysql-test/r/symlink.result 2011-01-31 09:34:39 +0000 +++ b/mysql-test/r/symlink.result 2011-06-08 14:03:11 +0000 @@ -188,3 +188,26 @@ DROP TABLE user; FLUSH TABLE mysql.user; SELECT * FROM mysql.user; End of 5.1 tests +# +# Test for bug #11759990 - "52354: 'CREATE TABLE .. LIKE ... ' +# STATEMENTS FAIL". +# +drop table if exists t1, t2; +create table t1 (a int primary key) engine=myisam data directory="MYSQLTEST_VARDIR/tmp" index directory="MYSQLTEST_VARDIR/run"; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + PRIMARY KEY (`a`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/' +# CREATE TABLE LIKE statement on table with INDEX/DATA DIRECTORY +# options should not fail. Per documentation newly created table +# should not inherit value of these options from the original table. +create table t2 like t1; +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) NOT NULL, + PRIMARY KEY (`a`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop tables t1, t2; === modified file 'mysql-test/t/symlink.test' --- a/mysql-test/t/symlink.test 2011-01-31 09:34:39 +0000 +++ b/mysql-test/t/symlink.test 2011-06-08 14:03:11 +0000 @@ -277,3 +277,22 @@ SELECT * FROM mysql.user; --remove_file $MYSQL_TMP_DIR/mysql --echo End of 5.1 tests + + +--echo # +--echo # Test for bug #11759990 - "52354: 'CREATE TABLE .. LIKE ... ' +--echo # STATEMENTS FAIL". +--echo # +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval create table t1 (a int primary key) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp" index directory="$MYSQLTEST_VARDIR/run"; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +show create table t1; +--echo # CREATE TABLE LIKE statement on table with INDEX/DATA DIRECTORY +--echo # options should not fail. Per documentation newly created table +--echo # should not inherit value of these options from the original table. +create table t2 like t1; +show create table t2; +drop tables t1, t2; === modified file 'sql/sql_table.cc' --- a/sql/sql_table.cc 2011-06-01 08:06:55 +0000 +++ b/sql/sql_table.cc 2011-06-08 14:03:11 +0000 @@ -4582,6 +4582,11 @@ bool mysql_create_like_table(THD* thd, T local_create_info.options|= create_info->options & HA_LEX_CREATE_TMP_TABLE; /* Reset auto-increment counter for the new table. */ local_create_info.auto_increment_value= 0; + /* + Do not inherit values of DATA and INDEX DIRECTORY options from + the original table. This is documented behavior. + */ + local_create_info.data_file_name= local_create_info.index_file_name= 0; if ((res= mysql_create_table_no_lock(thd, table->db, table->table_name, &local_create_info, &local_alter_info, --===============0347844219== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.lenev@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.lenev@stripped # target_branch: file:///home/dlenev/src/bzr/mysql-5.5-11759990/ # testament_sha1: 24f32d0a984d743783e03ba7b5e0f0fb98c16eb0 # timestamp: 2011-06-08 18:03:18 +0400 # base_revision_id: ramil@stripped # # Begin bundle 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 FX2bRE3SHQ2Owytbpzhhc1P/i7kinChID6TRWQA= --===============0347844219==--