############## mysql-test\t\collation_database_basic.test ##################### # # # Variable Name: collation_database # # Scope: GLOBAL | SESSION # # Access Type: Dynamic # # Data Type: string # # Default Value: # # Range: # # # # # # Creation Date: 2008-02-07 # # Author: Rizwan # # # # Description: Test Cases of Dynamic System Variable collation_database # # 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 # # # ############################################################################### --source include/have_big5.inc --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc --source include/have_ucs2.inc --source include/load_sysvars.inc ################################################### ## START OF collation_database TESTS ## ################################################### ############################################################# # Save initial value # ############################################################# SET @global_start_value = @@global.collation_database; SELECT @global_start_value; # Save initial session value SET @session_start_value = @@collation_database; SELECT @session_start_value; # now save using local access SET @session_start_value = @@local.collation_database; SELECT @session_start_value; # save using implicit session scope SET @session_start_value = @@session.collation_database; SELECT @session_start_value; --echo '#--------------------FN_DYNVARS_016_01------------------#' ############################################################################### # Test Variable access and assignment with and without @@ # ############################################################################### # select without @@ --error ER_BAD_FIELD_ERROR SELECT collation_database; # assign value without @@ SET collation_database=utf8_unicode_ci; SELECT @@session.collation_database; # assign global variable without @@ --Error ER_PARSE_ERROR SET global.collation_database=utf8_unicode_ci; # using another syntax for accessing session variable SET session collation_database=utf8_unicode_ci; # accessing variable with scope the wrong way --Error ER_BAD_FIELD_ERROR SELECT session collation_database; # using another syntax for accessing dynamic variable SET global collation_database=utf8_unicode_ci; --Error ER_BAD_FIELD_ERROR SELECT global collation_database; --echo '#--------------------FN_DYNVARS_016_02-------------------------#' ############################################################################## # Check the DEFAULT value of collation_database for session and global # ############################################################################## SET @@collation_database = latin1_bin; SET @@collation_database = DEFAULT; SELECT DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=DATABASE(); SELECT @@collation_database AS DEFAULT_VALUE; SET @@global.collation_database = latin1_bin; SET @@global.collation_database = DEFAULT; SELECT @@global.collation_database; --echo '#--------------------FN_DYNVARS_016_03-------------------------#' ############################################################################## # see if setting global value changes session value and vice versa # ############################################################################## SET @@session.collation_database = utf8_polish_ci; SELECT @@session.collation_database; SET @@global.collation_database = latin7_general_ci; SELECT @@global.collation_database; SELECT @@session.collation_database AS res_is_utf8_polish_ci; SET @@session.collation_database = latin7_bin; SELECT @@session.collation_database; SELECT @@global.collation_database AS res_is_latin7_general_ci; # composite check SELECT @@global.collation_database=@@session.collation_database AS res_is_false; --echo '#--------------------FN_DYNVARS_016_04-------------------------#' ############################################################################### # Check if accessing variable with and without session point to session # # variable # ############################################################################### SELECT @@collation_database = @@session.collation_database AS res; SELECT @@collation_database = @@local.collation_database AS res; --echo '#--------------------FN_DYNVARS_016_05-------------------------#' ########################################################################### # Check if combining character set works # ########################################################################### --Error ER_BAD_FIELD_ERROR SET @@collation_database = latin7_general_ci + latin7_general_cs; --echo '#--------------------FN_DYNVARS_016_06-------------------------#' ########################################################################### # Change the value of collation_database to a valid value for session # ########################################################################### let $collation_variable = @@session.collation_database; --source suite/sys_vars/inc/collation_basic.inc --echo '#--------------------FN_DYNVARS_016_07-------------------------#' ############################################################################### # Change the value of collation_database to a valid value for global # ############################################################################### let $collation_variable = @@global.collation_database; --source suite/sys_vars/inc/collation_basic.inc --echo '#--------------------FN_DYNVARS_016_08-------------------------#' ############################################################################# # Change the value of collation_database to a valid value with uppercase, # # lowercase and mixedcase # ############################################################################# SET @@collation_database = LATIN7_GENERAL_CS; SELECT @@collation_database; SET @@collation_database = latin7_general_cs; SELECT @@collation_database; SET @@global.collation_database = Latin7_GeneRal_cS; SELECT @@global.collation_database; --echo '#--------------------FN_DYNVARS_016_09-------------------------#' ############################################################## # Check if 1,2,3, ... values can be used on variable # ############################################################## SET @@collation_database = 1; SELECT @@collation_database; SET @@collation_database = 2; SELECT @@collation_database; SET @@collation_database = 3; SELECT @@collation_database; SET @@collation_database = 99; SELECT @@collation_database; --Error ER_UNKNOWN_COLLATION SET @@collation_database = 100; SET @@global.collation_database = 1; SELECT @@global.collation_database; SET @@global.collation_database = 2; SELECT @@global.collation_database; SET @@global.collation_database = 3; SELECT @@global.collation_database; SET @@global.collation_database = 99; SELECT @@global.collation_database; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = 100; SET @total_collations = (SELECT count(*) FROM INFORMATION_SCHEMA.COLLATIONS); SELECT @total_collations > 120; --echo '#--------------------FN_DYNVARS_016_10-------------------------#' ############################################################################### # Change the value of collation_database to an invalid value for session # ############################################################################### --Error ER_UNKNOWN_COLLATION SET @@collation_database = latin7_binary; --Error ER_UNKNOWN_COLLATION SET @@collation_database = 'eucjpms_japanese_cs'; --Error ER_UNKNOWN_COLLATION SET @@collation_database = 0; --Error ER_WRONG_TYPE_FOR_VAR SET @@collation_database = 1.01; --Error ER_UNKNOWN_COLLATION SET @@collation_database = -1; --Error ER_UNKNOWN_COLLATION SET @@collation_database = ''; --Error ER_UNKNOWN_COLLATION SET @@collation_database = ' eucjpms_bin'; SET @@collation_database = true; SELECT @@collation_database AS res_with_true; --Error ER_UNKNOWN_COLLATION SET @@collation_database = ON; --echo '#--------------------FN_DYNVARS_016_11-------------------------#' ############################################################################### # Change the value of collation_database to an invalid value for global # ############################################################################### --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = latin7_binary; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = 'eucjpms_japanese_cs'; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = 0; --Error ER_WRONG_TYPE_FOR_VAR SET @@global.collation_database = 1.1; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = -1; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = ""; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = ' eucjpms_bin'; SET @@global.collation_database = true; --Error ER_UNKNOWN_COLLATION SET @@global.collation_database = ON; --echo '#--------------------FN_DYNVARS_016_12-------------------------#' ############################################################################### # Check if the value in GLOBAL Table matches value in variable # ############################################################################### SELECT @@global.collation_database = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='collation_database') AS res; SET @@global.collation_database = 1; SELECT @@global.collation_database; SELECT @@global.collation_database = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='collation_database') AS res; --echo '#--------------------FN_DYNVARS_016_13-------------------------#' ############################################################################## # Check if the value in SESSION Table matches value in variable # ############################################################################## SELECT @@collation_database = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='collation_database') AS res; SELECT @@local.collation_database = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='collation_database') AS res; SELECT @@session.collation_database = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='collation_database') AS res; #################################### # Restore initial value # #################################### SET @@global.collation_database = @global_start_value; SELECT @@global.collation_database; SET @@session.collation_database = @session_start_value; SELECT @@session.collation_database; ########################################################### # END OF collation_database TESTS # ###########################################################