diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-09-10 13:22:44 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-09-10 13:22:44 +0200 |
commit | 30d7860504d58d645071ae1baf8572f03a90a994 (patch) | |
tree | af54dc0cdd6040b0298f0c53c71b5846e3b2d628 /sql/sys_vars.h | |
parent | b2c54a9a699daa8ffd9bb500f3405dacd7eb347b (diff) | |
download | mariadb-git-30d7860504d58d645071ae1baf8572f03a90a994.tar.gz |
MDEV-6459 max_relay_log_size and sql_slave_skip_counter misbehave on PPC64
make slave_skip_counter and max_relay_log_size ulonglong
(sysvars should generally never be ulong)
Diffstat (limited to 'sql/sys_vars.h')
-rw-r--r-- | sql/sys_vars.h | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/sql/sys_vars.h b/sql/sys_vars.h index e7f9cf8a886..36067c50cc1 100644 --- a/sql/sys_vars.h +++ b/sql/sys_vars.h @@ -1993,7 +1993,8 @@ public: like sql_slave_skip_counter are GLOBAL. */ -class Sys_var_multi_source_ulong; +#define MASTER_INFO_VAR(X) my_offsetof(Master_info, X), sizeof(((Master_info *)0x10)->X) +class Sys_var_multi_source_ulonglong; class Master_info; typedef bool (*on_multi_source_update_function)(sys_var *self, THD *thd, @@ -2002,31 +2003,27 @@ bool update_multi_source_variable(sys_var *self, THD *thd, enum_var_type type); -class Sys_var_multi_source_ulong :public Sys_var_ulong +class Sys_var_multi_source_ulonglong :public Sys_var_ulonglong { ptrdiff_t master_info_offset; on_multi_source_update_function update_multi_source_variable_func; public: - Sys_var_multi_source_ulong(const char *name_arg, + Sys_var_multi_source_ulonglong(const char *name_arg, const char *comment, int flag_args, ptrdiff_t off, size_t size, CMD_LINE getopt, ptrdiff_t master_info_offset_arg, - ulong min_val, ulong max_val, ulong def_val, - uint block_size, + size_t master_info_arg_size, + ulonglong min_val, ulonglong max_val, + ulonglong def_val, uint block_size, on_multi_source_update_function on_update_func) - :Sys_var_ulong(name_arg, comment, flag_args, off, size, - getopt, min_val, max_val, def_val, block_size, - 0, VARIABLE_NOT_IN_BINLOG, 0, update_multi_source_variable), + :Sys_var_ulonglong(name_arg, comment, flag_args, off, size, + getopt, min_val, max_val, def_val, block_size, + 0, VARIABLE_NOT_IN_BINLOG, 0, update_multi_source_variable), master_info_offset(master_info_offset_arg), update_multi_source_variable_func(on_update_func) { - } - bool session_update(THD *thd, set_var *var) - { - session_var(thd, ulong)= (ulong) (var->save_result.ulonglong_value); - /* Value should be moved to multi_master in on_update_func */ - return false; + SYSVAR_ASSERT(master_info_arg_size == size); } bool global_update(THD *thd, set_var *var) { @@ -2039,9 +2036,9 @@ public: } uchar *session_value_ptr(THD *thd,LEX_STRING *base) { - ulong *tmp, res; - tmp= (ulong*) (((uchar*)&(thd->variables)) + offset); - res= get_master_info_ulong_value(thd, master_info_offset); + ulonglong *tmp, res; + tmp= (ulonglong*) (((uchar*)&(thd->variables)) + offset); + res= get_master_info_ulonglong_value(thd, master_info_offset); *tmp= res; return (uchar*) tmp; } @@ -2049,7 +2046,7 @@ public: { return session_value_ptr(thd, base); } - ulong get_master_info_ulong_value(THD *thd, ptrdiff_t offset); + ulonglong get_master_info_ulonglong_value(THD *thd, ptrdiff_t offset); bool update_variable(THD *thd, Master_info *mi) { return update_multi_source_variable_func(this, thd, mi); |