summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/storage_engine/alter_tablespace.test
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/storage_engine/alter_tablespace.test
parentInitial commit. (diff)
downloadmariadb-upstream.tar.xz
mariadb-upstream.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/storage_engine/alter_tablespace.test')
-rw-r--r--mysql-test/suite/storage_engine/alter_tablespace.test102
1 files changed, 102 insertions, 0 deletions
diff --git a/mysql-test/suite/storage_engine/alter_tablespace.test b/mysql-test/suite/storage_engine/alter_tablespace.test
new file mode 100644
index 00000000..1899da28
--- /dev/null
+++ b/mysql-test/suite/storage_engine/alter_tablespace.test
@@ -0,0 +1,102 @@
+#
+# 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
+