Loading mysql-test/r/truncate.result +6 −0 Original line number Diff line number Diff line Loading @@ -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; mysql-test/t/truncate.test +5 −0 Original line number Diff line number Diff line Loading @@ -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; mysys/safemalloc.c +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading sql/sql_delete.cc +6 −2 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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) Loading Loading
mysql-test/r/truncate.result +6 −0 Original line number Diff line number Diff line Loading @@ -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;
mysql-test/t/truncate.test +5 −0 Original line number Diff line number Diff line Loading @@ -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;
mysys/safemalloc.c +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
sql/sql_delete.cc +6 −2 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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) Loading