mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mysql.com:/home/gluh/MySQL/Merge/4.1-opt
into mysql.com:/home/gluh/MySQL/Merge/5.0-opt sql/mysqld.cc: Auto merged sql/sql_base.cc: Auto merged sql/mysql_priv.h: manual merge
This commit is contained in:
@ -36,7 +36,6 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
|
||||
TABLE_LIST *table_list, MEM_ROOT *mem_root,
|
||||
uint flags);
|
||||
static void free_cache_entry(TABLE *entry);
|
||||
static void mysql_rm_tmp_tables(void);
|
||||
static bool open_new_frm(THD *thd, const char *path, const char *alias,
|
||||
const char *db, const char *table_name,
|
||||
uint db_stat, uint prgflag,
|
||||
@ -53,7 +52,6 @@ extern "C" byte *table_cache_key(const byte *record,uint *length,
|
||||
|
||||
bool table_cache_init(void)
|
||||
{
|
||||
mysql_rm_tmp_tables();
|
||||
return hash_init(&open_cache, &my_charset_bin, table_cache_size+16,
|
||||
0, 0,table_cache_key,
|
||||
(hash_free_key) free_cache_entry, 0) != 0;
|
||||
@ -5157,14 +5155,20 @@ fill_record_n_invoke_before_triggers(THD *thd, Field **ptr,
|
||||
}
|
||||
|
||||
|
||||
static void mysql_rm_tmp_tables(void)
|
||||
my_bool mysql_rm_tmp_tables(void)
|
||||
{
|
||||
uint i, idx;
|
||||
char filePath[FN_REFLEN], *tmpdir;
|
||||
char filePath[FN_REFLEN], *tmpdir, filePathCopy[FN_REFLEN];
|
||||
MY_DIR *dirp;
|
||||
FILEINFO *file;
|
||||
TABLE tmp_table;
|
||||
THD *thd;
|
||||
DBUG_ENTER("mysql_rm_tmp_tables");
|
||||
|
||||
if (!(thd= new THD))
|
||||
DBUG_RETURN(1);
|
||||
thd->store_globals();
|
||||
|
||||
for (i=0; i<=mysql_tmpdir_list.max; i++)
|
||||
{
|
||||
tmpdir=mysql_tmpdir_list.list[i];
|
||||
@ -5185,13 +5189,37 @@ static void mysql_rm_tmp_tables(void)
|
||||
|
||||
if (!bcmp(file->name,tmp_file_prefix,tmp_file_prefix_length))
|
||||
{
|
||||
sprintf(filePath,"%s%s",tmpdir,file->name);
|
||||
VOID(my_delete(filePath,MYF(MY_WME)));
|
||||
char *ext= fn_ext(file->name);
|
||||
uint ext_len= strlen(ext);
|
||||
uint filePath_len= my_snprintf(filePath, sizeof(filePath),
|
||||
"%s%s", tmpdir, file->name);
|
||||
if (!bcmp(reg_ext, ext, ext_len))
|
||||
{
|
||||
TABLE tmp_table;
|
||||
if (!openfrm(filePath, "tmp_table", (uint) 0,
|
||||
READ_KEYINFO | COMPUTE_TYPES | EXTRA_RECORD,
|
||||
0, &tmp_table))
|
||||
{
|
||||
/* We should cut file extention before deleting of table */
|
||||
memcpy(filePathCopy, filePath, filePath_len - ext_len);
|
||||
filePathCopy[filePath_len - ext_len]= 0;
|
||||
tmp_table.file->delete_table(filePathCopy);
|
||||
closefrm(&tmp_table);
|
||||
}
|
||||
}
|
||||
/*
|
||||
File can be already deleted by tmp_table.file->delete_table().
|
||||
So we hide error messages which happnes during deleting of these
|
||||
files(MYF(0)).
|
||||
*/
|
||||
VOID(my_delete(filePath, MYF(0)));
|
||||
}
|
||||
}
|
||||
my_dirend(dirp);
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
delete thd;
|
||||
my_pthread_setspecific_ptr(THR_THD, 0);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user