diff options
author | unknown <sasha@mysql.sashanet.com> | 2002-04-08 18:20:24 -0600 |
---|---|---|
committer | unknown <sasha@mysql.sashanet.com> | 2002-04-08 18:20:24 -0600 |
commit | fc79f8e68ac81dfa0841c3a5899d4bed905f35c5 (patch) | |
tree | a29549e01f5f40479b43c1a0dc2f11c3c89c8f71 | |
parent | d85cacfa63eeaeebb4e23c9c85c8fcd2de3712cb (diff) | |
download | mariadb-git-fc79f8e68ac81dfa0841c3a5899d4bed905f35c5.tar.gz |
fixed bug in truncating temp tables
fixed compilation problem on FreeBSD
added test for truncating temporary tables
mysql-test/r/truncate.result:
truncate test
mysql-test/t/truncate.test:
truncate test update
mysys/safemalloc.c:
fixed FreeBSD compilation problem
sql/sql_delete.cc:
fixed bug in truncating temporary tables
-rw-r--r-- | mysql-test/r/truncate.result | 6 | ||||
-rw-r--r-- | mysql-test/t/truncate.test | 5 | ||||
-rw-r--r-- | mysys/safemalloc.c | 3 | ||||
-rw-r--r-- | sql/sql_delete.cc | 8 |
4 files changed, 20 insertions, 2 deletions
diff --git a/mysql-test/r/truncate.result b/mysql-test/r/truncate.result index 79471611638..e02797cc8e5 100644 --- a/mysql-test/r/truncate.result +++ b/mysql-test/r/truncate.result @@ -14,3 +14,9 @@ a b c1 drop table t1; select count(*) from t1; Table 'test.t1' doesn't exist +create temporary table t1 (n int); +insert into t1 values (1),(2),(3); +truncate table t1; +select * from t1; +n +drop table t1; diff --git a/mysql-test/t/truncate.test b/mysql-test/t/truncate.test index 2430682a93f..1729ddc586a 100644 --- a/mysql-test/t/truncate.test +++ b/mysql-test/t/truncate.test @@ -13,3 +13,8 @@ drop table t1; # The following should fail --error 1146 select count(*) from t1; +create temporary table t1 (n int); +insert into t1 values (1),(2),(3); +truncate table t1; +select * from t1; +drop table t1; diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index 0c169f2f0cc..074afe27500 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -73,7 +73,10 @@ #include "mysys_err.h" ulonglong safemalloc_mem_limit = ~(ulonglong)0; + +#ifdef THREAD pthread_t shutdown_th,main_th,signal_th; +#endif #define pNext tInt._pNext #define pPrev tInt._pPrev diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 89e30f31fd5..f5a5a684fc0 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -520,7 +520,11 @@ int mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) if ((error= (int) !(open_temporary_table(thd, path, table_list->db, table_list->real_name, 1)))) (void) rm_temporary_table(table_type, path); - DBUG_RETURN(error ? -1 : 0); + /* Sasha: if we return here we will not have binloged the truncation and + we will not send_ok() to the client. Yes, we do need better coverage + testing, this bug has been here for a few months :-). + */ + goto end; } (void) sprintf(path,"%s/%s/%s%s",mysql_data_home,table_list->db, @@ -549,7 +553,7 @@ int mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) *fn_ext(path)=0; // Remove the .frm extension error= ha_create_table(path,&create_info,1) ? -1 : 0; query_cache_invalidate3(thd, table_list, 0); - +end: if (!dont_send_ok) { if (!error) |