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)


mysys/my_symlink2.c:
  Expand path of linkname before checking it against filename to decide if
  we need to create a link.
mysql-test/t/symlink.test:
  Add new regression test
mysql-test/r/symlink.result:
  Add new results
This commit is contained in:
unknown 2005-02-23 13:59:04 -08:00
parent 8776230074
commit a1db28a290
3 changed files with 31 additions and 1 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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))
{