############## mysql-test\t\table_lock_wait_timeout_basic.test ################
#                                                                             #
# Variable Name: table_lock_wait _timeout                                     #
# Scope: GLOBAL                                                               #
# Access Type: Dynamic                                                        #
# Data Type: numeric                                                          #
# Default Value: 50                                                           #
# Range: 1-1073741824                                                         #
#                                                                             #
#                                                                             #
# Creation Date: 2008-02-14                                                   #
# Author:  Salman                                                             #
#                                                                             #
# Description: Test Cases of Dynamic System Variable table_lock_wait_timeout  #
#              that checks the behavior of this variable in the following ways#
#              * Default Value                                                #
#              * Valid & Invalid values                                       #
#              * Scope & Access method                                        #
#              * Data Integrity                                               #
#                                                                             #
# Reference: http://dev.mysql.com/doc/refman/5.1/en/                          #
#  server-system-variables.html#option_mysqld_table_lock_wait_timeout         #
#                                                                             #
###############################################################################

--source include/load_sysvars.inc
######################################################################## 
#                    START OF table_lock_wait_timeout TESTS            #
######################################################################## 


########################################################################## 
# Saving initial value of table_lock_wait_timeout in a temporary variable#
########################################################################## 

SET @start_value = @@global.table_lock_wait_timeout;
SELECT @start_value;


--echo '#--------------------FN_DYNVARS_001_01------------------------#'
######################################################################## 
#              Display the DEFAULT value of table_lock_wait_timeout    #
######################################################################## 

SET @@global.table_lock_wait_timeout = 99;
SET @@global.table_lock_wait_timeout = DeFAULT;
SELECT @@global.table_lock_wait_timeout;


--echo '#---------------------FN_DYNVARS_001_02-------------------------#'
############################################### 
#     Verify default value of variable        #
############################################### 

SET @@global.table_lock_wait_timeout =Default;
SELECT @@global.table_lock_wait_timeout = 50;

--echo '#--------------------FN_DYNVARS_001_03------------------------#'
######################################################################## 
#        Change the value of table_lock_wait_timeout to a valid value  #
######################################################################## 


SET @@global.table_lock_wait_timeout = 8;
SELECT @@global.table_lock_wait_timeout ;

SET @@global.table_lock_wait_timeout = 1;
SELECT @@global.table_lock_wait_timeout ;
SET @@global.table_lock_wait_timeout = 1073741824;
SELECT @@global.table_lock_wait_timeout ;
SET @@global.table_lock_wait_timeout = 18000;
SELECT @@global.table_lock_wait_timeout ;
SET @@global.table_lock_wait_timeout = 65535;
SELECT @@global.table_lock_wait_timeout ;



--echo '#--------------------FN_DYNVARS_001_04-------------------------#'
######################################################################### 
#         Change the value of table_lock_wait_timeout to invalid value  #
######################################################################### 

SET @@global.table_lock_wait_timeout = -1;

SET @@global.table_lock_wait_timeout= 100000000000;

SET @@global.table_lock_wait_timeout= -1024;

SET @@global.table_lock_wait_timeout= 0;
--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';

--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_lock_wait_timeout= 10000.01;

--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_lock_wait_timeout= ON;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_lock_wait_timeout= 'test';

--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.table_lock_wait_timeout= '';


--echo '#-------------------FN_DYNVARS_001_05----------------------------#'
########################################################################### 
#       Test if accessing session table_lock_wait_timeout gives error     #
########################################################################### 

--Error ER_GLOBAL_VARIABLE
SET @@session.table_lock_wait_timeout= 0;
SELECT @@table_lock_wait_timeout;


--echo '#----------------------FN_DYNVARS_001_06------------------------#'
############################################################################## 
# Check if the value in GLOBAL & SESSION Tables matches values in variable   #
##############################################################################

SELECT @@global.table_lock_wait_timeout= VARIABLE_VALUE 
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES 
WHERE VARIABLE_NAME='table_lock_wait_timeout';


--echo '#---------------------FN_DYNVARS_001_09----------------------#'
################################################################### 
#      Check if TRUE and FALSE values can be used on variable     #
################################################################### 

SET @@global.table_lock_wait_timeout= TRUE;
SELECT @@global.table_lock_wait_timeout;

SET @@global.table_lock_wait_timeout= FALSE;
SELECT @@global.table_lock_wait_timeout;


--echo '#---------------------FN_DYNVARS_001_10----------------------#'
###############################################################################
#    Check if accessing variable without SCOPE points to same global variable #
###############################################################################

SET @@global.table_lock_wait_timeout= 10;
SELECT @@table_lock_wait_timeout= @@global.table_lock_wait_timeout;


--echo '#---------------------FN_DYNVARS_001_11----------------------#'
###############################################################################  
#   Check if table_lock_wait_timeout can be accessed with and without @@ sign #
###############################################################################

--Error ER_GLOBAL_VARIABLE
SET table_lock_wait_timeout= 8;
--Error ER_PARSE_ERROR
SET global.table_lock_wait_timeout= 10;
--Error ER_UNKNOWN_TABLE
SELECT global.table_lock_wait_timeout;
--Error ER_BAD_FIELD_ERROR
SELECT table_lock_wait_timeout= @@session.table_lock_wait_timeout;


##############################  
#   Restore initial value    #
##############################

SET @@global.table_lock_wait_timeout= @start_value;
SELECT @@global.table_lock_wait_timeout;


######################################################################## 
#              END OF table_lock_wait_timeout TESTS                    #
########################################################################