mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
A fix for a crashing bug with unspecified database in this type of
command: load data infile 'filename' into table db.table;
This commit is contained in:
@ -90,6 +90,13 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
bool is_fifo=0;
|
||||
LOAD_FILE_INFO lf_info;
|
||||
char * db = table_list->db ? table_list->db : thd->db;
|
||||
char * tdb= thd->db ? thd->db : db;
|
||||
/*
|
||||
'tdb' can be NULL only if both table_list->db and thd->db are NULL
|
||||
'db' itself can be NULL. but in that case it will generate
|
||||
an error earlier open_ltable()).
|
||||
*/
|
||||
|
||||
bool transactional_table, log_delayed;
|
||||
DBUG_ENTER("mysql_load");
|
||||
|
||||
@ -168,10 +175,10 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
ex->file_name+=dirname_length(ex->file_name);
|
||||
#endif
|
||||
if (!dirname_length(ex->file_name) &&
|
||||
strlen(ex->file_name)+strlen(mysql_data_home)+strlen(thd->db)+3 <
|
||||
strlen(ex->file_name)+strlen(mysql_data_home)+strlen(tdb)+3 <
|
||||
FN_REFLEN)
|
||||
{
|
||||
(void) sprintf(name,"%s/%s/%s",mysql_data_home,thd->db,ex->file_name);
|
||||
(void) sprintf(name,"%s/%s/%s",mysql_data_home,tdb,ex->file_name);
|
||||
unpack_filename(name,name); /* Convert to system format */
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user