diff -urN orig/myisam/mi_delete_table.c src/myisam/mi_delete_table.c --- orig/myisam/mi_delete_table.c 2010-12-18 18:48:16.000000000 -0800 +++ src/myisam/mi_delete_table.c 2010-12-23 15:02:51.000000000 -0800 @@ -21,7 +21,9 @@ int mi_delete_table(const char *name) { - char from[FN_REFLEN]; + char from_name_iext[FN_REFLEN]; + char from_name_dext[FN_REFLEN]; + int error_iext= 0, error_dext= 0; #ifdef USE_RAID uint raid_type=0,raid_chunks=0; #endif @@ -55,15 +57,21 @@ #ifdef EXTRA_DEBUG check_table_is_closed(name,"delete"); #endif -#endif /* USE_RAID */ - fn_format(from,name,"",MI_NAME_IEXT,4); - if (my_delete_with_symlink(from, MYF(MY_WME))) - DBUG_RETURN(my_errno); - fn_format(from,name,"",MI_NAME_DEXT,4); -#ifdef USE_RAID if (raid_type) - DBUG_RETURN(my_raid_delete(from, raid_chunks, MYF(MY_WME)) ? my_errno : 0); -#endif - DBUG_RETURN(my_delete_with_symlink(from, MYF(MY_WME)) ? my_errno : 0); + DBUG_RETURN(my_raid_delete(from_name_dext, raid_chunks, MYF(MY_WME)) ? my_errno : 0); +#endif /* USE_RAID */ + + fn_format(from_name_iext,name,"",MI_NAME_IEXT,4); + fn_format(from_name_dext,name,"",MI_NAME_DEXT,4); + error_iext= my_delete_with_symlink(from_name_iext, MYF(MY_WME)); + error_dext= my_delete_with_symlink(from_name_dext, MYF(MY_WME)); + + if (error_iext) + DBUG_RETURN(error_iext); + + if (error_dext) + DBUG_RETURN(error_dext); + + DBUG_RETURN(0); } diff -urN orig/sql/sql_select.cc src/sql/sql_select.cc --- orig/sql/sql_select.cc 2010-12-18 18:48:16.000000000 -0800 +++ src/sql/sql_select.cc 2010-12-23 15:03:00.000000000 -0800 @@ -10142,6 +10142,7 @@ { MEM_ROOT own_root= entry->mem_root; const char *save_proc_info; + int error = 0; DBUG_ENTER("free_tmp_table"); DBUG_PRINT("enter",("table: %s",entry->alias)); @@ -10161,7 +10162,8 @@ */ if (!(test_flags & TEST_KEEP_TMP_TABLES) || entry->s->db_type == DB_TYPE_HEAP) - entry->file->delete_table(entry->s->table_name); + if (error = entry->file->delete_table(entry->s->table_name)) + sql_print_error("Failed to delete temporary table (%s) with error (%d)", entry->s->path, error); delete entry->file; }