mariadb/mysql-test/t/change_user.test
unknown 215625b143 Fix for Bug#31222: com_% global status counters
behave randomly with mysql_change_user.
  
The problem was that global status variables were not updated
in THD::check_user(), so thread statistics were lost after
COM_CHANGE_USER.
  
The fix is to update global status variables with the thread ones
before preparing the thread for new user.


mysql-test/r/change_user.result:
  Update result file.
mysql-test/t/change_user.test:
  Add a test case for Bug#31222: com_% global status counters
  behave randomly with mysql_change_user.
sql/sql_class.cc:
  Update global status variables when we're handling
  COM_CHANGE_USER for a thread.
2008-02-12 20:59:09 +03:00

63 lines
1.2 KiB
Text

#
# Bug#20023 mysql_change_user() resets the value of SQL_BIG_SELECTS
#
--echo Bug#20023
SELECT @@session.sql_big_selects;
SELECT @@global.max_join_size;
--echo change_user
--change_user
SELECT @@session.sql_big_selects;
SELECT @@global.max_join_size;
SET @@global.max_join_size = 10000;
SET @@session.max_join_size = default;
--echo change_user
--change_user
SELECT @@session.sql_big_selects;
SET @@global.max_join_size = -1;
SET @@session.max_join_size = default;
--echo change_user
--change_user
SELECT @@session.sql_big_selects;
#
# Bug#31418 User locks misfunctioning after mysql_change_user()
#
--echo Bug#31418
SELECT IS_FREE_LOCK('bug31418');
SELECT IS_USED_LOCK('bug31418');
SELECT GET_LOCK('bug31418', 1);
SELECT IS_USED_LOCK('bug31418') = CONNECTION_ID();
--echo change_user
--change_user
SELECT IS_FREE_LOCK('bug31418');
SELECT IS_USED_LOCK('bug31418');
#
# 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';