summaryrefslogtreecommitdiff
path: root/sql/sql_base.cc
diff options
context:
space:
mode:
authorunknown <gluh@mysql.com/eagle.(none)>2007-01-11 16:50:34 +0400
committerunknown <gluh@mysql.com/eagle.(none)>2007-01-11 16:50:34 +0400
commitb73c5cdc31a3649d96367508bca7d0a63ea0ee1d (patch)
tree520a871563b9164c6dc91fbca9d2016e5d5b7ded /sql/sql_base.cc
parent93c01eb13e54e726b042faf4db5dfb2a6e3e15ff (diff)
downloadmariadb-git-b73c5cdc31a3649d96367508bca7d0a63ea0ee1d.tar.gz
after merge fix
Diffstat (limited to 'sql/sql_base.cc')
-rw-r--r--sql/sql_base.cc25
1 files changed, 14 insertions, 11 deletions
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 3de7d4375f1..6ecb8d42c7b 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -6076,7 +6076,7 @@ my_bool mysql_rm_tmp_tables(void)
char filePath[FN_REFLEN], *tmpdir, filePathCopy[FN_REFLEN];
MY_DIR *dirp;
FILEINFO *file;
- TABLE tmp_table;
+ TABLE_SHARE share;
THD *thd;
DBUG_ENTER("mysql_rm_tmp_tables");
@@ -6108,21 +6108,24 @@ my_bool mysql_rm_tmp_tables(void)
char *ext= fn_ext(file->name);
uint ext_len= strlen(ext);
uint filePath_len= my_snprintf(filePath, sizeof(filePath),
- "%s%c%s", FN_LIBCHAR,tmpdir,
+ "%s%c%s", tmpdir, FN_LIBCHAR,
file->name);
if (!bcmp(reg_ext, ext, ext_len))
{
- TABLE tmp_table;
- if (!openfrm(thd, filePath, "tmp_table", (uint) 0,
- READ_KEYINFO | COMPUTE_TYPES | EXTRA_RECORD,
- 0, &tmp_table))
+ handler *handler_file= 0;
+ /* We should cut file extention before deleting of table */
+ memcpy(filePathCopy, filePath, filePath_len - ext_len);
+ filePathCopy[filePath_len - ext_len]= 0;
+ init_tmp_table_share(&share, "", 0, "", filePathCopy);
+ if (!open_table_def(thd, &share, 0) &&
+ ((handler_file= get_new_handler(&share, thd->mem_root,
+ share.db_type))))
{
- /* 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);
+ handler_file->delete_table(filePathCopy);
+ delete handler_file;
}
+ free_table_share(&share);
+ }
}
/*
File can be already deleted by tmp_table.file->delete_table().