summaryrefslogtreecommitdiffstats
path: root/mysql-test/main/repair_symlink-5543.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/repair_symlink-5543.test')
-rw-r--r--mysql-test/main/repair_symlink-5543.test28
1 files changed, 28 insertions, 0 deletions
diff --git a/mysql-test/main/repair_symlink-5543.test b/mysql-test/main/repair_symlink-5543.test
new file mode 100644
index 00000000..002b8d80
--- /dev/null
+++ b/mysql-test/main/repair_symlink-5543.test
@@ -0,0 +1,28 @@
+#
+# MDEV-5543 MyISAM repair unsafe usage of TMD files
+#
+--source include/have_symlink.inc
+--source include/not_windows.inc
+--source include/have_maria.inc
+
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+eval create table t1 (a int) engine=myisam data directory='$MYSQL_TMP_DIR';
+insert t1 values (1);
+--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t1.TMD
+# Some systems fail with errcode 31 (FreeBSD), 40 (Linux), 85 (AIX),
+# or 90 (MIPS) when doing openat,
+# while others don't have openat and fail with errcode 20.
+--replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /[49]0|31|85/20/ /".*"/"<errmsg>"/
+repair table t1;
+drop table t1;
+
+--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
+eval create table t2 (a int) engine=aria data directory='$MYSQL_TMP_DIR';
+insert t2 values (1);
+--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t2.TMD
+--replace_regex / '.*\/t2/ 'MYSQL_TMP_DIR\/t2/ /[49]0|31|85/20/ /".*"/"<errmsg>"/
+repair table t2;
+drop table t2;
+
+--list_files $MYSQL_TMP_DIR foobar5543
+