File: immediate_server_version_basic.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (130 lines) | stat: -rw-r--r-- 4,777 bytes parent folder | download
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
125
126
127
128
129
130
#
# ==== Purpose ====
#
# In this test we check that the variable immediate_server_version can be
# correctly set and accessed.
#
#
# ==== References ====
#
# WL#11879 replicate original server version

--let $default_value = 999999
--let $max_value = 999999

--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@GLOBAL.immediate_server_version;

--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be accessible and have the default value
--let $assert_cond = $ISV = $default_value
--source include/assert.inc

# Verify that SHOW VARIABLES works
SHOW VARIABLES LIKE 'immediate_server_version';

# Check if value can set
--error ER_LOCAL_VARIABLE
SET @@GLOBAL.immediate_server_version = 123456;

SET @@SESSION.immediate_server_version = 123456;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be equal to the set value
--let $assert_cond = $ISV = 123456
--source include/assert.inc

# Check errors for wrong values (different type or not in the range of allowed
# values)

# This will generate a warning
SET @@SESSION.immediate_server_version = -123456;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be 0
--let $assert_cond = $ISV = 0
--source include/assert.inc

# Should be accepted
SET @@SESSION.immediate_server_version = 0;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be 0
--let $assert_cond = $ISV = 0
--source include/assert.inc

--error ER_WRONG_TYPE_FOR_VAR
SET @@SESSION.immediate_server_version = 123456789012345678901;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be 0
--let $assert_cond = $ISV = 0
--source include/assert.inc

--error ER_WRONG_TYPE_FOR_VAR
SET @@SESSION.immediate_server_version = 'xyz';
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be 0
--let $assert_cond = $ISV = 0
--source include/assert.inc

--error ER_WRONG_TYPE_FOR_VAR
SET @@SESSION.immediate_server_version = xyz;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be 0
--let $assert_cond = $ISV = 0
--source include/assert.inc

# Should give a warning and truncate the value and set it to the maximum value
SET @@SESSION.immediate_server_version = 36028797018963969;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be equal to the maximum value
--let $assert_cond = $ISV = $max_value
--source include/assert.inc

# Should give a warning and truncate the value and set it to the maximum value
SET @@SESSION.immediate_server_version = 18446744073709551615;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be equal to the maximum value
--let $assert_cond = $ISV = $max_value
--source include/assert.inc

# Should give a error
--error ER_WRONG_TYPE_FOR_VAR
SET @@SESSION.immediate_server_version = 18446744073709551616;
--let $ISV = `SELECT @@SESSION.immediate_server_version;`
--let $assert_text = immediate_server_version must be equal to the maximum value
--let $assert_cond = $ISV = $max_value
--source include/assert.inc


# Check if the value in SESSION Table matches value in variable

--let $count =`SELECT @@SESSION.immediate_server_version = VARIABLE_VALUE FROM performance_schema.session_variables WHERE VARIABLE_NAME='immediate_server_version';`
--let $assert_text = The value in session table matches the one in the variable
--let $assert_cond = $count = 1
--source include/assert.inc

--let $count = `SELECT COUNT(@@SESSION.immediate_server_version);`
--let $assert_text = There is only one variable with this name
--let $assert_cond = $count = 1
--source include/assert.inc

--let $count = `SELECT COUNT(VARIABLE_VALUE) FROM performance_schema.session_variables WHERE VARIABLE_NAME='immediate_server_version';`
--let $assert_text = There is only one variable with this name in the performance schema table
--let $assert_cond = $count = 1
--source include/assert.inc

#   Check if immediate_server_version can be accessed with @@ sign

--let $count = `SELECT COUNT(@@immediate_server_version);`
--let $assert_text = The variable can be accessed with @@ sign
--let $assert_cond = $count = 1
--source include/assert.inc

# Check that it's read-only to a NON super privileged

# Create new user without super privilege
CREATE USER nosuper;
connect (conn_nosuper,localhost,nosuper,,);
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET SESSION immediate_server_version = 0;
--disconnect conn_nosuper
--connection default
DROP USER nosuper;