Backport patch for Bug#31222 (com_% global status counters behave randomly

with mysql_change_user) to 5.0.
This commit is contained in:
Alexander Nozdrin 2009-01-15 12:36:34 +03:00
parent a08460b83a
commit 9a6e05d8b9
3 changed files with 39 additions and 0 deletions

View File

@ -3,3 +3,10 @@ execute stmt1;
Id User Host db Command Time State Info Id User Host db Command Time State Info
number root localhost test Query time NULL show full processlist number root localhost test Query time NULL show full processlist
deallocate prepare stmt1; deallocate prepare stmt1;
FLUSH STATUS;
SHOW GLOBAL STATUS LIKE 'com_select';
Variable_name Value
Com_select 101
SHOW GLOBAL STATUS LIKE 'com_select';
Variable_name Value
Com_select 101

View File

@ -16,3 +16,31 @@ execute stmt1;
deallocate prepare stmt1; deallocate prepare stmt1;
# End of 4.1 tests # End of 4.1 tests
#
# Bug#31222: com_% global status counters behave randomly with
# mysql_change_user.
#
FLUSH STATUS;
--disable_result_log
--disable_query_log
let $i = 100;
while ($i)
{
dec $i;
SELECT 1;
}
--enable_query_log
--enable_result_log
SHOW GLOBAL STATUS LIKE 'com_select';
--change_user
SHOW GLOBAL STATUS LIKE 'com_select';

View File

@ -391,6 +391,10 @@ void THD::init_for_queries()
void THD::change_user(void) void THD::change_user(void)
{ {
pthread_mutex_lock(&LOCK_status);
add_to_status(&global_status_var, &status_var);
pthread_mutex_unlock(&LOCK_status);
cleanup(); cleanup();
cleanup_done= 0; cleanup_done= 0;
init(); init();