Commit e948c64f authored by unknown's avatar unknown
Browse files

Improve comments around FLUSH STATUS

It's not possible to flush the global status variables in 5.0
Update test case so it works by recording the value of handle_rollback
before and compare it to the value after


mysql-test/r/innodb_mysql.result:
  Update result file
mysql-test/t/innodb_mysql.test:
  It's not possible to reset the global status variables in 5.0 so intead its value
  is recorded and compared to the after value.
  It should not have changed.
sql/mysqld.cc:
  Improve comments
sql/set_var.cc:
  Improve comments
sql/sql_class.cc:
  Improve comments
sql/sql_class.h:
  Improve comments
parent 3e7cae68
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -104,14 +104,12 @@ SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` =
id1
2
DROP TABLE t1, t2;
flush status;
create table t1 (c1 int) engine=innodb;
handler t1 open;
handler t1 read first;
c1
show /*!50002 GLOBAL */ status like 'Handler_rollback';
Variable_name	Value
Handler_rollback	0
Before and after comparison
0
drop table t1;
End of 4.1 tests
create table t1m (a int) engine=myisam;
+7 −2
Original line number Diff line number Diff line
@@ -119,7 +119,8 @@ SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` =
DROP TABLE t1, t2;
# Bug #22728 - Handler_rollback value is growing
#
flush status;

let $before= `show /*!50002 GLOBAL */ status like 'Handler_rollback'`;
create table t1 (c1 int) engine=innodb;
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
@@ -128,7 +129,11 @@ handler t1 open;
handler t1 read first;
disconnect con2;
connection con1;
show /*!50002 GLOBAL */ status like 'Handler_rollback';
let $after= `show /*!50002 GLOBAL */ status like 'Handler_rollback'`;
# Compare the before and after value, it should be equal
--disable_query_log
eval select STRCMP("$before", "$after") as "Before and after comparison";
--enable_query_log
connection default;
drop table t1;
disconnect con1;
+9 −1
Original line number Diff line number Diff line
@@ -5997,6 +5997,10 @@ The minimum value for this variable is 4096.",
};


/*
  Variables shown by SHOW STATUS in alphabetical order
*/

struct show_var_st status_vars[]= {
  {"Aborted_clients",          (char*) &aborted_threads,        SHOW_LONG},
  {"Aborted_connects",         (char*) &aborted_connects,       SHOW_LONG},
@@ -7466,15 +7470,19 @@ void refresh_status(THD *thd)
{
  pthread_mutex_lock(&LOCK_status);

  /* We must update the global status before cleaning up the thread */
  /* Add thread's status variabes to global status */
  add_to_status(&global_status_var, &thd->status_var);

  /* Reset thread's status variables */
  bzero((char*) &thd->status_var, sizeof(thd->status_var));

  /* Reset some global variables */
  for (struct show_var_st *ptr=status_vars; ptr->name; ptr++)
  {
    if (ptr->type == SHOW_LONG)
      *(ulong*) ptr->value= 0;
  }

  /* Reset the counters of all key caches (default and named). */
  process_key_caches(reset_key_cache_counters);
  pthread_mutex_unlock(&LOCK_status);
+1 −1
Original line number Diff line number Diff line
@@ -804,7 +804,7 @@ sys_var *sys_variables[]=


/*
  Variables shown by SHOW variables in alphabetical order
  Variables shown by SHOW VARIABLES in alphabetical order
*/

struct show_var_st init_vars[]= {
+2 −3
Original line number Diff line number Diff line
@@ -464,14 +464,13 @@ THD::~THD()

void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var)
{
  ulong *end= (ulong*) ((byte*) to_var + offsetof(STATUS_VAR,
						  last_system_status_var) +
  ulong *end= (ulong*) ((byte*) to_var +
                        offsetof(STATUS_VAR, last_system_status_var) +
			sizeof(ulong));
  ulong *to= (ulong*) to_var, *from= (ulong*) from_var;

  while (to != end)
    *(to++)+= *(from++);
  /* it doesn't make sense to add last_query_cost values */
}


Loading