|
|
|
@ -10,86 +10,92 @@ |
|
|
|
# # |
|
|
|
# Creation Date: 2008-03-08 # |
|
|
|
# Author: Rizwan # |
|
|
|
# Modified: HHunger 2008-09-29 Fixed the bug by inserting the usual wait and # |
|
|
|
# SQL-Satements to control master and slave, # |
|
|
|
# deleted the sleep and made improvements like: # |
|
|
|
# - Replaced the opt file by dynamic variables, # |
|
|
|
# - Made the tests independant of the initial # |
|
|
|
# values of the global variables, # |
|
|
|
# - Reduced the test to the needed test case to # |
|
|
|
# save run time, # |
|
|
|
# - Beautification. # |
|
|
|
# # |
|
|
|
# Description: Test Cases of Dynamic System Variable init_slave # |
|
|
|
# that checks the behavior of this variable # |
|
|
|
# # |
|
|
|
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # |
|
|
|
# server-system-variables.html # |
|
|
|
# Reference: # |
|
|
|
# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # |
|
|
|
# # |
|
|
|
############################################################################### |
|
|
|
|
|
|
|
source include/master-slave.inc; |
|
|
|
|
|
|
|
--echo '#--------------------FN_DYNVARS_037_01-------------------------#' |
|
|
|
################################################################## |
|
|
|
# Check if setting init_slave is changed in every new connection # |
|
|
|
################################################################## |
|
|
|
|
|
|
|
SET @@global.init_slave = "SET @a = 10"; |
|
|
|
|
|
|
|
--echo 'connect (con1,localhost,root,,)' |
|
|
|
connect (con1,localhost,root,,); |
|
|
|
--echo 'connection con1' |
|
|
|
connection con1; |
|
|
|
SELECT @@global.init_slave; |
|
|
|
disconnect con1; |
|
|
|
--echo 'connection master' |
|
|
|
connection master; |
|
|
|
|
|
|
|
--echo '#--------------------FN_DYNVARS_037_02-------------------------#' |
|
|
|
#################################################### |
|
|
|
# Begin the functionality Testing of init_slave # |
|
|
|
#################################################### |
|
|
|
|
|
|
|
#==================================================== |
|
|
|
--echo 'check if value in slave opt file is executed' |
|
|
|
#==================================================== |
|
|
|
save_master_pos; |
|
|
|
--echo 'connection slave' |
|
|
|
--echo connection slave |
|
|
|
connection slave; |
|
|
|
sleep 1; |
|
|
|
show variables like 'init_slave'; |
|
|
|
show variables like 'max_connections'; |
|
|
|
sync_with_master; |
|
|
|
reset master; |
|
|
|
# |
|
|
|
# save the current values |
|
|
|
|
|
|
|
#=============================================================== |
|
|
|
--echo 'check if value in slave opt file doesnt apply to master' |
|
|
|
#=============================================================== |
|
|
|
SET @start_max_connections= @@global.max_connections; |
|
|
|
SET @start_init_slave= @@global.init_slave; |
|
|
|
|
|
|
|
--echo 'connection master' |
|
|
|
connection master; |
|
|
|
show variables like 'init_slave'; |
|
|
|
show variables like 'max_connections'; |
|
|
|
save_master_pos; |
|
|
|
--echo 'connection slave' |
|
|
|
connection slave; |
|
|
|
sync_with_master; |
|
|
|
|
|
|
|
#======================================================= |
|
|
|
--echo 'try creating a temporary variable in init_slave' |
|
|
|
#======================================================= |
|
|
|
|
|
|
|
SET @@global.init_slave = "SET @a=5"; |
|
|
|
# setting of a global value with an effect on the next start of the slave server |
|
|
|
# check that @@global.init_slave could be set |
|
|
|
let $my_init_slave= |
|
|
|
'SET @@global.max_connections = @@global.max_connections + 1'; |
|
|
|
eval SET @@global.init_slave = $my_init_slave; |
|
|
|
|
|
|
|
stop slave; |
|
|
|
--wait_for_slave_to_stop |
|
|
|
reset slave; |
|
|
|
# Clean up old test tables |
|
|
|
# show the data type of the variable |
|
|
|
--disable_warnings |
|
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; |
|
|
|
DROP TABLE IF EXISTS t1; |
|
|
|
CREATE TEMPORARY TABLE t1 AS SELECT @@global.init_slave AS my_column; |
|
|
|
--enable_warnings |
|
|
|
start slave; |
|
|
|
|
|
|
|
DESCRIBE t1; |
|
|
|
DROP TABLE t1; |
|
|
|
# |
|
|
|
# check that the new setting of @@global.init_slave becomes immediately visible |
|
|
|
eval SELECT @@global.init_slave = $my_init_slave; |
|
|
|
--echo Expect 1 |
|
|
|
# wait for the slave threads have set the global variable. |
|
|
|
let $wait_timeout= 90; |
|
|
|
let $wait_condition= SELECT @@global.max_connections = @start_max_connections; |
|
|
|
--source include/wait_condition_sp.inc |
|
|
|
# check that the action in init_slave does not happen immediately |
|
|
|
SELECT @@global.max_connections= @start_max_connections; |
|
|
|
--echo Expect 1 |
|
|
|
# |
|
|
|
# reset of the server |
|
|
|
STOP SLAVE; |
|
|
|
--wait_for_slave_to_stop |
|
|
|
RESET MASTER; |
|
|
|
RESET SLAVE; |
|
|
|
START SLAVE; |
|
|
|
source include/wait_for_slave_to_start.inc; |
|
|
|
# |
|
|
|
# wait for the slave threads have set the global variable. |
|
|
|
let $wait_timeout= 90; |
|
|
|
let $wait_condition= SELECT @@global.max_connections = @start_max_connections + 1; |
|
|
|
--source include/wait_condition_sp.inc |
|
|
|
# check that the action in init_slave was executed and had the intended effect |
|
|
|
SELECT @@global.max_connections = @start_max_connections + 1; |
|
|
|
--echo Expect 1 |
|
|
|
# |
|
|
|
# Setting a variable(which is local to a session) and must not be visible |
|
|
|
SET @@global.init_slave = "SET @a=5"; |
|
|
|
# |
|
|
|
STOP SLAVE; |
|
|
|
--wait_for_slave_to_stop |
|
|
|
RESET MASTER; |
|
|
|
RESET SLAVE; |
|
|
|
START SLAVE; |
|
|
|
source include/wait_for_slave_to_start.inc; |
|
|
|
# |
|
|
|
SHOW VARIABLES LIKE 'init_slave'; |
|
|
|
# expect NULL |
|
|
|
SELECT @a; |
|
|
|
|
|
|
|
--echo 'Bug#35365 SET statement in init_slave not execute if slave is restarted' |
|
|
|
|
|
|
|
# Restore value |
|
|
|
set global max_connections= default; |
|
|
|
|
|
|
|
--echo Expect NULL |
|
|
|
# |
|
|
|
# Clean up |
|
|
|
SET @@global.max_connections= @start_max_connections; |
|
|
|
SET @@global.init_slave= @start_init_slave; |
|
|
|
################################################## |
|
|
|
# End of functionality Testing for init_slave # |
|
|
|
################################################## |
|
|
|
|