mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
a19cb3884f
Shutdown of mtr tests may be too impatient, esp on CI environment where 10 seconds of `arg` of `shutdown_server arg` may not be enough for the clean shutdown to complete. This is fixed to remove explicit non-zero timeout argument to `shutdown_server` from all mtr tests. mysqltest computes 60 seconds default value for the timeout for the argless `shutdown_server` command. This policy is additionally ensured with a compile time assert.
102 lines
2.8 KiB
Text
102 lines
2.8 KiB
Text
#
|
|
# 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
|
|
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
--replace_result $datadir <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 <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
|
|
|