summaryrefslogtreecommitdiff
path: root/sql/set_var.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/set_var.h')
-rw-r--r--sql/set_var.h78
1 files changed, 22 insertions, 56 deletions
diff --git a/sql/set_var.h b/sql/set_var.h
index c799eec750a..a4c3b546fe0 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -30,11 +30,6 @@ class set_var;
typedef struct system_variables SV;
extern TYPELIB bool_typelib, delay_key_write_typelib, sql_mode_typelib;
-extern ulonglong dflt_key_buff_size;
-extern uint dflt_key_cache_block_size;
-extern uint dflt_key_cache_division_limit;
-extern uint dflt_key_cache_age_threshold;
-
enum enum_var_type
{
OPT_DEFAULT, OPT_SESSION, OPT_GLOBAL
@@ -546,73 +541,40 @@ public:
byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
};
+
class sys_var_key_cache_param :public sys_var
{
protected:
- uint offset;
+ size_t offset;
public:
- sys_var_key_cache_param(const char *name_arg)
- :sys_var(name_arg)
- {
- offset= 0;
- }
+ sys_var_key_cache_param(const char *name_arg, size_t offset_arg)
+ :sys_var(name_arg), offset(offset_arg)
+ {}
byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
+ bool check_default(enum_var_type type) { return 1; }
+ bool is_struct() { return 1; }
};
+
class sys_var_key_buffer_size :public sys_var_key_cache_param
{
public:
sys_var_key_buffer_size(const char *name_arg)
- :sys_var_key_cache_param(name_arg)
- {
- offset= offsetof(KEY_CACHE_VAR, buff_size);
- }
+ :sys_var_key_cache_param(name_arg, offsetof(KEY_CACHE_VAR, buff_size))
+ {}
bool update(THD *thd, set_var *var);
SHOW_TYPE type() { return SHOW_LONGLONG; }
- bool check_default(enum_var_type type) { return 1; }
- bool is_struct() { return 1; }
-};
-
-class sys_var_key_cache_block_size :public sys_var_key_cache_param
-{
-public:
- sys_var_key_cache_block_size(const char *name_arg)
- :sys_var_key_cache_param(name_arg)
- {
- offset= offsetof(KEY_CACHE_VAR, block_size);
- }
- bool update(THD *thd, set_var *var);
- SHOW_TYPE type() { return SHOW_LONG; }
- bool check_default(enum_var_type type) { return 1; }
- bool is_struct() { return 1; }
};
-class sys_var_key_cache_division_limit :public sys_var_key_cache_param
-{
-public:
- sys_var_key_cache_division_limit(const char *name_arg)
- :sys_var_key_cache_param(name_arg)
- {
- offset= offsetof(KEY_CACHE_VAR, division_limit);
- }
- bool update(THD *thd, set_var *var);
- SHOW_TYPE type() { return SHOW_LONG; }
- bool check_default(enum_var_type type) { return 1; }
- bool is_struct() { return 1; }
-};
-class sys_var_key_cache_age_threshold :public sys_var_key_cache_param
+class sys_var_key_cache_long :public sys_var_key_cache_param
{
public:
- sys_var_key_cache_age_threshold(const char *name_arg)
- :sys_var_key_cache_param(name_arg)
- {
- offset= offsetof(KEY_CACHE_VAR, age_threshold);
- }
+ sys_var_key_cache_long(const char *name_arg, size_t offset_arg)
+ :sys_var_key_cache_param(name_arg, offset_arg)
+ {}
bool update(THD *thd, set_var *var);
SHOW_TYPE type() { return SHOW_LONG; }
- bool check_default(enum_var_type type) { return 1; }
- bool is_struct() { return 1; }
};
@@ -781,7 +743,7 @@ public:
uint name_length_arg, gptr data_arg)
:name_length(name_length_arg), data(data_arg)
{
- name= my_memdup((byte*) name_arg, name_length, MYF(MY_WME));
+ name= my_strdup_with_length((byte*) name_arg, name_length, MYF(MY_WME));
links->push_back(this);
}
inline bool cmp(const char *name_cmp, uint length)
@@ -792,11 +754,16 @@ public:
{
my_free((char*) name, MYF(0));
}
+ friend bool process_key_caches(int (* func) (const char *name,
+ KEY_CACHE_VAR *));
+ friend void delete_elements(I_List<NAMED_LIST> *list,
+ void (*free_element)(const char*, gptr));
};
/* updated in sql_acl.cc */
extern sys_var_thd_bool sys_old_passwords;
+extern LEX_STRING default_key_cache_base;
/* For sql_yacc */
struct sys_var_with_base
@@ -819,9 +786,8 @@ extern sys_var_str sys_charset_system;
CHARSET_INFO *get_old_charset_by_name(const char *old_name);
gptr find_named(I_List<NAMED_LIST> *list, const char *name, uint length,
NAMED_LIST **found);
-void delete_elements(I_List<NAMED_LIST> *list, void (*free_element)(gptr));
/* key_cache functions */
+KEY_CACHE_VAR *get_key_cache(LEX_STRING *cache_name);
KEY_CACHE_VAR *get_or_create_key_cache(const char *name, uint length);
-void free_key_cache(gptr key_cache);
-bool process_key_caches(int (* func) (KEY_CACHE_VAR *));
+void free_key_cache(const char *name, KEY_CACHE_VAR *key_cache);