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:
@ -717,4 +717,24 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
drop table t1;
|
drop table t1;
|
||||||
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;
|
set GLOBAL query_cache_size=0;
|
||||||
|
@ -533,4 +533,16 @@ select * from t1;
|
|||||||
drop table t1;
|
drop table 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;
|
set GLOBAL query_cache_size=0;
|
||||||
|
@ -1318,7 +1318,9 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
thd->exit_cond(old_message);
|
thd->exit_cond(old_message);
|
||||||
if (thd->killed)
|
if (thd->killed)
|
||||||
goto err;
|
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);
|
int result_code = (table->table->file->*operator_func)(thd, check_opt);
|
||||||
|
Reference in New Issue
Block a user