--- /dev/null +++ b/mysql-test/r/percona_xtradb_bug317074.result @@ -0,0 +1,5 @@ +SET @old_innodb_file_format=@@innodb_file_format; +SET @old_innodb_file_format_max=@@innodb_file_format_max; +SET @old_innodb_file_per_table=@@innodb_file_per_table; +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=ON; --- /dev/null +++ b/mysql-test/t/percona_xtradb_bug317074.test @@ -0,0 +1,47 @@ +-- source include/have_innodb.inc + +SET @old_innodb_file_format=@@innodb_file_format; +SET @old_innodb_file_format_max=@@innodb_file_format_max; +SET @old_innodb_file_per_table=@@innodb_file_per_table; +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; +start transaction; +REPEAT + insert into test1 set b=1; + SET @x = @x + 1; + SET @y = @y + 1; + IF @y >= 1000 THEN + commit; + start transaction; + SET @y = 0; + END IF; +UNTIL @x >= p1 END REPEAT; +commit; +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_format=@old_innodb_file_format; +SET GLOBAL innodb_file_format_max=@old_innodb_file_format_max; +SET GLOBAL innodb_file_per_table=@old_innodb_file_per_table;