From: Dmitry Lenev Date: June 9 2011 12:54pm Subject: bzr commit into mysql-5.5 branch (Dmitry.Lenev:3434) Bug#11759990 List-Archive: http://lists.mysql.com/commits/138963 X-Bug: 11759990 Message-Id: <20110609125419.F40A77405D3@bandersnatch> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0074949541==" --===============0074949541== 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:marko.makela@stripped 3434 Dmitry Lenev 2011-06-09 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-09 12:54:12 +0000 @@ -188,3 +188,28 @@ 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-09 12:54:12 +0000 @@ -277,3 +277,24 @@ 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-09 12:54:12 +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= NULL; if ((res= mysql_create_table_no_lock(thd, table->db, table->table_name, &local_create_info, &local_alter_info, --===============0074949541== 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: 47c91dde6b6f8a9de4a11f647f0302979b217c7b # timestamp: 2011-06-09 16:54:19 +0400 # base_revision_id: marko.makela@stripped\ # ppbvd6s2eyavdk2g # # Begin bundle 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 --===============0074949541==--