avoid using ndb tables in query cache
sql/ha_ndbcluster.h: fixed layout prohibit using query cache with ndb tables sql/handler.h: new caching type sql/sql_cache.cc: support of new caching type (caching prohibited)
This commit is contained in:
parent
af847c22af
commit
ea646dce60
43
mysql-test/r/ndb_cache.result
Normal file
43
mysql-test/r/ndb_cache.result
Normal file
@ -0,0 +1,43 @@
|
||||
set GLOBAL query_cache_size=1355776;
|
||||
reset query cache;
|
||||
flush status;
|
||||
drop table if exists t1,t2;
|
||||
CREATE TABLE t1 (a int) ENGINE=ndbcluster;
|
||||
CREATE TABLE t2 (a int);
|
||||
select * from t1;
|
||||
a
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 0
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 0
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
select * from t2;
|
||||
a
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 1
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
select * from t1;
|
||||
a
|
||||
select * from t2;
|
||||
a
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 1
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 1
|
||||
drop table t1, t2;
|
||||
SET GLOBAL query_cache_size=0;
|
31
mysql-test/t/ndb_cache.test
Normal file
31
mysql-test/t/ndb_cache.test
Normal file
@ -0,0 +1,31 @@
|
||||
-- source include/have_query_cache.inc
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
set GLOBAL query_cache_size=1355776;
|
||||
reset query cache;
|
||||
flush status;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a int) ENGINE=ndbcluster;
|
||||
CREATE TABLE t2 (a int);
|
||||
|
||||
select * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
select * from t2;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
SET GLOBAL query_cache_size=0;
|
@ -107,7 +107,7 @@ class ha_ndbcluster: public handler
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
bool has_transactions() { return true;}
|
||||
bool has_transactions() { return true; }
|
||||
|
||||
const char* index_type(uint key_number) {
|
||||
switch (get_index_type(key_number)) {
|
||||
@ -130,7 +130,7 @@ class ha_ndbcluster: public handler
|
||||
|
||||
static Ndb* seize_ndb();
|
||||
static void release_ndb(Ndb* ndb);
|
||||
|
||||
uint8 table_cache_type() { return HA_CACHE_TBL_NOCACHE; }
|
||||
|
||||
private:
|
||||
int alter_table_name(const char *from, const char *to);
|
||||
|
@ -138,8 +138,10 @@
|
||||
|
||||
/* Table caching type */
|
||||
#define HA_CACHE_TBL_NONTRANSACT 0
|
||||
#define HA_CACHE_TBL_ASKTRANSACT 1
|
||||
#define HA_CACHE_TBL_TRANSACT 2
|
||||
#define HA_CACHE_TBL_NOCACHE 1
|
||||
#define HA_CACHE_TBL_ASKTRANSACT 2
|
||||
#define HA_CACHE_TBL_TRANSACT 4
|
||||
|
||||
|
||||
enum db_type
|
||||
{
|
||||
|
@ -2614,12 +2614,14 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
|
||||
*/
|
||||
if (tables_used->table->db_type == DB_TYPE_MRG_ISAM ||
|
||||
tables_used->table->tmp_table != NO_TMP_TABLE ||
|
||||
(*tables_type & HA_CACHE_TBL_NOCACHE) ||
|
||||
(tables_used->db_length == 5 &&
|
||||
my_strnncoll(table_alias_charset, (uchar*)tables_used->db, 6,
|
||||
(uchar*)"mysql",6) == 0))
|
||||
{
|
||||
DBUG_PRINT("qcache",
|
||||
("select not cacheable: used MRG_ISAM, temporary or system table(s)"));
|
||||
("select not cacheable: used MRG_ISAM, temporary, \
|
||||
system or other non-cacheable table(s)"));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
if (tables_used->table->db_type == DB_TYPE_MRG_MYISAM)
|
||||
|
Loading…
x
Reference in New Issue
Block a user