Comment 1 for bug 1016991

Revision history for this message
Raghavendra D Prabhu (raghavendra-prabhu) wrote :

It is broken because the ON_UPDATE for slow_query_log_use_global_control is broken.

From sql/sys_vars.cc:

===============

const char *slow_query_log_use_global_control_name[]= { "log_slow_filter", "log_slow_rate_limit", "log_slow_verbosity", "long_query_time", "min_examined_row_limit", "all", 0};
static bool update_slow_query_log_use_global_control(sys_var */*self*/, THD */*thd*/,
                                               enum_var_type /*type*/)
{
  if(opt_slow_query_log_use_global_control & (ULL(1) << SLOG_UG_ALL))
  {
    opt_slow_query_log_use_global_control=
      SLOG_UG_LOG_SLOW_FILTER | SLOG_UG_LOG_SLOW_RATE_LIMIT | SLOG_UG_LOG_SLOW_VERBOSITY |
      SLOG_UG_LONG_QUERY_TIME | SLOG_UG_MIN_EXAMINED_ROW_LIMIT;
  }
  return false;
}

================

When set to all, opt_slow_query_log_use_global_control ends up with value of 7 (0 | 1 | 2 | 3 | 4) instead of the intended value of 32.

Following is the fix:

=====================================================
3168,3169c3168,3169
< SLOG_UG_LOG_SLOW_FILTER | SLOG_UG_LOG_SLOW_RATE_LIMIT | SLOG_UG_LOG_SLOW_VERBOSITY |
< SLOG_UG_LONG_QUERY_TIME | SLOG_UG_MIN_EXAMINED_ROW_LIMIT;
---
> (1 << SLOG_UG_LOG_SLOW_FILTER) | (1 << SLOG_UG_LOG_SLOW_RATE_LIMIT) | (1 << SLOG_UG_LOG_SLOW_VERBOSITY) |
> (1 << SLOG_UG_LONG_QUERY_TIME) | (1 << SLOG_UG_MIN_EXAMINED_ROW_LIMIT);

==========================================================