Commit 6673b284 authored by Ingo Struewing's avatar Ingo Struewing

Bug#41002 - symlink.test fails on symlinked datadir

symlink.test failed when run in an environment that has mysql-test/var
symlinked to elsewhere, e.g. a memory file system. This is the case
when running mysql-test-run --mem.

In this case the server does not detect that the directory specified
with a DATA/INDEX DIRECTORY clause is within its data home directory.
This problem was reported as Bug#39277 (Creation of table with data
and/or index files in data home directory succeeds). It was decided
that it will not be fixed in 5.1. Hence, the current behavior is
accepted for 5.1. It will be fixed in 6.0 though.

Fixed the test case so that it works in both environments. 1. When no
symbolic link is involved, the server notices that the data/index
directory is in its data hone directory and rejects the CREATE/ALTER
TABLE statement. 2. When the data home directory is symlinked, it
does not notice the problem and executes the statement sucessfully.
parent f11b5d4c
......@@ -148,16 +148,16 @@ DROP TABLE t1;
End of 5.0 tests
CREATE TABLE t1(a INT)
INDEX DIRECTORY='TEST_DIR/master-data/mysql';
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a INT)
DATA DIRECTORY='TEST_DIR/master-data/test';
ERROR HY000: Incorrect arguments to DATA DIRECTORY
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a INT)
DATA DIRECTORY='TEST_DIR/master-data/';
ERROR HY000: Incorrect arguments to DATA DIRECTORY
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a INT)
INDEX DIRECTORY='TEST_DIR/master-data';
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
DROP TABLE IF EXISTS t1;
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)
......
......@@ -194,26 +194,49 @@ DROP TABLE t1;
#
# Bug#32167: another privilege bypass with DATA/INDEX DIRECTORY
#
# With Bug#41002 (symlink.test fails on symlinked datadir) it was
# decided that the below statements may also succeed if the data
# home directory is symlinked, e.g. mysql-test-run --mem.
# This will be fixed in 6.0 only.
#
--replace_result $MYSQLTEST_VARDIR TEST_DIR
--error ER_WRONG_ARGUMENTS
--error 0,ER_WRONG_ARGUMENTS
eval CREATE TABLE t1(a INT)
INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql';
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#
--replace_result $MYSQLTEST_VARDIR TEST_DIR
--error ER_WRONG_ARGUMENTS
--error 0,ER_WRONG_ARGUMENTS
eval CREATE TABLE t1(a INT)
DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/test';
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#
--replace_result $MYSQLTEST_VARDIR TEST_DIR
--error ER_WRONG_ARGUMENTS
--error 0,ER_WRONG_ARGUMENTS
eval CREATE TABLE t1(a INT)
DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/';
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#
--replace_result $MYSQLTEST_VARDIR TEST_DIR
--error ER_WRONG_ARGUMENTS
--error 0,ER_WRONG_ARGUMENTS
eval CREATE TABLE t1(a INT)
INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data';
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#
--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
#
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment