Loading include/my_sys.h +1 −0 Original line number Diff line number Diff line Loading @@ -577,6 +577,7 @@ extern int my_close(File Filedes,myf MyFlags); extern File my_dup(File file, myf MyFlags); extern int my_mkdir(const char *dir, int Flags, myf MyFlags); extern int my_readlink(char *to, const char *filename, myf MyFlags); extern int my_is_symlink(const char *filename); extern int my_realpath(char *to, const char *filename, myf MyFlags); extern File my_create_with_symlink(const char *linkname, const char *filename, int createflags, int access_flags, Loading include/myisam.h +4 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,10 @@ extern my_bool myisam_flush,myisam_delay_key_write,myisam_single_user; extern my_off_t myisam_max_temp_length; extern ulong myisam_bulk_insert_tree_size, myisam_data_pointer_size; /* usually used to check if a symlink points into the mysql data home */ /* which is normally forbidden */ extern int (*myisam_test_invalid_symlink)(const char *filename); /* Prototypes for myisam-functions */ extern int mi_close(struct st_myisam_info *file); Loading mysql-test/r/partition_symlink.result +2 −2 Original line number Diff line number Diff line Loading @@ -113,9 +113,9 @@ set @@sql_mode=@org_mode; create table t1 (a int) partition by key (a) (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); ERROR 42000: Incorrect table name 'part-data' ERROR HY000: Incorrect arguments to DATA DIRECTORY create table t1 (a int) partition by key (a) (partition p0, partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); ERROR 42000: Incorrect table name 'part-data' ERROR HY000: Incorrect arguments to DATA DIRECTORY mysql-test/t/partition_symlink.test +2 −2 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ set @@sql_mode=@org_mode; # # Bug 21350: Data Directory problems # -- error ER_WRONG_TABLE_NAME -- error ER_WRONG_ARGUMENTS create table t1 (a int) partition by key (a) (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); Loading @@ -163,7 +163,7 @@ partition by key (a) # Insert a test that manages to create the first partition and fails with # the second, ensure that we clean up afterwards in a proper manner. # --error ER_WRONG_TABLE_NAME --error ER_WRONG_ARGUMENTS create table t1 (a int) partition by key (a) (partition p0, Loading mysys/my_symlink.c +24 −23 Original line number Diff line number Diff line Loading @@ -108,24 +108,26 @@ int my_symlink(const char *content, const char *linkname, myf MyFlags) #define BUFF_LEN FN_LEN #endif int my_is_symlink(const char *filename __attribute__((unused))) { struct stat stat_buff; return !lstat(filename, &stat_buff) && S_ISLNK(stat_buff.st_mode); } int my_realpath(char *to, const char *filename, myf MyFlags __attribute__((unused))) { #if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH) int result=0; char buff[BUFF_LEN]; struct stat stat_buff; char *ptr; DBUG_ENTER("my_realpath"); if (!(MyFlags & MY_RESOLVE_LINK) || (!lstat(filename,&stat_buff) && S_ISLNK(stat_buff.st_mode))) { char *ptr; DBUG_PRINT("info",("executing realpath")); if ((ptr=realpath(filename,buff))) { strmake(to,ptr,FN_REFLEN-1); } else { /* Loading @@ -140,7 +142,6 @@ int my_realpath(char *to, const char *filename, my_load_path(to, filename, NullS); result= -1; } } DBUG_RETURN(result); #else my_load_path(to, filename, NullS); Loading Loading
include/my_sys.h +1 −0 Original line number Diff line number Diff line Loading @@ -577,6 +577,7 @@ extern int my_close(File Filedes,myf MyFlags); extern File my_dup(File file, myf MyFlags); extern int my_mkdir(const char *dir, int Flags, myf MyFlags); extern int my_readlink(char *to, const char *filename, myf MyFlags); extern int my_is_symlink(const char *filename); extern int my_realpath(char *to, const char *filename, myf MyFlags); extern File my_create_with_symlink(const char *linkname, const char *filename, int createflags, int access_flags, Loading
include/myisam.h +4 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,10 @@ extern my_bool myisam_flush,myisam_delay_key_write,myisam_single_user; extern my_off_t myisam_max_temp_length; extern ulong myisam_bulk_insert_tree_size, myisam_data_pointer_size; /* usually used to check if a symlink points into the mysql data home */ /* which is normally forbidden */ extern int (*myisam_test_invalid_symlink)(const char *filename); /* Prototypes for myisam-functions */ extern int mi_close(struct st_myisam_info *file); Loading
mysql-test/r/partition_symlink.result +2 −2 Original line number Diff line number Diff line Loading @@ -113,9 +113,9 @@ set @@sql_mode=@org_mode; create table t1 (a int) partition by key (a) (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); ERROR 42000: Incorrect table name 'part-data' ERROR HY000: Incorrect arguments to DATA DIRECTORY create table t1 (a int) partition by key (a) (partition p0, partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); ERROR 42000: Incorrect table name 'part-data' ERROR HY000: Incorrect arguments to DATA DIRECTORY
mysql-test/t/partition_symlink.test +2 −2 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ set @@sql_mode=@org_mode; # # Bug 21350: Data Directory problems # -- error ER_WRONG_TABLE_NAME -- error ER_WRONG_ARGUMENTS create table t1 (a int) partition by key (a) (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); Loading @@ -163,7 +163,7 @@ partition by key (a) # Insert a test that manages to create the first partition and fails with # the second, ensure that we clean up afterwards in a proper manner. # --error ER_WRONG_TABLE_NAME --error ER_WRONG_ARGUMENTS create table t1 (a int) partition by key (a) (partition p0, Loading
mysys/my_symlink.c +24 −23 Original line number Diff line number Diff line Loading @@ -108,24 +108,26 @@ int my_symlink(const char *content, const char *linkname, myf MyFlags) #define BUFF_LEN FN_LEN #endif int my_is_symlink(const char *filename __attribute__((unused))) { struct stat stat_buff; return !lstat(filename, &stat_buff) && S_ISLNK(stat_buff.st_mode); } int my_realpath(char *to, const char *filename, myf MyFlags __attribute__((unused))) { #if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH) int result=0; char buff[BUFF_LEN]; struct stat stat_buff; char *ptr; DBUG_ENTER("my_realpath"); if (!(MyFlags & MY_RESOLVE_LINK) || (!lstat(filename,&stat_buff) && S_ISLNK(stat_buff.st_mode))) { char *ptr; DBUG_PRINT("info",("executing realpath")); if ((ptr=realpath(filename,buff))) { strmake(to,ptr,FN_REFLEN-1); } else { /* Loading @@ -140,7 +142,6 @@ int my_realpath(char *to, const char *filename, my_load_path(to, filename, NullS); result= -1; } } DBUG_RETURN(result); #else my_load_path(to, filename, NullS); Loading