1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Flush entries from the query cache for tables used in

administrative statements that may alter the table, such
as REPAIR TABLE. (Bug #8480)
This commit is contained in:
jimw@mysql.com
2005-03-07 18:15:19 -08:00
parent b5528a8dc6
commit df84c534dd
3 changed files with 35 additions and 1 deletions

View File

@ -717,4 +717,24 @@ select * from t1;
a
drop table t1;
drop table t1;
set global query_cache_size=1024*1024;
flush query cache;
create table t1 ( a int );
insert into t1 values (1);
select a from t1;
a
1
select a from t1;
a
1
show status like 'qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 1
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair status OK
show status like 'qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 0
drop table t1;
set GLOBAL query_cache_size=0;

View File

@ -533,4 +533,16 @@ select * from t1;
drop table t1;
drop table t1;
# Bug #8480: REPAIR TABLE needs to flush the table from the query cache
set global query_cache_size=1024*1024;
flush query cache;
create table t1 ( a int );
insert into t1 values (1);
select a from t1;
select a from t1;
show status like 'qcache_queries_in_cache';
repair table t1;
show status like 'qcache_queries_in_cache';
drop table t1;
set GLOBAL query_cache_size=0;

View File

@ -1318,7 +1318,9 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
thd->exit_cond(old_message);
if (thd->killed)
goto err;
open_for_modify=0;
/* Flush entries in the query cache involving this table. */
query_cache_invalidate3(thd, table->table, 0);
open_for_modify= 0;
}
int result_code = (table->table->file->*operator_func)(thd, check_opt);