From 3ecabaa9f7c0f6cf5d38391c5e38580d798802fa Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Wed, 23 Feb 2005 13:59:04 -0800 Subject: [PATCH] Don't try to create a symlink if the DATA DIRECTORY specified for a table is the same as the normal datadir for that database. (Bug #8707) --- mysql-test/r/symlink.result | 14 ++++++++++++++ mysql-test/t/symlink.test | 11 +++++++++++ mysys/my_symlink2.c | 7 ++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/symlink.result b/mysql-test/r/symlink.result index 08d75d8b562..50210d82c69 100644 --- a/mysql-test/r/symlink.result +++ b/mysql-test/r/symlink.result @@ -84,3 +84,17 @@ t1 CREATE TABLE `t1` ( `b` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; +create table t1 (i int) data directory = "/home/jimw/my/mysql-4.1-8707/mysql-test/var/master-data/test/"; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) default NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; +create table t1 (i int) index directory = "/home/jimw/my/mysql-4.1-8707/mysql-test/var/master-data/test/"; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) default NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index 78c9b68fde5..b53be62861e 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -115,3 +115,14 @@ eval alter table t1 index directory="$MYSQL_TEST_DIR/var/log"; enable_query_log; show create table t1; drop table t1; + +# +# Test specifying DATA DIRECTORY that is the same as what would normally +# have been chosen. (Bug #8707) +# +eval create table t1 (i int) data directory = "$MYSQL_TEST_DIR/var/master-data/test/"; +show create table t1; +drop table t1; +eval create table t1 (i int) index directory = "$MYSQL_TEST_DIR/var/master-data/test/"; +show create table t1; +drop table t1; diff --git a/mysys/my_symlink2.c b/mysys/my_symlink2.c index 913f632fbb4..80dca7d56ac 100644 --- a/mysys/my_symlink2.c +++ b/mysys/my_symlink2.c @@ -32,6 +32,7 @@ File my_create_with_symlink(const char *linkname, const char *filename, int tmp_errno; /* Test if we should create a link */ int create_link; + char abs_linkname[FN_REFLEN]; DBUG_ENTER("my_create_with_symlink"); if (my_disable_symlinks) @@ -42,7 +43,11 @@ File my_create_with_symlink(const char *linkname, const char *filename, filename= linkname; } else - create_link= (linkname && strcmp(linkname,filename)); + { + if (linkname) + my_realpath(&abs_linkname, linkname, MYF(0)); + create_link= (linkname && strcmp(abs_linkname,filename)); + } if (!(MyFlags & MY_DELETE_OLD)) {