diff options
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index b564775703c..349fc792a2a 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -892,9 +892,14 @@ static File create_file(THD *thd, char *path, sql_exchange *exchange, option|= MY_REPLACE_DIR; // Force use of db directory #endif - strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "", - NullS); - (void) fn_format(path, exchange->file_name, path, "", option); + if (!dirname_length(exchange->file_name)) + { + 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)) { my_error(ER_FILE_EXISTS_ERROR, MYF(0), exchange->file_name); |