2947 Horst Hunger 2008-11-21 [merge]
Due to merge from parent.
modified:
sql/mysqld.cc
=== modified file 'mysql-test/r/wait_timeout_func.result'
--- a/mysql-test/r/wait_timeout_func.result 2008-04-10 13:14:28 +0000
+++ b/mysql-test/r/wait_timeout_func.result 2008-11-21 14:36:13 +0000
@@ -1,30 +1,32 @@
-drop table if exists t1;
-## Creating new table t1 ##
-CREATE TABLE t1
-(
-id INT NOT NULL auto_increment,
-PRIMARY KEY (id),
-name VARCHAR(30)
-);
+SET @start_value= @@global.wait_timeout;
'#--------------------FN_DYNVARS_186_01-------------------------#'
-## Creating new connection test_con1 ##
-## Setting value of variable to 5 ##
-SET @@session.wait_timeout = 5;
-## Inserting record in table t1 ##
-INSERT into t1(name) values('Record_1');
-## Using sleep to check timeout ##
-'#--------------------FN_DYNVARS_186_02-------------------------#'
-## Setting value of variable ##
-SET @@global.wait_timeout = 5;
-## Creating new connection test_con2 ##
-INSERT into t1(name) values('Record_2');
-## Using sleep to check timeout ##
+SET @start_time= UNIX_TIMESTAMP();
+connect (test_con1, localhost, root,,);
+SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
+Expect 1
+1
+SET @@session.wait_timeout = <session_value>;
+connect (test_con2, localhost, root,,);
+SET @@session.wait_timeout = <session_value> - 1;
+connection default;
+wait until connections ready
+SELECT info FROM information_schema.processlist;
+info
+SELECT info FROM information_schema.processlist
'#--------------------FN_DYNVARS_186_03-------------------------#'
-## Setting value of variable to 1 ##
-SET @@global.wait_timeout = 1;
-## Creating new connection ##
-INSERT into t1(name) values('Record_3');
-## Using sleep to check timeout ##
-## We cannot test it further because the server stops due to wait_timeout ##
-SELECT * from t1;
-ERROR HY000: MySQL server has gone away
+SET @@global.wait_timeout= <global_value>;
+SELECT @@session.wait_timeout = @start_value AS 'Expect 1';
+Expect 1
+1
+connect (test_con3, localhost, root,,);
+SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
+Expect 1
+1
+connection default;
+SELECT info FROM information_schema.processlist;
+info
+SELECT info FROM information_schema.processlist
+SELECT UNIX_TIMESTAMP() - @start_time >= <global_value> + <session_value>;;
+UNIX_TIMESTAMP() - @start_time >= <global_value> + <session_value>;
+1
+SET @@global.wait_timeout= @start_value;
=== modified file 'mysql-test/t/disabled.def'
--- a/mysql-test/t/disabled.def 2008-11-13 11:11:02 +0000
+++ b/mysql-test/t/disabled.def 2008-11-21 16:03:01 +0000
@@ -27,7 +27,6 @@ log_output_basic : Bug#34820 log_ou
query_cache_size_basic_32 : Bug#36747: Allocating a large query cache is not deterministic
query_cache_size_basic_64 : Bug#36747: Allocating a large query cache is not deterministic
query_alloc_block_size_basic_64: Bug #37708 query_alloc_block_size_basic_64 fails in pushbuild
-wait_timeout_func : Bug #36873 wait_timeout_func.test fails randomly
timestamp_func : Bug #37702 timestamp_func relies on sleep and is unstable in pushbuild
sort_buffer_size_basic_32 : Bug#36875 main.sort_buffer_size_basic_32 fails on some systems
key_buffer_size_basic_32 : Bug#36876 main.key_buffer_size_basic_32 fails on some systems
=== modified file 'mysql-test/t/wait_timeout_func.test'
--- a/mysql-test/t/wait_timeout_func.test 2008-04-11 19:59:33 +0000
+++ b/mysql-test/t/wait_timeout_func.test 2008-11-21 14:36:13 +0000
@@ -11,93 +11,87 @@
# Creation Date: 2008-03-07 #
# Author: Salman Rawala #
# #
+# Modified: HHunger 2008-08-27 Simplified the test and replaced the sleeps. #
+# #
# Description: Test Cases of Dynamic System Variable wait_timeout #
# that checks the functionality of this variable #
# #
-# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
-# server-system-variables.html#option_mysqld_wait_timeouts #
+# Reference: #
+# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html #
# #
###############################################################################
--source include/not_embedded.inc
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
-##############################
-# Creating two new tables #
-##############################
-
---echo ## Creating new table t1 ##
-CREATE TABLE t1
-(
-id INT NOT NULL auto_increment,
-PRIMARY KEY (id),
-name VARCHAR(30)
-);
+SET @start_value= @@global.wait_timeout;
--echo '#--------------------FN_DYNVARS_186_01-------------------------#'
#######################################################################
-# Setting initial value of interactive_timeout greater than sleep and
-# verifying its behavior on session scope
+# 1. test of scope session
#######################################################################
---echo ## Creating new connection test_con1 ##
+SET @start_time= UNIX_TIMESTAMP();
+--echo connect (test_con1, localhost, root,,);
connect (test_con1, localhost, root,,);
connection test_con1;
---echo ## Setting value of variable to 5 ##
-SET @@session.wait_timeout = 5;
-
---echo ## Inserting record in table t1 ##
-INSERT into t1(name) values('Record_1');
-
---echo ## Using sleep to check timeout ##
-sleep 4;
+# If not explicitly changed, @@session.wait_timeout equals @@global.wait_timeout.
+SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
+# Find a small value <> @@global.wait_timeout.
+let $session_value =
+`SELECT IF(@@global.wait_timeout <> 2 OR @@global.wait_timeout IS NULL, 2, 3)`;
+--replace_result $session_value <session_value>
+eval SET @@session.wait_timeout = $session_value;
---echo '#--------------------FN_DYNVARS_186_02-------------------------#'
-#######################################################################
-# Setting initial value of interactive_timeout greater than sleep and
-# verifying its behavior on global scope
-#######################################################################
-
---echo ## Setting value of variable ##
-SET @@global.wait_timeout = 5;
-
---echo ## Creating new connection test_con2 ##
+--echo connect (test_con2, localhost, root,,);
connect (test_con2, localhost, root,,);
connection test_con2;
-INSERT into t1(name) values('Record_2');
-
---echo ## Using sleep to check timeout ##
-sleep 4;
-
+--replace_result $session_value <session_value>
+eval SET @@session.wait_timeout = $session_value - 1;
+--echo connection default;
+connection default;
+--echo wait until connections ready
+let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist;
+--source include/wait_condition.inc
+SELECT info FROM information_schema.processlist;
--echo '#--------------------FN_DYNVARS_186_03-------------------------#'
#######################################################################
-# Setting initial value of interactive_timeout less than sleep and
-# verifying its behavior on global scope
+# 2. test of scope global
#######################################################################
---echo ## Setting value of variable to 1 ##
-SET @@global.wait_timeout = 1;
+# Find a small value <> @@global.wait_timeout.
+let $global_value = $session_value + 1;
+--replace_result $global_value <global_value>
+eval SET @@global.wait_timeout= $global_value;
---echo ## Creating new connection ##
+# Changing the @@global.wait_timeout has no influence on the
+# @@session.wait_timeout of already established sessions.
+SELECT @@session.wait_timeout = @start_value AS 'Expect 1';
+
+--echo connect (test_con3, localhost, root,,);
connect (test_con3, localhost, root,,);
connection test_con3;
-INSERT into t1(name) values('Record_3');
-
---echo ## Using sleep to check timeout ##
-sleep 5;
+# If not explicitly changed, @@session.wait_timeout equals @@global.wait_timeout.
+SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
---echo ## We cannot test it further because the server stops due to wait_timeout ##
---Error 2006
-SELECT * from t1;
+--echo connection default;
+connection default;
+# We can be sure that the connections test_con1 and test_con2 must be
+# established because both have already executed a SET @@session.wait_timeout.
+# This means they are or at least were visible within the processlist.
+# Therefore we can now simply wait till both disappear from the processlist.
+let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist;
+--source include/wait_condition.inc
+SELECT info FROM information_schema.processlist;
+
+--replace_result $global_value <global_value> $session_value <session_value>;
+eval SELECT UNIX_TIMESTAMP() - @start_time >= $global_value + $session_value;
+SET @@global.wait_timeout= @start_value;
| Thread |
|---|
| • bzr push into mysql-6.0 branch (horst:2947) | Horst Hunger | 21 Nov |