summaryrefslogtreecommitdiffstats
path: root/storage/rocksdb/mysql-test/rocksdb_sys_vars/include/rocksdb_sys_var.inc
blob: db0abc573589a0374b83a6fd9c96ee47c0a4690b (plain)
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
  }
}