mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.4815
This commit is contained in:
commit
118669b418
5 changed files with 29 additions and 15 deletions
|
@ -42,7 +42,7 @@ my_string fn_format(my_string to, const char *name, const char *dir,
|
||||||
/* Use given directory */
|
/* Use given directory */
|
||||||
convert_dirname(dev,dir,NullS); /* Fix to this OS */
|
convert_dirname(dev,dir,NullS); /* Fix to this OS */
|
||||||
}
|
}
|
||||||
else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(name))
|
else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(dev))
|
||||||
{
|
{
|
||||||
/* Put 'dir' before the given path */
|
/* Put 'dir' before the given path */
|
||||||
strmake(buff,dev,sizeof(buff)-1);
|
strmake(buff,dev,sizeof(buff)-1);
|
||||||
|
|
|
@ -2412,14 +2412,22 @@ String *Item_load_file::val_str(String *str)
|
||||||
String *file_name;
|
String *file_name;
|
||||||
File file;
|
File file;
|
||||||
MY_STAT stat_info;
|
MY_STAT stat_info;
|
||||||
|
char path[FN_REFLEN];
|
||||||
DBUG_ENTER("load_file");
|
DBUG_ENTER("load_file");
|
||||||
|
|
||||||
if (!(file_name= args[0]->val_str(str)) ||
|
if (!(file_name= args[0]->val_str(str))
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
!(current_thd->master_access & FILE_ACL) ||
|
|| !(current_thd->master_access & FILE_ACL)
|
||||||
#endif
|
#endif
|
||||||
!my_stat(file_name->c_ptr(), &stat_info, MYF(MY_WME)))
|
)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
(void) fn_format(path, file_name->c_ptr(), mysql_real_data_home, "",
|
||||||
|
MY_RELATIVE_PATH | MY_UNPACK_FILENAME);
|
||||||
|
|
||||||
|
if (!my_stat(path, &stat_info, MYF(MY_WME)))
|
||||||
|
goto err;
|
||||||
|
|
||||||
if (!(stat_info.st_mode & S_IROTH))
|
if (!(stat_info.st_mode & S_IROTH))
|
||||||
{
|
{
|
||||||
/* my_error(ER_TEXTFILE_NOT_READABLE, MYF(0), file_name->c_ptr()); */
|
/* my_error(ER_TEXTFILE_NOT_READABLE, MYF(0), file_name->c_ptr()); */
|
||||||
|
|
|
@ -892,9 +892,14 @@ static File create_file(THD *thd, char *path, sql_exchange *exchange,
|
||||||
option|= MY_REPLACE_DIR; // Force use of db directory
|
option|= MY_REPLACE_DIR; // Force use of db directory
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "",
|
if (!dirname_length(exchange->file_name))
|
||||||
NullS);
|
{
|
||||||
(void) fn_format(path, exchange->file_name, path, "", option);
|
strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "", NullS);
|
||||||
|
(void) fn_format(path, exchange->file_name, path, "", option);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
(void) fn_format(path, exchange->file_name, mysql_real_data_home, "", option);
|
||||||
|
|
||||||
if (!access(path, F_OK))
|
if (!access(path, F_OK))
|
||||||
{
|
{
|
||||||
my_error(ER_FILE_EXISTS_ERROR, MYF(0), exchange->file_name);
|
my_error(ER_FILE_EXISTS_ERROR, MYF(0), exchange->file_name);
|
||||||
|
|
|
@ -179,17 +179,16 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||||
#ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS
|
#ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS
|
||||||
ex->file_name+=dirname_length(ex->file_name);
|
ex->file_name+=dirname_length(ex->file_name);
|
||||||
#endif
|
#endif
|
||||||
if (!dirname_length(ex->file_name) &&
|
if (!dirname_length(ex->file_name))
|
||||||
strlen(ex->file_name)+strlen(mysql_real_data_home)+strlen(tdb)+3 <
|
|
||||||
FN_REFLEN)
|
|
||||||
{
|
{
|
||||||
(void) sprintf(name,"%s%s/%s",mysql_real_data_home,tdb,ex->file_name);
|
strxnmov(name, FN_REFLEN, mysql_real_data_home, tdb, NullS);
|
||||||
unpack_filename(name,name); /* Convert to system format */
|
(void) fn_format(name, ex->file_name, name, "",
|
||||||
|
MY_RELATIVE_PATH | MY_UNPACK_FILENAME);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my_load_path(name, ex->file_name, mysql_real_data_home);
|
(void) fn_format(name, ex->file_name, mysql_real_data_home, "",
|
||||||
unpack_filename(name, name);
|
MY_RELATIVE_PATH | MY_UNPACK_FILENAME);
|
||||||
#if !defined(__WIN__) && !defined(OS2) && ! defined(__NETWARE__)
|
#if !defined(__WIN__) && !defined(OS2) && ! defined(__NETWARE__)
|
||||||
MY_STAT stat_info;
|
MY_STAT stat_info;
|
||||||
if (!my_stat(name,&stat_info,MYF(MY_WME)))
|
if (!my_stat(name,&stat_info,MYF(MY_WME)))
|
||||||
|
|
|
@ -2610,7 +2610,9 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!access(fn_format(new_name_buff,new_name_buff,new_db,reg_ext,0),
|
char dir_buff[FN_REFLEN];
|
||||||
|
strxnmov(dir_buff, FN_REFLEN, mysql_real_data_home, new_db, NullS);
|
||||||
|
if (!access(fn_format(new_name_buff,new_name_buff,dir_buff,reg_ext,0),
|
||||||
F_OK))
|
F_OK))
|
||||||
{
|
{
|
||||||
/* Table will be closed in do_command() */
|
/* Table will be closed in do_command() */
|
||||||
|
|
Loading…
Reference in a new issue