1
############## mysql-test\t\foreign_key_checks_basic.test #####################
3
# Variable Name: foreign_key_checks #
5
# Access Type: Dynamic #
11
# Creation Date: 2008-02-07 #
14
# Description: Test Cases of Dynamic System Variable foreign_key_checks #
15
# that checks the behavior of this variable in the following ways#
17
# * Valid & Invalid values #
18
# * Scope & Access method #
21
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
22
# server-system-variables.html #
24
###############################################################################
26
--source include/load_sysvars.inc
28
########################################################################
29
# START OF foreign_key_checks TESTS #
30
########################################################################
33
################################################################################
34
# Saving initial value of foreign_key_checks in a temporary variable #
35
################################################################################
37
SET @session_start_value = @@session.foreign_key_checks;
38
SELECT @session_start_value;
40
--echo '#--------------------FN_DYNVARS_032_01------------------------#'
41
########################################################################
42
# Display the DEFAULT value of foreign_key_checks #
43
########################################################################
45
SET @@session.foreign_key_checks = 1;
46
SET @@session.foreign_key_checks = DEFAULT;
47
SELECT @@session.foreign_key_checks;
49
--echo 'Bug# 34878: No DEFAULT value for variable. Also setting DEFAULT does not give error'
51
--echo '#---------------------FN_DYNVARS_032_02-------------------------#'
52
#############################################################################
53
# Check if foreign_key_checks can be accessed with and without @@ sign #
54
#############################################################################
56
SET foreign_key_checks = 1;
57
SELECT @@foreign_key_checks;
59
--Error ER_UNKNOWN_TABLE
60
SELECT session.foreign_key_checks;
62
--Error ER_UNKNOWN_TABLE
63
SELECT local.foreign_key_checks;
65
SET session foreign_key_checks = 0;
66
SELECT @@session.foreign_key_checks;
69
--echo '#--------------------FN_DYNVARS_032_03------------------------#'
70
########################################################################
71
# change the value of foreign_key_checks to a valid value #
72
########################################################################
74
SET @@session.foreign_key_checks = 0;
75
SELECT @@session.foreign_key_checks;
76
SET @@session.foreign_key_checks = 1;
77
SELECT @@session.foreign_key_checks;
80
--echo '#--------------------FN_DYNVARS_032_04-------------------------#'
81
###########################################################################
82
# Change the value of foreign_key_checks to invalid value #
83
###########################################################################
85
--Error ER_WRONG_VALUE_FOR_VAR
86
SET @@session.foreign_key_checks = -1;
87
--Error ER_WRONG_VALUE_FOR_VAR
88
SET @@session.foreign_key_checks = 2;
89
--Error ER_WRONG_VALUE_FOR_VAR
90
SET @@session.foreign_key_checks = "T";
91
--Error ER_WRONG_VALUE_FOR_VAR
92
SET @@session.foreign_key_checks = "Y";
93
--Error ER_WRONG_VALUE_FOR_VAR
94
SET @@session.foreign_key_checks = TR�E;
95
--Error ER_WRONG_VALUE_FOR_VAR
96
SET @@session.foreign_key_checks = �N;
98
SET @@session.foreign_key_checks = OF;
99
SELECT @@session.foreign_key_checks;
101
--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.'
103
--Error ER_WRONG_VALUE_FOR_VAR
104
SET @@session.foreign_key_checks = �FF;
105
--Error ER_WRONG_VALUE_FOR_VAR
106
SET @@session.foreign_key_checks = '�';
107
--Error ER_WRONG_VALUE_FOR_VAR
108
SET @@session.foreign_key_checks = NO;
111
--echo '#-------------------FN_DYNVARS_032_05----------------------------#'
112
###########################################################################
113
# Test if accessing global foreign_key_checks gives error #
114
###########################################################################
116
--Error ER_LOCAL_VARIABLE
117
SET @@global.foreign_key_checks = 0;
119
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
120
SELECT @@global.foreign_key_checks;
122
--echo '#----------------------FN_DYNVARS_032_06------------------------#'
123
#########################################################################
124
# Check if the value in GLOBAL Table contains variable value #
125
#########################################################################
127
SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='foreign_key_checks';
129
--echo '#----------------------FN_DYNVARS_032_07------------------------#'
130
#########################################################################
131
# Check if the value in GLOBAL Table matches value in variable #
132
#########################################################################
134
SELECT @@session.foreign_key_checks = VARIABLE_VALUE
135
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
136
WHERE VARIABLE_NAME='foreign_key_checks';
137
SELECT @@session.foreign_key_checks;
138
SELECT VARIABLE_VALUE
139
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
140
WHERE VARIABLE_NAME='foreign_key_checks';
143
--echo '#---------------------FN_DYNVARS_032_08-------------------------#'
144
###################################################################
145
# Check if ON and OFF values can be used on variable #
146
###################################################################
148
SET @@session.foreign_key_checks = OFF;
149
SELECT @@session.foreign_key_checks;
150
SET @@session.foreign_key_checks = ON;
151
SELECT @@session.foreign_key_checks;
153
--echo '#---------------------FN_DYNVARS_032_09----------------------#'
154
###################################################################
155
# Check if TRUE and FALSE values can be used on variable #
156
###################################################################
158
SET @@session.foreign_key_checks = TRUE;
159
SELECT @@session.foreign_key_checks;
160
SET @@session.foreign_key_checks = FALSE;
161
SELECT @@session.foreign_key_checks;
163
##############################
164
# Restore initial value #
165
##############################
167
SET @@session.foreign_key_checks = @session_start_value;
168
SELECT @@session.foreign_key_checks;
170
###############################################################
171
# END OF foreign_key_checks TESTS #
172
###############################################################