# Not supported in embedded --source include/not_embedded.inc # This test case needs to crash the server. Needs a debug server. --source include/have_debug.inc # Don't test this under valgrind, memory leaks will occur. --source include/not_valgrind.inc # Avoid CrashReporter popup on Mac --source include/not_crashrep.inc --source include/innodb_page_size.inc --echo # --echo # Bug #18734396 INNODB IN-PLACE ALTER FAILURES BLOCK FUTURE ALTERS --echo # --echo # Temporary tablename will be unique. This makes sure that future --echo # in-place ALTERs of the same table will not be blocked due to --echo # temporary tablename. let datadir= `select @@datadir`; --let $_server_id= `SELECT @@server_id` --let $_expect_file_name=$MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL) ENGINE=innodb; SET debug_dbug='+d,innodb_alter_commit_crash_before_commit'; --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --error 2013 ALTER TABLE t1 ADD PRIMARY KEY (f2, f1); let TABLENAME_INC= $MYSQLTEST_VARDIR/tmp/tablename.inc; perl; die unless open OUT, ">$ENV{TABLENAME_INC}"; chdir "$ENV{'datadir'}/test"; my @frm_file = map { substr($_, 0, -4) } glob "#sql-*.frm"; print OUT 'let $temp_table_name=', $frm_file[0], ';'; close OUT or die; EOF source $TABLENAME_INC; remove_file $TABLENAME_INC; --source include/start_mysqld.inc show create table t1; --echo # Consecutive Alter table does not create same temporary file name ALTER TABLE t1 ADD PRIMARY KEY (f2, f1); --disable_query_log eval DROP TABLE `#mysql50#$temp_table_name`; --enable_query_log show create table t1; drop table t1;