summaryrefslogtreecommitdiff
path: root/mysql-test/t/character_set_server_basic.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/character_set_server_basic.test')
-rw-r--r--mysql-test/t/character_set_server_basic.test267
1 files changed, 267 insertions, 0 deletions
diff --git a/mysql-test/t/character_set_server_basic.test b/mysql-test/t/character_set_server_basic.test
new file mode 100644
index 00000000000..e2d2a9ca9fc
--- /dev/null
+++ b/mysql-test/t/character_set_server_basic.test
@@ -0,0 +1,267 @@
+############## mysql-test\t\character_set_server_basic.test ###################
+# #
+# Variable Name: character_set_server #
+# Scope: GLOBAL | SESSION #
+# Access Type: Dynamic #
+# Data Type: string #
+# Default Value: utf8 (session), latin1 (global) #
+# Range: NA #
+# #
+# #
+# Creation Date: 2008-02-07 #
+# Author: Rizwan #
+# #
+# Description: Test Cases of Dynamic System Variable character_set_server #
+# 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/load_sysvars.inc
+
+###################################################
+## START OF character_set_server TESTS ##
+###################################################
+
+#############################################################
+# Save initial value #
+#############################################################
+SET @global_start_value = @@global.character_set_server;
+SELECT @global_start_value;
+# Save initial session value
+SET @session_start_value = @@character_set_server;
+SELECT @session_start_value;
+# now save using local access
+SET @session_start_value = @@local.character_set_server;
+SELECT @session_start_value;
+# save using default access (session)
+SET @session_start_value = @@session.character_set_server;
+SELECT @session_start_value;
+
+--echo '#--------------------FN_DYNVARS_009_01------------------#'
+###############################################################################
+# Test Variable access and assignment with and withoud @@ #
+###############################################################################
+# select without @@
+--error ER_BAD_FIELD_ERROR
+SELECT character_set_server;
+# assign value without @@
+SET character_set_server=utf8;
+SELECT @@session.character_set_server;
+# assign global variable without @@
+--Error ER_PARSE_ERROR
+SET global.character_set_server=utf8;
+# using another syntax for accessing session variable
+SET session character_set_server=utf8;
+# accessing variable with scope the wrong way
+--Error ER_BAD_FIELD_ERROR
+SELECT session character_set_server;
+# using another syntax for accessing dynamic variable
+SET global character_set_server=utf8;
+--Error ER_BAD_FIELD_ERROR
+SELECT global character_set_server;
+
+--echo '#--------------------FN_DYNVARS_009_02-------------------------#'
+###############################################################################
+# Check the DEFAULT value of character_set_server for session and global #
+###############################################################################
+SET @@character_set_server = latin5;
+SET @@character_set_server = DEFAULT;
+SELECT @@character_set_server AS DEFAULT_VALUE;
+
+SET @@global.character_set_server = latin5;
+SET @@global.character_set_server = DEFAULT;
+SELECT @@global.character_set_server;
+
+--echo '#--------------------FN_DYNVARS_009_03-------------------------#'
+###############################################################################
+# see if setting global value changes session value and vice versa #
+###############################################################################
+SET @@session.character_set_server = utf8;
+SELECT @@session.character_set_server;
+SET @@global.character_set_server = latin2;
+SELECT @@global.character_set_server;
+SELECT @@session.character_set_server AS res_is_utf8;
+
+SET @@session.character_set_server = latin5;
+SELECT @@session.character_set_server;
+SELECT @@global.character_set_server AS res_is_latin2;
+# composite check
+SELECT @@global.character_set_server=@@session.character_set_server
+AS res_is_false;
+
+--echo '#--------------------FN_DYNVARS_009_04-------------------------#'
+###############################################################################
+# Check if accessing variable with and without session point #
+# to session variable #
+###############################################################################
+SELECT @@character_set_server = @@session.character_set_server AS res;
+SELECT @@character_set_server = @@local.character_set_server AS res;
+
+--echo '#--------------------FN_DYNVARS_009_05-------------------------#'
+###########################################################################
+# Check if combining character set works #
+###########################################################################
+--Error ER_BAD_FIELD_ERROR
+SET @@character_set_server = utf8 + latin2;
+
+--echo '#--------------------FN_DYNVARS_009_06-------------------------#'
+###############################################################################
+# Change the value of character_set_server to a valid value for session #
+###############################################################################
+
+let charset_variable = @@session.character_set_server;
+
+--source include/charset_basic.inc
+
+
+--echo '#--------------------FN_DYNVARS_009_07-------------------------#'
+###############################################################################
+# Change the value of character_set_server to a valid value for global #
+###############################################################################
+
+let charset_variable = @@global.character_set_server;
+--source include/charset_basic.inc
+
+
+--echo '#--------------------FN_DYNVARS_009_08-------------------------#'
+###############################################################################
+# Change the value of character_set_server to a valid value with uppercase, #
+# lowercase and mixedcase #
+###############################################################################
+SET @@character_set_server = UTF8;
+SELECT @@character_set_server;
+SET @@character_set_server = utf8;
+SELECT @@character_set_server;
+
+SET @@global.character_set_server = uTf8;
+SELECT @@global.character_set_server;
+
+--echo '#--------------------FN_DYNVARS_009_09-------------------------#'
+##############################################################
+# Check if 1,2,3, ... values can be used on variable #
+##############################################################
+SET @@character_set_server = 1;
+SELECT @@character_set_server;
+SET @@character_set_server = 2;
+SELECT @@character_set_server;
+SET @@character_set_server = 3;
+SELECT @@character_set_server;
+SET @@character_set_server = 36;
+SELECT @@character_set_server;
+SET @@character_set_server = 99;
+SELECT @@character_set_server;
+
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = 100;
+
+SET @@global.character_set_server = 1;
+SELECT @@global.character_set_server;
+SET @@global.character_set_server = 2;
+SELECT @@global.character_set_server;
+SET @@global.character_set_server = 36;
+SELECT @@global.character_set_server;
+SET @@global.character_set_server = 99;
+SELECT @@global.character_set_server;
+
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = 100;
+
+SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
+SELECT @total_charset;
+--echo 'Bug # 34843: character sets are mapped in such a way that 100 and following ';
+--echo 'numbers gives error, and before 100 the 36 mapped wraps arround ';
+--echo 'several times.';
+
+--echo '#--------------------FN_DYNVARS_009_10-------------------------#'
+###############################################################################
+# Change the value of character_set_server to an invalid value for session #
+###############################################################################
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = abc;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = 1utf8;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = 0;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@character_set_server = 1.1;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = -1;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = '';
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = 'utf';
+SET @@character_set_server = true;
+SELECT @@character_set_server AS res_with_true;
+
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@character_set_server = ON;
+
+--echo '#--------------------FN_DYNVARS_009_11-------------------------#'
+###############################################################################
+# Change the value of character_set_server to an invalid value for global #
+###############################################################################
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = abc;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = 1utf8;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = 0;
+--Error ER_WRONG_TYPE_FOR_VAR
+SET @@global.character_set_server = 1.1;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = -1;
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = '';
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = 'utf';
+
+SET @@global.character_set_server = true;
+
+--Error ER_UNKNOWN_CHARACTER_SET
+SET @@global.character_set_server = ON;
+
+--echo '#--------------------FN_DYNVARS_009_12-------------------------#'
+###############################################################################
+# Check if the value in GLOBAL Table matches value in variable #
+###############################################################################
+SELECT @@global.character_set_server =
+ (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+ WHERE VARIABLE_NAME='character_set_server') AS res;
+SET @@global.character_set_server = 1;
+SELECT @@global.character_set_server;
+SELECT @@global.character_set_server =
+ (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+ WHERE VARIABLE_NAME='character_set_server') AS res;
+
+--echo '#--------------------FN_DYNVARS_009_13-------------------------#'
+###############################################################################
+# Check if the value in SESSION Table matches value in variable #
+###############################################################################
+SELECT @@character_set_server =
+ (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+ WHERE VARIABLE_NAME='character_set_server') AS res;
+SELECT @@local.character_set_server =
+ (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+ WHERE VARIABLE_NAME='character_set_server') AS res;
+SELECT @@session.character_set_server =
+ (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+ WHERE VARIABLE_NAME='character_set_server') AS res;
+
+####################################
+# Restore initial value #
+####################################
+SET @@global.character_set_server = @global_start_value;
+SELECT @@global.character_set_server;
+SET @@session.character_set_server = @session_start_value;
+SELECT @@session.character_set_server;
+
+#############################################################
+# END OF character_set_server TESTS #
+#############################################################