Loading mysql-test/r/temp_table.result +11 −0 Original line number Diff line number Diff line Loading @@ -184,3 +184,14 @@ select * from t1; a 42 drop table t1; CREATE TEMPORARY TABLE t1(a INT, b VARCHAR(20)); INSERT INTO t1 VALUES(1, 'val1'), (2, 'val2'), (3, 'val3'); DELETE FROM t1 WHERE a=1; SELECT count(*) FROM t1; count(*) 2 DELETE FROM t1; SELECT * FROM t1; a b DROP TABLE t1; End of 5.1 tests mysql-test/t/temp_table.test +14 −0 Original line number Diff line number Diff line Loading @@ -191,3 +191,17 @@ truncate t1; insert into t1 values (42); select * from t1; drop table t1; # # Bug #35392: Delete all statement does not execute properly after # few delete statements # CREATE TEMPORARY TABLE t1(a INT, b VARCHAR(20)); INSERT INTO t1 VALUES(1, 'val1'), (2, 'val2'), (3, 'val3'); DELETE FROM t1 WHERE a=1; SELECT count(*) FROM t1; DELETE FROM t1; SELECT * FROM t1; DROP TABLE t1; --echo End of 5.1 tests storage/myisam/mi_delete_all.c +7 −4 Original line number Diff line number Diff line Loading @@ -53,15 +53,18 @@ int mi_delete_all_rows(MI_INFO *info) since it was locked then there may be key blocks in the key cache */ flush_key_blocks(share->key_cache, share->kfile, FLUSH_IGNORE_CHANGED); #ifdef HAVE_MMAP if (share->file_map) _mi_unmap_file(info); #endif if (my_chsize(info->dfile, 0, 0, MYF(MY_WME)) || my_chsize(share->kfile, share->base.keystart, 0, MYF(MY_WME)) ) goto err; VOID(_mi_writeinfo(info,WRITEINFO_UPDATE_KEYFILE)); #ifdef HAVE_MMAP /* Resize mmaped area */ rw_wrlock(&info->s->mmap_lock); mi_remap_file(info, (my_off_t)0); rw_unlock(&info->s->mmap_lock); /* Map again */ if (share->file_map) mi_dynmap_file(info, (my_off_t) 0); #endif allow_break(); /* Allow SIGHUP & SIGINT */ DBUG_RETURN(0); Loading Loading
mysql-test/r/temp_table.result +11 −0 Original line number Diff line number Diff line Loading @@ -184,3 +184,14 @@ select * from t1; a 42 drop table t1; CREATE TEMPORARY TABLE t1(a INT, b VARCHAR(20)); INSERT INTO t1 VALUES(1, 'val1'), (2, 'val2'), (3, 'val3'); DELETE FROM t1 WHERE a=1; SELECT count(*) FROM t1; count(*) 2 DELETE FROM t1; SELECT * FROM t1; a b DROP TABLE t1; End of 5.1 tests
mysql-test/t/temp_table.test +14 −0 Original line number Diff line number Diff line Loading @@ -191,3 +191,17 @@ truncate t1; insert into t1 values (42); select * from t1; drop table t1; # # Bug #35392: Delete all statement does not execute properly after # few delete statements # CREATE TEMPORARY TABLE t1(a INT, b VARCHAR(20)); INSERT INTO t1 VALUES(1, 'val1'), (2, 'val2'), (3, 'val3'); DELETE FROM t1 WHERE a=1; SELECT count(*) FROM t1; DELETE FROM t1; SELECT * FROM t1; DROP TABLE t1; --echo End of 5.1 tests
storage/myisam/mi_delete_all.c +7 −4 Original line number Diff line number Diff line Loading @@ -53,15 +53,18 @@ int mi_delete_all_rows(MI_INFO *info) since it was locked then there may be key blocks in the key cache */ flush_key_blocks(share->key_cache, share->kfile, FLUSH_IGNORE_CHANGED); #ifdef HAVE_MMAP if (share->file_map) _mi_unmap_file(info); #endif if (my_chsize(info->dfile, 0, 0, MYF(MY_WME)) || my_chsize(share->kfile, share->base.keystart, 0, MYF(MY_WME)) ) goto err; VOID(_mi_writeinfo(info,WRITEINFO_UPDATE_KEYFILE)); #ifdef HAVE_MMAP /* Resize mmaped area */ rw_wrlock(&info->s->mmap_lock); mi_remap_file(info, (my_off_t)0); rw_unlock(&info->s->mmap_lock); /* Map again */ if (share->file_map) mi_dynmap_file(info, (my_off_t) 0); #endif allow_break(); /* Allow SIGHUP & SIGINT */ DBUG_RETURN(0); Loading