# # IMPORT / DISCARD TABLESPACE # # The test might require additional engine options, # e.g. for InnoDB it is --innodb-file-per-table --source have_engine.inc --disable_warnings DROP TABLE IF EXISTS t1, t2; --enable_warnings --let $create_definition = a $int_col --source create_table.inc --let $alter_definition = DISCARD TABLESPACE --source alter_table.inc if ($mysql_errname) { --let $my_last_stmt = $alter_statement --let $functionality = Tablespace operations --source unexpected_result.inc } if (!$mysql_errname) { DROP TABLE t1; --let $create_definition = a $int_col --source create_table.inc INSERT INTO t1 (a) VALUES (1),(2); --sorted_result SELECT a FROM t1; # http://dev.mysql.com/doc/mysql-enterprise-backup/3.5/en/partial.restoring.single.html # To get a "clean" backup we need to either use innobackup, or to monitor show engine innodb status, # and the documented conditions do not look exactly feasible. So, we will go a simple way: # just restart the server, and take the backup while the server is down. # (And we need to have a really clean backup, see MySQL:65429 / LP:1004910) --let $datadir = `SELECT @@datadir` --write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect restart wait EOF --enable_reconnect --shutdown_server 60 --source include/wait_until_disconnected.inc --replace_result $datadir --copy_file $datadir/test/t1.ibd $datadir/test/t1.ibd.save --append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect restart EOF --source include/wait_until_connected_again.inc --let $alter_definition = DISCARD TABLESPACE --source alter_table.inc --let $error_codes = ER_TABLESPACE_DISCARDED --replace_result $storage_engine SELECT a FROM t1; --source check_errors.inc if ($mysql_errname != ER_TABLESPACE_DISCARDED) { --let $functionality = Tablespace operations --source unexpected_result.inc } --move_file $datadir/test/t1.ibd.save $datadir/test/t1.ibd --let $alter_definition = IMPORT TABLESPACE --source alter_table.inc --sorted_result SELECT a FROM t1; # Adding a warning suppression based on what InnoDB currently does # when it attempts to access a table without an *.ibd file --disable_query_log eval CALL mtr.add_suppression('$storage_engine: Error:'); --enable_query_log # The sleep below is a very bad style, but so far there seems to be # no reliable way to prevent a failure on Windows, which is caused # by the fact that the error message that we added the above suppression for, # on Windows appears in the error log with a delay, so MTR # thinks the error was raised on server shutdown, and the suppression # does not work. Adding it globally is not an option because # it must be caught in other tests which do not produce the failure # intentionally --sleep 1 } DROP TABLE t1; --source cleanup_engine.inc