📄 symlink.test
字号:
-- require r/have_symlink.requiredisable_query_log;show variables like "have_symlink";enable_query_log;--source include/not_windows.inc--disable_warningsdrop table if exists t1,t2,t7,t8,t9;drop database if exists mysqltest;--enable_warnings## First create little data to play with#create table t1 (a int not null auto_increment, b char(16) not null, primary key (a));create table t2 (a int not null auto_increment, b char(16) not null, primary key (a));insert into t1 (b) values ("test"),("test1"),("test2"),("test3");insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;insert into t2 (b) select b from t1;insert into t1 (b) select b from t2;drop table t2;## Start the test# We use t9 here to not crash with tables generated by the backup test# disable_query_log;eval create table t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp" index directory="$MYSQLTEST_VARDIR/run";enable_query_log;insert into t9 select * from t1;check table t9;optimize table t9;repair table t9;alter table t9 add column c int not null;--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRshow create table t9;# Test renamesalter table t9 rename t8, add column d int not null;alter table t8 rename t7;rename table t7 to t9;# Drop old t1 table, keep t9drop table t1;## Test error handling# Note that we are using the above table t9 here!#--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRSHOW CREATE TABLE t9;disable_query_log;--error 1103,1103create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="tmp";# Check that we cannot link over a table from another database.create database mysqltest;--error 1,1create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="/this-dir-does-not-exist";--error 1103,1103create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="not-hard-path";# Should fail becasue the file t9.MYI already exist in 'run'--error 1,1,1105eval create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="$MYSQLTEST_VARDIR/run";# Should fail becasue the file t9.MYD already exist in 'tmp'--error 1,1eval create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp";enable_query_log;# Check moving table t9 from default database to mysqltest;# In this case the symlinks should be removed.alter table t9 rename mysqltest.t9;select count(*) from mysqltest.t9;--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRshow create table mysqltest.t9;drop database mysqltest;## Test changing data dir (Bug #1662)#create table t1 (a int not null) engine=myisam;disable_query_log;eval alter table t1 data directory="$MYSQLTEST_VARDIR/tmp";enable_query_log;--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRshow create table t1;alter table t1 add b int;disable_query_log;eval alter table t1 data directory="$MYSQLTEST_VARDIR/log";enable_query_log;--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRshow create table t1;disable_query_log;eval alter table t1 index directory="$MYSQLTEST_VARDIR/log";enable_query_log;show create table t1;drop table t1;## BUG#32111 - Security Breach via DATA/INDEX DIRECORY and RENAME TABLE#--replace_result $MYSQLTEST_VARDIR TEST_DIReval CREATE TABLE t1(a INT)DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql'INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql';--replace_result $MYSQLTEST_VARDIR TEST_DIR--error 1RENAME TABLE t1 TO user;DROP TABLE t1;## Test specifying DATA DIRECTORY that is the same as what would normally# have been chosen. (Bug #8707)#disable_query_log;eval create table t1 (i int) data directory = "$MYSQLTEST_VARDIR/master-data/test/";enable_query_log;show create table t1;drop table t1;disable_query_log;eval create table t1 (i int) index directory = "$MYSQLTEST_VARDIR/master-data/test/";enable_query_log;show create table t1;drop table t1;## Bug#8706 - temporary table with data directory option fails#connect (session1,localhost,root,,);connect (session2,localhost,root,,);connection session1;disable_query_log;eval create temporary table t1 (a int) engine=myisam data directory="$MYSQLTEST_VARDIR/log" select 9 a;enable_query_log;# If running test suite with a non standard tmp dir, the "show create table"# will print "DATA_DIRECTORY=". Use replace_result to mask it out--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRshow create table t1;connection session2;disable_query_log;eval create temporary table t1 (a int) engine=myisam data directory="$MYSQLTEST_VARDIR/log" select 99 a;enable_query_log;# If running test suite with a non standard tmp dir, the "show create table"# will print "DATA_DIRECTORY=". Use replace_result to mask it out--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIRshow create table t1;connection default;create table t1 (a int) engine=myisam select 42 a;connection session1;select * from t1;disconnect session1;connection session2;select * from t1;disconnect session2;connection default;select * from t1;drop table t1;--echo End of 4.1 tests## Bug #29325: create table overwrites .MYD file of other table (datadir)#CREATE DATABASE db1; CREATE DATABASE db2;USE db2;--disable_query_logeval CREATE TABLE t1 (b INT) ENGINE MYISAMDATA DIRECTORY = '$MYSQLTEST_VARDIR/master-data/db1/';--enable_query_logINSERT INTO db2.t1 VALUES (1);SELECT * FROM db2.t1;RESET QUERY CACHE;USE db1;#no warning from create tableSET SESSION keep_files_on_create = TRUE;--disable_abort_on_errorCREATE TABLE t1 (a INT) ENGINE MYISAM;--enable_abort_on_errorCREATE TABLE t3 (a INT) Engine=MyISAM;INSERT INTO t3 VALUES (1),(2),(3);TRUNCATE TABLE t3;SELECT * from t3;SET SESSION keep_files_on_create = DEFAULT;DROP TABLE db2.t1, db1.t3;DROP DATABASE db1;DROP DATABASE db2;USE test;--echo End of 5.0 tests
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -