summaryrefslogtreecommitdiff
path: root/mysql-test/suite/perfschema/t/show_coverage.test
blob: 6a8d90d6058ebb7657dd4cc11cc5f596fe8c4bda (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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
################### suite/perfschema/t/show_coverage.test ######################
#                                                                              #
# Testcases to increase DGCOV coverage of the status and system variable       #
# implementation in the Performance Schema.                                    #
#                                                                              #
################################################################################
--source include/have_perfschema.inc
--source include/not_embedded.inc
--source include/no_protocol.inc
--source include/count_sessions.inc

--echo #
--echo # TEST 1
--echo # Handling of SHOW STATUS/VARIABLES ... WHERE
--echo #
SHOW STATUS WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW GLOBAL STATUS WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW SESSION STATUS WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW VARIABLES WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW GLOBAL VARIABLES WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW SESSION VARIABLES WHERE VARIABLE_NAME LIKE "foo";

--echo #
--echo # TEST 2
--echo # CREATE..SELECT -- Expect correct ER_WARN_DEPRECATED_SYNTAX
--echo #
USE test;
CREATE TABLE t0 SELECT * FROM information_schema.global_status WHERE variable_name = 'COM_SELECT';
DROP TABLE t0;

--echo #
--echo # TEST 3
--echo # Select status and system variable tables using ORDER BY to exercise the
--echo # rnd_pos() method
--echo #
use performance_schema;
--disable_result_log
select * from global_variables order by variable_name;
select * from variables_by_thread order by variable_name;
select * from session_variables order by variable_name;
select * from global_status order by variable_name;
select * from session_status order by variable_name;
select * from status_by_thread order by variable_name;
select * from status_by_user order by variable_name;
select * from status_by_host order by variable_name;
select * from status_by_account order by variable_name;
--enable_result_log

--echo #
--echo # TEST 4
--echo # Handling of SHOW STATUS/VARIABLES ... WHERE
--echo #
SHOW STATUS WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW GLOBAL STATUS WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW SESSION STATUS WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW VARIABLES WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW GLOBAL VARIABLES WHERE VARIABLE_NAME LIKE "foo";
--echo #
SHOW SESSION VARIABLES WHERE VARIABLE_NAME LIKE "foo";

--echo #
--echo # TEST 5
--echo # Confirm FLUSH STATUS resets counters for all threads.
--echo #
--echo #
--echo # Create a new connection
--connect(con1, localhost, root,,)
--echo #
--echo # Record thread id
let $thread_id= `SELECT THREAD_ID FROM performance_schema.threads WHERE PROCESSLIST_ID = CONNECTION_ID()`;
--echo #
--echo # Increase bytes_received for new connection
USE test;
SHOW TABLES;
--connection default
USE performance_schema;
--disable_query_log
eval SELECT $thread_id INTO @thread_id;
--enable_query_log

--echo #
--echo # Record bytes_received for other connection
SELECT variable_value FROM status_by_thread
  WHERE variable_name = "bytes_received" and thread_id = @thread_id INTO @bytes_before;
--echo #
--echo # Reset status counters
FLUSH STATUS;
--echo #
--echo # Record bytes_received after reset
SELECT variable_value FROM status_by_thread
  WHERE variable_name = "bytes_received" and thread_id = @thread_id INTO @bytes_after;
--echo #
--echo # Expect bytes_before > bytes_after
SELECT @bytes_before > @bytes_after AS 'Expect 1';
--echo #
--echo # Expect bytes_after is zero
SELECT @bytes_after AS 'Expect 0';

disconnect con1;
--source include/wait_until_count_sessions.inc


--echo #
--echo # TEST 6
--echo #
--echo # Bug#28291258 FLUSH STATUS ADDS TWICE TO GLOBAL VALUES
--echo #

--echo #
--echo # Default connection
--let $initial_global_value = query_get_value(SHOW GLOBAL STATUS LIKE 'Slow_queries', Value, 1)

--source include/count_sessions.inc

--echo #
--echo # First connection
--connect (con1, localhost, root,,)

## Global value requested from the first session must not change
--let $current_global_value = query_get_value(SHOW GLOBAL STATUS LIKE 'Slow_queries', Value, 1)
--let $assert_cond = $current_global_value - $initial_global_value = 0
--let $assert_text = Global value requested from the first session must not change
--source include/assert.inc

--echo #
--echo # Generate a slow query
--echo #
SET long_query_time = 2;
SELECT SLEEP(4);
SET long_query_time = @@global.long_query_time;
--echo #

## Global value requested from the first session after SLEEP() must increase by 1
--let $current_global_value = query_get_value(SHOW GLOBAL STATUS LIKE 'Slow_queries', Value, 1)
--let $first_session_value = query_get_value(SHOW SESSION STATUS LIKE 'Slow_queries', Value, 1)
--let $assert_cond = $current_global_value - $initial_global_value = 1
--let $assert_text = Global value requested from the first session after SLEEP() must increase by 1
--source include/assert.inc
--let $assert_cond = $first_session_value = 1
--let $assert_text = First session value must increase by 1
--source include/assert.inc

--connection default
--disconnect con1
--source include/wait_until_count_sessions.inc

--echo #
--echo # Default connection
--connection default

## Global value requested from the default session after DISCONNECT must remain the same
--let $current_global_value = query_get_value(SHOW GLOBAL STATUS LIKE 'Slow_queries', Value, 1)
--let $default_session_value = query_get_value(SHOW SESSION STATUS LIKE 'Slow_queries', Value, 1)
--let $assert_cond = $current_global_value - $initial_global_value = 1
--let $assert_text = Global value requested from the default session after DISCONNECT must remain the same
--source include/assert.inc

## Default session value must remain zero
--let $assert_cond = $default_session_value = 0
--let $assert_text = Default session value must remain zero
--source include/assert.inc

--echo #
FLUSH STATUS;
--echo #

## Global value requested from the default session after FLUSH must remain the same
--let $current_global_value = query_get_value(SHOW GLOBAL STATUS LIKE 'Slow_queries', Value, 1)
--let $default_session_value = query_get_value(SHOW SESSION STATUS LIKE 'Slow_queries', Value, 1)
--let $assert_cond = $current_global_value - $initial_global_value = 1
--let $assert_text = Global value requested from the default session after FLUSH must remain the same
--source include/assert.inc

## Default session value after FLUSH must remain zero
--let $assert_cond = $default_session_value = 0
--let $assert_text = Default session value after FLUSH must remain zero
--source include/assert.inc