Merge lp:~vlad-lesin/percona-server/5.6-query_response_time-rw-MDL into lp:percona-server/5.6
- 5.6-query_response_time-rw-MDL
- Merge into 5.6
Status: | Rejected |
---|---|
Rejected by: | Laurynas Biveinis |
Proposed branch: | lp:~vlad-lesin/percona-server/5.6-query_response_time-rw-MDL |
Merge into: | lp:percona-server/5.6 |
Diff against target: |
1342 lines (+1095/-28) 13 files modified
mysql-test/include/plugin.defs (+1/-1) mysql-test/mysql-test-run.pl (+1/-0) plugin/query_response_time/plugin.cc (+33/-2) plugin/query_response_time/query_response_time.cc (+45/-24) plugin/query_response_time/query_response_time.h (+8/-1) plugin/query_response_time/tests/mtr/basic.result (+12/-0) plugin/query_response_time/tests/mtr/query_response_time-rw-begin.inc (+16/-0) plugin/query_response_time/tests/mtr/query_response_time-rw-end.inc (+10/-0) plugin/query_response_time/tests/mtr/query_response_time-rw.result (+761/-0) plugin/query_response_time/tests/mtr/query_response_time-rw.test (+201/-0) sql/mdl.cc (+3/-0) sql/mdl.h (+2/-0) sql/sql_parse.cc (+2/-0) |
To merge this branch: | bzr merge lp:~vlad-lesin/percona-server/5.6-query_response_time-rw-MDL |
Related bugs: | |
Related blueprints: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Percona core | Pending | ||
Review via email: mp+240797@code.launchpad.net |
Commit message
Description of the change
The two new IS tables QUERY_RESPONSE_
are implemented for 'query_
QUERY_RESPONSE_
QUERY_RESPONSE_
Consider statement as 'write' if restrictive enough
(MDL_SHARED_WRITE and above) MDL lock is acquired.
http://
Unmerged revisions
- 691. By Vlad Lesin
-
Consider statement as 'write' if restrictive enough
(MDL_SHARED_WRITE and above) MDL lock is acquired. - 690. By Vlad Lesin
-
The two new IS tables QUERY_RESPONSE_
TIME_READ and QUERY_RESPONSE_ TIME_WRITE
are implemented for 'query_response_ time' plugin. QUERY_RESPONSE_
TIME_READ table shows RTD for 'read' queries and
QUERY_RESPONSE_TIME_WRITE shows statistics for 'write' queries. - 689. By Vlad Lesin
-
Bug #1352501 fix.
The issue is that semicolons are not escaped in gdbinit.* file, as a result
all options after first semicolon are truncated when server is launched with
gdb.The fix is in escaping semicolons in options string for gdb.
Preview Diff
1 | === modified file 'mysql-test/include/plugin.defs' | |||
2 | --- mysql-test/include/plugin.defs 2014-09-25 06:33:00 +0000 | |||
3 | +++ mysql-test/include/plugin.defs 2014-11-06 00:11:26 +0000 | |||
4 | @@ -49,4 +49,4 @@ | |||
5 | 49 | scalability_metrics plugin/scalability_metrics SCALABILITY_METRICS | 49 | scalability_metrics plugin/scalability_metrics SCALABILITY_METRICS |
6 | 50 | adt_null plugin/audit_null AUDIT_NULL | 50 | adt_null plugin/audit_null AUDIT_NULL |
7 | 51 | audit_log plugin/audit_log AUDIT_LOG audit_log | 51 | audit_log plugin/audit_log AUDIT_LOG audit_log |
9 | 52 | query_response_time plugin/query_response_time PLUGIN_QUERY_RESPONSE_TIME QUERY_RESPONSE_TIME_AUDIT,QUERY_RESPONSE_TIME | 52 | query_response_time plugin/query_response_time PLUGIN_QUERY_RESPONSE_TIME QUERY_RESPONSE_TIME_AUDIT,QUERY_RESPONSE_TIME,QUERY_RESPONSE_TIME_READ,QUERY_RESPONSE_TIME_WRITE |
10 | 53 | 53 | ||
11 | === modified file 'mysql-test/mysql-test-run.pl' | |||
12 | --- mysql-test/mysql-test-run.pl 2014-10-29 15:21:53 +0000 | |||
13 | +++ mysql-test/mysql-test-run.pl 2014-11-06 00:11:26 +0000 | |||
14 | @@ -6055,6 +6055,7 @@ | |||
15 | 6055 | 6055 | ||
16 | 6056 | # Put $args into a single string | 6056 | # Put $args into a single string |
17 | 6057 | my $str= join(" ", @$$args); | 6057 | my $str= join(" ", @$$args); |
18 | 6058 | $str =~ s/\;/\\;/g; | ||
19 | 6058 | my $runline= $input ? "run $str < $input" : "run $str"; | 6059 | my $runline= $input ? "run $str < $input" : "run $str"; |
20 | 6059 | 6060 | ||
21 | 6060 | # write init file for mysqld or client | 6061 | # write init file for mysqld or client |
22 | 6061 | 6062 | ||
23 | === modified file 'plugin/query_response_time/plugin.cc' | |||
24 | --- plugin/query_response_time/plugin.cc 2014-09-25 06:33:00 +0000 | |||
25 | +++ plugin/query_response_time/plugin.cc 2014-11-06 00:11:26 +0000 | |||
26 | @@ -130,6 +130,7 @@ | |||
27 | 130 | if (event_general->event_subclass == MYSQL_AUDIT_GENERAL_STATUS && | 130 | if (event_general->event_subclass == MYSQL_AUDIT_GENERAL_STATUS && |
28 | 131 | opt_query_response_time_stats) | 131 | opt_query_response_time_stats) |
29 | 132 | { | 132 | { |
30 | 133 | QUERY_TYPE query_type= thd->is_write ? WRITE : READ; | ||
31 | 133 | #ifndef DBUG_OFF | 134 | #ifndef DBUG_OFF |
32 | 134 | if (THDVAR(thd, exec_time_debug)) { | 135 | if (THDVAR(thd, exec_time_debug)) { |
33 | 135 | ulonglong t = THDVAR(thd, exec_time_debug); | 136 | ulonglong t = THDVAR(thd, exec_time_debug); |
34 | @@ -139,11 +140,11 @@ | |||
35 | 139 | SQLCOM_SET_OPTION )) { | 140 | SQLCOM_SET_OPTION )) { |
36 | 140 | t = 0; | 141 | t = 0; |
37 | 141 | } | 142 | } |
39 | 142 | query_response_time_collect(t); | 143 | query_response_time_collect(query_type, t); |
40 | 143 | } | 144 | } |
41 | 144 | else | 145 | else |
42 | 145 | #endif | 146 | #endif |
44 | 146 | query_response_time_collect(thd->utime_after_query - thd->utime_after_lock); | 147 | query_response_time_collect(query_type, my_micro_time() - thd->start_utime); |
45 | 147 | } | 148 | } |
46 | 148 | } | 149 | } |
47 | 149 | 150 | ||
48 | @@ -172,6 +173,36 @@ | |||
49 | 172 | 0, | 173 | 0, |
50 | 173 | }, | 174 | }, |
51 | 174 | { | 175 | { |
52 | 176 | MYSQL_INFORMATION_SCHEMA_PLUGIN, | ||
53 | 177 | &query_response_time_info_descriptor, | ||
54 | 178 | "QUERY_RESPONSE_TIME_READ", | ||
55 | 179 | "Percona", | ||
56 | 180 | "Query Response Time Distribution INFORMATION_SCHEMA Plugin", | ||
57 | 181 | PLUGIN_LICENSE_GPL, | ||
58 | 182 | query_response_time_info_init, | ||
59 | 183 | query_response_time_info_deinit, | ||
60 | 184 | 0x0100, | ||
61 | 185 | NULL, | ||
62 | 186 | NULL, | ||
63 | 187 | (void *)"1.0", | ||
64 | 188 | 0, | ||
65 | 189 | }, | ||
66 | 190 | { | ||
67 | 191 | MYSQL_INFORMATION_SCHEMA_PLUGIN, | ||
68 | 192 | &query_response_time_info_descriptor, | ||
69 | 193 | "QUERY_RESPONSE_TIME_WRITE", | ||
70 | 194 | "Percona", | ||
71 | 195 | "Query Response Time Distribution INFORMATION_SCHEMA Plugin", | ||
72 | 196 | PLUGIN_LICENSE_GPL, | ||
73 | 197 | query_response_time_info_init, | ||
74 | 198 | query_response_time_info_deinit, | ||
75 | 199 | 0x0100, | ||
76 | 200 | NULL, | ||
77 | 201 | NULL, | ||
78 | 202 | (void *)"1.0", | ||
79 | 203 | 0, | ||
80 | 204 | }, | ||
81 | 205 | { | ||
82 | 175 | MYSQL_AUDIT_PLUGIN, | 206 | MYSQL_AUDIT_PLUGIN, |
83 | 176 | &query_response_time_audit_descriptor, | 207 | &query_response_time_audit_descriptor, |
84 | 177 | "QUERY_RESPONSE_TIME_AUDIT", | 208 | "QUERY_RESPONSE_TIME_AUDIT", |
85 | 178 | 209 | ||
86 | === modified file 'plugin/query_response_time/query_response_time.cc' | |||
87 | --- plugin/query_response_time/query_response_time.cc 2014-09-25 06:33:00 +0000 | |||
88 | +++ plugin/query_response_time/query_response_time.cc 2014-11-06 00:11:26 +0000 | |||
89 | @@ -170,17 +170,17 @@ | |||
90 | 170 | { | 170 | { |
91 | 171 | my_atomic_rwlock_destroy(&time_collector_lock); | 171 | my_atomic_rwlock_destroy(&time_collector_lock); |
92 | 172 | } | 172 | } |
94 | 173 | uint32 count(uint index) | 173 | uint32 count(QUERY_TYPE type, uint index) |
95 | 174 | { | 174 | { |
96 | 175 | my_atomic_rwlock_rdlock(&time_collector_lock); | 175 | my_atomic_rwlock_rdlock(&time_collector_lock); |
98 | 176 | uint32 result= my_atomic_load32((int32*)&m_count[index]); | 176 | uint32 result= my_atomic_load32((int32*)&m_count[type][index]); |
99 | 177 | my_atomic_rwlock_rdunlock(&time_collector_lock); | 177 | my_atomic_rwlock_rdunlock(&time_collector_lock); |
100 | 178 | return result; | 178 | return result; |
101 | 179 | } | 179 | } |
103 | 180 | uint64 total(uint index) | 180 | uint64 total(QUERY_TYPE type, uint index) |
104 | 181 | { | 181 | { |
105 | 182 | my_atomic_rwlock_rdlock(&time_collector_lock); | 182 | my_atomic_rwlock_rdlock(&time_collector_lock); |
107 | 183 | uint64 result= my_atomic_load64((int64*)&m_total[index]); | 183 | uint64 result= my_atomic_load64((int64*)&m_total[type][index]); |
108 | 184 | my_atomic_rwlock_rdunlock(&time_collector_lock); | 184 | my_atomic_rwlock_rdunlock(&time_collector_lock); |
109 | 185 | return result; | 185 | return result; |
110 | 186 | } | 186 | } |
111 | @@ -192,7 +192,7 @@ | |||
112 | 192 | memset((void*)&m_total,0,sizeof(m_total)); | 192 | memset((void*)&m_total,0,sizeof(m_total)); |
113 | 193 | my_atomic_rwlock_wrunlock(&time_collector_lock); | 193 | my_atomic_rwlock_wrunlock(&time_collector_lock); |
114 | 194 | } | 194 | } |
116 | 195 | void collect(uint64 time) | 195 | void collect(QUERY_TYPE type, uint64 time) |
117 | 196 | { | 196 | { |
118 | 197 | int i= 0; | 197 | int i= 0; |
119 | 198 | for(int count= m_utility->bound_count(); count > i; ++i) | 198 | for(int count= m_utility->bound_count(); count > i; ++i) |
120 | @@ -200,8 +200,10 @@ | |||
121 | 200 | if(m_utility->bound(i) > time) | 200 | if(m_utility->bound(i) > time) |
122 | 201 | { | 201 | { |
123 | 202 | my_atomic_rwlock_wrlock(&time_collector_lock); | 202 | my_atomic_rwlock_wrlock(&time_collector_lock); |
126 | 203 | my_atomic_add32((int32*)(&m_count[i]), 1); | 203 | my_atomic_add32((int32*)(&m_count[0][i]), 1); |
127 | 204 | my_atomic_add64((int64*)(&m_total[i]), time); | 204 | my_atomic_add64((int64*)(&m_total[0][i]), time); |
128 | 205 | my_atomic_add32((int32*)(&m_count[type][i]), 1); | ||
129 | 206 | my_atomic_add64((int64*)(&m_total[type][i]), time); | ||
130 | 205 | my_atomic_rwlock_wrunlock(&time_collector_lock); | 207 | my_atomic_rwlock_wrunlock(&time_collector_lock); |
131 | 206 | break; | 208 | break; |
132 | 207 | } | 209 | } |
133 | @@ -209,12 +211,18 @@ | |||
134 | 209 | } | 211 | } |
135 | 210 | private: | 212 | private: |
136 | 211 | utility* m_utility; | 213 | utility* m_utility; |
140 | 212 | /* The lock for atomic operations on m_count and m_total. Only actually | 214 | /* The lock for atomic operations on |
141 | 213 | used on architectures that do not have atomic implementation of atomic | 215 | m_count, m_total, m_r_count, m_r_total, m_w_count, m_w_total. |
142 | 214 | operations. */ | 216 | Only actually used on architectures that do not have atomic |
143 | 217 | implementation of atomic operations. */ | ||
144 | 215 | my_atomic_rwlock_t time_collector_lock; | 218 | my_atomic_rwlock_t time_collector_lock; |
147 | 216 | uint32 m_count[OVERALL_POWER_COUNT + 1]; | 219 | /* |
148 | 217 | uint64 m_total[OVERALL_POWER_COUNT + 1]; | 220 | The fisrt row is for overall statistics, |
149 | 221 | the second row is for 'read' queries, | ||
150 | 222 | the third row is for 'write' queries. | ||
151 | 223 | */ | ||
152 | 224 | uint32 m_count[3][OVERALL_POWER_COUNT + 1]; | ||
153 | 225 | uint64 m_total[3][OVERALL_POWER_COUNT + 1]; | ||
154 | 218 | }; | 226 | }; |
155 | 219 | 227 | ||
156 | 220 | class collector | 228 | class collector |
157 | @@ -231,7 +239,9 @@ | |||
158 | 231 | m_utility.setup(opt_query_response_time_range_base); | 239 | m_utility.setup(opt_query_response_time_range_base); |
159 | 232 | m_time.flush(); | 240 | m_time.flush(); |
160 | 233 | } | 241 | } |
162 | 234 | int fill(THD* thd, TABLE_LIST *tables, COND *cond) | 242 | int fill(QUERY_TYPE type, |
163 | 243 | THD* thd, | ||
164 | 244 | TABLE_LIST *tables, COND *cond) | ||
165 | 235 | { | 245 | { |
166 | 236 | DBUG_ENTER("fill_schema_query_response_time"); | 246 | DBUG_ENTER("fill_schema_query_response_time"); |
167 | 237 | TABLE *table= static_cast<TABLE*>(tables->table); | 247 | TABLE *table= static_cast<TABLE*>(tables->table); |
168 | @@ -250,10 +260,10 @@ | |||
169 | 250 | else | 260 | else |
170 | 251 | { | 261 | { |
171 | 252 | print_time(time, sizeof(time), TIME_STRING_FORMAT, this->bound(i)); | 262 | print_time(time, sizeof(time), TIME_STRING_FORMAT, this->bound(i)); |
173 | 253 | print_time(total, sizeof(total), TOTAL_STRING_FORMAT, this->total(i)); | 263 | print_time(total, sizeof(total), TOTAL_STRING_FORMAT, this->total(type, i)); |
174 | 254 | } | 264 | } |
175 | 255 | fields[0]->store(time,strlen(time),system_charset_info); | 265 | fields[0]->store(time,strlen(time),system_charset_info); |
177 | 256 | fields[1]->store(this->count(i)); | 266 | fields[1]->store(this->count(type, i)); |
178 | 257 | fields[2]->store(total,strlen(total),system_charset_info); | 267 | fields[2]->store(total,strlen(total),system_charset_info); |
179 | 258 | if (schema_table_store_record(thd, table)) | 268 | if (schema_table_store_record(thd, table)) |
180 | 259 | { | 269 | { |
181 | @@ -262,9 +272,9 @@ | |||
182 | 262 | } | 272 | } |
183 | 263 | DBUG_RETURN(0); | 273 | DBUG_RETURN(0); |
184 | 264 | } | 274 | } |
186 | 265 | void collect(ulonglong time) | 275 | void collect(QUERY_TYPE type, ulonglong time) |
187 | 266 | { | 276 | { |
189 | 267 | m_time.collect(time); | 277 | m_time.collect(type, time); |
190 | 268 | } | 278 | } |
191 | 269 | uint bound_count() const | 279 | uint bound_count() const |
192 | 270 | { | 280 | { |
193 | @@ -274,13 +284,13 @@ | |||
194 | 274 | { | 284 | { |
195 | 275 | return m_utility.bound(index); | 285 | return m_utility.bound(index); |
196 | 276 | } | 286 | } |
198 | 277 | ulonglong count(uint index) | 287 | ulonglong count(QUERY_TYPE type, uint index) |
199 | 278 | { | 288 | { |
201 | 279 | return m_time.count(index); | 289 | return m_time.count(type, index); |
202 | 280 | } | 290 | } |
204 | 281 | ulonglong total(uint index) | 291 | ulonglong total(QUERY_TYPE type, uint index) |
205 | 282 | { | 292 | { |
207 | 283 | return m_time.total(index); | 293 | return m_time.total(type, index); |
208 | 284 | } | 294 | } |
209 | 285 | private: | 295 | private: |
210 | 286 | utility m_utility; | 296 | utility m_utility; |
211 | @@ -304,12 +314,23 @@ | |||
212 | 304 | { | 314 | { |
213 | 305 | query_response_time::g_collector.flush(); | 315 | query_response_time::g_collector.flush(); |
214 | 306 | } | 316 | } |
216 | 307 | void query_response_time_collect(ulonglong query_time) | 317 | |
217 | 318 | void query_response_time_collect(QUERY_TYPE type, | ||
218 | 319 | ulonglong query_time) | ||
219 | 308 | { | 320 | { |
221 | 309 | query_response_time::g_collector.collect(query_time); | 321 | query_response_time::g_collector.collect(type, query_time); |
222 | 310 | } | 322 | } |
223 | 311 | 323 | ||
224 | 312 | int query_response_time_fill(THD* thd, TABLE_LIST *tables, COND *cond) | 324 | int query_response_time_fill(THD* thd, TABLE_LIST *tables, COND *cond) |
225 | 313 | { | 325 | { |
227 | 314 | return query_response_time::g_collector.fill(thd,tables,cond); | 326 | QUERY_TYPE query_type = ANY; |
228 | 327 | if (!strncmp(tables->table->alias, | ||
229 | 328 | "QUERY_RESPONSE_TIME_READ", | ||
230 | 329 | sizeof("QUERY_RESPONSE_TIME_READ") - 1)) | ||
231 | 330 | query_type = READ; | ||
232 | 331 | else if (!strncmp(tables->table->alias, | ||
233 | 332 | "QUERY_RESPONSE_TIME_WRITE", | ||
234 | 333 | sizeof("QUERY_RESPONSE_TIME_WRITE") - 1)) | ||
235 | 334 | query_type = WRITE; | ||
236 | 335 | return query_response_time::g_collector.fill(query_type, thd, tables, cond); | ||
237 | 315 | } | 336 | } |
238 | 316 | 337 | ||
239 | === modified file 'plugin/query_response_time/query_response_time.h' | |||
240 | --- plugin/query_response_time/query_response_time.h 2014-09-25 06:33:00 +0000 | |||
241 | +++ plugin/query_response_time/query_response_time.h 2014-11-06 00:11:26 +0000 | |||
242 | @@ -66,6 +66,13 @@ | |||
243 | 66 | MY_MAX( (QRT_TOTAL_STRING_POSITIVE_POWER_LENGTH + 1 /* '.' */ + 6 /*QRT_TOTAL_STRING_NEGATIVE_POWER_LENGTH*/), \ | 66 | MY_MAX( (QRT_TOTAL_STRING_POSITIVE_POWER_LENGTH + 1 /* '.' */ + 6 /*QRT_TOTAL_STRING_NEGATIVE_POWER_LENGTH*/), \ |
244 | 67 | (sizeof(QRT_TIME_OVERFLOW) - 1) ) | 67 | (sizeof(QRT_TIME_OVERFLOW) - 1) ) |
245 | 68 | 68 | ||
246 | 69 | enum QUERY_TYPE | ||
247 | 70 | { | ||
248 | 71 | ANY= 0, | ||
249 | 72 | READ= 1, | ||
250 | 73 | WRITE= 2 | ||
251 | 74 | }; | ||
252 | 75 | |||
253 | 69 | extern ST_SCHEMA_TABLE query_response_time_table; | 76 | extern ST_SCHEMA_TABLE query_response_time_table; |
254 | 70 | 77 | ||
255 | 71 | typedef class Item COND; | 78 | typedef class Item COND; |
256 | @@ -73,7 +80,7 @@ | |||
257 | 73 | extern void query_response_time_init (); | 80 | extern void query_response_time_init (); |
258 | 74 | extern void query_response_time_free (); | 81 | extern void query_response_time_free (); |
259 | 75 | extern void query_response_time_flush (); | 82 | extern void query_response_time_flush (); |
261 | 76 | extern void query_response_time_collect(ulonglong query_time); | 83 | extern void query_response_time_collect(QUERY_TYPE type, ulonglong query_time); |
262 | 77 | extern int query_response_time_fill (THD* thd, TABLE_LIST *tables, COND *cond); | 84 | extern int query_response_time_fill (THD* thd, TABLE_LIST *tables, COND *cond); |
263 | 78 | 85 | ||
264 | 79 | extern ulong opt_query_response_time_range_base; | 86 | extern ulong opt_query_response_time_range_base; |
265 | 80 | 87 | ||
266 | === modified file 'plugin/query_response_time/tests/mtr/basic.result' | |||
267 | --- plugin/query_response_time/tests/mtr/basic.result 2014-09-25 06:33:00 +0000 | |||
268 | +++ plugin/query_response_time/tests/mtr/basic.result 2014-11-06 00:11:26 +0000 | |||
269 | @@ -23,6 +23,18 @@ | |||
270 | 23 | PLUGIN_AUTHOR Percona and Sergey Vojtovich | 23 | PLUGIN_AUTHOR Percona and Sergey Vojtovich |
271 | 24 | PLUGIN_DESCRIPTION Query Response Time Distribution INFORMATION_SCHEMA Plugin | 24 | PLUGIN_DESCRIPTION Query Response Time Distribution INFORMATION_SCHEMA Plugin |
272 | 25 | PLUGIN_LICENSE GPL | 25 | PLUGIN_LICENSE GPL |
273 | 26 | PLUGIN_NAME QUERY_RESPONSE_TIME_READ | ||
274 | 27 | PLUGIN_VERSION 1.0 | ||
275 | 28 | PLUGIN_TYPE INFORMATION SCHEMA | ||
276 | 29 | PLUGIN_AUTHOR Percona | ||
277 | 30 | PLUGIN_DESCRIPTION Query Response Time Distribution INFORMATION_SCHEMA Plugin | ||
278 | 31 | PLUGIN_LICENSE GPL | ||
279 | 32 | PLUGIN_NAME QUERY_RESPONSE_TIME_WRITE | ||
280 | 33 | PLUGIN_VERSION 1.0 | ||
281 | 34 | PLUGIN_TYPE INFORMATION SCHEMA | ||
282 | 35 | PLUGIN_AUTHOR Percona | ||
283 | 36 | PLUGIN_DESCRIPTION Query Response Time Distribution INFORMATION_SCHEMA Plugin | ||
284 | 37 | PLUGIN_LICENSE GPL | ||
285 | 26 | SET GLOBAL QUERY_RESPONSE_TIME_STATS=1; | 38 | SET GLOBAL QUERY_RESPONSE_TIME_STATS=1; |
286 | 27 | SELECT 1; | 39 | SELECT 1; |
287 | 28 | 1 | 40 | 1 |
288 | 29 | 41 | ||
289 | === added file 'plugin/query_response_time/tests/mtr/query_response_time-rw-begin.inc' | |||
290 | --- plugin/query_response_time/tests/mtr/query_response_time-rw-begin.inc 1970-01-01 00:00:00 +0000 | |||
291 | +++ plugin/query_response_time/tests/mtr/query_response_time-rw-begin.inc 2014-11-06 00:11:26 +0000 | |||
292 | @@ -0,0 +1,16 @@ | |||
293 | 1 | --disable_query_log | ||
294 | 2 | --disable_result_log | ||
295 | 3 | SET GLOBAL QUERY_RESPONSE_TIME_STATS = 0; | ||
296 | 4 | SET GLOBAL query_response_time_flush = 1; | ||
297 | 5 | SET SESSION query_response_time_exec_time_debug = 500000; | ||
298 | 6 | --enable_query_log | ||
299 | 7 | --enable_result_log | ||
300 | 8 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
301 | 9 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
302 | 10 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
303 | 11 | --disable_query_log | ||
304 | 12 | --disable_result_log | ||
305 | 13 | SET GLOBAL QUERY_RESPONSE_TIME_STATS = 1; | ||
306 | 14 | --enable_query_log | ||
307 | 15 | --enable_result_log | ||
308 | 16 | --echo ------------------Test body begin-------------------- | ||
309 | 0 | 17 | ||
310 | === added file 'plugin/query_response_time/tests/mtr/query_response_time-rw-end.inc' | |||
311 | --- plugin/query_response_time/tests/mtr/query_response_time-rw-end.inc 1970-01-01 00:00:00 +0000 | |||
312 | +++ plugin/query_response_time/tests/mtr/query_response_time-rw-end.inc 2014-11-06 00:11:26 +0000 | |||
313 | @@ -0,0 +1,10 @@ | |||
314 | 1 | --echo ------------------Test body end---------------------- | ||
315 | 2 | --disable_query_log | ||
316 | 3 | --disable_result_log | ||
317 | 4 | SET GLOBAL QUERY_RESPONSE_TIME_STATS = 0; | ||
318 | 5 | SET SESSION query_response_time_exec_time_debug = default; | ||
319 | 6 | --enable_query_log | ||
320 | 7 | --enable_result_log | ||
321 | 8 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
322 | 9 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
323 | 10 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
324 | 0 | 11 | ||
325 | === added file 'plugin/query_response_time/tests/mtr/query_response_time-rw.result' | |||
326 | --- plugin/query_response_time/tests/mtr/query_response_time-rw.result 1970-01-01 00:00:00 +0000 | |||
327 | +++ plugin/query_response_time/tests/mtr/query_response_time-rw.result 2014-11-06 00:11:26 +0000 | |||
328 | @@ -0,0 +1,761 @@ | |||
329 | 1 | CREATE FUNCTION DML_FUNC() | ||
330 | 2 | RETURNS INT | ||
331 | 3 | BEGIN | ||
332 | 4 | INSERT INTO t1 (b) VALUES (1), (2); | ||
333 | 5 | UPDATE t1 SET b = 1; | ||
334 | 6 | RETURN 1; | ||
335 | 7 | END| | ||
336 | 8 | CREATE PROCEDURE NESTED_PROC() | ||
337 | 9 | BEGIN | ||
338 | 10 | SELECT DML_FUNC(); | ||
339 | 11 | END| | ||
340 | 12 | SET default_storage_engine=InnoDB; | ||
341 | 13 | |||
342 | 14 | ============================ | ||
343 | 15 | = Test for simple DML and DDL | ||
344 | 16 | ============================ | ||
345 | 17 | |||
346 | 18 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
347 | 19 | TIME COUNT TOTAL | ||
348 | 20 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
349 | 21 | TIME COUNT TOTAL | ||
350 | 22 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
351 | 23 | TIME COUNT TOTAL | ||
352 | 24 | ------------------Test body begin-------------------- | ||
353 | 25 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
354 | 26 | b INT UNSIGNED NOT NULL DEFAULT 0); | ||
355 | 27 | INSERT INTO t1 (b) VALUES (1), (2); | ||
356 | 28 | UPDATE t1 SET b = 1; | ||
357 | 29 | SELECT * FROM t1; | ||
358 | 30 | a b | ||
359 | 31 | 1 1 | ||
360 | 32 | 2 1 | ||
361 | 33 | DELETE FROM t1; | ||
362 | 34 | ALTER TABLE t1 ADD COLUMN (c INT); | ||
363 | 35 | DROP TABLE t1; | ||
364 | 36 | ------------------Test body end---------------------- | ||
365 | 37 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
366 | 38 | TIME COUNT TOTAL | ||
367 | 39 | 0.000001 1 0.000000 | ||
368 | 40 | 1.000000 7 3.500000 | ||
369 | 41 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
370 | 42 | TIME COUNT TOTAL | ||
371 | 43 | 0.000001 1 0.000000 | ||
372 | 44 | 1.000000 1 0.500000 | ||
373 | 45 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
374 | 46 | TIME COUNT TOTAL | ||
375 | 47 | 1.000000 6 3.000000 | ||
376 | 48 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
377 | 49 | b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
378 | 50 | |||
379 | 51 | ============================ | ||
380 | 52 | = Test for SELECT+DML | ||
381 | 53 | ============================ | ||
382 | 54 | |||
383 | 55 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
384 | 56 | TIME COUNT TOTAL | ||
385 | 57 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
386 | 58 | TIME COUNT TOTAL | ||
387 | 59 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
388 | 60 | TIME COUNT TOTAL | ||
389 | 61 | ------------------Test body begin-------------------- | ||
390 | 62 | SELECT DML_FUNC(); | ||
391 | 63 | DML_FUNC() | ||
392 | 64 | 1 | ||
393 | 65 | ------------------Test body end---------------------- | ||
394 | 66 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
395 | 67 | TIME COUNT TOTAL | ||
396 | 68 | 0.000001 1 0.000000 | ||
397 | 69 | 1.000000 3 1.500000 | ||
398 | 70 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
399 | 71 | TIME COUNT TOTAL | ||
400 | 72 | 0.000001 1 0.000000 | ||
401 | 73 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
402 | 74 | TIME COUNT TOTAL | ||
403 | 75 | 1.000000 3 1.500000 | ||
404 | 76 | |||
405 | 77 | ============================ | ||
406 | 78 | = Test for nested calls | ||
407 | 79 | ============================ | ||
408 | 80 | |||
409 | 81 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
410 | 82 | TIME COUNT TOTAL | ||
411 | 83 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
412 | 84 | TIME COUNT TOTAL | ||
413 | 85 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
414 | 86 | TIME COUNT TOTAL | ||
415 | 87 | ------------------Test body begin-------------------- | ||
416 | 88 | CALL NESTED_PROC(); | ||
417 | 89 | DML_FUNC() | ||
418 | 90 | 1 | ||
419 | 91 | ------------------Test body end---------------------- | ||
420 | 92 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
421 | 93 | TIME COUNT TOTAL | ||
422 | 94 | 0.000001 1 0.000000 | ||
423 | 95 | 1.000000 4 2.000000 | ||
424 | 96 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
425 | 97 | TIME COUNT TOTAL | ||
426 | 98 | 0.000001 1 0.000000 | ||
427 | 99 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
428 | 100 | TIME COUNT TOTAL | ||
429 | 101 | 1.000000 4 2.000000 | ||
430 | 102 | |||
431 | 103 | ============================ | ||
432 | 104 | = Test for 'PREPARE' | ||
433 | 105 | ============================ | ||
434 | 106 | |||
435 | 107 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
436 | 108 | TIME COUNT TOTAL | ||
437 | 109 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
438 | 110 | TIME COUNT TOTAL | ||
439 | 111 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
440 | 112 | TIME COUNT TOTAL | ||
441 | 113 | ------------------Test body begin-------------------- | ||
442 | 114 | PREPARE rw_stmt FROM 'DELETE FROM t1'; | ||
443 | 115 | PREPARE ro_stmt FROM 'SELECT * FROM t1'; | ||
444 | 116 | PREPARE select_dml_stmt FROM 'SELECT DML_FUNC()'; | ||
445 | 117 | PREPARE nested_call_stmt FROM 'CALL NESTED_PROC()'; | ||
446 | 118 | ------------------Test body end---------------------- | ||
447 | 119 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
448 | 120 | TIME COUNT TOTAL | ||
449 | 121 | 0.000001 1 0.000000 | ||
450 | 122 | 1.000000 4 2.000000 | ||
451 | 123 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
452 | 124 | TIME COUNT TOTAL | ||
453 | 125 | 0.000001 1 0.000000 | ||
454 | 126 | 1.000000 4 2.000000 | ||
455 | 127 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
456 | 128 | TIME COUNT TOTAL | ||
457 | 129 | |||
458 | 130 | ============================ | ||
459 | 131 | = Test for 'EXECUTE' | ||
460 | 132 | ============================ | ||
461 | 133 | |||
462 | 134 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
463 | 135 | TIME COUNT TOTAL | ||
464 | 136 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
465 | 137 | TIME COUNT TOTAL | ||
466 | 138 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
467 | 139 | TIME COUNT TOTAL | ||
468 | 140 | ------------------Test body begin-------------------- | ||
469 | 141 | EXECUTE rw_stmt; | ||
470 | 142 | EXECUTE ro_stmt; | ||
471 | 143 | a b | ||
472 | 144 | EXECUTE select_dml_stmt; | ||
473 | 145 | DML_FUNC() | ||
474 | 146 | 1 | ||
475 | 147 | EXECUTE nested_call_stmt; | ||
476 | 148 | DML_FUNC() | ||
477 | 149 | 1 | ||
478 | 150 | ------------------Test body end---------------------- | ||
479 | 151 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
480 | 152 | TIME COUNT TOTAL | ||
481 | 153 | 0.000001 1 0.000000 | ||
482 | 154 | 1.000000 9 4.500000 | ||
483 | 155 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
484 | 156 | TIME COUNT TOTAL | ||
485 | 157 | 0.000001 1 0.000000 | ||
486 | 158 | 1.000000 1 0.500000 | ||
487 | 159 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
488 | 160 | TIME COUNT TOTAL | ||
489 | 161 | 1.000000 8 4.000000 | ||
490 | 162 | |||
491 | 163 | ============================ | ||
492 | 164 | = Test for 'DEALLOCATE PREPARE' | ||
493 | 165 | ============================ | ||
494 | 166 | |||
495 | 167 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
496 | 168 | TIME COUNT TOTAL | ||
497 | 169 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
498 | 170 | TIME COUNT TOTAL | ||
499 | 171 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
500 | 172 | TIME COUNT TOTAL | ||
501 | 173 | ------------------Test body begin-------------------- | ||
502 | 174 | DEALLOCATE PREPARE rw_stmt; | ||
503 | 175 | DEALLOCATE PREPARE ro_stmt; | ||
504 | 176 | DEALLOCATE PREPARE select_dml_stmt; | ||
505 | 177 | DEALLOCATE PREPARE nested_call_stmt; | ||
506 | 178 | ------------------Test body end---------------------- | ||
507 | 179 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
508 | 180 | TIME COUNT TOTAL | ||
509 | 181 | 0.000001 1 0.000000 | ||
510 | 182 | 1.000000 4 2.000000 | ||
511 | 183 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
512 | 184 | TIME COUNT TOTAL | ||
513 | 185 | 0.000001 1 0.000000 | ||
514 | 186 | 1.000000 4 2.000000 | ||
515 | 187 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
516 | 188 | TIME COUNT TOTAL | ||
517 | 189 | |||
518 | 190 | ============================ | ||
519 | 191 | = Test for transactions | ||
520 | 192 | ============================ | ||
521 | 193 | |||
522 | 194 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
523 | 195 | TIME COUNT TOTAL | ||
524 | 196 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
525 | 197 | TIME COUNT TOTAL | ||
526 | 198 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
527 | 199 | TIME COUNT TOTAL | ||
528 | 200 | ------------------Test body begin-------------------- | ||
529 | 201 | BEGIN; | ||
530 | 202 | SELECT * FROM t1; | ||
531 | 203 | a b | ||
532 | 204 | 5 1 | ||
533 | 205 | 6 1 | ||
534 | 206 | 7 1 | ||
535 | 207 | 8 1 | ||
536 | 208 | COMMIT; | ||
537 | 209 | ------------------Test body end---------------------- | ||
538 | 210 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
539 | 211 | TIME COUNT TOTAL | ||
540 | 212 | 0.000001 1 0.000000 | ||
541 | 213 | 1.000000 3 1.500000 | ||
542 | 214 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
543 | 215 | TIME COUNT TOTAL | ||
544 | 216 | 0.000001 1 0.000000 | ||
545 | 217 | 1.000000 3 1.500000 | ||
546 | 218 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
547 | 219 | TIME COUNT TOTAL | ||
548 | 220 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
549 | 221 | TIME COUNT TOTAL | ||
550 | 222 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
551 | 223 | TIME COUNT TOTAL | ||
552 | 224 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
553 | 225 | TIME COUNT TOTAL | ||
554 | 226 | ------------------Test body begin-------------------- | ||
555 | 227 | BEGIN; | ||
556 | 228 | INSERT INTO t1 (b) VALUES (1), (2); | ||
557 | 229 | UPDATE t1 SET b = 1; | ||
558 | 230 | SELECT * FROM t1; | ||
559 | 231 | a b | ||
560 | 232 | 5 1 | ||
561 | 233 | 6 1 | ||
562 | 234 | 7 1 | ||
563 | 235 | 8 1 | ||
564 | 236 | 9 1 | ||
565 | 237 | 10 1 | ||
566 | 238 | DELETE FROM t1; | ||
567 | 239 | COMMIT; | ||
568 | 240 | ------------------Test body end---------------------- | ||
569 | 241 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
570 | 242 | TIME COUNT TOTAL | ||
571 | 243 | 0.000001 1 0.000000 | ||
572 | 244 | 1.000000 6 3.000000 | ||
573 | 245 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
574 | 246 | TIME COUNT TOTAL | ||
575 | 247 | 0.000001 1 0.000000 | ||
576 | 248 | 1.000000 3 1.500000 | ||
577 | 249 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
578 | 250 | TIME COUNT TOTAL | ||
579 | 251 | 1.000000 3 1.500000 | ||
580 | 252 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
581 | 253 | TIME COUNT TOTAL | ||
582 | 254 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
583 | 255 | TIME COUNT TOTAL | ||
584 | 256 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
585 | 257 | TIME COUNT TOTAL | ||
586 | 258 | ------------------Test body begin-------------------- | ||
587 | 259 | BEGIN; | ||
588 | 260 | SELECT DML_FUNC(); | ||
589 | 261 | DML_FUNC() | ||
590 | 262 | 1 | ||
591 | 263 | CALL NESTED_PROC(); | ||
592 | 264 | DML_FUNC() | ||
593 | 265 | 1 | ||
594 | 266 | COMMIT; | ||
595 | 267 | ------------------Test body end---------------------- | ||
596 | 268 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
597 | 269 | TIME COUNT TOTAL | ||
598 | 270 | 0.000001 1 0.000000 | ||
599 | 271 | 1.000000 9 4.500000 | ||
600 | 272 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
601 | 273 | TIME COUNT TOTAL | ||
602 | 274 | 0.000001 1 0.000000 | ||
603 | 275 | 1.000000 2 1.000000 | ||
604 | 276 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
605 | 277 | TIME COUNT TOTAL | ||
606 | 278 | 1.000000 7 3.500000 | ||
607 | 279 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
608 | 280 | TIME COUNT TOTAL | ||
609 | 281 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
610 | 282 | TIME COUNT TOTAL | ||
611 | 283 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
612 | 284 | TIME COUNT TOTAL | ||
613 | 285 | ------------------Test body begin-------------------- | ||
614 | 286 | BEGIN; | ||
615 | 287 | INSERT INTO t1 (b) VALUES (1), (2); | ||
616 | 288 | UPDATE t1 SET b = 1; | ||
617 | 289 | ROLLBACK; | ||
618 | 290 | ------------------Test body end---------------------- | ||
619 | 291 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
620 | 292 | TIME COUNT TOTAL | ||
621 | 293 | 0.000001 1 0.000000 | ||
622 | 294 | 1.000000 4 2.000000 | ||
623 | 295 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
624 | 296 | TIME COUNT TOTAL | ||
625 | 297 | 0.000001 1 0.000000 | ||
626 | 298 | 1.000000 2 1.000000 | ||
627 | 299 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
628 | 300 | TIME COUNT TOTAL | ||
629 | 301 | 1.000000 2 1.000000 | ||
630 | 302 | |||
631 | 303 | ============================ | ||
632 | 304 | = Test for implicit commit | ||
633 | 305 | ============================ | ||
634 | 306 | |||
635 | 307 | SET autocommit = 0; | ||
636 | 308 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
637 | 309 | TIME COUNT TOTAL | ||
638 | 310 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
639 | 311 | TIME COUNT TOTAL | ||
640 | 312 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
641 | 313 | TIME COUNT TOTAL | ||
642 | 314 | ------------------Test body begin-------------------- | ||
643 | 315 | INSERT INTO t1 (b) VALUES (1), (2); | ||
644 | 316 | CREATE INDEX ab ON t1 (a, b); | ||
645 | 317 | ------------------Test body end---------------------- | ||
646 | 318 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
647 | 319 | TIME COUNT TOTAL | ||
648 | 320 | 0.000001 1 0.000000 | ||
649 | 321 | 1.000000 2 1.000000 | ||
650 | 322 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
651 | 323 | TIME COUNT TOTAL | ||
652 | 324 | 0.000001 1 0.000000 | ||
653 | 325 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
654 | 326 | TIME COUNT TOTAL | ||
655 | 327 | 1.000000 2 1.000000 | ||
656 | 328 | SET autocommit = 1; | ||
657 | 329 | |||
658 | 330 | ============================ | ||
659 | 331 | = Test for trigger | ||
660 | 332 | ============================ | ||
661 | 333 | |||
662 | 334 | CREATE TABLE t2 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
663 | 335 | b INT UNSIGNED NOT NULL DEFAULT 0); | ||
664 | 336 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
665 | 337 | TIME COUNT TOTAL | ||
666 | 338 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
667 | 339 | TIME COUNT TOTAL | ||
668 | 340 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
669 | 341 | TIME COUNT TOTAL | ||
670 | 342 | ------------------Test body begin-------------------- | ||
671 | 343 | CREATE TRIGGER test_trigger BEFORE INSERT ON t1 | ||
672 | 344 | FOR EACH ROW | ||
673 | 345 | BEGIN | ||
674 | 346 | INSERT INTO t2 SET b = NEW.b; | ||
675 | 347 | INSERT INTO t2 SET b = NEW.b; | ||
676 | 348 | END; | ||
677 | 349 | | | ||
678 | 350 | ------------------Test body end---------------------- | ||
679 | 351 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
680 | 352 | TIME COUNT TOTAL | ||
681 | 353 | 0.000001 1 0.000000 | ||
682 | 354 | 1.000000 1 0.500000 | ||
683 | 355 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
684 | 356 | TIME COUNT TOTAL | ||
685 | 357 | 0.000001 1 0.000000 | ||
686 | 358 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
687 | 359 | TIME COUNT TOTAL | ||
688 | 360 | 1.000000 1 0.500000 | ||
689 | 361 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
690 | 362 | TIME COUNT TOTAL | ||
691 | 363 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
692 | 364 | TIME COUNT TOTAL | ||
693 | 365 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
694 | 366 | TIME COUNT TOTAL | ||
695 | 367 | ------------------Test body begin-------------------- | ||
696 | 368 | INSERT INTO t1 (b) VALUES (1), (2); | ||
697 | 369 | ------------------Test body end---------------------- | ||
698 | 370 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
699 | 371 | TIME COUNT TOTAL | ||
700 | 372 | 0.000001 1 0.000000 | ||
701 | 373 | 1.000000 5 2.500000 | ||
702 | 374 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
703 | 375 | TIME COUNT TOTAL | ||
704 | 376 | 0.000001 1 0.000000 | ||
705 | 377 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
706 | 378 | TIME COUNT TOTAL | ||
707 | 379 | 1.000000 5 2.500000 | ||
708 | 380 | DROP TABLE t1; | ||
709 | 381 | DROP TABLE t2; | ||
710 | 382 | SET default_storage_engine=InnoDB; | ||
711 | 383 | SET default_storage_engine=MyISAM; | ||
712 | 384 | |||
713 | 385 | ========================== | ||
714 | 386 | = Test for Innodb engine | ||
715 | 387 | ========================== | ||
716 | 388 | |||
717 | 389 | ============================ | ||
718 | 390 | = Test for simple DML and DDL | ||
719 | 391 | ============================ | ||
720 | 392 | |||
721 | 393 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
722 | 394 | TIME COUNT TOTAL | ||
723 | 395 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
724 | 396 | TIME COUNT TOTAL | ||
725 | 397 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
726 | 398 | TIME COUNT TOTAL | ||
727 | 399 | ------------------Test body begin-------------------- | ||
728 | 400 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
729 | 401 | b INT UNSIGNED NOT NULL DEFAULT 0); | ||
730 | 402 | INSERT INTO t1 (b) VALUES (1), (2); | ||
731 | 403 | UPDATE t1 SET b = 1; | ||
732 | 404 | SELECT * FROM t1; | ||
733 | 405 | a b | ||
734 | 406 | 1 1 | ||
735 | 407 | 2 1 | ||
736 | 408 | DELETE FROM t1; | ||
737 | 409 | ALTER TABLE t1 ADD COLUMN (c INT); | ||
738 | 410 | DROP TABLE t1; | ||
739 | 411 | ------------------Test body end---------------------- | ||
740 | 412 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
741 | 413 | TIME COUNT TOTAL | ||
742 | 414 | 0.000001 1 0.000000 | ||
743 | 415 | 1.000000 7 3.500000 | ||
744 | 416 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
745 | 417 | TIME COUNT TOTAL | ||
746 | 418 | 0.000001 1 0.000000 | ||
747 | 419 | 1.000000 1 0.500000 | ||
748 | 420 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
749 | 421 | TIME COUNT TOTAL | ||
750 | 422 | 1.000000 6 3.000000 | ||
751 | 423 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
752 | 424 | b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
753 | 425 | |||
754 | 426 | ============================ | ||
755 | 427 | = Test for SELECT+DML | ||
756 | 428 | ============================ | ||
757 | 429 | |||
758 | 430 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
759 | 431 | TIME COUNT TOTAL | ||
760 | 432 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
761 | 433 | TIME COUNT TOTAL | ||
762 | 434 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
763 | 435 | TIME COUNT TOTAL | ||
764 | 436 | ------------------Test body begin-------------------- | ||
765 | 437 | SELECT DML_FUNC(); | ||
766 | 438 | DML_FUNC() | ||
767 | 439 | 1 | ||
768 | 440 | ------------------Test body end---------------------- | ||
769 | 441 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
770 | 442 | TIME COUNT TOTAL | ||
771 | 443 | 0.000001 1 0.000000 | ||
772 | 444 | 1.000000 3 1.500000 | ||
773 | 445 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
774 | 446 | TIME COUNT TOTAL | ||
775 | 447 | 0.000001 1 0.000000 | ||
776 | 448 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
777 | 449 | TIME COUNT TOTAL | ||
778 | 450 | 1.000000 3 1.500000 | ||
779 | 451 | |||
780 | 452 | ============================ | ||
781 | 453 | = Test for nested calls | ||
782 | 454 | ============================ | ||
783 | 455 | |||
784 | 456 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
785 | 457 | TIME COUNT TOTAL | ||
786 | 458 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
787 | 459 | TIME COUNT TOTAL | ||
788 | 460 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
789 | 461 | TIME COUNT TOTAL | ||
790 | 462 | ------------------Test body begin-------------------- | ||
791 | 463 | CALL NESTED_PROC(); | ||
792 | 464 | DML_FUNC() | ||
793 | 465 | 1 | ||
794 | 466 | ------------------Test body end---------------------- | ||
795 | 467 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
796 | 468 | TIME COUNT TOTAL | ||
797 | 469 | 0.000001 1 0.000000 | ||
798 | 470 | 1.000000 4 2.000000 | ||
799 | 471 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
800 | 472 | TIME COUNT TOTAL | ||
801 | 473 | 0.000001 1 0.000000 | ||
802 | 474 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
803 | 475 | TIME COUNT TOTAL | ||
804 | 476 | 1.000000 4 2.000000 | ||
805 | 477 | |||
806 | 478 | ============================ | ||
807 | 479 | = Test for 'PREPARE' | ||
808 | 480 | ============================ | ||
809 | 481 | |||
810 | 482 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
811 | 483 | TIME COUNT TOTAL | ||
812 | 484 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
813 | 485 | TIME COUNT TOTAL | ||
814 | 486 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
815 | 487 | TIME COUNT TOTAL | ||
816 | 488 | ------------------Test body begin-------------------- | ||
817 | 489 | PREPARE rw_stmt FROM 'DELETE FROM t1'; | ||
818 | 490 | PREPARE ro_stmt FROM 'SELECT * FROM t1'; | ||
819 | 491 | PREPARE select_dml_stmt FROM 'SELECT DML_FUNC()'; | ||
820 | 492 | PREPARE nested_call_stmt FROM 'CALL NESTED_PROC()'; | ||
821 | 493 | ------------------Test body end---------------------- | ||
822 | 494 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
823 | 495 | TIME COUNT TOTAL | ||
824 | 496 | 0.000001 1 0.000000 | ||
825 | 497 | 1.000000 4 2.000000 | ||
826 | 498 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
827 | 499 | TIME COUNT TOTAL | ||
828 | 500 | 0.000001 1 0.000000 | ||
829 | 501 | 1.000000 4 2.000000 | ||
830 | 502 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
831 | 503 | TIME COUNT TOTAL | ||
832 | 504 | |||
833 | 505 | ============================ | ||
834 | 506 | = Test for 'EXECUTE' | ||
835 | 507 | ============================ | ||
836 | 508 | |||
837 | 509 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
838 | 510 | TIME COUNT TOTAL | ||
839 | 511 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
840 | 512 | TIME COUNT TOTAL | ||
841 | 513 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
842 | 514 | TIME COUNT TOTAL | ||
843 | 515 | ------------------Test body begin-------------------- | ||
844 | 516 | EXECUTE rw_stmt; | ||
845 | 517 | EXECUTE ro_stmt; | ||
846 | 518 | a b | ||
847 | 519 | EXECUTE select_dml_stmt; | ||
848 | 520 | DML_FUNC() | ||
849 | 521 | 1 | ||
850 | 522 | EXECUTE nested_call_stmt; | ||
851 | 523 | DML_FUNC() | ||
852 | 524 | 1 | ||
853 | 525 | ------------------Test body end---------------------- | ||
854 | 526 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
855 | 527 | TIME COUNT TOTAL | ||
856 | 528 | 0.000001 1 0.000000 | ||
857 | 529 | 1.000000 9 4.500000 | ||
858 | 530 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
859 | 531 | TIME COUNT TOTAL | ||
860 | 532 | 0.000001 1 0.000000 | ||
861 | 533 | 1.000000 1 0.500000 | ||
862 | 534 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
863 | 535 | TIME COUNT TOTAL | ||
864 | 536 | 1.000000 8 4.000000 | ||
865 | 537 | |||
866 | 538 | ============================ | ||
867 | 539 | = Test for 'DEALLOCATE PREPARE' | ||
868 | 540 | ============================ | ||
869 | 541 | |||
870 | 542 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
871 | 543 | TIME COUNT TOTAL | ||
872 | 544 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
873 | 545 | TIME COUNT TOTAL | ||
874 | 546 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
875 | 547 | TIME COUNT TOTAL | ||
876 | 548 | ------------------Test body begin-------------------- | ||
877 | 549 | DEALLOCATE PREPARE rw_stmt; | ||
878 | 550 | DEALLOCATE PREPARE ro_stmt; | ||
879 | 551 | DEALLOCATE PREPARE select_dml_stmt; | ||
880 | 552 | DEALLOCATE PREPARE nested_call_stmt; | ||
881 | 553 | ------------------Test body end---------------------- | ||
882 | 554 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
883 | 555 | TIME COUNT TOTAL | ||
884 | 556 | 0.000001 1 0.000000 | ||
885 | 557 | 1.000000 4 2.000000 | ||
886 | 558 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
887 | 559 | TIME COUNT TOTAL | ||
888 | 560 | 0.000001 1 0.000000 | ||
889 | 561 | 1.000000 4 2.000000 | ||
890 | 562 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
891 | 563 | TIME COUNT TOTAL | ||
892 | 564 | |||
893 | 565 | ============================ | ||
894 | 566 | = Test for transactions | ||
895 | 567 | ============================ | ||
896 | 568 | |||
897 | 569 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
898 | 570 | TIME COUNT TOTAL | ||
899 | 571 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
900 | 572 | TIME COUNT TOTAL | ||
901 | 573 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
902 | 574 | TIME COUNT TOTAL | ||
903 | 575 | ------------------Test body begin-------------------- | ||
904 | 576 | BEGIN; | ||
905 | 577 | SELECT * FROM t1; | ||
906 | 578 | a b | ||
907 | 579 | 5 1 | ||
908 | 580 | 6 1 | ||
909 | 581 | 7 1 | ||
910 | 582 | 8 1 | ||
911 | 583 | COMMIT; | ||
912 | 584 | ------------------Test body end---------------------- | ||
913 | 585 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
914 | 586 | TIME COUNT TOTAL | ||
915 | 587 | 0.000001 1 0.000000 | ||
916 | 588 | 1.000000 3 1.500000 | ||
917 | 589 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
918 | 590 | TIME COUNT TOTAL | ||
919 | 591 | 0.000001 1 0.000000 | ||
920 | 592 | 1.000000 3 1.500000 | ||
921 | 593 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
922 | 594 | TIME COUNT TOTAL | ||
923 | 595 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
924 | 596 | TIME COUNT TOTAL | ||
925 | 597 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
926 | 598 | TIME COUNT TOTAL | ||
927 | 599 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
928 | 600 | TIME COUNT TOTAL | ||
929 | 601 | ------------------Test body begin-------------------- | ||
930 | 602 | BEGIN; | ||
931 | 603 | INSERT INTO t1 (b) VALUES (1), (2); | ||
932 | 604 | UPDATE t1 SET b = 1; | ||
933 | 605 | SELECT * FROM t1; | ||
934 | 606 | a b | ||
935 | 607 | 5 1 | ||
936 | 608 | 6 1 | ||
937 | 609 | 7 1 | ||
938 | 610 | 8 1 | ||
939 | 611 | 9 1 | ||
940 | 612 | 10 1 | ||
941 | 613 | DELETE FROM t1; | ||
942 | 614 | COMMIT; | ||
943 | 615 | ------------------Test body end---------------------- | ||
944 | 616 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
945 | 617 | TIME COUNT TOTAL | ||
946 | 618 | 0.000001 1 0.000000 | ||
947 | 619 | 1.000000 6 3.000000 | ||
948 | 620 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
949 | 621 | TIME COUNT TOTAL | ||
950 | 622 | 0.000001 1 0.000000 | ||
951 | 623 | 1.000000 3 1.500000 | ||
952 | 624 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
953 | 625 | TIME COUNT TOTAL | ||
954 | 626 | 1.000000 3 1.500000 | ||
955 | 627 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
956 | 628 | TIME COUNT TOTAL | ||
957 | 629 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
958 | 630 | TIME COUNT TOTAL | ||
959 | 631 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
960 | 632 | TIME COUNT TOTAL | ||
961 | 633 | ------------------Test body begin-------------------- | ||
962 | 634 | BEGIN; | ||
963 | 635 | SELECT DML_FUNC(); | ||
964 | 636 | DML_FUNC() | ||
965 | 637 | 1 | ||
966 | 638 | CALL NESTED_PROC(); | ||
967 | 639 | DML_FUNC() | ||
968 | 640 | 1 | ||
969 | 641 | COMMIT; | ||
970 | 642 | ------------------Test body end---------------------- | ||
971 | 643 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
972 | 644 | TIME COUNT TOTAL | ||
973 | 645 | 0.000001 1 0.000000 | ||
974 | 646 | 1.000000 9 4.500000 | ||
975 | 647 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
976 | 648 | TIME COUNT TOTAL | ||
977 | 649 | 0.000001 1 0.000000 | ||
978 | 650 | 1.000000 2 1.000000 | ||
979 | 651 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
980 | 652 | TIME COUNT TOTAL | ||
981 | 653 | 1.000000 7 3.500000 | ||
982 | 654 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
983 | 655 | TIME COUNT TOTAL | ||
984 | 656 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
985 | 657 | TIME COUNT TOTAL | ||
986 | 658 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
987 | 659 | TIME COUNT TOTAL | ||
988 | 660 | ------------------Test body begin-------------------- | ||
989 | 661 | BEGIN; | ||
990 | 662 | INSERT INTO t1 (b) VALUES (1), (2); | ||
991 | 663 | UPDATE t1 SET b = 1; | ||
992 | 664 | ROLLBACK; | ||
993 | 665 | Warnings: | ||
994 | 666 | Warning 1196 Some non-transactional changed tables couldn't be rolled back | ||
995 | 667 | ------------------Test body end---------------------- | ||
996 | 668 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
997 | 669 | TIME COUNT TOTAL | ||
998 | 670 | 0.000001 1 0.000000 | ||
999 | 671 | 1.000000 5 2.500000 | ||
1000 | 672 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1001 | 673 | TIME COUNT TOTAL | ||
1002 | 674 | 0.000001 1 0.000000 | ||
1003 | 675 | 1.000000 3 1.500000 | ||
1004 | 676 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1005 | 677 | TIME COUNT TOTAL | ||
1006 | 678 | 1.000000 2 1.000000 | ||
1007 | 679 | |||
1008 | 680 | ============================ | ||
1009 | 681 | = Test for implicit commit | ||
1010 | 682 | ============================ | ||
1011 | 683 | |||
1012 | 684 | SET autocommit = 0; | ||
1013 | 685 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
1014 | 686 | TIME COUNT TOTAL | ||
1015 | 687 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1016 | 688 | TIME COUNT TOTAL | ||
1017 | 689 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1018 | 690 | TIME COUNT TOTAL | ||
1019 | 691 | ------------------Test body begin-------------------- | ||
1020 | 692 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1021 | 693 | CREATE INDEX ab ON t1 (a, b); | ||
1022 | 694 | ------------------Test body end---------------------- | ||
1023 | 695 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
1024 | 696 | TIME COUNT TOTAL | ||
1025 | 697 | 0.000001 1 0.000000 | ||
1026 | 698 | 1.000000 2 1.000000 | ||
1027 | 699 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1028 | 700 | TIME COUNT TOTAL | ||
1029 | 701 | 0.000001 1 0.000000 | ||
1030 | 702 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1031 | 703 | TIME COUNT TOTAL | ||
1032 | 704 | 1.000000 2 1.000000 | ||
1033 | 705 | SET autocommit = 1; | ||
1034 | 706 | |||
1035 | 707 | ============================ | ||
1036 | 708 | = Test for trigger | ||
1037 | 709 | ============================ | ||
1038 | 710 | |||
1039 | 711 | CREATE TABLE t2 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
1040 | 712 | b INT UNSIGNED NOT NULL DEFAULT 0); | ||
1041 | 713 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
1042 | 714 | TIME COUNT TOTAL | ||
1043 | 715 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1044 | 716 | TIME COUNT TOTAL | ||
1045 | 717 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1046 | 718 | TIME COUNT TOTAL | ||
1047 | 719 | ------------------Test body begin-------------------- | ||
1048 | 720 | CREATE TRIGGER test_trigger BEFORE INSERT ON t1 | ||
1049 | 721 | FOR EACH ROW | ||
1050 | 722 | BEGIN | ||
1051 | 723 | INSERT INTO t2 SET b = NEW.b; | ||
1052 | 724 | INSERT INTO t2 SET b = NEW.b; | ||
1053 | 725 | END; | ||
1054 | 726 | | | ||
1055 | 727 | ------------------Test body end---------------------- | ||
1056 | 728 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
1057 | 729 | TIME COUNT TOTAL | ||
1058 | 730 | 0.000001 1 0.000000 | ||
1059 | 731 | 1.000000 1 0.500000 | ||
1060 | 732 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1061 | 733 | TIME COUNT TOTAL | ||
1062 | 734 | 0.000001 1 0.000000 | ||
1063 | 735 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1064 | 736 | TIME COUNT TOTAL | ||
1065 | 737 | 1.000000 1 0.500000 | ||
1066 | 738 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
1067 | 739 | TIME COUNT TOTAL | ||
1068 | 740 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1069 | 741 | TIME COUNT TOTAL | ||
1070 | 742 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1071 | 743 | TIME COUNT TOTAL | ||
1072 | 744 | ------------------Test body begin-------------------- | ||
1073 | 745 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1074 | 746 | ------------------Test body end---------------------- | ||
1075 | 747 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME WHERE count != 0; | ||
1076 | 748 | TIME COUNT TOTAL | ||
1077 | 749 | 0.000001 1 0.000000 | ||
1078 | 750 | 1.000000 5 2.500000 | ||
1079 | 751 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_READ WHERE count != 0; | ||
1080 | 752 | TIME COUNT TOTAL | ||
1081 | 753 | 0.000001 1 0.000000 | ||
1082 | 754 | SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME_WRITE WHERE count != 0; | ||
1083 | 755 | TIME COUNT TOTAL | ||
1084 | 756 | 1.000000 5 2.500000 | ||
1085 | 757 | DROP TABLE t1; | ||
1086 | 758 | DROP TABLE t2; | ||
1087 | 759 | SET default_storage_engine=default; | ||
1088 | 760 | DROP FUNCTION DML_FUNC; | ||
1089 | 761 | DROP PROCEDURE NESTED_PROC; | ||
1090 | 0 | 762 | ||
1091 | === added file 'plugin/query_response_time/tests/mtr/query_response_time-rw.test' | |||
1092 | --- plugin/query_response_time/tests/mtr/query_response_time-rw.test 1970-01-01 00:00:00 +0000 | |||
1093 | +++ plugin/query_response_time/tests/mtr/query_response_time-rw.test 2014-11-06 00:11:26 +0000 | |||
1094 | @@ -0,0 +1,201 @@ | |||
1095 | 1 | --source include/have_query_response_time_plugin.inc | ||
1096 | 2 | --source include/have_debug.inc | ||
1097 | 3 | |||
1098 | 4 | # The file with expected results fits only to a run without | ||
1099 | 5 | # ps-protocol/sp-protocol/cursor-protocol/view-protocol. | ||
1100 | 6 | if (`SELECT $PS_PROTOCOL + $SP_PROTOCOL + $CURSOR_PROTOCOL | ||
1101 | 7 | + $VIEW_PROTOCOL > 0`) | ||
1102 | 8 | { | ||
1103 | 9 | --skip Test requires: ps-protocol/sp-protocol/cursor-protocol/view-protocol disabled | ||
1104 | 10 | } | ||
1105 | 11 | |||
1106 | 12 | --delimiter | | ||
1107 | 13 | |||
1108 | 14 | CREATE FUNCTION DML_FUNC() | ||
1109 | 15 | RETURNS INT | ||
1110 | 16 | BEGIN | ||
1111 | 17 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1112 | 18 | UPDATE t1 SET b = 1; | ||
1113 | 19 | RETURN 1; | ||
1114 | 20 | END| | ||
1115 | 21 | |||
1116 | 22 | CREATE PROCEDURE NESTED_PROC() | ||
1117 | 23 | BEGIN | ||
1118 | 24 | SELECT DML_FUNC(); | ||
1119 | 25 | END| | ||
1120 | 26 | |||
1121 | 27 | --delimiter ; | ||
1122 | 28 | |||
1123 | 29 | --let $i=2 | ||
1124 | 30 | |||
1125 | 31 | while ($i) | ||
1126 | 32 | { | ||
1127 | 33 | |||
1128 | 34 | SET default_storage_engine=InnoDB; | ||
1129 | 35 | if ($i==1) | ||
1130 | 36 | { | ||
1131 | 37 | SET default_storage_engine=MyISAM; | ||
1132 | 38 | } | ||
1133 | 39 | |||
1134 | 40 | if ($i==0) | ||
1135 | 41 | { | ||
1136 | 42 | --echo | ||
1137 | 43 | --echo ========================== | ||
1138 | 44 | --echo = Test for MyISAM engine | ||
1139 | 45 | --echo ========================== | ||
1140 | 46 | --echo | ||
1141 | 47 | } | ||
1142 | 48 | if ($i==1) | ||
1143 | 49 | { | ||
1144 | 50 | --echo | ||
1145 | 51 | --echo ========================== | ||
1146 | 52 | --echo = Test for Innodb engine | ||
1147 | 53 | --echo ========================== | ||
1148 | 54 | } | ||
1149 | 55 | |||
1150 | 56 | --echo | ||
1151 | 57 | --echo ============================ | ||
1152 | 58 | --echo = Test for simple DML and DDL | ||
1153 | 59 | --echo ============================ | ||
1154 | 60 | --echo | ||
1155 | 61 | --source query_response_time-rw-begin.inc | ||
1156 | 62 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
1157 | 63 | b INT UNSIGNED NOT NULL DEFAULT 0); | ||
1158 | 64 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1159 | 65 | UPDATE t1 SET b = 1; | ||
1160 | 66 | SELECT * FROM t1; | ||
1161 | 67 | DELETE FROM t1; | ||
1162 | 68 | ALTER TABLE t1 ADD COLUMN (c INT); | ||
1163 | 69 | DROP TABLE t1; | ||
1164 | 70 | --source query_response_time-rw-end.inc | ||
1165 | 71 | |||
1166 | 72 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
1167 | 73 | b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
1168 | 74 | --echo | ||
1169 | 75 | --echo ============================ | ||
1170 | 76 | --echo = Test for SELECT+DML | ||
1171 | 77 | --echo ============================ | ||
1172 | 78 | --echo | ||
1173 | 79 | --source query_response_time-rw-begin.inc | ||
1174 | 80 | SELECT DML_FUNC(); | ||
1175 | 81 | --source query_response_time-rw-end.inc | ||
1176 | 82 | |||
1177 | 83 | --echo | ||
1178 | 84 | --echo ============================ | ||
1179 | 85 | --echo = Test for nested calls | ||
1180 | 86 | --echo ============================ | ||
1181 | 87 | --echo | ||
1182 | 88 | --source query_response_time-rw-begin.inc | ||
1183 | 89 | CALL NESTED_PROC(); | ||
1184 | 90 | --source query_response_time-rw-end.inc | ||
1185 | 91 | |||
1186 | 92 | --echo | ||
1187 | 93 | --echo ============================ | ||
1188 | 94 | --echo = Test for 'PREPARE' | ||
1189 | 95 | --echo ============================ | ||
1190 | 96 | --echo | ||
1191 | 97 | --source query_response_time-rw-begin.inc | ||
1192 | 98 | PREPARE rw_stmt FROM 'DELETE FROM t1'; | ||
1193 | 99 | PREPARE ro_stmt FROM 'SELECT * FROM t1'; | ||
1194 | 100 | PREPARE select_dml_stmt FROM 'SELECT DML_FUNC()'; | ||
1195 | 101 | PREPARE nested_call_stmt FROM 'CALL NESTED_PROC()'; | ||
1196 | 102 | --source query_response_time-rw-end.inc | ||
1197 | 103 | |||
1198 | 104 | --echo | ||
1199 | 105 | --echo ============================ | ||
1200 | 106 | --echo = Test for 'EXECUTE' | ||
1201 | 107 | --echo ============================ | ||
1202 | 108 | --echo | ||
1203 | 109 | --source query_response_time-rw-begin.inc | ||
1204 | 110 | EXECUTE rw_stmt; | ||
1205 | 111 | EXECUTE ro_stmt; | ||
1206 | 112 | EXECUTE select_dml_stmt; | ||
1207 | 113 | EXECUTE nested_call_stmt; | ||
1208 | 114 | --source query_response_time-rw-end.inc | ||
1209 | 115 | |||
1210 | 116 | --echo | ||
1211 | 117 | --echo ============================ | ||
1212 | 118 | --echo = Test for 'DEALLOCATE PREPARE' | ||
1213 | 119 | --echo ============================ | ||
1214 | 120 | --echo | ||
1215 | 121 | --source query_response_time-rw-begin.inc | ||
1216 | 122 | DEALLOCATE PREPARE rw_stmt; | ||
1217 | 123 | DEALLOCATE PREPARE ro_stmt; | ||
1218 | 124 | DEALLOCATE PREPARE select_dml_stmt; | ||
1219 | 125 | DEALLOCATE PREPARE nested_call_stmt; | ||
1220 | 126 | --source query_response_time-rw-end.inc | ||
1221 | 127 | |||
1222 | 128 | --echo | ||
1223 | 129 | --echo ============================ | ||
1224 | 130 | --echo = Test for transactions | ||
1225 | 131 | --echo ============================ | ||
1226 | 132 | --echo | ||
1227 | 133 | --source query_response_time-rw-begin.inc | ||
1228 | 134 | BEGIN; | ||
1229 | 135 | SELECT * FROM t1; | ||
1230 | 136 | COMMIT; | ||
1231 | 137 | --source query_response_time-rw-end.inc | ||
1232 | 138 | --source query_response_time-rw-begin.inc | ||
1233 | 139 | BEGIN; | ||
1234 | 140 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1235 | 141 | UPDATE t1 SET b = 1; | ||
1236 | 142 | SELECT * FROM t1; | ||
1237 | 143 | DELETE FROM t1; | ||
1238 | 144 | COMMIT; | ||
1239 | 145 | --source query_response_time-rw-end.inc | ||
1240 | 146 | --source query_response_time-rw-begin.inc | ||
1241 | 147 | BEGIN; | ||
1242 | 148 | SELECT DML_FUNC(); | ||
1243 | 149 | CALL NESTED_PROC(); | ||
1244 | 150 | COMMIT; | ||
1245 | 151 | --source query_response_time-rw-end.inc | ||
1246 | 152 | --source query_response_time-rw-begin.inc | ||
1247 | 153 | BEGIN; | ||
1248 | 154 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1249 | 155 | UPDATE t1 SET b = 1; | ||
1250 | 156 | ROLLBACK; | ||
1251 | 157 | --source query_response_time-rw-end.inc | ||
1252 | 158 | |||
1253 | 159 | --echo | ||
1254 | 160 | --echo ============================ | ||
1255 | 161 | --echo = Test for implicit commit | ||
1256 | 162 | --echo ============================ | ||
1257 | 163 | --echo | ||
1258 | 164 | SET autocommit = 0; | ||
1259 | 165 | --source query_response_time-rw-begin.inc | ||
1260 | 166 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1261 | 167 | CREATE INDEX ab ON t1 (a, b); | ||
1262 | 168 | --source query_response_time-rw-end.inc | ||
1263 | 169 | SET autocommit = 1; | ||
1264 | 170 | |||
1265 | 171 | --echo | ||
1266 | 172 | --echo ============================ | ||
1267 | 173 | --echo = Test for trigger | ||
1268 | 174 | --echo ============================ | ||
1269 | 175 | --echo | ||
1270 | 176 | CREATE TABLE t2 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | ||
1271 | 177 | b INT UNSIGNED NOT NULL DEFAULT 0); | ||
1272 | 178 | --source query_response_time-rw-begin.inc | ||
1273 | 179 | --delimiter | | ||
1274 | 180 | CREATE TRIGGER test_trigger BEFORE INSERT ON t1 | ||
1275 | 181 | FOR EACH ROW | ||
1276 | 182 | BEGIN | ||
1277 | 183 | INSERT INTO t2 SET b = NEW.b; | ||
1278 | 184 | INSERT INTO t2 SET b = NEW.b; | ||
1279 | 185 | END; | ||
1280 | 186 | | | ||
1281 | 187 | --delimiter ; | ||
1282 | 188 | --source query_response_time-rw-end.inc | ||
1283 | 189 | --source query_response_time-rw-begin.inc | ||
1284 | 190 | INSERT INTO t1 (b) VALUES (1), (2); | ||
1285 | 191 | --source query_response_time-rw-end.inc | ||
1286 | 192 | |||
1287 | 193 | DROP TABLE t1; | ||
1288 | 194 | DROP TABLE t2; | ||
1289 | 195 | |||
1290 | 196 | --dec $i | ||
1291 | 197 | } | ||
1292 | 198 | |||
1293 | 199 | SET default_storage_engine=default; | ||
1294 | 200 | DROP FUNCTION DML_FUNC; | ||
1295 | 201 | DROP PROCEDURE NESTED_PROC; | ||
1296 | 0 | 202 | ||
1297 | === modified file 'sql/mdl.cc' | |||
1298 | --- sql/mdl.cc 2014-05-12 14:47:30 +0000 | |||
1299 | +++ sql/mdl.cc 2014-11-06 00:11:26 +0000 | |||
1300 | @@ -2098,6 +2098,9 @@ | |||
1301 | 2098 | is_lock_owner(MDL_key::GLOBAL, "", "", MDL_INTENTION_EXCLUSIVE)); | 2098 | is_lock_owner(MDL_key::GLOBAL, "", "", MDL_INTENTION_EXCLUSIVE)); |
1302 | 2099 | DBUG_ASSERT(mdl_request->ticket == NULL); | 2099 | DBUG_ASSERT(mdl_request->ticket == NULL); |
1303 | 2100 | 2100 | ||
1304 | 2101 | if (mdl_request->type >= MDL_SHARED_WRITE) | ||
1305 | 2102 | get_owner()->is_write= true; | ||
1306 | 2103 | |||
1307 | 2101 | /* Don't take chances in production. */ | 2104 | /* Don't take chances in production. */ |
1308 | 2102 | mdl_request->ticket= NULL; | 2105 | mdl_request->ticket= NULL; |
1309 | 2103 | mysql_mutex_assert_not_owner(&LOCK_open); | 2106 | mysql_mutex_assert_not_owner(&LOCK_open); |
1310 | 2104 | 2107 | ||
1311 | === modified file 'sql/mdl.h' | |||
1312 | --- sql/mdl.h 2014-05-12 14:47:30 +0000 | |||
1313 | +++ sql/mdl.h 2014-11-06 00:11:26 +0000 | |||
1314 | @@ -63,6 +63,7 @@ | |||
1315 | 63 | class MDL_context_owner | 63 | class MDL_context_owner |
1316 | 64 | { | 64 | { |
1317 | 65 | public: | 65 | public: |
1318 | 66 | MDL_context_owner() : is_write(false) {} | ||
1319 | 66 | virtual ~MDL_context_owner() {} | 67 | virtual ~MDL_context_owner() {} |
1320 | 67 | 68 | ||
1321 | 68 | /** | 69 | /** |
1322 | @@ -121,6 +122,7 @@ | |||
1323 | 121 | */ | 122 | */ |
1324 | 122 | virtual bool notify_shared_lock(MDL_context_owner *in_use, | 123 | virtual bool notify_shared_lock(MDL_context_owner *in_use, |
1325 | 123 | bool needs_thr_lock_abort) = 0; | 124 | bool needs_thr_lock_abort) = 0; |
1326 | 125 | bool is_write; | ||
1327 | 124 | }; | 126 | }; |
1328 | 125 | 127 | ||
1329 | 126 | /** | 128 | /** |
1330 | 127 | 129 | ||
1331 | === modified file 'sql/sql_parse.cc' | |||
1332 | --- sql/sql_parse.cc 2014-10-17 14:36:56 +0000 | |||
1333 | +++ sql/sql_parse.cc 2014-11-06 00:11:26 +0000 | |||
1334 | @@ -1867,6 +1867,8 @@ | |||
1335 | 1867 | thd->get_stmt_da()->sql_errno() : 0, | 1867 | thd->get_stmt_da()->sql_errno() : 0, |
1336 | 1868 | command_name[command].str); | 1868 | command_name[command].str); |
1337 | 1869 | 1869 | ||
1338 | 1870 | thd->is_write = false; | ||
1339 | 1871 | |||
1340 | 1870 | log_slow_statement(thd); | 1872 | log_slow_statement(thd); |
1341 | 1871 | 1873 | ||
1342 | 1872 | THD_STAGE_INFO(thd, stage_cleaning_up); | 1874 | THD_STAGE_INFO(thd, stage_cleaning_up); |