summaryrefslogtreecommitdiff
path: root/sql/sys_vars.h
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-09-10 13:22:44 +0200
committerSergei Golubchik <sergii@pisem.net>2014-09-10 13:22:44 +0200
commit30d7860504d58d645071ae1baf8572f03a90a994 (patch)
treeaf54dc0cdd6040b0298f0c53c71b5846e3b2d628 /sql/sys_vars.h
parentb2c54a9a699daa8ffd9bb500f3405dacd7eb347b (diff)
downloadmariadb-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.h33
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);