Commit 55499cad authored by unknown's avatar unknown
Browse files

Fixed refresh_status function.


sql/sql_class.cc:
  Improved documentation on add_to_status().
sql/sql_parse.cc:
  Changed refresh status to take thd as argument to avoid current_thd.
  Removed add_to_status away from loop, as it is not necessary for each
  variable, only required for each thread. In this case only the current
  thread.
parent 935ad7e8
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -445,7 +445,12 @@ THD::~THD()


/*
  Add to one status variable another status variable
  Add all status variables to another status variable array

  SYNOPSIS
   add_to_status()
   to_var       add to this array
   from_var     from this array

  NOTES
    This function assumes that all variables are long/ulong.
+7 −9
Original line number Diff line number Diff line
@@ -6538,7 +6538,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
  if (options & REFRESH_HOSTS)
    hostname_cache_refresh();
  if (thd && (options & REFRESH_STATUS))
    refresh_status();
    refresh_status(thd);
  if (options & REFRESH_THREADS)
    flush_thread_cache();
#ifdef HAVE_REPLICATION
@@ -6624,20 +6624,18 @@ void kill_one_thread(THD *thd, ulong id, bool only_kill_query)

/* Clear most status variables */

static void refresh_status(void)
static void refresh_status(THD *thd)
{
  pthread_mutex_lock(&LOCK_status);

  /* We must update the global status before cleaning up the thread */
  add_to_status(&global_status_var, &thd->status_var);
  bzero((char*) &thd->status_var, sizeof(thd->status_var));

  for (struct show_var_st *ptr=status_vars; ptr->name; ptr++)
  {
    if (ptr->type == SHOW_LONG)
      *(ulong*) ptr->value= 0;
    else if (ptr->type == SHOW_LONG_STATUS)
    {
      THD *thd= current_thd;
      /* We must update the global status before cleaning up the thread */
      add_to_status(&global_status_var, &thd->status_var);
      bzero((char*) &thd->status_var, sizeof(thd->status_var));
    }
  }
  /* Reset the counters of all key caches (default and named). */
  process_key_caches(reset_key_cache_counters);