Merge lp:~tsarev/percona-server/5.1_fix_bug_716210 into lp:percona-server/5.1

Proposed by Oleg Tsarev
Status: Superseded
Proposed branch: lp:~tsarev/percona-server/5.1_fix_bug_716210
Merge into: lp:percona-server/5.1
Prerequisite: lp:~tsarev/percona-server/5.1.59-porting
Diff against target: 779 lines (+526/-107)
1 file modified
patches/slow_extended.patch (+526/-107)
To merge this branch: bzr merge lp:~tsarev/percona-server/5.1_fix_bug_716210
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Approve
Alexey Kopytov Pending
Review via email: mp+78700@code.launchpad.net

This proposal supersedes a proposal from 2011-10-07.

This proposal has been superseded by a proposal from 2011-10-11.

Description of the change

Clean Jenkins result: http://jenkins.percona.com/view/Percona%20Server%205.1/job/percona-server-5.1-param/170

PLEASE NOTE: This MP fix JUST THE ON PROBLEM - inherit counters by administrative commands from previous queries.
Looks like, Rows_read counters incorrect - related to bug #721176

Test case is CORRECT, and check what now administrative commands work with clean counters.

      * "all statistics variables used in slow_extended.patch and thd->send_row_count and thd->examined_row_count" == SESV (Slow Extended Statistic Variables)

      * Added to class THD (sql/sql_class.h) following methods:
             1) clear_slow_extended - clear SESV
             2) reset_sub_statement_state_slow_extended(Sub_statement_state *backup) - backup SESV to backup area
             3) restore_sub_statement_state_slow_extended(Sub_statement_state *backup) - restore SESV from backup area

      * Added to class Sub_statement_state (sql/sql_class.h) required for correct backup variables

      * Added to class THD (sql/sql_class.h) comments near the SESV with explanations of purpose of variables

      * Added call of clear_slow_extended to THD::init() (required on THD class initialisation and change_user)

      * Fix admin command processing in LOGGER::slow_log_print (sql/loc.cc). Before fix SESV don't clean correctly (because if(!query_length) never was true).
        Explanation:
          1) query and query_length according to comment in sql_class.h always correlated - if query == NULL => query_length == 0, and if query != NULL => query_length != 0
          2) After "if (!query) { ... }" query_lenght always not 0
          3) if (!query_length) (code before my fix) always trye

      * Fixed accoring to code policy code formating in "increment_thd_innodb_stats" (sql/sql_class.cc)

      * Fixed THD::reset_for_next_command (sql/sql_parse.cc) - replace variables cleaning by clear_slow_extended call

      * Fixed bug #716210: add thd->clear_slow_extended() to dispatch_command()
        Explanation: before dispatch_command mysql doesn't call "reset_for_next_command" and SESV inherited from previous query

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

LGTM with the the first comment below replied to and the rest of the changes. As far as I'm concerned, if the adjusted patch will be different from the current one with the changes below and nothing else, a new MP is not necessary.

- Can the argument of
  THD::restore_sub_statement_state_slow_extended(Sub_statement_state
  *backup) and the method void
  THD::reset_sub_statement_state_slow_extended(Sub_statement_state
  *backup) be constified? Please do so if yes.

- Line 314: s/save/saves

- Line 330: s/innodb_was used show/innodb_was_used shows

- Line 362: s/Belowing/Following, or remove the line
  altogether (line 364 is almost duplicate)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'patches/slow_extended.patch'
2--- patches/slow_extended.patch 2011-10-08 04:46:52 +0000
3+++ patches/slow_extended.patch 2011-10-11 06:52:37 +0000
4@@ -187,30 +187,16 @@
5 else
6 {
7 query_utime= lock_utime= 0;
8-@@ -1010,8 +1026,21 @@
9- query_length= command_name[thd->command].length;
10+@@ -1011,7 +1027,7 @@
11 }
12
13-+ if (!query_length)
14-+ {
15-+ thd->sent_row_count= thd->examined_row_count= 0;
16-+ thd->row_count= 0;
17-+ thd->orig_row_count= 0;
18-+ thd->bytes_sent_old= thd->status_var.bytes_sent;
19-+ thd->tmp_tables_used= thd->tmp_tables_disk_used= 0;
20-+ thd->tmp_tables_size= 0;
21-+ thd->innodb_was_used= FALSE;
22-+ thd->query_plan_flags= QPLAN_NONE;
23-+ thd->query_plan_fsort_passes= 0;
24-+ }
25-+
26 for (current_handler= slow_log_handler_list; *current_handler ;)
27 - error= (*current_handler++)->log_slow(thd, current_time, thd->start_time,
28 + error= (*current_handler++)->log_slow(thd, current_utime, thd->start_time,
29 user_host_buff, user_host_len,
30 query_utime, lock_utime, is_command,
31 query, query_length) || error;
32-@@ -2282,12 +2311,13 @@
33+@@ -2282,12 +2298,13 @@
34 TRUE - error occured
35 */
36
37@@ -225,7 +211,7 @@
38 bool error= 0;
39 DBUG_ENTER("MYSQL_QUERY_LOG::write");
40
41-@@ -2309,17 +2339,28 @@
42+@@ -2309,17 +2326,28 @@
43
44 if (!(specialflag & SPECIAL_SHORT_LOG_FORMAT))
45 {
46@@ -256,7 +242,7 @@
47
48 /* Note that my_b_write() assumes it knows the length for this */
49 if (my_b_write(&log_file, (uchar*) buff, buff_len))
50-@@ -2337,12 +2378,64 @@
51+@@ -2337,12 +2365,64 @@
52 sprintf(query_time_buff, "%.6f", ulonglong2double(query_utime)/1000000.0);
53 sprintf(lock_time_buff, "%.6f", ulonglong2double(lock_utime)/1000000.0);
54 if (my_b_printf(&log_file,
55@@ -277,7 +263,7 @@
56 + (ulong) thd->tmp_tables_used,
57 + (ulong) thd->tmp_tables_disk_used,
58 + (ulong) thd->tmp_tables_size) == (uint) -1)
59-+ tmp_errno= errno;
60+ tmp_errno= errno;
61 + if (thd->innodb_was_used)
62 + {
63 + char buf[20];
64@@ -319,7 +305,7 @@
65 + {
66 + if ((thd->variables.log_slow_verbosity & SLOG_V_INNODB) &&
67 + my_b_printf(&log_file,"# No InnoDB statistics available for this query\n") == (uint) -1)
68- tmp_errno= errno;
69++ tmp_errno= errno;
70 + }
71 if (thd->db && strcmp(thd->db, db))
72 { // Database changed
73@@ -1202,22 +1188,22 @@
74
75 +extern "C"
76 +void increment_thd_innodb_stats(THD* thd,
77-+ unsigned long long trx_id,
78-+ long io_reads,
79-+ long long io_read,
80-+ long io_reads_wait_timer,
81-+ long lock_que_wait_timer,
82-+ long que_wait_timer,
83-+ long page_access)
84++ unsigned long long trx_id,
85++ long io_reads,
86++ long long io_read,
87++ long io_reads_wait_timer,
88++ long lock_que_wait_timer,
89++ long que_wait_timer,
90++ long page_access)
91 +{
92-+ thd->innodb_was_used = TRUE;
93-+ thd->innodb_trx_id = trx_id;
94-+ thd->innodb_io_reads += io_reads;
95-+ thd->innodb_io_read += io_read;
96-+ thd->innodb_io_reads_wait_timer += io_reads_wait_timer;
97-+ thd->innodb_lock_que_wait_timer += lock_que_wait_timer;
98-+ thd->innodb_innodb_que_wait_timer += que_wait_timer;
99-+ thd->innodb_page_access += page_access;
100++ thd->innodb_was_used= TRUE;
101++ thd->innodb_trx_id= trx_id;
102++ thd->innodb_io_reads+= io_reads;
103++ thd->innodb_io_read+= io_read;
104++ thd->innodb_io_reads_wait_timer+= io_reads_wait_timer;
105++ thd->innodb_lock_que_wait_timer+= lock_que_wait_timer;
106++ thd->innodb_innodb_que_wait_timer+= que_wait_timer;
107++ thd->innodb_page_access+= page_access;
108 +}
109 +
110 +extern "C"
111@@ -1243,44 +1229,125 @@
112 for (Internal_error_handler *error_handler= m_internal_handler;
113 error_handler;
114 error_handler= error_handler->m_prev_internal_handler)
115-@@ -3196,6 +3229,12 @@
116+@@ -881,6 +914,8 @@
117+ /* Initialize the Debug Sync Facility. See debug_sync.cc. */
118+ debug_sync_init_thread(this);
119+ #endif /* defined(ENABLED_DEBUG_SYNC) */
120++
121++ clear_slow_extended();
122+ }
123+
124+
125+@@ -3187,8 +3222,6 @@
126+ backup->in_sub_stmt= in_sub_stmt;
127+ backup->enable_slow_log= enable_slow_log;
128+ backup->limit_found_rows= limit_found_rows;
129+- backup->examined_row_count= examined_row_count;
130+- backup->sent_row_count= sent_row_count;
131+ backup->cuted_fields= cuted_fields;
132+ backup->client_capabilities= client_capabilities;
133+ backup->savepoints= transaction.savepoints;
134+@@ -3196,6 +3229,7 @@
135 first_successful_insert_id_in_prev_stmt;
136 backup->first_successful_insert_id_in_cur_stmt=
137 first_successful_insert_id_in_cur_stmt;
138-+ backup->innodb_io_reads= innodb_io_reads;
139-+ backup->innodb_io_read= innodb_io_read;
140-+ backup->innodb_io_reads_wait_timer= innodb_io_reads_wait_timer;
141-+ backup->innodb_lock_que_wait_timer= innodb_lock_que_wait_timer;
142-+ backup->innodb_innodb_que_wait_timer= innodb_innodb_que_wait_timer;
143-+ backup->innodb_page_access= innodb_page_access;
144++ reset_sub_statement_state_slow_extended(backup);
145
146 if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) &&
147 !current_stmt_binlog_row_based)
148-@@ -3215,6 +3254,14 @@
149+@@ -3210,13 +3244,75 @@
150+ /* Disable result sets */
151+ client_capabilities &= ~CLIENT_MULTI_RESULTS;
152+ in_sub_stmt|= new_state;
153+- examined_row_count= 0;
154+- sent_row_count= 0;
155 cuted_fields= 0;
156 transaction.savepoints= 0;
157 first_successful_insert_id_in_cur_stmt= 0;
158-+ last_errno= 0;
159-+ innodb_trx_id= 0;
160-+ innodb_io_reads= 0;
161-+ innodb_io_read= 0;
162-+ innodb_io_reads_wait_timer= 0;
163-+ innodb_lock_que_wait_timer= 0;
164+ }
165+
166++void THD::clear_slow_extended()
167++{
168++ DBUG_ENTER("THD::clear_slow_extended");
169++ sent_row_count= 0;
170++ orig_row_count= row_count;
171++ examined_row_count= 0;
172++ bytes_sent_old= status_var.bytes_sent;
173++ tmp_tables_used= 0;
174++ tmp_tables_disk_used= 0;
175++ tmp_tables_size= 0;
176++ innodb_was_used= FALSE;
177++ innodb_trx_id= 0;
178++ innodb_io_reads= 0;
179++ innodb_io_read= 0;
180++ innodb_io_reads_wait_timer= 0;
181++ innodb_lock_que_wait_timer= 0;
182 + innodb_innodb_que_wait_timer= 0;
183-+ innodb_page_access= 0;
184- }
185-
186-
187-@@ -3277,6 +3324,12 @@
188++ innodb_page_access= 0;
189++ query_plan_flags= QPLAN_NONE;
190++ query_plan_fsort_passes= 0;
191++ last_errno= 0;
192++ DBUG_VOID_RETURN;
193++}
194++
195++void THD::reset_sub_statement_state_slow_extended(Sub_statement_state *backup)
196++{
197++ DBUG_ENTER("THD::reset_sub_statement_state_slow_extended");
198++ backup->sent_row_count= sent_row_count;
199++ backup->examined_row_count= examined_row_count;
200++ backup->tmp_tables_used= tmp_tables_used;
201++ backup->tmp_tables_disk_used= tmp_tables_disk_used;
202++ backup->tmp_tables_size= tmp_tables_size;
203++ backup->innodb_was_used= innodb_was_used;
204++ backup->innodb_io_reads= innodb_io_reads;
205++ backup->innodb_io_read= innodb_io_read;
206++ backup->innodb_io_reads_wait_timer= innodb_io_reads_wait_timer;
207++ backup->innodb_lock_que_wait_timer= innodb_lock_que_wait_timer;
208++ backup->innodb_innodb_que_wait_timer= innodb_innodb_que_wait_timer;
209++ backup->innodb_page_access= innodb_page_access;
210++ backup->query_plan_flags= query_plan_flags;
211++ backup->query_plan_fsort_passes= query_plan_fsort_passes;
212++ clear_slow_extended();
213++ DBUG_VOID_RETURN;
214++}
215++
216++void THD::restore_sub_statement_state_slow_extended(const Sub_statement_state *backup)
217++{
218++ DBUG_ENTER("THD::restore_sub_statement_state_slow_extended");
219++ sent_row_count= backup->sent_row_count;
220++ examined_row_count+= backup->examined_row_count;
221++ tmp_tables_used+= backup->tmp_tables_used;
222++ tmp_tables_disk_used+= backup->tmp_tables_disk_used;
223++ tmp_tables_size+= backup->tmp_tables_size;
224++ innodb_was_used= (innodb_was_used || backup->innodb_was_used);
225++ innodb_io_reads+= backup->innodb_io_reads;
226++ innodb_io_read+= backup->innodb_io_read;
227++ innodb_io_reads_wait_timer+= backup->innodb_io_reads_wait_timer;
228++ innodb_lock_que_wait_timer+= backup->innodb_lock_que_wait_timer;
229++ innodb_innodb_que_wait_timer+= backup->innodb_innodb_que_wait_timer;
230++ innodb_page_access+= backup->innodb_page_access;
231++ query_plan_flags|= backup->query_plan_flags;
232++ query_plan_fsort_passes+= backup->query_plan_fsort_passes;
233++ DBUG_VOID_RETURN;
234++}
235+
236+ void THD::restore_sub_statement_state(Sub_statement_state *backup)
237+ {
238+@@ -3257,7 +3353,6 @@
239+ first_successful_insert_id_in_cur_stmt=
240+ backup->first_successful_insert_id_in_cur_stmt;
241+ limit_found_rows= backup->limit_found_rows;
242+- sent_row_count= backup->sent_row_count;
243+ client_capabilities= backup->client_capabilities;
244+ /*
245+ If we've left sub-statement mode, reset the fatal error flag.
246+@@ -3275,8 +3370,8 @@
247+ The following is added to the old values as we are interested in the
248+ total complexity of the query
249 */
250- examined_row_count+= backup->examined_row_count;
251+- examined_row_count+= backup->examined_row_count;
252 cuted_fields+= backup->cuted_fields;
253-+ innodb_io_reads+= backup->innodb_io_reads;
254-+ innodb_io_read+= backup->innodb_io_read;
255-+ innodb_io_reads_wait_timer+= backup->innodb_io_reads_wait_timer;
256-+ innodb_lock_que_wait_timer+= backup->innodb_lock_que_wait_timer;
257-+ innodb_innodb_que_wait_timer+= backup->innodb_innodb_que_wait_timer;
258-+ innodb_page_access+= backup->innodb_page_access;
259++ restore_sub_statement_state_slow_extended(backup);
260 DBUG_VOID_RETURN;
261 }
262
263@@ -1308,11 +1375,17 @@
264 };
265
266
267-@@ -1000,6 +1015,14 @@
268+@@ -1000,6 +1015,24 @@
269 uint in_sub_stmt;
270 bool enable_slow_log;
271 bool last_insert_id_used;
272 +
273++ /*** Following variables used in slow_extended.patch ***/
274++ ulong tmp_tables_used;
275++ ulong tmp_tables_disk_used;
276++ ulonglong tmp_tables_size;
277++
278++ bool innodb_was_used;
279 + ulong innodb_io_reads;
280 + ulonglong innodb_io_read;
281 + ulong innodb_io_reads_wait_timer;
282@@ -1320,20 +1393,55 @@
283 + ulong innodb_innodb_que_wait_timer;
284 + ulong innodb_page_access;
285 +
286++ ulong query_plan_flags;
287++ ulong query_plan_fsort_passes;
288++ /*** The variables above used in slow_extended.patch ***/
289++
290 SAVEPOINT *savepoints;
291 enum enum_check_fields count_cuted_fields;
292 };
293-@@ -1427,6 +1450,26 @@
294+@@ -1427,6 +1460,77 @@
295 thr_lock_type update_lock_default;
296 Delayed_insert *di;
297
298++ /*** Following variables used in slow_extended.patch ***/
299++ /*
300++ Variable write_to_slow_log:
301++ 1) initialized in
302++ * sql_connect.cc (log_slow_rate_limit support)
303++ * slave.cc (log_slow_slave_statements support)
304++ 2) The variable is initialized on the thread startup and remains
305++ constant afterwards. This will change when
306++ LP #712396 ("log_slow_slave_statements not work on replication
307++ threads without RESTART") is implemented.
308++ 3) An implementation of LP #688646 ("Make query sampling possible
309++ by query") should use it.
310++ */
311 + bool write_to_slow_log;
312-+
313++ /*
314++ Variable bytes_send_old saves value of thd->status_var.bytes_sent
315++ before query execution.
316++ */
317 + ulonglong bytes_sent_old;
318++ /*
319++ Original row_count value at the start of query execution
320++ (used by the slow_extended patch).
321++ */
322++ ulong orig_row_count;
323++ /*
324++ Variables tmp_tables_*** collect statistics about usage of temporary tables
325++ */
326 + ulong tmp_tables_used;
327 + ulong tmp_tables_disk_used;
328 + ulonglong tmp_tables_size;
329++ /*
330++ Variable innodb_was_used shows used or not InnoDB engine in current query.
331++ */
332 + bool innodb_was_used;
333++ /*
334++ Following Variables innodb_*** (is |should be) different from
335++ default values only if (innodb_was_used==TRUE)
336++ */
337 + ulonglong innodb_trx_id;
338 + ulong innodb_io_reads;
339 + ulonglong innodb_io_read;
340@@ -1342,26 +1450,34 @@
341 + ulong innodb_innodb_que_wait_timer;
342 + ulong innodb_page_access;
343 +
344++ /*
345++ Variable query_plan_flags collects information about query plan entites
346++ used on query execution.
347++ */
348 + ulong query_plan_flags;
349++ /*
350++ Variable query_plan_fsort_passes collects information about file sort passes
351++ acquired during query execution.
352++ */
353 + ulong query_plan_fsort_passes;
354-+
355++ /*
356++ Query can generate several errors/warnings during execution
357++ (see THD::handle_condition comment in sql_class.h)
358++ Variable last_errno contains the last error/warning acquired during
359++ query execution.
360++ */
361 + uint last_errno;
362++ /*** The variables above used in slow_extended.patch ***/
363++
364++ /*** Following methods used in slow_extended.patch ***/
365++ void clear_slow_extended();
366++ void reset_sub_statement_state_slow_extended(Sub_statement_state *backup);
367++ void restore_sub_statement_state_slow_extended(const Sub_statement_state *backup);
368++ /*** The methods above used in slow_extended.patch ***/
369 +
370 /* <> 0 if we are inside of trigger or stored function. */
371 uint in_sub_stmt;
372 /* TRUE when the current top has SQL_LOG_BIN ON */
373-@@ -1772,6 +1815,11 @@
374- create_sort_index(); may differ from examined_row_count.
375- */
376- ulong row_count;
377-+ /*
378-+ Original row_count value at the start of query execution
379-+ (used by the slow_extended patch).
380-+ */
381-+ ulong orig_row_count;
382- pthread_t real_id; /* For debugging */
383- my_thread_id thread_id;
384- uint tmp_table, global_read_lock;
385 --- a/sql/sql_connect.cc
386 +++ b/sql/sql_connect.cc
387 @@ -1421,6 +1421,15 @@
388@@ -1390,7 +1506,15 @@
389
390 const char *any_db="*any*"; // Special symbol for check_access
391
392-@@ -1702,6 +1703,50 @@
393+@@ -1001,6 +1002,7 @@
394+ the slow log only if opt_log_slow_admin_statements is set.
395+ */
396+ thd->enable_slow_log= TRUE;
397++ thd->clear_slow_extended();
398+ thd->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */
399+ thd->set_time();
400+ if (!thd->is_valid_time())
401+@@ -1702,6 +1704,50 @@
402 DBUG_RETURN(error);
403 }
404
405@@ -1441,7 +1565,7 @@
406
407 void log_slow_statement(THD *thd)
408 {
409-@@ -1715,17 +1760,51 @@
410+@@ -1715,17 +1761,51 @@
411 if (unlikely(thd->in_sub_stmt))
412 DBUG_VOID_RETURN; // Don't set time for sub stmt
413
414@@ -1496,38 +1620,16 @@
415 ((thd->server_status &
416 (SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED)) &&
417 opt_log_queries_not_using_indexes &&
418-@@ -2101,6 +2180,9 @@
419- context.resolve_in_table_list_only(select_lex->
420- table_list.first);
421-
422-+ /* Save the original row_count value for extended stats in slow query log */
423-+ thd->orig_row_count= thd->row_count;
424-+
425- /*
426- Reset warning count for each query that uses tables
427- A better approach would be to reset this for any commands
428-@@ -5829,6 +5911,21 @@
429+@@ -5827,7 +5907,8 @@
430+ thd->main_da.reset_diagnostics_area();
431+ thd->total_warn_count=0; // Warnings for this query
432 thd->rand_used= 0;
433- thd->sent_row_count= thd->examined_row_count= 0;
434+- thd->sent_row_count= thd->examined_row_count= 0;
435++
436++ thd->clear_slow_extended();
437
438-+ thd->bytes_sent_old= thd->status_var.bytes_sent;
439-+ thd->tmp_tables_used= thd->tmp_tables_disk_used= 0;
440-+ thd->tmp_tables_size= 0;
441-+ thd->innodb_was_used= FALSE;
442-+ thd->innodb_trx_id= 0;
443-+ thd->innodb_io_reads= 0;
444-+ thd->innodb_io_read= 0;
445-+ thd->innodb_io_reads_wait_timer= 0;
446-+ thd->innodb_lock_que_wait_timer= 0;
447-+ thd->innodb_innodb_que_wait_timer= 0;
448-+ thd->innodb_page_access= 0;
449-+ thd->query_plan_flags= QPLAN_NONE;
450-+ thd->query_plan_fsort_passes= 0;
451-+ thd->last_errno= 0;
452-+
453 /*
454 Because we come here only for start of top-statements, binlog format is
455- constant inside a complex statement (using stored functions) etc.
456 --- a/sql/sql_select.cc
457 +++ b/sql/sql_select.cc
458 @@ -6798,7 +6798,10 @@
459@@ -2669,3 +2771,320 @@
460 @@ -0,0 +1,2 @@
461 +SHOW GLOBAL VARIABLES like 'log_slow_admin_statements';
462 +SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='log_slow_admin_statements';
463+--- /dev/null
464++++ b/mysql-test/t/percona_slow_extended_error_on_quit.test
465+@@ -0,0 +1,87 @@
466++################################################################################
467++# Current test check following attributes: #
468++# 1) "Last_errno" #
469++# 2) "Rows_{sent,examined|affected|read} #
470++# 3) Bytes_sent #
471++# 4) Tmp_{tables|dist_tables|table_size} #
472++# 5) InnoDB statistic counters #
473++# in Slow Query Log #
474++# for administrative command "Quit" #
475++# #
476++# See Launchpad Bug #716210 #
477++################################################################################
478++
479++--source include/have_innodb.inc
480++
481++################################################################################
482++--let log_file=percona.slow_extended.error_on_quit
483++--let wait_condition=SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST;
484++################################################################################
485++
486++--disable_warnings
487++DROP TABLE IF EXISTS t;
488++--enable_warnings
489++CREATE TABLE t(a INT) engine=InnoDB;
490++INSERT INTO t VALUES(0),(1),(2),(3),(4);
491++
492++################################################################################
493++--source include/log_start.inc
494++
495++--connect(additional,localhost,root,,)
496++--connection additional
497++
498++ SET log_slow_verbosity=innodb;
499++ SET long_query_time= 0;
500++
501++--disable_result_log
502++--error ER_TABLE_EXISTS_ERROR
503++ CREATE TABLE t(a INT) engine=InnoDB;
504++--enable_result_log
505++
506++--connection default
507++--echo # Disconnecting (passing to Slow Query Log "# administrative command: Quit")
508++--disconnect additional
509++--source include/wait_condition.inc
510++--source include/log_stop.inc
511++--source include/percona_slow_extended_error_on_quit.inc
512++################################################################################
513++--source include/log_start.inc
514++
515++--connect(additional,localhost,root,,)
516++--connection additional
517++
518++ SET log_slow_verbosity=innodb;
519++ SET long_query_time= 0;
520++
521++--disable_result_log
522++ INSERT INTO t SELECT * FROM t ORDER BY RAND();
523++--enable_result_log
524++
525++--connection default
526++--echo # Disconnecting (passing to Slow Query Log "# administrative command: Quit")
527++--disconnect additional
528++--source include/wait_condition.inc
529++--source include/log_stop.inc
530++--source include/percona_slow_extended_error_on_quit.inc
531++################################################################################
532++--source include/log_start.inc
533++
534++--connect(additional,localhost,root,,)
535++--connection additional
536++
537++ SET log_slow_verbosity=innodb;
538++ SET long_query_time= 0;
539++
540++--disable_result_log
541++ SELECT * FROM t;
542++--enable_result_log
543++
544++--connection default
545++--echo # Disconnecting (passing to Slow Query Log "# administrative command: Quit")
546++--disconnect additional
547++--source include/wait_condition.inc
548++--source include/log_stop.inc
549++--source include/percona_slow_extended_error_on_quit.inc
550++################################################################################
551++
552++DROP TABLE t;
553+--- /dev/null
554++++ b/mysql-test/r/percona_slow_extended_error_on_quit.result
555+@@ -0,0 +1,171 @@
556++DROP TABLE IF EXISTS t;
557++CREATE TABLE t(a INT) engine=InnoDB;
558++INSERT INTO t VALUES(0),(1),(2),(3),(4);
559++[log_start.inc] percona.slow_extended.error_on_quit
560++SET log_slow_verbosity=innodb;
561++SET long_query_time= 0;
562++CREATE TABLE t(a INT) engine=InnoDB;
563++# Disconnecting (passing to Slow Query Log "# administrative command: Quit")
564++[log_stop.inc] percona.slow_extended.error_on_quit
565++################################################################################
566++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: CREATE
567++[log_grep.inc] lines: 1
568++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: INSERT
569++[log_grep.inc] lines: 0
570++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: SELECT
571++[log_grep.inc] lines: 0
572++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Quit
573++[log_grep.inc] lines: 1
574++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Last_errno: [^0]+
575++[log_grep.inc] lines: 1
576++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Last_errno: 0
577++[log_grep.inc] lines: 2
578++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_sent: [^0]+
579++[log_grep.inc] lines: 0
580++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_sent: 0
581++[log_grep.inc] lines: 3
582++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_examined: [^0]+
583++[log_grep.inc] lines: 0
584++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_examined: 0
585++[log_grep.inc] lines: 3
586++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_affected: [^0]+
587++[log_grep.inc] lines: 0
588++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_affected: 0
589++[log_grep.inc] lines: 3
590++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_read: [^0]+
591++[log_grep.inc] lines: 3
592++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_read: 0
593++[log_grep.inc] lines: 0
594++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Bytes_sent: [^0]+
595++[log_grep.inc] lines: 2
596++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Bytes_sent: 0
597++[log_grep.inc] lines: 1
598++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_tables: [^0]+
599++[log_grep.inc] lines: 0
600++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_tables: 0
601++[log_grep.inc] lines: 3
602++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_disk_tables: [^0]+
603++[log_grep.inc] lines: 0
604++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_disk_tables: 0
605++[log_grep.inc] lines: 3
606++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_table_sizes: [^0]+
607++[log_grep.inc] lines: 0
608++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_table_sizes: 0
609++[log_grep.inc] lines: 3
610++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: # No InnoDB statistics available for this query
611++[log_grep.inc] lines: 3
612++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: # InnoDB_trx_id:
613++[log_grep.inc] lines: 0
614++################################################################################
615++[log_start.inc] percona.slow_extended.error_on_quit
616++SET log_slow_verbosity=innodb;
617++SET long_query_time= 0;
618++INSERT INTO t SELECT * FROM t ORDER BY RAND();
619++# Disconnecting (passing to Slow Query Log "# administrative command: Quit")
620++[log_stop.inc] percona.slow_extended.error_on_quit
621++################################################################################
622++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: CREATE
623++[log_grep.inc] lines: 0
624++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: INSERT
625++[log_grep.inc] lines: 1
626++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: SELECT
627++[log_grep.inc] lines: 1
628++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Quit
629++[log_grep.inc] lines: 1
630++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Last_errno: [^0]+
631++[log_grep.inc] lines: 0
632++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Last_errno: 0
633++[log_grep.inc] lines: 3
634++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_sent: [^0]+
635++[log_grep.inc] lines: 0
636++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_sent: 0
637++[log_grep.inc] lines: 3
638++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_examined: [^0]+
639++[log_grep.inc] lines: 1
640++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_examined: 0
641++[log_grep.inc] lines: 2
642++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_affected: [^0]+
643++[log_grep.inc] lines: 2
644++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_affected: 0
645++[log_grep.inc] lines: 1
646++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_read: [^0]+
647++[log_grep.inc] lines: 3
648++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_read: 0
649++[log_grep.inc] lines: 0
650++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Bytes_sent: [^0]+
651++[log_grep.inc] lines: 2
652++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Bytes_sent: 0
653++[log_grep.inc] lines: 1
654++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_tables: [^0]+
655++[log_grep.inc] lines: 1
656++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_tables: 0
657++[log_grep.inc] lines: 2
658++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_disk_tables: [^0]+
659++[log_grep.inc] lines: 0
660++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_disk_tables: 0
661++[log_grep.inc] lines: 3
662++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_table_sizes: [^0]+
663++[log_grep.inc] lines: 1
664++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_table_sizes: 0
665++[log_grep.inc] lines: 2
666++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: # No InnoDB statistics available for this query
667++[log_grep.inc] lines: 2
668++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: # InnoDB_trx_id:
669++[log_grep.inc] lines: 1
670++################################################################################
671++[log_start.inc] percona.slow_extended.error_on_quit
672++SET log_slow_verbosity=innodb;
673++SET long_query_time= 0;
674++SELECT * FROM t;
675++# Disconnecting (passing to Slow Query Log "# administrative command: Quit")
676++[log_stop.inc] percona.slow_extended.error_on_quit
677++################################################################################
678++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: CREATE
679++[log_grep.inc] lines: 0
680++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: INSERT
681++[log_grep.inc] lines: 0
682++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: SELECT
683++[log_grep.inc] lines: 1
684++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Quit
685++[log_grep.inc] lines: 1
686++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Last_errno: [^0]+
687++[log_grep.inc] lines: 0
688++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Last_errno: 0
689++[log_grep.inc] lines: 3
690++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_sent: [^0]+
691++[log_grep.inc] lines: 1
692++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_sent: 0
693++[log_grep.inc] lines: 2
694++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_examined: [^0]+
695++[log_grep.inc] lines: 1
696++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_examined: 0
697++[log_grep.inc] lines: 2
698++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_affected: [^0]+
699++[log_grep.inc] lines: 0
700++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_affected: 0
701++[log_grep.inc] lines: 3
702++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_read: [^0]+
703++[log_grep.inc] lines: 3
704++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Rows_read: 0
705++[log_grep.inc] lines: 0
706++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Bytes_sent: [^0]+
707++[log_grep.inc] lines: 2
708++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Bytes_sent: 0
709++[log_grep.inc] lines: 1
710++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_tables: [^0]+
711++[log_grep.inc] lines: 0
712++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_tables: 0
713++[log_grep.inc] lines: 3
714++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_disk_tables: [^0]+
715++[log_grep.inc] lines: 0
716++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_disk_tables: 0
717++[log_grep.inc] lines: 3
718++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_table_sizes: [^0]+
719++[log_grep.inc] lines: 0
720++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: Tmp_table_sizes: 0
721++[log_grep.inc] lines: 3
722++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: # No InnoDB statistics available for this query
723++[log_grep.inc] lines: 2
724++[log_grep.inc] file: percona.slow_extended.error_on_quit pattern: # InnoDB_trx_id:
725++[log_grep.inc] lines: 1
726++################################################################################
727+--- /dev/null
728++++ b/mysql-test/include/percona_slow_extended_error_on_quit.inc
729+@@ -0,0 +1,50 @@
730++--echo ################################################################################
731++--let grep_pattern=CREATE
732++--source include/log_grep.inc
733++--let grep_pattern=INSERT
734++--source include/log_grep.inc
735++--let grep_pattern=SELECT
736++--source include/log_grep.inc
737++--let grep_pattern=Quit
738++--source include/log_grep.inc
739++--let grep_pattern=Last_errno: [^0]+
740++--source include/log_grep.inc
741++--let grep_pattern=Last_errno: 0
742++--source include/log_grep.inc
743++--let grep_pattern=Rows_sent: [^0]+
744++--source include/log_grep.inc
745++--let grep_pattern=Rows_sent: 0
746++--source include/log_grep.inc
747++--let grep_pattern=Rows_examined: [^0]+
748++--source include/log_grep.inc
749++--let grep_pattern=Rows_examined: 0
750++--source include/log_grep.inc
751++--let grep_pattern=Rows_affected: [^0]+
752++--source include/log_grep.inc
753++--let grep_pattern=Rows_affected: 0
754++--source include/log_grep.inc
755++--let grep_pattern=Rows_read: [^0]+
756++--source include/log_grep.inc
757++--let grep_pattern=Rows_read: 0
758++--source include/log_grep.inc
759++--let grep_pattern=Bytes_sent: [^0]+
760++--source include/log_grep.inc
761++--let grep_pattern=Bytes_sent: 0
762++--source include/log_grep.inc
763++--let grep_pattern=Tmp_tables: [^0]+
764++--source include/log_grep.inc
765++--let grep_pattern=Tmp_tables: 0
766++--source include/log_grep.inc
767++--let grep_pattern=Tmp_disk_tables: [^0]+
768++--source include/log_grep.inc
769++--let grep_pattern=Tmp_disk_tables: 0
770++--source include/log_grep.inc
771++--let grep_pattern=Tmp_table_sizes: [^0]+
772++--source include/log_grep.inc
773++--let grep_pattern=Tmp_table_sizes: 0
774++--source include/log_grep.inc
775++--let grep_pattern=# No InnoDB statistics available for this query
776++--source include/log_grep.inc
777++--let grep_pattern=# InnoDB_trx_id:
778++--source include/log_grep.inc
779++--echo ################################################################################

Subscribers

People subscribed via source and target branches