diff options
Diffstat (limited to 'mysql-test/t/symlink.test')
-rw-r--r-- | mysql-test/t/symlink.test | 130 |
1 files changed, 64 insertions, 66 deletions
diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index 69b1b3cdb4e..7de9f6c6de0 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -38,9 +38,8 @@ drop table t2; # We use t9 here to not crash with tables generated by the backup test # -disable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 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; @@ -66,7 +65,6 @@ drop table t1; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR SHOW CREATE TABLE t9; -disable_query_log; --error 1103,1103 create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="tmp"; @@ -81,13 +79,14 @@ create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, p create 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' +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --error 1,1,1105 eval 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' +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --error 1,1 eval 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. @@ -103,50 +102,40 @@ drop database mysqltest; # create table t1 (a int not null) engine=myisam; -disable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR eval alter table t1 data directory="$MYSQLTEST_VARDIR/tmp"; -enable_query_log; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR show create table t1; alter table t1 add b int; -disable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR eval alter table t1 data directory="$MYSQLTEST_VARDIR/log"; -enable_query_log; --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR show create table t1; -disable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 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 # -let $MYSQLD_DATADIR= `select @@datadir`; ---replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--write_file $MYSQLTEST_VARDIR/tmp/t1.MYI +EOF + +--replace_result $MYSQLTEST_VARDIR TEST_DIR $MYSQLTEST_VARDIR TEST_DIR +--error 1,1 eval CREATE TABLE t1(a INT) -DATA DIRECTORY='$MYSQLD_DATADIR/mysql' -INDEX DIRECTORY='$MYSQLD_DATADIR/mysql'; ---replace_result $MYSQLD_DATADIR MYSQLD_DATADIR/ +DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp' +INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp'; +--replace_result $MYSQLTEST_VARDIR TEST_DIR +eval CREATE TABLE t2(a INT) +DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp' +INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp'; +--replace_result $MYSQLTEST_VARDIR TEST_DIR --error 1 -RENAME 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 = "$MYSQLD_DATADIR/test/"; -enable_query_log; -show create table t1; -drop table t1; -disable_query_log; -eval create table t1 (i int) index directory = "$MYSQLD_DATADIR/test/"; -enable_query_log; -show create table t1; -drop table t1; +RENAME TABLE t2 TO t1; +DROP TABLE t2; +--remove_file $MYSQLTEST_VARDIR/tmp/t1.MYI # # Bug#8706 - temporary table with data directory option fails @@ -155,18 +144,16 @@ connect (session1,localhost,root,,); connect (session2,localhost,root,,); connection session1; -disable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 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_VARDIR show create table t1; connection session2; -disable_query_log; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 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_VARDIR @@ -190,40 +177,51 @@ drop table t1; # # Bug #29325: create table overwrites .MYD file of other table (datadir) # - -CREATE DATABASE db1; -CREATE DATABASE db2; - -USE db2; ---disable_query_log -eval CREATE TABLE t1 (b INT) ENGINE MYISAM -DATA DIRECTORY = '$MYSQLD_DATADIR/db1/'; ---enable_query_log - -INSERT INTO db2.t1 VALUES (1); -SELECT * FROM db2.t1; -RESET QUERY CACHE; - -USE db1; - -#no warning from create table SET SESSION keep_files_on_create = TRUE; +--write_file $MYSQLTEST_VARDIR/master-data/test/t1.MYD +EOF --disable_abort_on_error ---error 1,1 +--error 1,1,ER_TABLE_EXISTS_ERROR CREATE TABLE t1 (a INT) ENGINE MYISAM; +--error 0,1 +--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.MYD; --enable_abort_on_error +SET SESSION keep_files_on_create = FALSE; +CREATE TABLE t1 (a INT) ENGINE MYISAM; +DROP TABLE t1; -CREATE 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 +# +# Bug#32167: another privilege bypass with DATA/INDEX DIRECTORY +# +--replace_result $MYSQLTEST_VARDIR TEST_DIR +--error 1210 +eval CREATE TABLE t1(a INT) +INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql'; +--replace_result $MYSQLTEST_VARDIR TEST_DIR +--error 1210 +eval CREATE TABLE t1(a INT) +DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/test'; +--replace_result $MYSQLTEST_VARDIR TEST_DIR +--error 1210 +eval CREATE TABLE t1(a INT) +DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/'; +--replace_result $MYSQLTEST_VARDIR TEST_DIR +--error 1210 +eval CREATE TABLE t1(a INT) +INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data'; +--replace_result $MYSQLTEST_VARDIR TEST_DIR +--error 1 +eval CREATE TABLE t1(a INT) +INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data_var'; +# BUG#25677 - With --skip-symbolic-links option on, DATA DIRECTORY clause is +# silently ignored +# +SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE='NO_DIR_IN_CREATE'; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval CREATE TABLE t1(a INT) DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp'; +DROP TABLE t1; +SET @@SQL_MODE=@OLD_SQL_MODE; ---echo End of 5.0 tests +--echo End of 5.1 tests |