diff options
author | unknown <istruewing@stella.local> | 2008-03-14 14:03:47 +0100 |
---|---|---|
committer | unknown <istruewing@stella.local> | 2008-03-14 14:03:47 +0100 |
commit | 9fa2d50559383785c72656dcdffa878cc3563da9 (patch) | |
tree | eff22a0b56e730c1e0946113822a7f9daba4f096 | |
parent | e79249f81bbb7158fb263455e531bda4117b5fc9 (diff) | |
download | mariadb-git-9fa2d50559383785c72656dcdffa878cc3563da9.tar.gz |
Post-merge fix. Moved the symlink handling from sql_parse.cc here.
mysql-test/r/symlink.result:
Post-merge fix
mysql-test/t/symlink.test:
Post-merge fix
-rw-r--r-- | mysql-test/r/symlink.result | 4 | ||||
-rw-r--r-- | mysql-test/t/symlink.test | 7 | ||||
-rw-r--r-- | sql/sql_table.cc | 20 |
3 files changed, 26 insertions, 5 deletions
diff --git a/mysql-test/r/symlink.result b/mysql-test/r/symlink.result index 68cc893e507..e95466271fd 100644 --- a/mysql-test/r/symlink.result +++ b/mysql-test/r/symlink.result @@ -146,10 +146,10 @@ DATA DIRECTORY='TEST_DIR/master-data/test'; ERROR HY000: Incorrect arguments to DATA DIRECORY CREATE TABLE t1(a INT) DATA DIRECTORY='TEST_DIR/master-data/'; -DROP TABLE t1; +ERROR HY000: Incorrect arguments to DATA DIRECORY CREATE TABLE t1(a INT) INDEX DIRECTORY='TEST_DIR/master-data'; -DROP TABLE t1; +ERROR HY000: Incorrect arguments to INDEX DIRECORY CREATE TABLE t1(a INT) INDEX DIRECTORY='TEST_DIR/master-data_var'; ERROR HY000: Can't create/write to file 'TEST_DIR/master-data_var/t1.MYI' (Errcode: 2) diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index 5802e65df1e..1323451d984 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -126,6 +126,9 @@ drop table t1; --write_file $MYSQLTEST_VARDIR/tmp/t1.MYI EOF --replace_result $MYSQLTEST_VARDIR TEST_DIR +# If $MYSQLTEST_VARDIR is a symbolic link, the low level MyISAm error +# message contains the real path of $MYSQLTEST_VARDIR. Try to catch this. +--replace_regex /write to file '\/.*\/tmp/write to file 'TEST_DIR\/tmp/ --error 1 eval CREATE TABLE t1(a INT) DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp' @@ -209,13 +212,13 @@ INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql'; 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/'; -DROP TABLE t1; --replace_result $MYSQLTEST_VARDIR TEST_DIR +--error 1210 eval CREATE TABLE t1(a INT) INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data'; -DROP TABLE t1; --replace_result $MYSQLTEST_VARDIR TEST_DIR --error 1 eval CREATE TABLE t1(a INT) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 18d8ae68008..b42045446d3 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3517,8 +3517,26 @@ bool mysql_create_table_no_lock(THD *thd, create_info->table_existed= 0; // Mark that table is created #ifdef HAVE_READLINK + if (test_if_data_home_dir(create_info->data_file_name)) + { + my_error(ER_WRONG_ARGUMENTS, MYF(0), "DATA DIRECTORY"); + goto unlock_and_end; + } + if (test_if_data_home_dir(create_info->index_file_name)) + { + my_error(ER_WRONG_ARGUMENTS, MYF(0), "INDEX DIRECTORY"); + goto unlock_and_end; + } + +#ifdef WITH_PARTITION_STORAGE_ENGINE + if (check_partition_dirs(thd->lex->part_info)) + { + goto unlock_and_end; + } +#endif /* WITH_PARTITION_STORAGE_ENGINE */ + if (!my_use_symdir || (thd->variables.sql_mode & MODE_NO_DIR_IN_CREATE)) -#endif +#endif /* HAVE_READLINK */ { if (create_info->data_file_name) push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, |