summaryrefslogtreecommitdiff
path: root/sql/sql_insert.cc
diff options
context:
space:
mode:
authorguilhem@mysql.com <>2004-07-18 14:34:35 +0200
committerguilhem@mysql.com <>2004-07-18 14:34:35 +0200
commite5c2285782028f99e28b2e213cc2415520245bdd (patch)
tree71d71d4521a5c8afca5268b92bd869ec376dd737 /sql/sql_insert.cc
parent37bf41a7ae2e5f0561e659f23dada04d5e37861e (diff)
downloadmariadb-git-e5c2285782028f99e28b2e213cc2415520245bdd.tar.gz
Fix for BUG#4551 "Temporary InnoDB tables not replicated properly with CREATE TABLE .. SELECT"
The problem was that (for any storage engine), the created temporary table was not removed if CREATE SELECT failed (because of a constraint violation for example). This was not consistent with the manual and with CREATE SELECT (no TEMPORARY).
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r--sql/sql_insert.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 94e2f8f8850..8912c1faf2a 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -1545,9 +1545,13 @@ void select_create::abort()
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
enum db_type table_type=table->db_type;
if (!table->tmp_table)
+ {
hash_delete(&open_cache,(byte*) table);
- if (!create_info->table_existed)
- quick_rm_table(table_type,db,name);
+ if (!create_info->table_existed)
+ quick_rm_table(table_type, db, name);
+ }
+ else if (!create_info->table_existed)
+ close_temporary_table(thd, db, name);
table=0;
}
VOID(pthread_mutex_unlock(&LOCK_open));