Merge lp:~laurynas-biveinis/percona-server/bug810272 into lp:percona-server/5.5

Proposed by Laurynas Biveinis
Status: Merged
Approved by: Alexey Kopytov
Approved revision: no longer in the source branch.
Merged at revision: 198
Proposed branch: lp:~laurynas-biveinis/percona-server/bug810272
Merge into: lp:percona-server/5.5
Diff against target: 701 lines (+115/-130)
1 file modified
patches/response_time_distribution.patch (+115/-130)
To merge this branch: bzr merge lp:~laurynas-biveinis/percona-server/bug810272
Reviewer Review Type Date Requested Status
Alexey Kopytov (community) Approve
Laurynas Biveinis (community) Needs Resubmitting
Oleg Tsarev (community) Approve
Review via email: mp+82548@code.launchpad.net

Commit message

Fix bug 810272 (bogus snprintf return value checking and compilation
warning).

The warning is
sql/query_response_time.cc:147: error: comparison of unsigned
expression < 0 is always false
and it indicates that the if clause is dead code, because of the wrong
assumption that snprintf returns a negative value on buffer truncate
(and the old code stores that value in an unsigned type anyway).

The fix:
- Drops buffer overflow check and returns the truncated buffer instead.
- Replaces snprintf with my_snprintf.
- Removes pre- and post-snprintf buffer writes.
- Removes STRING_OVERFLOW, QRT_STRING_OVERFLOW, changes
  QRT_POSITIVE_POWER_FILLER to "", simplifies QRT_TIME_STRING_LENGTH
  and QRT_TOTAL_STRING_LENGTH.
- Re-records the testcases.

Description of the change

Fix bug 810272 (bogus snprintf return value checking and compilation
warning).

The warning is
sql/query_response_time.cc:147: error: comparison of unsigned
expression < 0 is always false
and it indicates that the if clause is dead code, because of the wrong
assumption that snprintf returns a negative value on buffer truncate
(and the old code stores that value in an unsigned type anyway).

The fix:
- Increases TIME_STRING_BUFFER_LENGTH and TOTAL_STRING_BUFFER_LENGTH
by 1 to enable snprintf output buffer truncate detection.
- Changes the type of result_length to int to match the return type of
snprintf.
- Replaces the if condition with the proper buffer truncate check.

I have Jenkins-tested this branch together with other warning fixes, but now I have split it to separate MP with separate Jenkins test, which will be available at
http://jenkins.percona.com/view/Percona%20Server%205.5/job/percona-server-5.5-param/192/

To post a comment you must log in.
Revision history for this message
Oleg Tsarev (tsarev) wrote :

LGTM

Nice work, thank you!

review: Approve
Revision history for this message
Alexey Kopytov (akopytov) wrote :

According to the C99, Linux and BSD man pages, snprintf(buf, n, ...) writes at most (n-1) characters excluding the terminating zero, always produces a zero-terminated string, and returns values >= n if and only if the output was truncated. So it's not clear what extending the buffer by 1 byte has to do with overflow detection.

Windows, however, is a different creature (surprise, surprise!). In case of overflow, it returns a negative value and does not add the terminating zero.

Which makes snprintf() unusable for portable applications. That's why my_snprintf() is used (5.1 has a few places when the C library snprintf() is used, but they were all fixed in 5.5).

Now the problem with my_snprintf() is that it does not indicate an overflow. That is, it always produces a zero-terminated string and writes at most n characters including the terminating zero. But it always returns the number of characters written, excluding the terminating zero, i.e. at most (n-1).

What I suggest is that we simply get rid of that overflow detection check. Is it really that important to print "TOO BIG STRING" if time gets truncated? I don't think so.

review: Needs Fixing
Revision history for this message
Alexey Kopytov (akopytov) wrote :

I meant to say "What I suggest is that we use my_snprintf() and simpy get rid of that overflow detection check".

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

Ack. As I read the Linux snprintf man page, my (wrong) understanding was that '\0' may very well get truncated, thus the check. I will redo with my_snprintf.

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

Redid with my_snprintf and without buffer overflow checks. Tested locally, Jenkins results will be at
http://jenkins.percona.com/view/Percona%20Server%205.5/job/percona-server-5.5-param/193/

----

Fix bug 810272 (bogus snprintf return value checking and compilation
warning).

The warning is
sql/query_response_time.cc:147: error: comparison of unsigned
expression < 0 is always false
and it indicates that the if clause is dead code, because of the wrong
assumption that snprintf returns a negative value on buffer truncate
(and the old code stores that value in an unsigned type anyway).

The fix:
- Drops buffer overflow check and returns the truncated buffer instead.
- Replaces snprintf with my_snprintf.
- Removes pre- and post-snprintf buffer writes.
- Removes STRING_OVERFLOW, QRT_STRING_OVERFLOW, changes
  QRT_POSITIVE_POWER_FILLER to "", simplifies QRT_TIME_STRING_LENGTH
  and QRT_TOTAL_STRING_LENGTH.
- Re-records the testcases.

review: Needs Resubmitting
Revision history for this message
Alexey Kopytov (akopytov) wrote :

The string_positive_power_length argument in print_time() is now unused. Doesn't that lead to another warning?

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

The unused argument removed, callers updated, also print_time is made static now.

Jenkins results for this (and other unrelated changes) are at
http://jenkins.percona.com/job/percona-server-5.5-param-debug/5/

There are no Jenkins results for this change in isolation.

review: Needs Resubmitting
Revision history for this message
Alexey Kopytov (akopytov) wrote :

Thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'patches/response_time_distribution.patch'
--- patches/response_time_distribution.patch 2011-10-31 16:12:50 +0000
+++ patches/response_time_distribution.patch 2011-11-18 09:02:25 +0000
@@ -297,10 +297,10 @@
297+ 131072.000000 0 0.000000297+ 131072.000000 0 0.000000
298+ 262144.000000 0 0.000000298+ 262144.000000 0 0.000000
299+ 524288.000000 0 0.000000299+ 524288.000000 0 0.000000
300+ 1048576.00000 0 0.000000300+1048576.000000 0 0.000000
301+ 2097152.00000 0 0.000000301+2097152.000000 0 0.000000
302+ 4194304.00000 0 0.000000302+4194304.000000 0 0.000000
303+ 8388608.00000 0 0.000000303+8388608.000000 0 0.000000
304+TOO LONG 0 TOO LONG304+TOO LONG 0 TOO LONG
305+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;305+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
306+time count total306+time count total
@@ -343,10 +343,10 @@
343+ 131072.000000 0 0.000000343+ 131072.000000 0 0.000000
344+ 262144.000000 0 0.000000344+ 262144.000000 0 0.000000
345+ 524288.000000 0 0.000000345+ 524288.000000 0 0.000000
346+ 1048576.00000 0 0.000000346+1048576.000000 0 0.000000
347+ 2097152.00000 0 0.000000347+2097152.000000 0 0.000000
348+ 4194304.00000 0 0.000000348+4194304.000000 0 0.000000
349+ 8388608.00000 0 0.000000349+8388608.000000 0 0.000000
350+TOO LONG 0 TOO LONG350+TOO LONG 0 TOO LONG
351+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;351+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
352+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;352+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -448,10 +448,10 @@
448+ 131072.000000 0 0.000000448+ 131072.000000 0 0.000000
449+ 262144.000000 0 0.000000449+ 262144.000000 0 0.000000
450+ 524288.000000 0 0.000000450+ 524288.000000 0 0.000000
451+ 1048576.00000 0 0.000000451+1048576.000000 0 0.000000
452+ 2097152.00000 0 0.000000452+2097152.000000 0 0.000000
453+ 4194304.00000 0 0.000000453+4194304.000000 0 0.000000
454+ 8388608.00000 0 0.000000454+8388608.000000 0 0.000000
455+TOO LONG 0 TOO LONG455+TOO LONG 0 TOO LONG
456+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;456+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
457+time count total457+time count total
@@ -494,10 +494,10 @@
494+ 131072.000000 0 0.000000494+ 131072.000000 0 0.000000
495+ 262144.000000 0 0.000000495+ 262144.000000 0 0.000000
496+ 524288.000000 0 0.000000496+ 524288.000000 0 0.000000
497+ 1048576.00000 0 0.000000497+1048576.000000 0 0.000000
498+ 2097152.00000 0 0.000000498+2097152.000000 0 0.000000
499+ 4194304.00000 0 0.000000499+4194304.000000 0 0.000000
500+ 8388608.00000 0 0.000000500+8388608.000000 0 0.000000
501+TOO LONG 0 TOO LONG501+TOO LONG 0 TOO LONG
502+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;502+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
503+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;503+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -572,7 +572,7 @@
572+ 1000.000000 0 0.000000572+ 1000.000000 0 0.000000
573+ 10000.000000 0 0.000000573+ 10000.000000 0 0.000000
574+ 100000.000000 0 0.000000574+ 100000.000000 0 0.000000
575+ 1000000.00000 0 0.000000575+1000000.000000 0 0.000000
576+TOO LONG 0 TOO LONG576+TOO LONG 0 TOO LONG
577+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;577+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
578+time count total578+time count total
@@ -588,7 +588,7 @@
588+ 1000.000000 0 0.000000588+ 1000.000000 0 0.000000
589+ 10000.000000 0 0.000000589+ 10000.000000 0 0.000000
590+ 100000.000000 0 0.000000590+ 100000.000000 0 0.000000
591+ 1000000.00000 0 0.000000591+1000000.000000 0 0.000000
592+TOO LONG 0 TOO LONG592+TOO LONG 0 TOO LONG
593+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;593+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
594+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;594+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -666,7 +666,7 @@
666+ 16807.000000 0 0.000000666+ 16807.000000 0 0.000000
667+ 117649.000000 0 0.000000667+ 117649.000000 0 0.000000
668+ 823543.000000 0 0.000000668+ 823543.000000 0 0.000000
669+ 5764801.00000 0 0.000000669+5764801.000000 0 0.000000
670+TOO LONG 0 TOO LONG670+TOO LONG 0 TOO LONG
671+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;671+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
672+time count total672+time count total
@@ -685,7 +685,7 @@
685+ 16807.000000 0 0.000000685+ 16807.000000 0 0.000000
686+ 117649.000000 0 0.000000686+ 117649.000000 0 0.000000
687+ 823543.000000 0 0.000000687+ 823543.000000 0 0.000000
688+ 5764801.00000 0 0.000000688+5764801.000000 0 0.000000
689+TOO LONG 0 TOO LONG689+TOO LONG 0 TOO LONG
690+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;690+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
691+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;691+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -753,7 +753,7 @@
753+ 1.000000 34 12.250000753+ 1.000000 34 12.250000
754+ 156.000000 33 77.099997754+ 156.000000 33 77.099997
755+ 24336.000000 0 0.000000755+ 24336.000000 0 0.000000
756+ 3796416.00000 0 0.000000756+3796416.000000 0 0.000000
757+TOO LONG 0 TOO LONG757+TOO LONG 0 TOO LONG
758+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;758+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
759+time count total759+time count total
@@ -762,7 +762,7 @@
762+ 1.000000 34 12.250000762+ 1.000000 34 12.250000
763+ 156.000000 33 77.099997763+ 156.000000 33 77.099997
764+ 24336.000000 0 0.000000764+ 24336.000000 0 0.000000
765+ 3796416.00000 0 0.000000765+3796416.000000 0 0.000000
766+TOO LONG 0 TOO LONG766+TOO LONG 0 TOO LONG
767+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;767+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
768+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;768+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -829,7 +829,7 @@
829+ 0.001000 0 0.000000829+ 0.001000 0 0.000000
830+ 1.000000 34 12.250000830+ 1.000000 34 12.250000
831+ 1000.000000 33 77.099997831+ 1000.000000 33 77.099997
832+ 1000000.00000 0 0.000000832+1000000.000000 0 0.000000
833+TOO LONG 0 TOO LONG833+TOO LONG 0 TOO LONG
834+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;834+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
835+time count total835+time count total
@@ -837,7 +837,7 @@
837+ 0.001000 0 0.000000837+ 0.001000 0 0.000000
838+ 1.000000 34 12.250000838+ 1.000000 34 12.250000
839+ 1000.000000 33 77.099997839+ 1000.000000 33 77.099997
840+ 1000000.00000 0 0.000000840+1000000.000000 0 0.000000
841+TOO LONG 0 TOO LONG841+TOO LONG 0 TOO LONG
842+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;842+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
843+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;843+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -906,7 +906,7 @@
906+ 0.001000 0 0.000000906+ 0.001000 0 0.000000
907+ 1.000000 34 12.250000907+ 1.000000 34 12.250000
908+ 1000.000000 33 77.099997908+ 1000.000000 33 77.099997
909+ 1000000.00000 0 0.000000909+1000000.000000 0 0.000000
910+TOO LONG 0 TOO LONG910+TOO LONG 0 TOO LONG
911+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;911+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
912+time count total912+time count total
@@ -914,7 +914,7 @@
914+ 0.001000 0 0.000000914+ 0.001000 0 0.000000
915+ 1.000000 34 12.250000915+ 1.000000 34 12.250000
916+ 1000.000000 33 77.099997916+ 1000.000000 33 77.099997
917+ 1000000.00000 0 0.000000917+1000000.000000 0 0.000000
918+TOO LONG 0 TOO LONG918+TOO LONG 0 TOO LONG
919+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;919+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
920+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;920+SET GLOBAL QUERY_RESPONSE_TIME_STATS=default;
@@ -972,10 +972,10 @@
972+ 131072.000000 0 0.000000972+ 131072.000000 0 0.000000
973+ 262144.000000 0 0.000000973+ 262144.000000 0 0.000000
974+ 524288.000000 0 0.000000974+ 524288.000000 0 0.000000
975+ 1048576.00000 0 0.000000975+1048576.000000 0 0.000000
976+ 2097152.00000 0 0.000000976+2097152.000000 0 0.000000
977+ 4194304.00000 0 0.000000977+4194304.000000 0 0.000000
978+ 8388608.00000 0 0.000000978+8388608.000000 0 0.000000
979+TOO LONG 0 TOO LONG979+TOO LONG 0 TOO LONG
980+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;980+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
981+time count total981+time count total
@@ -1018,10 +1018,10 @@
1018+ 131072.000000 0 0.0000001018+ 131072.000000 0 0.000000
1019+ 262144.000000 0 0.0000001019+ 262144.000000 0 0.000000
1020+ 524288.000000 0 0.0000001020+ 524288.000000 0 0.000000
1021+ 1048576.00000 0 0.0000001021+1048576.000000 0 0.000000
1022+ 2097152.00000 0 0.0000001022+2097152.000000 0 0.000000
1023+ 4194304.00000 0 0.0000001023+4194304.000000 0 0.000000
1024+ 8388608.00000 0 0.0000001024+8388608.000000 0 0.000000
1025+TOO LONG 0 TOO LONG1025+TOO LONG 0 TOO LONG
1026+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;1026+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
1027+SET SESSION query_exec_time=0.31;1027+SET SESSION query_exec_time=0.31;
@@ -1158,10 +1158,10 @@
1158+ 131072.000000 0 0.0000001158+ 131072.000000 0 0.000000
1159+ 262144.000000 0 0.0000001159+ 262144.000000 0 0.000000
1160+ 524288.000000 0 0.0000001160+ 524288.000000 0 0.000000
1161+ 1048576.00000 0 0.0000001161+1048576.000000 0 0.000000
1162+ 2097152.00000 0 0.0000001162+2097152.000000 0 0.000000
1163+ 4194304.00000 0 0.0000001163+4194304.000000 0 0.000000
1164+ 8388608.00000 0 0.0000001164+8388608.000000 0 0.000000
1165+TOO LONG 0 TOO LONG1165+TOO LONG 0 TOO LONG
1166+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1166+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1167+time count total1167+time count total
@@ -1204,10 +1204,10 @@
1204+ 131072.000000 0 0.0000001204+ 131072.000000 0 0.000000
1205+ 262144.000000 0 0.0000001205+ 262144.000000 0 0.000000
1206+ 524288.000000 0 0.0000001206+ 524288.000000 0 0.000000
1207+ 1048576.00000 0 0.0000001207+1048576.000000 0 0.000000
1208+ 2097152.00000 0 0.0000001208+2097152.000000 0 0.000000
1209+ 4194304.00000 0 0.0000001209+4194304.000000 0 0.000000
1210+ 8388608.00000 0 0.0000001210+8388608.000000 0 0.000000
1211+TOO LONG 0 TOO LONG1211+TOO LONG 0 TOO LONG
1212+SET SESSION query_exec_time=default;1212+SET SESSION query_exec_time=default;
1213+SET SESSION query_exec_time=0.1;1213+SET SESSION query_exec_time=0.1;
@@ -1255,10 +1255,10 @@
1255+ 131072.000000 0 0.0000001255+ 131072.000000 0 0.000000
1256+ 262144.000000 0 0.0000001256+ 262144.000000 0 0.000000
1257+ 524288.000000 0 0.0000001257+ 524288.000000 0 0.000000
1258+ 1048576.00000 0 0.0000001258+1048576.000000 0 0.000000
1259+ 2097152.00000 0 0.0000001259+2097152.000000 0 0.000000
1260+ 4194304.00000 0 0.0000001260+4194304.000000 0 0.000000
1261+ 8388608.00000 0 0.0000001261+8388608.000000 0 0.000000
1262+TOO LONG 0 TOO LONG1262+TOO LONG 0 TOO LONG
1263+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1263+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1264+time count total1264+time count total
@@ -1301,10 +1301,10 @@
1301+ 131072.000000 0 0.0000001301+ 131072.000000 0 0.000000
1302+ 262144.000000 0 0.0000001302+ 262144.000000 0 0.000000
1303+ 524288.000000 0 0.0000001303+ 524288.000000 0 0.000000
1304+ 1048576.00000 0 0.0000001304+1048576.000000 0 0.000000
1305+ 2097152.00000 0 0.0000001305+2097152.000000 0 0.000000
1306+ 4194304.00000 0 0.0000001306+4194304.000000 0 0.000000
1307+ 8388608.00000 0 0.0000001307+8388608.000000 0 0.000000
1308+TOO LONG 0 TOO LONG1308+TOO LONG 0 TOO LONG
1309+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;1309+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
1310+SET SESSION query_exec_time=0.31;1310+SET SESSION query_exec_time=0.31;
@@ -1441,10 +1441,10 @@
1441+ 131072.000000 0 0.0000001441+ 131072.000000 0 0.000000
1442+ 262144.000000 0 0.0000001442+ 262144.000000 0 0.000000
1443+ 524288.000000 0 0.0000001443+ 524288.000000 0 0.000000
1444+ 1048576.00000 0 0.0000001444+1048576.000000 0 0.000000
1445+ 2097152.00000 0 0.0000001445+2097152.000000 0 0.000000
1446+ 4194304.00000 0 0.0000001446+4194304.000000 0 0.000000
1447+ 8388608.00000 0 0.0000001447+8388608.000000 0 0.000000
1448+TOO LONG 0 TOO LONG1448+TOO LONG 0 TOO LONG
1449+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1449+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1450+time count total1450+time count total
@@ -1487,10 +1487,10 @@
1487+ 131072.000000 0 0.0000001487+ 131072.000000 0 0.000000
1488+ 262144.000000 0 0.0000001488+ 262144.000000 0 0.000000
1489+ 524288.000000 0 0.0000001489+ 524288.000000 0 0.000000
1490+ 1048576.00000 0 0.0000001490+1048576.000000 0 0.000000
1491+ 2097152.00000 0 0.0000001491+2097152.000000 0 0.000000
1492+ 4194304.00000 0 0.0000001492+4194304.000000 0 0.000000
1493+ 8388608.00000 0 0.0000001493+8388608.000000 0 0.000000
1494+TOO LONG 0 TOO LONG1494+TOO LONG 0 TOO LONG
1495+SET SESSION query_exec_time=default;1495+SET SESSION query_exec_time=default;
1496+SET SESSION query_exec_time=0.1;1496+SET SESSION query_exec_time=0.1;
@@ -1511,7 +1511,7 @@
1511+ 1000.000000 0 0.0000001511+ 1000.000000 0 0.000000
1512+ 10000.000000 0 0.0000001512+ 10000.000000 0 0.000000
1513+ 100000.000000 0 0.0000001513+ 100000.000000 0 0.000000
1514+ 1000000.00000 0 0.0000001514+1000000.000000 0 0.000000
1515+TOO LONG 0 TOO LONG1515+TOO LONG 0 TOO LONG
1516+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1516+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1517+time count total1517+time count total
@@ -1527,7 +1527,7 @@
1527+ 1000.000000 0 0.0000001527+ 1000.000000 0 0.000000
1528+ 10000.000000 0 0.0000001528+ 10000.000000 0 0.000000
1529+ 100000.000000 0 0.0000001529+ 100000.000000 0 0.000000
1530+ 1000000.00000 0 0.0000001530+1000000.000000 0 0.000000
1531+TOO LONG 0 TOO LONG1531+TOO LONG 0 TOO LONG
1532+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;1532+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
1533+SET SESSION query_exec_time=0.31;1533+SET SESSION query_exec_time=0.31;
@@ -1637,7 +1637,7 @@
1637+ 1000.000000 0 0.0000001637+ 1000.000000 0 0.000000
1638+ 10000.000000 0 0.0000001638+ 10000.000000 0 0.000000
1639+ 100000.000000 0 0.0000001639+ 100000.000000 0 0.000000
1640+ 1000000.00000 0 0.0000001640+1000000.000000 0 0.000000
1641+TOO LONG 0 TOO LONG1641+TOO LONG 0 TOO LONG
1642+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1642+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1643+time count total1643+time count total
@@ -1653,7 +1653,7 @@
1653+ 1000.000000 0 0.0000001653+ 1000.000000 0 0.000000
1654+ 10000.000000 0 0.0000001654+ 10000.000000 0 0.000000
1655+ 100000.000000 0 0.0000001655+ 100000.000000 0 0.000000
1656+ 1000000.00000 0 0.0000001656+1000000.000000 0 0.000000
1657+TOO LONG 0 TOO LONG1657+TOO LONG 0 TOO LONG
1658+SET SESSION query_exec_time=default;1658+SET SESSION query_exec_time=default;
1659+SET SESSION query_exec_time=0.1;1659+SET SESSION query_exec_time=0.1;
@@ -1677,7 +1677,7 @@
1677+ 16807.000000 0 0.0000001677+ 16807.000000 0 0.000000
1678+ 117649.000000 0 0.0000001678+ 117649.000000 0 0.000000
1679+ 823543.000000 0 0.0000001679+ 823543.000000 0 0.000000
1680+ 5764801.00000 0 0.0000001680+5764801.000000 0 0.000000
1681+TOO LONG 0 TOO LONG1681+TOO LONG 0 TOO LONG
1682+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1682+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1683+time count total1683+time count total
@@ -1696,7 +1696,7 @@
1696+ 16807.000000 0 0.0000001696+ 16807.000000 0 0.000000
1697+ 117649.000000 0 0.0000001697+ 117649.000000 0 0.000000
1698+ 823543.000000 0 0.0000001698+ 823543.000000 0 0.000000
1699+ 5764801.00000 0 0.0000001699+5764801.000000 0 0.000000
1700+TOO LONG 0 TOO LONG1700+TOO LONG 0 TOO LONG
1701+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;1701+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
1702+SET SESSION query_exec_time=0.31;1702+SET SESSION query_exec_time=0.31;
@@ -1809,7 +1809,7 @@
1809+ 16807.000000 0 0.0000001809+ 16807.000000 0 0.000000
1810+ 117649.000000 0 0.0000001810+ 117649.000000 0 0.000000
1811+ 823543.000000 0 0.0000001811+ 823543.000000 0 0.000000
1812+ 5764801.00000 0 0.0000001812+5764801.000000 0 0.000000
1813+TOO LONG 0 TOO LONG1813+TOO LONG 0 TOO LONG
1814+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1814+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1815+time count total1815+time count total
@@ -1828,7 +1828,7 @@
1828+ 16807.000000 0 0.0000001828+ 16807.000000 0 0.000000
1829+ 117649.000000 0 0.0000001829+ 117649.000000 0 0.000000
1830+ 823543.000000 0 0.0000001830+ 823543.000000 0 0.000000
1831+ 5764801.00000 0 0.0000001831+5764801.000000 0 0.000000
1832+TOO LONG 0 TOO LONG1832+TOO LONG 0 TOO LONG
1833+SET SESSION query_exec_time=default;1833+SET SESSION query_exec_time=default;
1834+SET SESSION query_exec_time=0.1;1834+SET SESSION query_exec_time=0.1;
@@ -1842,7 +1842,7 @@
1842+ 1.000000 0 0.0000001842+ 1.000000 0 0.000000
1843+ 156.000000 0 0.0000001843+ 156.000000 0 0.000000
1844+ 24336.000000 0 0.0000001844+ 24336.000000 0 0.000000
1845+ 3796416.00000 0 0.0000001845+3796416.000000 0 0.000000
1846+TOO LONG 0 TOO LONG1846+TOO LONG 0 TOO LONG
1847+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1847+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1848+time count total1848+time count total
@@ -1851,7 +1851,7 @@
1851+ 1.000000 0 0.0000001851+ 1.000000 0 0.000000
1852+ 156.000000 0 0.0000001852+ 156.000000 0 0.000000
1853+ 24336.000000 0 0.0000001853+ 24336.000000 0 0.000000
1854+ 3796416.00000 0 0.0000001854+3796416.000000 0 0.000000
1855+TOO LONG 0 TOO LONG1855+TOO LONG 0 TOO LONG
1856+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;1856+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
1857+SET SESSION query_exec_time=0.31;1857+SET SESSION query_exec_time=0.31;
@@ -1954,7 +1954,7 @@
1954+ 1.000000 11 4.0500001954+ 1.000000 11 4.050000
1955+ 156.000000 11 25.6999991955+ 156.000000 11 25.699999
1956+ 24336.000000 0 0.0000001956+ 24336.000000 0 0.000000
1957+ 3796416.00000 0 0.0000001957+3796416.000000 0 0.000000
1958+TOO LONG 0 TOO LONG1958+TOO LONG 0 TOO LONG
1959+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1959+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1960+time count total1960+time count total
@@ -1963,7 +1963,7 @@
1963+ 1.000000 11 4.0500001963+ 1.000000 11 4.050000
1964+ 156.000000 11 25.6999991964+ 156.000000 11 25.699999
1965+ 24336.000000 0 0.0000001965+ 24336.000000 0 0.000000
1966+ 3796416.00000 0 0.0000001966+3796416.000000 0 0.000000
1967+TOO LONG 0 TOO LONG1967+TOO LONG 0 TOO LONG
1968+SET SESSION query_exec_time=default;1968+SET SESSION query_exec_time=default;
1969+SET SESSION query_exec_time=0.1;1969+SET SESSION query_exec_time=0.1;
@@ -1976,7 +1976,7 @@
1976+ 0.001000 0 0.0000001976+ 0.001000 0 0.000000
1977+ 1.000000 0 0.0000001977+ 1.000000 0 0.000000
1978+ 1000.000000 0 0.0000001978+ 1000.000000 0 0.000000
1979+ 1000000.00000 0 0.0000001979+1000000.000000 0 0.000000
1980+TOO LONG 0 TOO LONG1980+TOO LONG 0 TOO LONG
1981+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;1981+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
1982+time count total1982+time count total
@@ -1984,7 +1984,7 @@
1984+ 0.001000 0 0.0000001984+ 0.001000 0 0.000000
1985+ 1.000000 0 0.0000001985+ 1.000000 0 0.000000
1986+ 1000.000000 0 0.0000001986+ 1000.000000 0 0.000000
1987+ 1000000.00000 0 0.0000001987+1000000.000000 0 0.000000
1988+TOO LONG 0 TOO LONG1988+TOO LONG 0 TOO LONG
1989+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;1989+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
1990+SET SESSION query_exec_time=0.31;1990+SET SESSION query_exec_time=0.31;
@@ -2086,7 +2086,7 @@
2086+ 0.001000 0 0.0000002086+ 0.001000 0 0.000000
2087+ 1.000000 11 4.0500002087+ 1.000000 11 4.050000
2088+ 1000.000000 11 25.6999992088+ 1000.000000 11 25.699999
2089+ 1000000.00000 0 0.0000002089+1000000.000000 0 0.000000
2090+TOO LONG 0 TOO LONG2090+TOO LONG 0 TOO LONG
2091+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2091+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2092+time count total2092+time count total
@@ -2094,7 +2094,7 @@
2094+ 0.001000 0 0.0000002094+ 0.001000 0 0.000000
2095+ 1.000000 11 4.0500002095+ 1.000000 11 4.050000
2096+ 1000.000000 11 25.6999992096+ 1000.000000 11 25.699999
2097+ 1000000.00000 0 0.0000002097+1000000.000000 0 0.000000
2098+TOO LONG 0 TOO LONG2098+TOO LONG 0 TOO LONG
2099+SET SESSION query_exec_time=default;2099+SET SESSION query_exec_time=default;
2100+SET SESSION query_exec_time=0.1;2100+SET SESSION query_exec_time=0.1;
@@ -2109,7 +2109,7 @@
2109+ 0.001000 0 0.0000002109+ 0.001000 0 0.000000
2110+ 1.000000 0 0.0000002110+ 1.000000 0 0.000000
2111+ 1000.000000 0 0.0000002111+ 1000.000000 0 0.000000
2112+ 1000000.00000 0 0.0000002112+1000000.000000 0 0.000000
2113+TOO LONG 0 TOO LONG2113+TOO LONG 0 TOO LONG
2114+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2114+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2115+time count total2115+time count total
@@ -2117,7 +2117,7 @@
2117+ 0.001000 0 0.0000002117+ 0.001000 0 0.000000
2118+ 1.000000 0 0.0000002118+ 1.000000 0 0.000000
2119+ 1000.000000 0 0.0000002119+ 1000.000000 0 0.000000
2120+ 1000000.00000 0 0.0000002120+1000000.000000 0 0.000000
2121+TOO LONG 0 TOO LONG2121+TOO LONG 0 TOO LONG
2122+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;2122+SET GLOBAL QUERY_RESPONSE_TIME_STATS=1;
2123+SET SESSION query_exec_time=0.31;2123+SET SESSION query_exec_time=0.31;
@@ -2219,7 +2219,7 @@
2219+ 0.001000 0 0.0000002219+ 0.001000 0 0.000000
2220+ 1.000000 11 4.0500002220+ 1.000000 11 4.050000
2221+ 1000.000000 11 25.6999992221+ 1000.000000 11 25.699999
2222+ 1000000.00000 0 0.0000002222+1000000.000000 0 0.000000
2223+TOO LONG 0 TOO LONG2223+TOO LONG 0 TOO LONG
2224+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2224+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2225+time count total2225+time count total
@@ -2227,7 +2227,7 @@
2227+ 0.001000 0 0.0000002227+ 0.001000 0 0.000000
2228+ 1.000000 11 4.0500002228+ 1.000000 11 4.050000
2229+ 1000.000000 11 25.6999992229+ 1000.000000 11 25.699999
2230+ 1000000.00000 0 0.0000002230+1000000.000000 0 0.000000
2231+TOO LONG 0 TOO LONG2231+TOO LONG 0 TOO LONG
2232+SET SESSION query_exec_time=default;2232+SET SESSION query_exec_time=default;
2233+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;2233+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
@@ -2317,10 +2317,10 @@
2317+ 131072.000000 0 0.0000002317+ 131072.000000 0 0.000000
2318+ 262144.000000 0 0.0000002318+ 262144.000000 0 0.000000
2319+ 524288.000000 0 0.0000002319+ 524288.000000 0 0.000000
2320+ 1048576.00000 0 0.0000002320+1048576.000000 0 0.000000
2321+ 2097152.00000 0 0.0000002321+2097152.000000 0 0.000000
2322+ 4194304.00000 0 0.0000002322+4194304.000000 0 0.000000
2323+ 8388608.00000 0 0.0000002323+8388608.000000 0 0.000000
2324+TOO LONG 0 TOO LONG2324+TOO LONG 0 TOO LONG
2325+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2325+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2326+time count total2326+time count total
@@ -2363,10 +2363,10 @@
2363+ 131072.000000 0 0.0000002363+ 131072.000000 0 0.000000
2364+ 262144.000000 0 0.0000002364+ 262144.000000 0 0.000000
2365+ 524288.000000 0 0.0000002365+ 524288.000000 0 0.000000
2366+ 1048576.00000 0 0.0000002366+1048576.000000 0 0.000000
2367+ 2097152.00000 0 0.0000002367+2097152.000000 0 0.000000
2368+ 4194304.00000 0 0.0000002368+4194304.000000 0 0.000000
2369+ 8388608.00000 0 0.0000002369+8388608.000000 0 0.000000
2370+TOO LONG 0 TOO LONG2370+TOO LONG 0 TOO LONG
2371+SET SESSION query_exec_time=default;2371+SET SESSION query_exec_time=default;
2372+SET SESSION query_exec_time=0.1;2372+SET SESSION query_exec_time=0.1;
@@ -2441,10 +2441,10 @@
2441+ 131072.000000 0 0.0000002441+ 131072.000000 0 0.000000
2442+ 262144.000000 0 0.0000002442+ 262144.000000 0 0.000000
2443+ 524288.000000 0 0.0000002443+ 524288.000000 0 0.000000
2444+ 1048576.00000 0 0.0000002444+1048576.000000 0 0.000000
2445+ 2097152.00000 0 0.0000002445+2097152.000000 0 0.000000
2446+ 4194304.00000 0 0.0000002446+4194304.000000 0 0.000000
2447+ 8388608.00000 0 0.0000002447+8388608.000000 0 0.000000
2448+TOO LONG 0 TOO LONG2448+TOO LONG 0 TOO LONG
2449+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2449+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2450+time count total2450+time count total
@@ -2487,10 +2487,10 @@
2487+ 131072.000000 0 0.0000002487+ 131072.000000 0 0.000000
2488+ 262144.000000 0 0.0000002488+ 262144.000000 0 0.000000
2489+ 524288.000000 0 0.0000002489+ 524288.000000 0 0.000000
2490+ 1048576.00000 0 0.0000002490+1048576.000000 0 0.000000
2491+ 2097152.00000 0 0.0000002491+2097152.000000 0 0.000000
2492+ 4194304.00000 0 0.0000002492+4194304.000000 0 0.000000
2493+ 8388608.00000 0 0.0000002493+8388608.000000 0 0.000000
2494+TOO LONG 0 TOO LONG2494+TOO LONG 0 TOO LONG
2495+SET SESSION query_exec_time=default;2495+SET SESSION query_exec_time=default;
2496+SET SESSION query_exec_time=0.1;2496+SET SESSION query_exec_time=0.1;
@@ -2538,7 +2538,7 @@
2538+ 1000.000000 0 0.0000002538+ 1000.000000 0 0.000000
2539+ 10000.000000 0 0.0000002539+ 10000.000000 0 0.000000
2540+ 100000.000000 0 0.0000002540+ 100000.000000 0 0.000000
2541+ 1000000.00000 0 0.0000002541+1000000.000000 0 0.000000
2542+TOO LONG 0 TOO LONG2542+TOO LONG 0 TOO LONG
2543+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2543+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2544+time count total2544+time count total
@@ -2554,7 +2554,7 @@
2554+ 1000.000000 0 0.0000002554+ 1000.000000 0 0.000000
2555+ 10000.000000 0 0.0000002555+ 10000.000000 0 0.000000
2556+ 100000.000000 0 0.0000002556+ 100000.000000 0 0.000000
2557+ 1000000.00000 0 0.0000002557+1000000.000000 0 0.000000
2558+TOO LONG 0 TOO LONG2558+TOO LONG 0 TOO LONG
2559+SET SESSION query_exec_time=default;2559+SET SESSION query_exec_time=default;
2560+SET SESSION query_exec_time=0.1;2560+SET SESSION query_exec_time=0.1;
@@ -2605,7 +2605,7 @@
2605+ 16807.000000 0 0.0000002605+ 16807.000000 0 0.000000
2606+ 117649.000000 0 0.0000002606+ 117649.000000 0 0.000000
2607+ 823543.000000 0 0.0000002607+ 823543.000000 0 0.000000
2608+ 5764801.00000 0 0.0000002608+5764801.000000 0 0.000000
2609+TOO LONG 0 TOO LONG2609+TOO LONG 0 TOO LONG
2610+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2610+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2611+time count total2611+time count total
@@ -2624,7 +2624,7 @@
2624+ 16807.000000 0 0.0000002624+ 16807.000000 0 0.000000
2625+ 117649.000000 0 0.0000002625+ 117649.000000 0 0.000000
2626+ 823543.000000 0 0.0000002626+ 823543.000000 0 0.000000
2627+ 5764801.00000 0 0.0000002627+5764801.000000 0 0.000000
2628+TOO LONG 0 TOO LONG2628+TOO LONG 0 TOO LONG
2629+SET SESSION query_exec_time=default;2629+SET SESSION query_exec_time=default;
2630+SET SESSION query_exec_time=0.1;2630+SET SESSION query_exec_time=0.1;
@@ -2665,7 +2665,7 @@
2665+ 1.000000 55 8.4500002665+ 1.000000 55 8.450000
2666+ 156.000000 11 25.6999992666+ 156.000000 11 25.699999
2667+ 24336.000000 0 0.0000002667+ 24336.000000 0 0.000000
2668+ 3796416.00000 0 0.0000002668+3796416.000000 0 0.000000
2669+TOO LONG 0 TOO LONG2669+TOO LONG 0 TOO LONG
2670+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2670+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2671+time count total2671+time count total
@@ -2674,7 +2674,7 @@
2674+ 1.000000 55 8.4500002674+ 1.000000 55 8.450000
2675+ 156.000000 11 25.6999992675+ 156.000000 11 25.699999
2676+ 24336.000000 0 0.0000002676+ 24336.000000 0 0.000000
2677+ 3796416.00000 0 0.0000002677+3796416.000000 0 0.000000
2678+TOO LONG 0 TOO LONG2678+TOO LONG 0 TOO LONG
2679+SET SESSION query_exec_time=default;2679+SET SESSION query_exec_time=default;
2680+SET SESSION query_exec_time=0.1;2680+SET SESSION query_exec_time=0.1;
@@ -2714,7 +2714,7 @@
2714+ 0.001000 0 0.0000002714+ 0.001000 0 0.000000
2715+ 1.000000 55 8.4500002715+ 1.000000 55 8.450000
2716+ 1000.000000 11 25.6999992716+ 1000.000000 11 25.699999
2717+ 1000000.00000 0 0.0000002717+1000000.000000 0 0.000000
2718+TOO LONG 0 TOO LONG2718+TOO LONG 0 TOO LONG
2719+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2719+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2720+time count total2720+time count total
@@ -2722,7 +2722,7 @@
2722+ 0.001000 0 0.0000002722+ 0.001000 0 0.000000
2723+ 1.000000 55 8.4500002723+ 1.000000 55 8.450000
2724+ 1000.000000 11 25.6999992724+ 1000.000000 11 25.699999
2725+ 1000000.00000 0 0.0000002725+1000000.000000 0 0.000000
2726+TOO LONG 0 TOO LONG2726+TOO LONG 0 TOO LONG
2727+SET SESSION query_exec_time=default;2727+SET SESSION query_exec_time=default;
2728+SET SESSION query_exec_time=0.1;2728+SET SESSION query_exec_time=0.1;
@@ -2764,7 +2764,7 @@
2764+ 0.001000 0 0.0000002764+ 0.001000 0 0.000000
2765+ 1.000000 55 8.4500002765+ 1.000000 55 8.450000
2766+ 1000.000000 11 25.6999992766+ 1000.000000 11 25.699999
2767+ 1000000.00000 0 0.0000002767+1000000.000000 0 0.000000
2768+TOO LONG 0 TOO LONG2768+TOO LONG 0 TOO LONG
2769+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;2769+SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
2770+time count total2770+time count total
@@ -2772,7 +2772,7 @@
2772+ 0.001000 0 0.0000002772+ 0.001000 0 0.000000
2773+ 1.000000 55 8.4500002773+ 1.000000 55 8.450000
2774+ 1000.000000 11 25.6999992774+ 1000.000000 11 25.699999
2775+ 1000000.00000 0 0.0000002775+1000000.000000 0 0.000000
2776+TOO LONG 0 TOO LONG2776+TOO LONG 0 TOO LONG
2777+SET SESSION query_exec_time=default;2777+SET SESSION query_exec_time=default;
2778+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;2778+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE=default;
@@ -3002,7 +3002,7 @@
3002 extern bool in_bootstrap;3002 extern bool in_bootstrap;
3003--- /dev/null3003--- /dev/null
3004+++ b/sql/query_response_time.cc3004+++ b/sql/query_response_time.cc
3005@@ -0,0 +1,310 @@3005@@ -0,0 +1,302 @@
3006+#include "mysql_version.h"3006+#include "mysql_version.h"
3007+#include "my_global.h"3007+#include "my_global.h"
3008+#ifdef HAVE_RESPONSE_TIME_DISTRIBUTION3008+#ifdef HAVE_RESPONSE_TIME_DISTRIBUTION
@@ -3021,7 +3021,6 @@
3021+#define MAXIMUM_BASE QRT_MAXIMUM_BASE3021+#define MAXIMUM_BASE QRT_MAXIMUM_BASE
3022+#define POSITIVE_POWER_FILLER QRT_POSITIVE_POWER_FILLER3022+#define POSITIVE_POWER_FILLER QRT_POSITIVE_POWER_FILLER
3023+#define NEGATIVE_POWER_FILLER QRT_NEGATIVE_POWER_FILLER3023+#define NEGATIVE_POWER_FILLER QRT_NEGATIVE_POWER_FILLER
3024+#define STRING_OVERFLOW QRT_STRING_OVERFLOW
3025+#define TIME_OVERFLOW QRT_TIME_OVERFLOW3024+#define TIME_OVERFLOW QRT_TIME_OVERFLOW
3026+#define DEFAULT_BASE QRT_DEFAULT_BASE3025+#define DEFAULT_BASE QRT_DEFAULT_BASE
3027+3026+
@@ -3142,20 +3141,13 @@
3142+ ulonglong m_bound[OVERALL_POWER_COUNT];3141+ ulonglong m_bound[OVERALL_POWER_COUNT];
3143+};3142+};
3144+3143+
3145+void print_time(char* buffer, std::size_t buffer_size, std::size_t string_positive_power_length, const char* format, uint64 value)3144+static
3145+void print_time(char* buffer, std::size_t buffer_size, const char* format,
3146+ uint64 value)
3146+{3147+{
3147+ memset(buffer,'X',buffer_size);
3148+ buffer[string_positive_power_length]= '.';
3149+ ulonglong second= (value / MILLION);3148+ ulonglong second= (value / MILLION);
3150+ ulonglong microsecond= (value % MILLION);3149+ ulonglong microsecond= (value % MILLION);
3151+ std::size_t result_length= snprintf(buffer,buffer_size,format,second,microsecond);3150+ my_snprintf(buffer, buffer_size, format, second, microsecond);
3152+ if(result_length < 0)
3153+ {
3154+ assert(sizeof(STRING_OVERFLOW) <= buffer_size);
3155+ memcpy(buffer, STRING_OVERFLOW, sizeof(STRING_OVERFLOW));
3156+ return;
3157+ }
3158+ buffer[result_length]= 0;
3159+}3151+}
3160+3152+
3161+class time_collector3153+class time_collector
@@ -3248,8 +3240,8 @@
3248+ }3240+ }
3249+ else3241+ else
3250+ {3242+ {
3251+ print_time(time,sizeof(time),TIME_STRING_POSITIVE_POWER_LENGTH,TIME_STRING_FORMAT,this->bound(i));3243+ print_time(time, sizeof(time), TIME_STRING_FORMAT, this->bound(i));
3252+ print_time(total,sizeof(total),TOTAL_STRING_POSITIVE_POWER_LENGTH,TOTAL_STRING_FORMAT,this->total(i));3244+ print_time(total, sizeof(total), TOTAL_STRING_FORMAT, this->total(i));
3253+ }3245+ }
3254+ fields[0]->store(time,strlen(time),system_charset_info);3246+ fields[0]->store(time,strlen(time),system_charset_info);
3255+ fields[1]->store(this->count(i));3247+ fields[1]->store(this->count(i));
@@ -3315,7 +3307,7 @@
3315+#endif // HAVE_RESPONSE_TIME_DISTRIBUTION3307+#endif // HAVE_RESPONSE_TIME_DISTRIBUTION
3316--- /dev/null3308--- /dev/null
3317+++ b/sql/query_response_time.h3309+++ b/sql/query_response_time.h
3318@@ -0,0 +1,71 @@3310@@ -0,0 +1,64 @@
3319+#ifndef QUERY_RESPONSE_TIME_H3311+#ifndef QUERY_RESPONSE_TIME_H
3320+#define QUERY_RESPONSE_TIME_H3312+#define QUERY_RESPONSE_TIME_H
3321+3313+
@@ -3348,18 +3340,13 @@
3348+ and number 7234 result is:3340+ and number 7234 result is:
3349+ ' 7234'3341+ ' 7234'
3350+*/3342+*/
3351+#define QRT_POSITIVE_POWER_FILLER " "3343+#define QRT_POSITIVE_POWER_FILLER ""
3352+/*3344+/*
3353+ Filler for fractional number. Similiary to whole number3345+ Filler for fractional number. Similiary to whole number
3354+*/3346+*/
3355+#define QRT_NEGATIVE_POWER_FILLER "0"3347+#define QRT_NEGATIVE_POWER_FILLER "0"
3356+3348+
3357+/*3349+/*
3358+ Message if string overflow (string overflow - internal error, this string say about bug in QRT)
3359+*/
3360+#define QRT_STRING_OVERFLOW "TOO BIG STRING"
3361+
3362+/*
3363+ Message if time too big for statistic collecting (very long query)3350+ Message if time too big for statistic collecting (very long query)
3364+*/3351+*/
3365+#define QRT_TIME_OVERFLOW "TOO LONG"3352+#define QRT_TIME_OVERFLOW "TOO LONG"
@@ -3368,13 +3355,11 @@
3368+3355+
3369+#define QRT_TIME_STRING_LENGTH \3356+#define QRT_TIME_STRING_LENGTH \
3370+ max( (QRT_TIME_STRING_POSITIVE_POWER_LENGTH + 1 /* '.' */ + 6 /*QRT_TIME_STRING_NEGATIVE_POWER_LENGTH*/), \3357+ max( (QRT_TIME_STRING_POSITIVE_POWER_LENGTH + 1 /* '.' */ + 6 /*QRT_TIME_STRING_NEGATIVE_POWER_LENGTH*/), \
3371+ max( (sizeof(QRT_TIME_OVERFLOW) - 1), \3358+ (sizeof(QRT_TIME_OVERFLOW) - 1) )
3372+ (sizeof(QRT_STRING_OVERFLOW) - 1) ) )
3373+3359+
3374+#define QRT_TOTAL_STRING_LENGTH \3360+#define QRT_TOTAL_STRING_LENGTH \
3375+ max( (QRT_TOTAL_STRING_POSITIVE_POWER_LENGTH + 1 /* '.' */ + 6 /*QRT_TOTAL_STRING_NEGATIVE_POWER_LENGTH*/), \3361+ max( (QRT_TOTAL_STRING_POSITIVE_POWER_LENGTH + 1 /* '.' */ + 6 /*QRT_TOTAL_STRING_NEGATIVE_POWER_LENGTH*/), \
3376+ max( (sizeof(QRT_TIME_OVERFLOW) - 1), \3362+ (sizeof(QRT_TIME_OVERFLOW) - 1) )
3377+ (sizeof(QRT_STRING_OVERFLOW) - 1) ) )
3378+3363+
3379+extern ST_SCHEMA_TABLE query_response_time_table;3364+extern ST_SCHEMA_TABLE query_response_time_table;
3380+3365+

Subscribers

People subscribed via source and target branches