From: Jon Olav Hauglid Date: May 10 2011 8:46am Subject: bzr commit into mysql-trunk branch (jon.hauglid:3388) Bug#11938817 List-Archive: http://lists.mysql.com/commits/136966 X-Bug: 11938817 Message-Id: <201105100846.p4A8kHij030786@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3308815408994099990==" --===============3308815408994099990== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-trunk-bug11938817/ based on revid:serge.kozlov@stripped 3388 Jon Olav Hauglid 2011-05-10 Bug#11938817 ALTER BEHAVIOR DIFFERENT THEN DOCUMENTED The problem was that ALTER TABLE t1 ENGINE = did a full table copy even if the table was using the given engine already. This patch fixes the problem by checking if the new and old engines are equal. If they are, the ENGINE clause will be ignored. Test case added to alter_table.test. modified: mysql-test/r/alter_table.result mysql-test/t/alter_table.test sql/sql_table.cc === modified file 'mysql-test/r/alter_table.result' --- a/mysql-test/r/alter_table.result 2011-05-04 07:51:15 +0000 +++ b/mysql-test/r/alter_table.result 2011-05-10 08:46:03 +0000 @@ -1414,3 +1414,13 @@ rename table t2 to t1; execute stmt1; deallocate prepare stmt1; drop table t2; +# +# Bug#11938817 ALTER BEHAVIOR DIFFERENT THEN DOCUMENTED +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a INT) engine=innodb; +INSERT INTO t1 VALUES (1), (2); +ALTER TABLE t1 engine=innodb; +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 +DROP TABLE t1; === modified file 'mysql-test/t/alter_table.test' --- a/mysql-test/t/alter_table.test 2011-05-04 07:51:15 +0000 +++ b/mysql-test/t/alter_table.test 2011-05-10 08:46:03 +0000 @@ -1194,3 +1194,22 @@ rename table t2 to t1; execute stmt1; deallocate prepare stmt1; drop table t2; + + +--echo # +--echo # Bug#11938817 ALTER BEHAVIOR DIFFERENT THEN DOCUMENTED +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(a INT) engine=innodb; +INSERT INTO t1 VALUES (1), (2); + +# Check that 0 rows are affected +--enable_info +ALTER TABLE t1 engine=innodb; +--disable_info + +DROP TABLE t1; === modified file 'sql/sql_table.cc' --- a/sql/sql_table.cc 2011-05-06 12:56:36 +0000 +++ b/sql/sql_table.cc 2011-05-10 08:46:03 +0000 @@ -6108,6 +6108,10 @@ bool mysql_alter_table(THD *thd,char *ne goto err; new_db_type= create_info->db_type; + // Changing to the same engine is not a necessary operation. + if (new_db_type == old_db_type) + create_info->used_fields &= ~HA_CREATE_USED_ENGINE; + if ((new_db_type != old_db_type || alter_info->flags & ALTER_PARTITION) && !table->file->can_switch_engines()) --===============3308815408994099990== 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-trunk-bug11938817/ # testament_sha1: 96efeecf4606bf56c857f88fa245a8ac291e8913 # timestamp: 2011-05-10 10:46:08 +0200 # base_revision_id: serge.kozlov@stripped\ # liiegqtwc4lrs0md # # Begin bundle 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 --===============3308815408994099990==--