From: Jon Olav Hauglid Date: May 10 2011 10:56am Subject: bzr push into mysql-trunk branch (jon.hauglid:3388 to 3389) Bug#11747690 List-Archive: http://lists.mysql.com/commits/136983 X-Bug: 11747690 Message-Id: <201105101056.p4AAuIgq008455@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3389 Jon Olav Hauglid 2011-05-10 Bug#11747690 (former 33650) MYSQL_ALTER_TABLE() UNNECESSARILY DOES FULL TABLE COPY The problem was that full table copy was done when creating an index on a UTF-8 VARCHAR column (rather than using in-place ALTER TABLE). This problem is not repeatable using InnoDB. It is repeatable using MyISAM, but MyISAM does not support in-place add index in general, not just for UTF-8 VARCHAR columns. Therefore the current behavior is not a bug with regards to MyISAM. This patch adds a regression test for InnoDB and contains no code changes. modified: mysql-test/r/innodb_mysql_lock.result mysql-test/t/innodb_mysql_lock.test 3388 Horst.Hunger 2011-05-10 Fix for Bug 12405804: The variable transaction_prealloc_size gots values up to 5GB in the default session root@localhost, which is also used in mtr for internal purposes. For that the variable will now set back to the default value. modified: mysql-test/r/variables-big.result mysql-test/t/variables-big.test === modified file 'mysql-test/r/innodb_mysql_lock.result' --- a/mysql-test/r/innodb_mysql_lock.result 2011-04-13 18:43:08 +0000 +++ b/mysql-test/r/innodb_mysql_lock.result 2011-05-10 10:55:34 +0000 @@ -170,3 +170,15 @@ id value 1 12345 COMMIT; DROP TABLE t1; +# +# Bug#11747690 33650: MYSQL_ALTER_TABLE() UNNECESSARILY DOES +# FULL TABLE COPY +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a INT, b VARCHAR(255), PRIMARY KEY(a,b)) +engine=innodb default charset=utf8; +INSERT INTO t1 VALUES (1, 'a'), (2, 'b'); +CREATE INDEX t1ba ON t1(b,a); +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 +DROP TABLE t1; === modified file 'mysql-test/t/innodb_mysql_lock.test' --- a/mysql-test/t/innodb_mysql_lock.test 2011-04-13 18:43:08 +0000 +++ b/mysql-test/t/innodb_mysql_lock.test 2011-05-10 10:55:34 +0000 @@ -311,6 +311,27 @@ DROP TABLE t1; disconnect con1; +--echo # +--echo # Bug#11747690 33650: MYSQL_ALTER_TABLE() UNNECESSARILY DOES +--echo # FULL TABLE COPY +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(a INT, b VARCHAR(255), PRIMARY KEY(a,b)) + engine=innodb default charset=utf8; +INSERT INTO t1 VALUES (1, 'a'), (2, 'b'); + +# Check that 0 rows are affected +--enable_info +CREATE INDEX t1ba ON t1(b,a); +--disable_info + +DROP TABLE t1; + + # Check that all connections opened by test cases in this file are really # gone so execution of other tests won't be affected by their presence. --source include/wait_until_count_sessions.inc No bundle (reason: useless for push emails).