1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
##
# $sys_var name of the variable
# $read_only - true if read-only
# $session - true if this is session, false if global-only
# $suppress_default_value - if true, don't check the default value
# valid_values table should contain valid values
# invalid_values
##
--eval SET @start_global_value = @@global.$sys_var
if (!$suppress_default_value)
{
--replace_regex /[a-f0-9]{40}/#/
SELECT @start_global_value;
if ($session)
{
--eval SET @start_session_value = @@session.$sys_var
SELECT @start_session_value;
}
}
if (!$read_only)
{
--echo '# Setting to valid values in global scope#'
--let $i=1
--let $value=query_get_value(select value from valid_values, value, $i)
while ($value != 'No such row')
{
--echo "Trying to set variable @@global.$sys_var to $value"
--eval SET @@global.$sys_var = $value
--eval SELECT @@global.$sys_var
--let $v=`SELECT @@global.$sys_var`
--source include/correctboolvalue.inc
if (!$sticky)
{
if ($v != $int_value)
{
--echo Set @@global.$sys_var to $value but it remained set to $v
--die Wrong variable value
}
}
--echo "Setting the global scope variable back to default"
--eval SET @@global.$sys_var = DEFAULT
--eval SELECT @@global.$sys_var
--inc $i
--let $value=query_get_value(select value from valid_values, value, $i)
}
if ($session)
{
--echo '# Setting to valid values in session scope#'
--let $i=1
--let $value=query_get_value(select value from valid_values, value, $i)
while ($value != 'No such row')
{
--echo "Trying to set variable @@session.$sys_var to $value"
--eval SET @@session.$sys_var = $value
--eval SELECT @@session.$sys_var
--let $v=`SELECT @@session.$sys_var`
--source include/correctboolvalue.inc
if (!$sticky)
{
if ($v != $int_value)
{
--echo Set @@session.$sys_var to $value but it remained set to $v
--die Wrong variable value
}
}
--echo "Setting the session scope variable back to default"
--eval SET @@session.$sys_var = DEFAULT
--eval SELECT @@session.$sys_var
--inc $i
--let $value=query_get_value(select value from valid_values, value, $i)
}
}
if (!$session)
{
--echo "Trying to set variable @@session.$sys_var to 444. It should fail because it is not session."
--Error ER_GLOBAL_VARIABLE
--eval SET @@session.$sys_var = 444
}
--echo '# Testing with invalid values in global scope #'
####################################################################
# Change the value of query_prealloc_size to an invalid value #
####################################################################
--let $i=1
--let $value=query_get_value(select value from invalid_values, value, $i)
while ($value != 'No such row')
{
--echo "Trying to set variable @@global.$sys_var to $value"
--Error ER_WRONG_VALUE_FOR_VAR, ER_WRONG_TYPE_FOR_VAR
--eval SET @@global.$sys_var = $value
--eval SELECT @@global.$sys_var
--inc $i
--let $value=query_get_value(select value from invalid_values, value, $i)
}
}
if ($read_only)
{
--echo "Trying to set variable @@global.$sys_var to 444. It should fail because it is readonly."
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
--eval SET @@global.$sys_var = 444
}
####################################
# Restore initial value #
####################################
if (!$read_only)
{
--eval SET @@global.$sys_var = @start_global_value
--eval SELECT @@global.$sys_var
if ($session)
{
--eval SET @@session.$sys_var = @start_session_value
--eval SELECT @@session.$sys_var
}
}
|