changed query cache type variable for ndb

parent 49b02a8f
......@@ -3025,7 +3025,9 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
m_transaction_on= FALSE;
else
m_transaction_on= thd->variables.ndb_use_transactions;
m_use_local_query_cache= thd->variables.ndb_use_local_query_cache;
#ifdef HAVE_QUERY_CACHE
m_query_cache_type= thd->variables.ndb_query_cache_type;
#endif
m_active_trans= thd->transaction.all.ndb_tid ?
(NdbConnection*)thd->transaction.all.ndb_tid:
......@@ -3751,8 +3753,8 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
m_force_send(TRUE),
m_autoincrement_prefetch(32),
m_transaction_on(TRUE),
m_use_local_query_cache(FALSE)
{
m_query_cache_type(0)
{
int i;
DBUG_ENTER("ha_ndbcluster");
......@@ -4455,10 +4457,17 @@ const char* ha_ndbcluster::index_type(uint key_number)
}
uint8 ha_ndbcluster::table_cache_type()
{
if (m_use_local_query_cache)
switch (m_query_cache_type)
{
case 0:
return HA_CACHE_TBL_NOCACHE;
case 1:
return HA_CACHE_TBL_ASKTRANSACT;
case 2:
return HA_CACHE_TBL_TRANSACT;
else
default:
return HA_CACHE_TBL_NOCACHE;
}
}
/*
......
......@@ -244,7 +244,7 @@ class ha_ndbcluster: public handler
bool m_force_send;
ha_rows m_autoincrement_prefetch;
bool m_transaction_on;
bool m_use_local_query_cache;
ulong m_query_cache_type;
void set_rec_per_key();
void records_update();
......
......@@ -3954,7 +3954,7 @@ enum options_mysqld
OPT_INNODB, OPT_ISAM,
OPT_NDBCLUSTER, OPT_NDB_CONNECTSTRING, OPT_NDB_USE_EXACT_COUNT,
OPT_NDB_FORCE_SEND, OPT_NDB_AUTOINCREMENT_PREFETCH_SZ,
OPT_NDB_USE_LOCAL_QUERY_CACHE,
OPT_NDB_QUERY_CACHE_TYPE,
OPT_SKIP_SAFEMALLOC,
OPT_TEMP_POOL, OPT_TX_ISOLATION,
OPT_SKIP_STACK_TRACE, OPT_SKIP_SYMLINKS,
......@@ -4414,12 +4414,16 @@ Disable with --skip-ndbcluster (will save memory).",
(gptr*) &global_system_variables.ndb_use_exact_count,
(gptr*) &global_system_variables.ndb_use_exact_count,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb_use_local_query_cache", OPT_NDB_USE_LOCAL_QUERY_CACHE,
"Use local query cache, note that this cache will _not_ "
"be invalidated if data is updated through other mysql servers",
(gptr*) &global_system_variables.ndb_use_local_query_cache,
(gptr*) &global_system_variables.ndb_use_local_query_cache,
0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_QUERY_CACHE
{"ndb_query_cache_type", OPT_NDB_QUERY_CACHE_TYPE,
"0 = OFF = Don't cache or retrieve results. 1 = ON = Cache as query_cache_type states and "
"invalidate cache if tables are updated by other mysql servers. "
"2 = LOCAL = Cache as query_cache_type states and don't bother about what's happening on other "
"mysql servers.",
(gptr*) &global_system_variables.ndb_query_cache_type,
(gptr*) &global_system_variables.ndb_query_cache_type,
0, GET_ULONG, REQUIRED_ARG, 0, 0, 2, 0, 0, 0},
#endif
#endif
{"new", 'n', "Use very new possible 'unsafe' functions.",
(gptr*) &global_system_variables.new_mode,
......
......@@ -370,9 +370,12 @@ sys_ndb_force_send("ndb_force_send",
sys_var_thd_bool
sys_ndb_use_exact_count("ndb_use_exact_count",
&SV::ndb_use_exact_count);
sys_var_thd_bool
sys_ndb_use_local_query_cache("ndb_use_local_query_cache",
&SV::ndb_use_local_query_cache);
#ifdef HAVE_QUERY_CACHE
sys_var_thd_enum
sys_ndb_query_cache_type("ndb_query_cache_type",
&SV::ndb_query_cache_type,
&ndb_query_cache_type_typelib);
#endif
sys_var_thd_bool
sys_ndb_use_transactions("ndb_use_transactions",
&SV::ndb_use_transactions);
......@@ -637,7 +640,9 @@ sys_var *sys_variables[]=
&sys_ndb_autoincrement_prefetch_sz,
&sys_ndb_force_send,
&sys_ndb_use_exact_count,
&sys_ndb_use_local_query_cache,
#ifdef HAVE_QUERY_CACHE
&sys_ndb_query_cache_type,
#endif
&sys_ndb_use_transactions,
#endif
&sys_unique_checks,
......@@ -805,8 +810,9 @@ struct show_var_st init_vars[]= {
(char*) &sys_ndb_autoincrement_prefetch_sz, SHOW_SYS},
{sys_ndb_force_send.name, (char*) &sys_ndb_force_send, SHOW_SYS},
{sys_ndb_use_exact_count.name,(char*) &sys_ndb_use_exact_count, SHOW_SYS},
{sys_ndb_use_local_query_cache.name,
(char*) &sys_ndb_use_local_query_cache, SHOW_SYS},
#ifdef HAVE_QUERY_CACHE
{sys_ndb_query_cache_type.name,(char*) &sys_ndb_query_cache_type, SHOW_SYS},
#endif
{sys_ndb_use_transactions.name,(char*) &sys_ndb_use_transactions, SHOW_SYS},
#endif
{sys_net_buffer_length.name,(char*) &sys_net_buffer_length, SHOW_SYS},
......
......@@ -366,6 +366,12 @@ TYPELIB query_cache_type_typelib=
array_elements(query_cache_type_names)-1,"", query_cache_type_names, NULL
};
const char *ndb_query_cache_type_names[]= { "OFF", "ON", "LOCAL",NullS };
TYPELIB ndb_query_cache_type_typelib=
{
array_elements(ndb_query_cache_type_names)-1,"", ndb_query_cache_type_names, NULL
};
/*****************************************************************************
Query_cache_block_table method(s)
*****************************************************************************/
......
......@@ -412,6 +412,7 @@ protected:
};
extern Query_cache query_cache;
extern TYPELIB ndb_query_cache_type_typelib;
extern TYPELIB query_cache_type_typelib;
void query_cache_end_of_result(THD *thd);
void query_cache_abort(NET *net);
......
......@@ -403,7 +403,7 @@ struct system_variables
ulong ndb_autoincrement_prefetch_sz;
my_bool ndb_force_send;
my_bool ndb_use_exact_count;
my_bool ndb_use_local_query_cache;
ulong ndb_query_cache_type;
my_bool ndb_use_transactions;
#endif /* HAVE_NDBCLUSTER_DB */
my_bool old_passwords;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment