Merge laptop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into laptop.sanja.is.com.ua:/home/bell/mysql/bk/work-qc-4.1
This commit is contained in:
commit
7a86c7df28
@ -10,7 +10,7 @@ a
|
|||||||
3
|
3
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 1
|
Qcache_queries_in_cache 0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
commit;
|
commit;
|
||||||
set autocommit=1;
|
set autocommit=1;
|
||||||
@ -24,7 +24,7 @@ a
|
|||||||
3
|
3
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 1
|
Qcache_queries_in_cache 0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
commit;
|
commit;
|
||||||
create table t1 (a int not null) type=innodb;
|
create table t1 (a int not null) type=innodb;
|
||||||
@ -90,14 +90,14 @@ a
|
|||||||
2
|
2
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 3
|
Qcache_queries_in_cache 1
|
||||||
show status like "Qcache_hits";
|
show status like "Qcache_hits";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_hits 4
|
Qcache_hits 4
|
||||||
commit;
|
commit;
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 3
|
Qcache_queries_in_cache 1
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
CREATE TABLE t1 (id int(11) NOT NULL auto_increment, PRIMARY KEY (id)) TYPE=InnoDB;
|
CREATE TABLE t1 (id int(11) NOT NULL auto_increment, PRIMARY KEY (id)) TYPE=InnoDB;
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
|
@ -769,9 +769,18 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
|
|||||||
STRUCT_LOCK(&structure_guard_mutex);
|
STRUCT_LOCK(&structure_guard_mutex);
|
||||||
|
|
||||||
if (query_cache_size == 0)
|
if (query_cache_size == 0)
|
||||||
|
{
|
||||||
|
STRUCT_UNLOCK(&structure_guard_mutex);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
DUMP(this);
|
DUMP(this);
|
||||||
|
|
||||||
|
if (ask_handler_allowance(thd, tables_used))
|
||||||
|
{
|
||||||
|
STRUCT_UNLOCK(&structure_guard_mutex);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
/* Key is query + database + flag */
|
/* Key is query + database + flag */
|
||||||
if (thd->db_length)
|
if (thd->db_length)
|
||||||
{
|
{
|
||||||
@ -2548,6 +2557,39 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check handler allowence to cache query with this tables
|
||||||
|
|
||||||
|
SYNOPSYS
|
||||||
|
Query_cache::ask_handler_allowance()
|
||||||
|
thd - thread handlers
|
||||||
|
tables_used - tables list used in query
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
0 - caching allowed
|
||||||
|
1 - caching disallowed
|
||||||
|
*/
|
||||||
|
my_bool Query_cache::ask_handler_allowance(THD *thd,
|
||||||
|
TABLE_LIST *tables_used)
|
||||||
|
{
|
||||||
|
DBUG_ENTER("Query_cache::is_cacheable");
|
||||||
|
|
||||||
|
for (; tables_used; tables_used= tables_used->next)
|
||||||
|
{
|
||||||
|
TABLE *table= tables_used->table;
|
||||||
|
if (!handler::caching_allowed(thd, table->table_cache_key,
|
||||||
|
table->key_length,
|
||||||
|
table->file->table_cache_type()))
|
||||||
|
{
|
||||||
|
DBUG_PRINT("qcache", ("Handler does not allow caching for %s.%s",
|
||||||
|
tables_used->db, tables_used->alias));
|
||||||
|
thd->lex.safe_to_cache_query= 0; // Don't try to cache this
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Packing
|
Packing
|
||||||
|
@ -345,6 +345,8 @@ protected:
|
|||||||
TABLE_COUNTER_TYPE is_cacheable(THD *thd, uint32 query_len, char *query,
|
TABLE_COUNTER_TYPE is_cacheable(THD *thd, uint32 query_len, char *query,
|
||||||
LEX *lex, TABLE_LIST *tables_used,
|
LEX *lex, TABLE_LIST *tables_used,
|
||||||
uint8 *tables_type);
|
uint8 *tables_type);
|
||||||
|
|
||||||
|
static my_bool ask_handler_allowance(THD *thd, TABLE_LIST *tables_used);
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Query_cache(ulong query_cache_limit = ULONG_MAX,
|
Query_cache(ulong query_cache_limit = ULONG_MAX,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user