Commit a1523345 authored by unknown's avatar unknown
Browse files

Fix for BUG#5064 "SET GLOBAL SYNC_BINLOG does not work on some platforms":

var->save_result.ulong_value was 0 on Mac OS X probably due to positions
of members in the union. sys_var::check() only sets ulonglong_value


sql/set_var.cc:
  Of the save_result union, sys_var::check() only updates ulonglong_value;
  so other types of the union are garbage. Here we must use ulonglong_value
  in sys_var_sync_binlog_period::update(), not ulong_value (which is )
parent a5f1fea0
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -34,6 +34,12 @@
  - If the variable should show up in 'show variables' add it to the
    init_vars[] struct in this file

  NOTES:
    - Be careful with var->save_result: sys_var::check() only updates
    ulonglong_value; so other members of the union are garbage then; to use
    them you must first assign a value to them (in specific ::check() for
    example).

  TODO:
    - Add full support for the variable character_set (for 4.1)

@@ -2332,7 +2338,7 @@ bool sys_var_slave_skip_counter::update(THD *thd, set_var *var)
bool sys_var_sync_binlog_period::update(THD *thd, set_var *var)
{
  pthread_mutex_t *lock_log= mysql_bin_log.get_log_lock();
  sync_binlog_period= var->save_result.ulong_value;
  sync_binlog_period= (ulong) var->save_result.ulonglong_value;
  /*
    Must reset the counter otherwise it may already be beyond the new period
    and so the new period will not be taken into account. Need mutex otherwise