diff options
author | Sergey Petrunia <sergefp@mysql.com> | 2009-02-23 19:16:48 +0300 |
---|---|---|
committer | Sergey Petrunia <sergefp@mysql.com> | 2009-02-23 19:16:48 +0300 |
commit | cb6581d89459a4c45e9146a40e1f0119a2e8e325 (patch) | |
tree | 3d3b5469190266610021c7ceae3e2beb730355fe /sql/set_var.h | |
parent | fecaef26af0417a23f6585c79de41abd5f6aba86 (diff) | |
download | mariadb-git-cb6581d89459a4c45e9146a40e1f0119a2e8e325.tar.gz |
- Backport @@optimizer_switch support from 6.0
- Add support for setting it as a server commandline argument
- Add support for those switches:
= no_index_merge
= no_index_merge_union
= no_index_merge_sort_union
= no_index_merge_intersection
mysql-test/r/index_merge_myisam.result:
Testcases for index_merge related @@optimizer_switch flags.
mysql-test/t/index_merge_myisam.test:
Testcases for index_merge related @@optimizer_switch flags.
sql/set_var.cc:
- Backport @@optimizer_switch support from 6.0
- Add support for setting it as a server commandline argument
sql/sql_class.h:
- Backport @@optimizer_switch support from 6.0
sql/sql_select.h:
- Backport @@optimizer_switch support from 6.0
Diffstat (limited to 'sql/set_var.h')
-rw-r--r-- | sql/set_var.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/sql/set_var.h b/sql/set_var.h index b6c67d1ab4a..f07facde0b0 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -31,7 +31,7 @@ typedef struct system_variables SV; typedef struct my_locale_st MY_LOCALE; extern TYPELIB bool_typelib, delay_key_write_typelib, sql_mode_typelib, - slave_exec_mode_typelib; + optimizer_switch_typelib, slave_exec_mode_typelib; typedef int (*sys_check_func)(THD *, set_var *); typedef bool (*sys_update_func)(THD *, set_var *); @@ -532,6 +532,23 @@ public: }; +class sys_var_thd_optimizer_switch :public sys_var_thd_enum +{ +public: + sys_var_thd_optimizer_switch(sys_var_chain *chain, const char *name_arg, + ulong SV::*offset_arg) + :sys_var_thd_enum(chain, name_arg, offset_arg, &optimizer_switch_typelib) + {} + bool check(THD *thd, set_var *var) + { + return check_set(thd, var, enum_names); + } + void set_default(THD *thd, enum_var_type type); + uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base); + static bool symbolic_mode_representation(THD *thd, ulonglong sql_mode, + LEX_STRING *rep); +}; + extern void fix_sql_mode_var(THD *thd, enum_var_type type); class sys_var_thd_sql_mode :public sys_var_thd_enum |