Loading Docs/manual.texi +2 −0 Original line number Diff line number Diff line Loading @@ -50147,6 +50147,8 @@ each individual 4.0.x release. @itemize @bullet @item Fixed bug in query cache after temporary table creation. @item Added --count=N (-c) to mysqladmin, to be used with -i (--sleep). When used, the program will only make N iterations. Useful in scripts. @item mysql-test/r/query_cache.result +20 −0 Original line number Diff line number Diff line Loading @@ -506,3 +506,23 @@ set GLOBAL query_cache_size=1900; show global variables like "query_cache_size"; Variable_name Value query_cache_size 1024 set GLOBAL query_cache_size=1048576; create table t1 (i int not null); create table t2 (i int not null); select * from t1; i show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 1 create temporary table t3 (i int not null); select * from t2; i show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 2 select * from t3; i show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 2 drop table t1, t2, t3; mysql-test/t/query_cache.test +15 −0 Original line number Diff line number Diff line Loading @@ -352,3 +352,18 @@ set GLOBAL query_cache_size=1700; set GLOBAL query_cache_size=1800; set GLOBAL query_cache_size=1900; show global variables like "query_cache_size"; # # Temporary tables # set GLOBAL query_cache_size=1048576; create table t1 (i int not null); create table t2 (i int not null); select * from t1; show status like "Qcache_queries_in_cache"; create temporary table t3 (i int not null); select * from t2; show status like "Qcache_queries_in_cache"; select * from t3; show status like "Qcache_queries_in_cache"; drop table t1, t2, t3; sql/sql_cache.cc +4 −3 Original line number Diff line number Diff line Loading @@ -2395,7 +2395,6 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len, DBUG_ENTER("Query_cache::is_cacheable"); if (lex->sql_command == SQLCOM_SELECT && thd->temporary_tables == 0 && (thd->variables.query_cache_type == 1 || (thd->variables.query_cache_type == 2 && (lex->select->options & OPTION_TO_QUERY_CACHE))) && Loading @@ -2416,9 +2415,11 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len, has_transactions = (has_transactions || tables_used->table->file->has_transactions()); if (tables_used->table->db_type == DB_TYPE_MRG_ISAM) if (tables_used->table->db_type == DB_TYPE_MRG_ISAM || tables_used->table->tmp_table != NO_TMP_TABLE) { DBUG_PRINT("qcache", ("select not cacheable: used MRG_ISAM table(s)")); DBUG_PRINT("qcache", ("select not cacheable: used MRG_ISAM or temporary table(s)")); DBUG_RETURN(0); } if (tables_used->table->db_type == DB_TYPE_MRG_MYISAM) Loading Loading
Docs/manual.texi +2 −0 Original line number Diff line number Diff line Loading @@ -50147,6 +50147,8 @@ each individual 4.0.x release. @itemize @bullet @item Fixed bug in query cache after temporary table creation. @item Added --count=N (-c) to mysqladmin, to be used with -i (--sleep). When used, the program will only make N iterations. Useful in scripts. @item
mysql-test/r/query_cache.result +20 −0 Original line number Diff line number Diff line Loading @@ -506,3 +506,23 @@ set GLOBAL query_cache_size=1900; show global variables like "query_cache_size"; Variable_name Value query_cache_size 1024 set GLOBAL query_cache_size=1048576; create table t1 (i int not null); create table t2 (i int not null); select * from t1; i show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 1 create temporary table t3 (i int not null); select * from t2; i show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 2 select * from t3; i show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 2 drop table t1, t2, t3;
mysql-test/t/query_cache.test +15 −0 Original line number Diff line number Diff line Loading @@ -352,3 +352,18 @@ set GLOBAL query_cache_size=1700; set GLOBAL query_cache_size=1800; set GLOBAL query_cache_size=1900; show global variables like "query_cache_size"; # # Temporary tables # set GLOBAL query_cache_size=1048576; create table t1 (i int not null); create table t2 (i int not null); select * from t1; show status like "Qcache_queries_in_cache"; create temporary table t3 (i int not null); select * from t2; show status like "Qcache_queries_in_cache"; select * from t3; show status like "Qcache_queries_in_cache"; drop table t1, t2, t3;
sql/sql_cache.cc +4 −3 Original line number Diff line number Diff line Loading @@ -2395,7 +2395,6 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len, DBUG_ENTER("Query_cache::is_cacheable"); if (lex->sql_command == SQLCOM_SELECT && thd->temporary_tables == 0 && (thd->variables.query_cache_type == 1 || (thd->variables.query_cache_type == 2 && (lex->select->options & OPTION_TO_QUERY_CACHE))) && Loading @@ -2416,9 +2415,11 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len, has_transactions = (has_transactions || tables_used->table->file->has_transactions()); if (tables_used->table->db_type == DB_TYPE_MRG_ISAM) if (tables_used->table->db_type == DB_TYPE_MRG_ISAM || tables_used->table->tmp_table != NO_TMP_TABLE) { DBUG_PRINT("qcache", ("select not cacheable: used MRG_ISAM table(s)")); DBUG_PRINT("qcache", ("select not cacheable: used MRG_ISAM or temporary table(s)")); DBUG_RETURN(0); } if (tables_used->table->db_type == DB_TYPE_MRG_MYISAM) Loading