-- source include/have_innodb.inc set @old_innodb_file_per_table=@@innodb_file_per_table; set @old_innodb_file_format=@@innodb_file_format; set @old_innodb_file_format_check=@@innodb_file_format_check; SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_per_table=ON; -- disable_query_log -- disable_result_log DROP TABLE IF EXISTS `test1`; CREATE TABLE IF NOT EXISTS `test1` ( `a` int primary key auto_increment, `b` int default 0, `c` char(100) default 'testtest' ) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; delimiter |; CREATE PROCEDURE insert_many(p1 int) BEGIN SET @x = 0; SET @y = 0; REPEAT insert into test1 set b=1; SET @x = @x + 1; SET @y = @y + 1; IF @y >= 100 THEN commit; SET @y = 0; END IF; UNTIL @x >= p1 END REPEAT; END| delimiter ;| call insert_many(100000); DROP PROCEDURE insert_many; # The bug is hangup at the following statement ALTER TABLE test1 ENGINE=MyISAM; DROP TABLE test1; set global innodb_file_per_table=@old_innodb_file_per_table; set global innodb_file_format=@old_innodb_file_format; set global innodb_file_format_check=@old_innodb_file_format_check;