summaryrefslogtreecommitdiff
path: root/sql/sys_vars.h
diff options
context:
space:
mode:
authorMichael Widenius <monty@askmonty.org>2012-10-01 02:30:44 +0300
committerMichael Widenius <monty@askmonty.org>2012-10-01 02:30:44 +0300
commit8ac1b41cf358029b8e08e977f45bb6197a1c1c19 (patch)
tree2e77415664e1f259259f393da8b22effa1493a07 /sql/sys_vars.h
parent5a4b5869a039bd50ce5a040114ede77bbae58c80 (diff)
downloadmariadb-git-8ac1b41cf358029b8e08e977f45bb6197a1c1c19.tar.gz
Made max_relay_log_size depending on master connection.
Changed names of multi-source log files so that original suffixes are kept. include/my_sys.h: Added fn_ext2(), which returns pointer to last '.' in file name mysql-test/extra/rpl_tests/rpl_max_relay_size.test: Updated test mysql-test/suite/multi_source/info_logs-master.opt: Test with strange file names mysql-test/suite/multi_source/info_logs.result: Updated results mysql-test/suite/multi_source/info_logs.test: Changed to test with complex names to be able to verify the filename generator code mysql-test/suite/multi_source/relaylog_events.result: Updated results mysql-test/suite/multi_source/reset_slave.result: Updated results mysql-test/suite/multi_source/skip_counter.result: Updated results mysql-test/suite/multi_source/skip_counter.test: Added testing of max_relay_log_size mysql-test/suite/rpl/r/rpl_row_max_relay_size.result: Updated results mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result: Updated results mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result: Updated results mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test: Updated results mysys/mf_fn_ext.c: Added fn_ext2(), which returns pointer to last '.' in file name sql/log.cc: Removed some wrong casts sql/log.h: Updated comment to reflect new code sql/log_event.cc: Updated DBUG_PRINT sql/mysqld.cc: Added that max_relay_log_size copies it's values from max_binlog_size sql/mysqld.h: Removed max_relay_log_size sql/rpl_mi.cc: Changed names of multi-source log files so that original suffixes are kept. sql/rpl_mi.h: Updated prototype sql/rpl_rli.cc: Updated comment to reflect new code Made max_relay_log_size depending on master connection. sql/rpl_rli.h: Made max_relay_log_size depending on master connection. sql/set_var.h: Made option global so that one can check and change min & max values (sorry Sergei) sql/sql_class.h: Made max_relay_log_size depending on master connection. sql/sql_repl.cc: Updated calls to create_signed_file_name() sql/sys_vars.cc: Made max_relay_log_size depending on master connection. Made old code more reusable sql/sys_vars.h: Changed Sys_var_multi_source_uint to ulong to be able to handle max_relay_log_size Made old code more reusable
Diffstat (limited to 'sql/sys_vars.h')
-rw-r--r--sql/sys_vars.h44
1 files changed, 29 insertions, 15 deletions
diff --git a/sql/sys_vars.h b/sql/sys_vars.h
index 6509ba6a5f4..8e832e57630 100644
--- a/sql/sys_vars.h
+++ b/sql/sys_vars.h
@@ -1954,24 +1954,34 @@ public:
like sql_slave_skip_counter are GLOBAL.
*/
-class Sys_var_multi_source_uint :public Sys_var_uint
+class Sys_var_multi_source_ulong;
+class Master_info;
+
+typedef bool (*on_multi_source_update_function)(sys_var *self, THD *thd,
+ Master_info *mi);
+bool update_multi_source_variable(sys_var *self,
+ THD *thd, enum_var_type type);
+
+
+class Sys_var_multi_source_ulong :public Sys_var_ulong
{
ptrdiff_t master_info_offset;
+ on_multi_source_update_function update_multi_source_variable_func;
public:
- Sys_var_multi_source_uint(const char *name_arg,
- const char *comment, int flag_args,
- ptrdiff_t off, size_t size,
- ptrdiff_t master_info_offset_arg,
- uint min_val, uint max_val, uint def_val,
- uint block_size,
- on_update_function on_update_func)
- :Sys_var_uint(name_arg, comment, flag_args, off, size,
- NO_CMD_LINE, min_val, max_val, def_val, block_size,
- 0, VARIABLE_NOT_IN_BINLOG, 0, on_update_func),
- master_info_offset(master_info_offset_arg)
- {
- /* No global storage of variables. Cause a crash if we try an update */
- option.value= (uchar**)1;
+ Sys_var_multi_source_ulong(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,
+ uint min_val, uint max_val, uint 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),
+ master_info_offset(master_info_offset_arg),
+ update_multi_source_variable_func(on_update_func)
+ {
}
bool session_update(THD *thd, set_var *var)
{
@@ -2001,6 +2011,10 @@ public:
return session_value_ptr(thd, base);
}
uint get_master_info_uint_value(THD *thd, ptrdiff_t offset);
+ bool update_variable(THD *thd, Master_info *mi)
+ {
+ return update_multi_source_variable_func(this, thd, mi);
+ }
};