summaryrefslogtreecommitdiff
path: root/mysql-test/t/log_state.test
diff options
context:
space:
mode:
authorLuis Soares <luis.soares@sun.com>2009-01-23 13:22:05 +0100
committerLuis Soares <luis.soares@sun.com>2009-01-23 13:22:05 +0100
commitdf8543868db346fcddad5dad356fb70bdaa679d7 (patch)
tree62fe82ffb4b2f249d2e0c6686acb8c060ed5f0bd /mysql-test/t/log_state.test
parentbb42e1ab05f9ebe166524d7d8a25c55a69e65dfa (diff)
parentaec81abb3b127e9a6c68bfe9562fd3d7cd385e0b (diff)
downloadmariadb-git-df8543868db346fcddad5dad356fb70bdaa679d7.tar.gz
merge: 5.1 -> 5.1-rpl
conflicts: Text conflict in client/mysqltest.cc Text conflict in mysql-test/include/wait_until_connected_again.inc Text conflict in mysql-test/lib/mtr_report.pm Text conflict in mysql-test/mysql-test-run.pl Text conflict in mysql-test/r/events_bugs.result Text conflict in mysql-test/r/log_state.result Text conflict in mysql-test/r/myisam_data_pointer_size_func.result Text conflict in mysql-test/r/mysqlcheck.result Text conflict in mysql-test/r/query_cache.result Text conflict in mysql-test/r/status.result Text conflict in mysql-test/suite/binlog/r/binlog_index.result Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result Text conflict in mysql-test/suite/rpl/r/rpl_packet.result Text conflict in mysql-test/suite/rpl/t/rpl_packet.test Text conflict in mysql-test/t/disabled.def Text conflict in mysql-test/t/events_bugs.test Text conflict in mysql-test/t/log_state.test Text conflict in mysql-test/t/myisam_data_pointer_size_func.test Text conflict in mysql-test/t/mysqlcheck.test Text conflict in mysql-test/t/query_cache.test Text conflict in mysql-test/t/rpl_init_slave_func.test Text conflict in mysql-test/t/status.test
Diffstat (limited to 'mysql-test/t/log_state.test')
-rw-r--r--mysql-test/t/log_state.test200
1 files changed, 141 insertions, 59 deletions
diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test
index c1249985eba..e40dd1e3491 100644
--- a/mysql-test/t/log_state.test
+++ b/mysql-test/t/log_state.test
@@ -1,14 +1,29 @@
-# hhunger 08.22.2008: with check-testcases differences due to bug#38889 using
-# slow_query_log_file or general_log_file
-
--- source include/not_embedded.inc
+### t/log_state.test ###
+#
+# This test suffers from server
+# Bug#38124 "general_log_file" variable silently unset when using expression
+# In short:
+# SET GLOBAL general_log_file = @<whatever>
+# SET GLOBAL slow_query_log = @<whatever>
+# cause that the value of these server system variables is set to default
+# instead of the assigned values. There comes no error message or warning.
+# If this bug is fixed please
+# 1. try this test with "let $fixed_bug38124 = 0;"
+# 2. remove all workarounds if 1. was successful.
+let $fixed_bug38124 = 0;
+
+--source include/not_embedded.inc
--source include/have_csv.inc
+# Several subtests modify global variables. Save the initial values only here,
+# but reset to the initial values per subtest.
+SET @old_general_log= @@global.general_log;
+SET @old_general_log_file= @@global.general_log_file;
+SET @old_slow_query_log= @@global.slow_query_log;
+SET @old_slow_query_log_file= @@global.slow_query_log_file;
+
+
--disable_ps_protocol
-# save default value to set them back at the end of the test
-set @start_general_log= @@global.general_log;
-set @start_slow_query_log= @@global.slow_query_log;
-set @start_general_log_file= @@global.general_log_file;
set global general_log= OFF;
truncate table mysql.general_log;
@@ -31,20 +46,32 @@ show global variables
where Variable_name = 'log' or Variable_name = 'log_slow_queries' or
Variable_name = 'general_log' or Variable_name = 'slow_query_log';
+--echo # Establish connection con1 (user=root)
connect (con1,localhost,root,,);
+--echo # Switch to connection con1
connection con1;
-set session long_query_time=1;
-select sleep(2);
+# Please increase @long_query_time if the corresponding selects show an
+# additional unexpected entry like
+# start_time ... sql_text
+# TIMESTAMP ... set session long_query_time=...
+# (Bug#40377 sporadic pushbuild failure in log_state: result mismatch)
+--replace_result 2 <long_query_time>
+set @long_query_time = 2;
+set session long_query_time = @long_query_time;
+select sleep(@long_query_time + 1);
--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
+--echo # Switch to connection default
connection default;
set global slow_query_log= ON;
+--echo # Switch to connection con1
connection con1;
-set session long_query_time=1;
-select sleep(2);
+set session long_query_time = @long_query_time;
+select sleep(@long_query_time + 1);
--replace_column 1 TIMESTAMP 2 USER_HOST 3 QUERY_TIME
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
+--echo # Switch to connection default
connection default;
show global variables
where Variable_name = 'log' or Variable_name = 'log_slow_queries' or
@@ -80,7 +107,7 @@ show variables like 'log_output';
# Can't set general_log_file to a non existing file
--error ER_WRONG_VALUE_FOR_VAR
-set global general_log_file='/not exiting path/log.master';
+set global general_log_file='/not existing path/log.master';
# Can't set general_log_file to a directory
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
@@ -134,17 +161,30 @@ drop table t1;
--replace_column 1 TIMESTAMP 2 USER_HOST 3 #
select * from mysql.general_log;
-#
-# Bug#29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
-# a deadlock)
+# Reset to initial values
+SET @@global.general_log = @old_general_log;
+SET @@global.general_log_file = @old_general_log_file;
+SET @@global.slow_query_log = @old_slow_query_log;
+SET @@global.slow_query_log_file = @old_slow_query_log_file;
+if(!$fixed_bug38124)
+{
+ --disable_query_log
+ let $my_var = `SELECT @old_general_log_file`;
+ eval SET @@global.general_log_file = '$my_var';
+ let $my_var = `SELECT @old_slow_query_log_file`;
+ eval SET @@global.slow_query_log_file = '$my_var';
+ --enable_query_log
+}
-# save state
-SET @old_general_log_state = @@global.general_log;
-SET @old_slow_log_state = @@global.slow_query_log;
+###########################################################################
-# Test ON->OFF transition under a GLOBAL READ LOCK
+#
+# Bug#29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
+# a deadlock)
+#
+# Test ON->OFF transition under a GLOBAL READ LOCK
SET GLOBAL general_log = ON;
SET GLOBAL slow_query_log = ON;
@@ -156,7 +196,6 @@ SET GLOBAL slow_query_log = OFF;
UNLOCK TABLES;
# Test OFF->ON transition under a GLOBAL READ LOCK
-
FLUSH TABLES WITH READ LOCK;
SET GLOBAL general_log = ON;
@@ -165,7 +204,6 @@ SET GLOBAL slow_query_log = ON;
UNLOCK TABLES;
# Test ON->OFF transition under a GLOBAL READ_ONLY
-
SET GLOBAL READ_ONLY = ON;
SET GLOBAL general_log = OFF;
@@ -174,7 +212,6 @@ SET GLOBAL slow_query_log = OFF;
SET GLOBAL READ_ONLY = OFF;
# Test OFF->ON transition under a GLOBAL READ_ONLY
-
SET GLOBAL READ_ONLY = ON;
SET GLOBAL general_log = ON;
@@ -182,17 +219,18 @@ SET GLOBAL slow_query_log = ON;
SET GLOBAL READ_ONLY = OFF;
-# Restore state
+# Reset to initial values
+SET GLOBAL general_log = @old_general_log;
+SET GLOBAL slow_query_log = @old_slow_query_log;
-SET GLOBAL general_log = @old_general_log_state;
-SET GLOBAL slow_query_log = @old_slow_log_state;
+
+###########################################################################
#
-# Bug #29131: SHOW VARIABLES reports variable 'log' but SET doesn't recognize it
+# Bug#29131: SHOW VARIABLES reports variable 'log' but SET doesn't recognize it
#
-SET @old_general_log_state = @@global.general_log;
-SET @old_slow_log_state = @@global.slow_query_log;
+SET GLOBAL general_log = ON;
SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'log';
@@ -218,67 +256,84 @@ SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'log_slow_queries';
SELECT @@slow_query_log, @@log_slow_queries;
-SET GLOBAL general_log = @old_general_log_state;
-SET GLOBAL slow_query_log = @old_slow_log_state;
+SET GLOBAL general_log = @old_general_log;
+SET GLOBAL slow_query_log = @old_slow_query_log;
+
+
+###########################################################################
#
-# Bug #31604: server crash when setting slow_query_log_file/general_log_file
+# Bug#31604: server crash when setting slow_query_log_file/general_log_file
#
-set @old_general_log_file= @@global.general_log_file;
-set @old_slow_query_log_file= @@global.slow_query_log_file;
--error ER_WRONG_VALUE_FOR_VAR
-set global general_log_file= concat('/not exiting path/log.maste', 'r');
+SET GLOBAL general_log_file= CONCAT('/not existing path/log.maste', 'r');
--error ER_WRONG_VALUE_FOR_VAR
-set global general_log_file= NULL;
+SET GLOBAL general_log_file= NULL;
--error ER_WRONG_VALUE_FOR_VAR
-set global slow_query_log_file= concat('/not exiting path/log.maste', 'r');
+SET GLOBAL slow_query_log_file= CONCAT('/not existing path/log.maste', 'r');
--error ER_WRONG_VALUE_FOR_VAR
-set global slow_query_log_file= NULL;
-
-set global general_log_file= @old_general_log_file;
-set global slow_query_log_file= @old_slow_query_log_file;
+SET GLOBAL slow_query_log_file= NULL;
+
+# Reset to initial values in case a setting above was successful.
+SET GLOBAL general_log_file= @old_general_log_file;
+SET GLOBAL slow_query_log_file= @old_slow_query_log_file;
+if(!$fixed_bug38124)
+{
+ --disable_query_log
+ let $my_var = `SELECT @old_general_log_file`;
+ eval SET @@global.general_log_file = '$my_var';
+ let $my_var = `SELECT @old_slow_query_log_file`;
+ eval SET @@global.slow_query_log_file = '$my_var';
+ --enable_query_log
+}
###########################################################################
--echo
--echo # --
--echo # -- Bug#32748: Inconsistent handling of assignments to
---echo # -- general_log_file/slow_query_log_file.
+--echo # -- general_log_file/slow_query_log_file.
--echo # --
--echo
-SET @general_log_file_saved = @@global.general_log_file;
-SET @slow_query_log_file_saved = @@global.slow_query_log_file;
-
---echo
SET GLOBAL general_log_file = 'bug32748.query.log';
SET GLOBAL slow_query_log_file = 'bug32748.slow.log';
--echo
SHOW VARIABLES LIKE '%log_file';
+# Reset to initial values
--echo
-SET GLOBAL general_log_file = @general_log_file_saved;
-SET GLOBAL slow_query_log_file = @slow_query_log_file_saved;
+SET GLOBAL general_log_file = @old_general_log_file;
+SET GLOBAL slow_query_log_file = @old_slow_query_log_file;
+if(!$fixed_bug38124)
+{
+ --disable_query_log
+ let $my_var = `SELECT @old_general_log_file`;
+ eval SET @@global.general_log_file = '$my_var';
+ let $my_var = `SELECT @old_slow_query_log_file`;
+ eval SET @@global.slow_query_log_file = '$my_var';
+ --enable_query_log
+}
--echo
--echo # -- End of Bug#32748.
-###########################################################################
-
+###########################################################################
-## WL#4403 - deprecate @log and @slow_log_queries variables
+# WL#4403 - deprecate @log and @slow_log_queries variables
-## these are all deprecated -- show for command-line as well!
+# These server system variables are all deprecated
+# -- show for command-line as well!
--echo deprecated:
SET GLOBAL log = 0;
SET GLOBAL log_slow_queries = 0;
SET GLOBAL log = DEFAULT;
SET GLOBAL log_slow_queries = DEFAULT;
-## these are NOT deprecated
+# These server system variables are NOT deprecated.
--echo not deprecated:
SELECT @@global.general_log_file INTO @my_glf;
SELECT @@global.slow_query_log_file INTO @my_sqlf;
@@ -291,6 +346,20 @@ SET GLOBAL slow_query_log_file = @my_sqlf;
SET GLOBAL general_log = DEFAULT;
SET GLOBAL slow_query_log = DEFAULT;
+## Reset to initial values
+SET @@global.general_log = @old_general_log;
+SET @@global.general_log_file = @old_general_log_file;
+SET @@global.slow_query_log = @old_slow_query_log;
+SET @@global.slow_query_log_file = @old_slow_query_log_file;
+if(!$fixed_bug38124)
+{
+ --disable_query_log
+ let $my_var = `SELECT @old_general_log_file`;
+ eval SET @@global.general_log_file = '$my_var';
+ let $my_var = `SELECT @old_slow_query_log_file`;
+ eval SET @@global.slow_query_log_file = '$my_var';
+ --enable_query_log
+}
--echo End of 5.1 tests
@@ -298,17 +367,30 @@ SET GLOBAL slow_query_log = DEFAULT;
--enable_ps_protocol
#
-# Cleanup (must be done last to avoid delayed 'Quit' message in general log)
+# Cleanup
#
+# Disconnect must be done last to avoid delayed 'Quit' message in general log
+--echo # Close connection con1
disconnect con1;
# set back the saved default values
connection default;
-set @@global.general_log= @start_general_log;
-set @@global.slow_query_log= @start_slow_query_log;
-set @@global.general_log_file= @start_general_log_file;
+
+# Reset global system variables to initial values if forgotten somewhere above.
+SET global general_log = @old_general_log;
+SET global general_log_file = @old_general_log_file;
+SET global slow_query_log = @old_slow_query_log;
+SET global slow_query_log_file = @old_slow_query_log_file;
+if(!$fixed_bug38124)
+{
+ --disable_query_log
+ let $my_var = `SELECT @old_general_log_file`;
+ eval SET @@global.general_log_file = '$my_var';
+ let $my_var = `SELECT @old_slow_query_log_file`;
+ eval SET @@global.slow_query_log_file = '$my_var';
+ --enable_query_log
+}
# Remove the log files that was created in the "default location"
# i.e var/run
--remove_file $MYSQLTEST_VARDIR/run/mysqld.log
---remove_file $MYSQLTEST_VARDIR/run/mysqld-slow.log
-
+--remove_file $MYSQLTEST_VARDIR/tmp/log.master