Merge 2.1.9 fixes for pt-pmp.

This commit is contained in:
Daniel Nichter
2013-02-05 09:51:24 -07:00
34 changed files with 598 additions and 232 deletions

View File

@@ -82,6 +82,7 @@ aggregate_stacktrace() {
}
else {
targ = \$4;
tfile= \$NF;
}
if ( targ ~ /[<\\(]/ ) {
targ = substr(\$0, index(\$0, \" in \") + 4);
@@ -126,6 +127,13 @@ aggregate_stacktrace() {
}
else {
fname = targ;
if ( tfile ~ /^\// ) {
last=split(tfile,filen,/\//);
fname = targ \"(\" filen[last] \")\";
}
else {
fname = targ
}
}
if ( ${maxlen:-0} == 0 || c < ${maxlen:-0} ) {
if (s != \"\" ) {

View File

@@ -3596,6 +3596,19 @@ sub parse_event {
if ( $packet->{data_len} == 0 ) {
PTDEBUG && _d('TCP control:',
map { uc $_ } grep { $packet->{$_} } qw(syn ack fin rst));
if ( $packet->{'fin'}
&& ($session->{state} || '') eq 'server_handshake' ) {
PTDEBUG && _d('Client aborted connection');
my $event = {
cmd => 'Admin',
arg => 'administrator command: Connect',
ts => $packet->{ts},
};
$session->{attribs}->{Error_msg} = 'Client closed connection during handshake';
$event = $self->_make_event($event, $packet, $session);
delete $self->{sessions}->{$session->{client}};
return $event;
}
return;
}
@@ -3812,7 +3825,8 @@ sub _packet_from_server {
}
my $event;
if ( $session->{state} eq 'client_auth' ) {
if ( $session->{state} eq 'client_auth'
|| $session->{state} eq 'server_handshake' ) {
PTDEBUG && _d('Connection failed');
$event = {
cmd => 'Admin',
@@ -3842,8 +3856,10 @@ sub _packet_from_server {
cmd => $com,
arg => $arg,
ts => $packet->{ts},
Error_no => $error->{errno} ? "#$error->{errno}" : 'none',
};
if ( $error->{errno} ) {
$event->{Error_no} = $error->{errno};
}
$session->{attribs}->{Error_msg} = $error->{message};
return $self->_make_event($event, $packet, $session);
}
@@ -4054,13 +4070,17 @@ sub _make_event {
Thread_id => $session->{thread_id},
pos_in_log => $session->{pos_in_log},
Query_time => timestamp_diff($session->{ts}, $packet->{ts}),
Error_no => $event->{Error_no} || 'none',
Rows_affected => ($event->{Rows_affected} || 0),
Warning_count => ($event->{Warning_count} || 0),
No_good_index_used => ($event->{No_good_index_used} ? 'Yes' : 'No'),
No_index_used => ($event->{No_index_used} ? 'Yes' : 'No'),
};
@{$new_event}{keys %{$session->{attribs}}} = values %{$session->{attribs}};
foreach my $opt_attrib ( qw(Error_no) ) {
if ( defined $event->{$opt_attrib} ) {
$new_event->{$opt_attrib} = $event->{$opt_attrib};
}
}
PTDEBUG && _d('Properties of event:', Dumper($new_event));
delete $session->{cmd};
@@ -4191,9 +4211,17 @@ sub parse_error_packet {
}
my $errno = to_num(substr($data, 0, 4));
my $marker = to_string(substr($data, 4, 2));
return unless $marker eq '#';
my $sqlstate = to_string(substr($data, 6, 10));
my $message = to_string(substr($data, 16));
my $sqlstate = '';
my $message = '';
if ( $marker eq '#' ) {
$sqlstate = to_string(substr($data, 6, 10));
$message = to_string(substr($data, 16));
}
else {
$marker = '';
$message = to_string(substr($data, 4));
}
return unless $message;
my $pkt = {
errno => $errno,
sqlstate => $marker . $sqlstate,

View File

@@ -340,6 +340,19 @@ sub parse_event {
if ( $packet->{data_len} == 0 ) {
PTDEBUG && _d('TCP control:',
map { uc $_ } grep { $packet->{$_} } qw(syn ack fin rst));
if ( $packet->{'fin'}
&& ($session->{state} || '') eq 'server_handshake' ) {
PTDEBUG && _d('Client aborted connection');
my $event = {
cmd => 'Admin',
arg => 'administrator command: Connect',
ts => $packet->{ts},
};
$session->{attribs}->{Error_msg} = 'Client closed connection during handshake';
$event = $self->_make_event($event, $packet, $session);
delete $self->{sessions}->{$session->{client}};
return $event;
}
return;
}
@@ -612,7 +625,8 @@ sub _packet_from_server {
}
my $event;
if ( $session->{state} eq 'client_auth' ) {
if ( $session->{state} eq 'client_auth'
|| $session->{state} eq 'server_handshake' ) {
PTDEBUG && _d('Connection failed');
$event = {
cmd => 'Admin',
@@ -644,8 +658,11 @@ sub _packet_from_server {
cmd => $com,
arg => $arg,
ts => $packet->{ts},
Error_no => $error->{errno} ? "#$error->{errno}" : 'none',
};
if ( $error->{errno} ) {
# https://bugs.launchpad.net/percona-toolkit/+bug/823411
$event->{Error_no} = $error->{errno};
}
$session->{attribs}->{Error_msg} = $error->{message};
return $self->_make_event($event, $packet, $session);
}
@@ -902,13 +919,18 @@ sub _make_event {
Thread_id => $session->{thread_id},
pos_in_log => $session->{pos_in_log},
Query_time => timestamp_diff($session->{ts}, $packet->{ts}),
Error_no => $event->{Error_no} || 'none',
Rows_affected => ($event->{Rows_affected} || 0),
Warning_count => ($event->{Warning_count} || 0),
No_good_index_used => ($event->{No_good_index_used} ? 'Yes' : 'No'),
No_index_used => ($event->{No_index_used} ? 'Yes' : 'No'),
};
@{$new_event}{keys %{$session->{attribs}}} = values %{$session->{attribs}};
# https://bugs.launchpad.net/percona-toolkit/+bug/823411
foreach my $opt_attrib ( qw(Error_no) ) {
if ( defined $event->{$opt_attrib} ) {
$new_event->{$opt_attrib} = $event->{$opt_attrib};
}
}
PTDEBUG && _d('Properties of event:', Dumper($new_event));
# Delete cmd to prevent re-making the same event if the
@@ -1070,9 +1092,17 @@ sub parse_error_packet {
}
my $errno = to_num(substr($data, 0, 4));
my $marker = to_string(substr($data, 4, 2));
return unless $marker eq '#';
my $sqlstate = to_string(substr($data, 6, 10));
my $message = to_string(substr($data, 16));
my $sqlstate = '';
my $message = '';
if ( $marker eq '#' ) {
$sqlstate = to_string(substr($data, 6, 10));
$message = to_string(substr($data, 16));
}
else {
$marker = '';
$message = to_string(substr($data, 4));
}
return unless $message;
my $pkt = {
errno => $errno,
sqlstate => $marker . $sqlstate,

View File

@@ -9,7 +9,7 @@ BEGIN {
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More tests => 72;
use Test::More;
use MySQLProtocolParser;
use TcpdumpParser;
@@ -38,7 +38,6 @@ test_protocol_parser(
pos_in_log => 0,
bytes => length('select "hello world" as greeting'),
cmd => 'Query',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -66,7 +65,6 @@ test_protocol_parser(
pos_in_log => 1470,
bytes => length('administrator command: Connect'),
cmd => 'Admin',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -84,7 +82,6 @@ test_protocol_parser(
pos_in_log => 2449,
ts => '090412 11:00:13.118643',
user => 'msandbox',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -102,7 +99,6 @@ test_protocol_parser(
pos_in_log => 3298,
ts => '090412 11:00:13.119079',
user => 'msandbox',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -120,7 +116,6 @@ test_protocol_parser(
pos_in_log => '4186',
ts => '090412 11:00:13.119487',
user => 'msandbox',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -177,7 +172,7 @@ test_protocol_parser(
pos_in_log => 0,
bytes => length('select 5 from foo'),
cmd => 'Query',
Error_no => "#1046",
Error_no => "1046",
Error_msg => 'No database selected',
Rows_affected => 0,
Warning_count => 0,
@@ -194,7 +189,7 @@ test_protocol_parser(
protocol => $protocol,
file => "$sample/tcpdump005.txt",
result => [
{ Error_no => 'none',
{
Rows_affected => 1,
Query_time => '0.000435',
Thread_id => 4294967296,
@@ -212,7 +207,7 @@ test_protocol_parser(
No_good_index_used => 'No',
No_index_used => 'No',
},
{ Error_no => 'none',
{
Rows_affected => 2,
Query_time => '0.000565',
Thread_id => 4294967296,
@@ -252,7 +247,6 @@ test_protocol_parser(
pos_in_log => 0,
bytes => length('select * from t'),
cmd => 'Query',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -280,7 +274,6 @@ test_protocol_parser(
pos_in_log => 0,
bytes => length('insert into t values(current_date)'),
cmd => 'Query',
Error_no => 'none',
Rows_affected => 1,
Warning_count => 1,
No_good_index_used => 'No',
@@ -412,7 +405,6 @@ test_protocol_parser(
pos_in_log => 0,
bytes => length('select "hello world" as greeting'),
cmd => 'Query',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -434,7 +426,7 @@ test_protocol_parser(
file => "$sample/tcpdump013.txt",
desc => 'old password and compression',
result => [
{ Error_no => 'none',
{
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.034355',
@@ -466,7 +458,6 @@ test_protocol_parser(
desc => 'in-stream compression detection',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.001375',
@@ -503,7 +494,6 @@ SKIP: {
desc => 'compressed data',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.006415',
@@ -522,7 +512,6 @@ SKIP: {
user => 'msandbox',
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'Yes',
Query_time => '0.002884',
@@ -541,7 +530,6 @@ SKIP: {
user => 'msandbox',
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -574,7 +562,6 @@ test_protocol_parser(
desc => 'TCP retransmission',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.001000',
@@ -607,7 +594,6 @@ test_protocol_parser(
desc => 'Multiple servers',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000206',
@@ -626,7 +612,6 @@ test_protocol_parser(
user => undef,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000203',
@@ -656,7 +641,6 @@ test_protocol_parser(
desc => 'Multiple servers but watch only one',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000206',
@@ -713,7 +697,6 @@ test_protocol_parser(
desc => 'prepared statements, simple, no NULL',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000286',
@@ -733,7 +716,6 @@ test_protocol_parser(
Statement_id => 2,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'Yes',
Query_time => '0.000281',
@@ -753,7 +735,6 @@ test_protocol_parser(
Statement_id => 2,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -782,7 +763,6 @@ test_protocol_parser(
desc => 'prepared statements, NULL value',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000303',
@@ -802,7 +782,6 @@ test_protocol_parser(
Statement_id => 2,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000186',
@@ -832,7 +811,6 @@ test_protocol_parser(
desc => 'prepared statements, string, char and float',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000315',
@@ -852,7 +830,6 @@ test_protocol_parser(
Statement_id => 2,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000249',
@@ -882,7 +859,6 @@ test_protocol_parser(
desc => 'prepared statements, all NULL',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000278',
@@ -902,7 +878,6 @@ test_protocol_parser(
Statement_id => 2,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000159',
@@ -932,7 +907,6 @@ test_protocol_parser(
desc => 'prepared statements, no params',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000268',
@@ -952,7 +926,6 @@ test_protocol_parser(
Statement_id => 2,
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'Yes',
Query_time => '0.000234',
@@ -982,7 +955,6 @@ test_protocol_parser(
desc => 'prepared statements, close statement',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -1011,7 +983,6 @@ test_protocol_parser(
desc => 'prepared statements, reset statement',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000023',
@@ -1041,7 +1012,6 @@ test_protocol_parser(
desc => 'prepared statements, multiple exec, new param',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000292',
@@ -1061,7 +1031,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'Yes',
Query_time => '0.000254',
@@ -1081,7 +1050,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'Yes',
Query_time => '0.000190',
@@ -1101,7 +1069,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'Yes',
Query_time => '0.000166',
@@ -1131,7 +1098,6 @@ test_protocol_parser(
desc => 'prepared statements, real param types',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000221',
@@ -1151,7 +1117,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000203',
@@ -1171,7 +1136,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -1190,7 +1154,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -1219,7 +1182,6 @@ test_protocol_parser(
desc => 'prepared statements, ok response to execute',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000046',
@@ -1239,7 +1201,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000024',
@@ -1269,7 +1230,6 @@ test_protocol_parser(
desc => 'prepared statements, NULL bitmap',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000288',
@@ -1289,7 +1249,6 @@ test_protocol_parser(
user => undef
},
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000322',
@@ -1322,7 +1281,6 @@ test_protocol_parser(
desc => 'issue 761',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000431',
@@ -1354,7 +1312,6 @@ test_protocol_parser(
desc => 'issue 760',
result => [
{
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000430',
@@ -1397,7 +1354,6 @@ test_protocol_parser(
pos_in_log => 1470,
bytes => length('administrator command: Connect'),
cmd => 'Admin',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -1415,7 +1371,6 @@ test_protocol_parser(
pos_in_log => 2449,
ts => '090412 11:00:13.119079',
user => 'msandbox',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -1433,7 +1388,6 @@ test_protocol_parser(
pos_in_log => 3337,
ts => '090412 11:00:13.119487',
user => 'msandbox',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -1441,7 +1395,6 @@ test_protocol_parser(
},
# port reused...
{ ts => '090412 12:00:00.800000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.700000',
@@ -1459,7 +1412,6 @@ test_protocol_parser(
user => 'msandbox',
},
{ ts => '090412 12:00:01.000000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.100000',
@@ -1477,7 +1429,6 @@ test_protocol_parser(
user => 'msandbox',
},
{ ts => '090412 12:00:01.100000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -1516,7 +1467,6 @@ test_protocol_parser(
pos_in_log => 1470,
bytes => length('administrator command: Connect'),
cmd => 'Admin',
Error_no => 'none',
Rows_affected => 0,
Warning_count => 0,
No_good_index_used => 'No',
@@ -1524,7 +1474,6 @@ test_protocol_parser(
},
# port reused...
{ ts => '090412 12:00:00.800000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.700000',
@@ -1542,7 +1491,6 @@ test_protocol_parser(
user => 'msandbox',
},
{ ts => '090412 12:00:01.000000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.100000',
@@ -1560,7 +1508,6 @@ test_protocol_parser(
user => 'msandbox',
},
{ ts => '090412 12:00:01.100000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -1588,7 +1535,6 @@ test_protocol_parser(
desc => 'no server ok (issue 794)',
result => [
{ ts => '090412 12:00:01.000000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000000',
@@ -1606,7 +1552,6 @@ test_protocol_parser(
user => undef
},
{ ts => '090412 12:00:03.000000',
Error_no => 'none',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '1.000000',
@@ -1659,7 +1604,7 @@ test_protocol_parser(
[
{
Error_msg => "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1",
Error_no => '#1064',
Error_no => '1064',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000316',
@@ -1679,7 +1624,7 @@ test_protocol_parser(
},
{
Error_msg => 'Unknown system variable \'nono\'',
Error_no => '#1193',
Error_no => '1193',
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '0.000329',
@@ -1700,7 +1645,107 @@ test_protocol_parser(
],
);
# #############################################################################
# Bug 1103045: pt-query-digest fails to parse non-SQL errors
# https://bugs.launchpad.net/percona-toolkit/+bug/1103045
# #############################################################################
$protocol = new MySQLProtocolParser(
server => '127.0.0.1',
port => '12345',
);
test_protocol_parser(
parser => $tcpdump,
protocol => $protocol,
file => "$sample/tcpdump043.txt",
desc => 'Bad connection',
result =>
[
{
Error_msg => 'Got packets out of order',
Error_no => 1156,
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '3.536306',
Rows_affected => 0,
Thread_id => 27,
Warning_count => 0,
arg => 'administrator command: Connect',
bytes => 30,
cmd => 'Admin',
db => undef,
host => '127.0.0.1',
ip => '127.0.0.1',
port => '62160',
pos_in_log => undef,
ts => '130124 13:03:28.672987',
user => undef,
}
],
);
test_protocol_parser(
parser => $tcpdump,
protocol => $protocol,
file => "$sample/tcpdump042.txt",
desc => 'Client went away during handshake',
result => [
{
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '9.998411',
Rows_affected => 0,
Thread_id => 24,
Warning_count => 0,
arg => 'administrator command: Connect',
bytes => 30,
cmd => 'Admin',
db => undef,
host => '127.0.0.1',
ip => '127.0.0.1',
port => '62133',
pos_in_log => undef,
ts => '130124 12:55:48.274417',
user => undef,
Error_msg => 'Client closed connection during handshake',
}
],
);
$protocol = new MySQLProtocolParser(
server => '100.0.0.1',
);
test_protocol_parser(
parser => $tcpdump,
protocol => $protocol,
file => "$sample/tcpdump044.txt",
desc => 'Client aborted connection (bug 1103045)',
result => [
{
No_good_index_used => 'No',
No_index_used => 'No',
Query_time => '3.819507',
Rows_affected => 0,
Thread_id => 13,
Warning_count => 0,
arg => 'administrator command: Connect',
bytes => 30,
cmd => 'Admin',
db => undef,
host => '100.0.0.2',
ip => '100.0.0.2',
port => '44432',
pos_in_log => undef,
ts => '130122 09:55:57.793375',
user => undef,
Error_msg => 'Client closed connection during handshake',
},
],
);
# #############################################################################
# Done.
# #############################################################################
exit;
done_testing;

View File

@@ -0,0 +1,59 @@
2013-01-24 12:55:38.276006 IP 127.0.0.1.62133 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0040 b290 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2b5 3039 58cf 8e7c 0000 0000
0x0020: b002 ffff fe34 0000 0204 3fd8 0103 0303
0x0030: 0101 080a 0580 fe1f 0000 0000 0402 0000
2013-01-24 12:55:38.276053 IP 127.0.0.1.12345 > 127.0.0.1.62133: tcp 0
0x0000: 4500 0040 65de 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2b5 1c49 dad0 58cf 8e7d
0x0020: b012 ffff fe34 0000 0204 3fd8 0103 0303
0x0030: 0101 080a 0580 fe1f 0580 fe1f 0402 0000
2013-01-24 12:55:38.276062 IP 127.0.0.1.62133 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 2fb2 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2b5 3039 58cf 8e7d 1c49 dad1
0x0020: 8010 ffff fe28 0000 0101 080a 0580 fe1f
0x0030: 0580 fe1f
2013-01-24 12:55:38.276071 IP 127.0.0.1.12345 > 127.0.0.1.62133: tcp 0
0x0000: 4500 0034 4cba 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2b5 1c49 dad1 58cf 8e7d
0x0020: 8010 ffff fe28 0000 0101 080a 0580 fe1f
0x0030: 0580 fe1f
2013-01-24 12:55:38.278813 IP 127.0.0.1.12345 > 127.0.0.1.62133: tcp 60
0x0000: 4508 0070 e5f9 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2b5 1c49 dad1 58cf 8e7d
0x0020: 8018 ffff fe64 0000 0101 080a 0580 fe1f
0x0030: 0580 fe1f 3800 0000 0a35 2e31 2e35 332d
0x0040: 6c6f 6700 1800 0000 6553 5179 332d 2925
0x0050: 00ff f708 0200 0000 0000 0000 0000 0000
0x0060: 0000 007b 6154 5f62 4d3d 274a 2269 6900
2013-01-24 12:55:38.278831 IP 127.0.0.1.62133 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 0cb3 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2b5 3039 58cf 8e7d 1c49 db0d
0x0020: 8010 ffff fe28 0000 0101 080a 0580 fe1f
0x0030: 0580 fe1f
2013-01-24 12:55:48.274417 IP 127.0.0.1.12345 > 127.0.0.1.62133: tcp 0
0x0000: 4508 0034 5ba9 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2b5 1c49 db0d 58cf 8e7d
0x0020: 8011 ffff fe28 0000 0101 080a 0580 fe83
0x0030: 0580 fe1f
2013-01-24 12:55:48.274515 IP 127.0.0.1.62133 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 4493 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2b5 3039 58cf 8e7d 1c49 db0e
0x0020: 8010 ffff fe28 0000 0101 080a 0580 fe83
0x0030: 0580 fe83
2013-01-24 12:55:48.274541 IP 127.0.0.1.12345 > 127.0.0.1.62133: tcp 0
0x0000: 4508 0034 cfea 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2b5 1c49 db0e 58cf 8e7d
0x0020: 8010 ffff fe28 0000 0101 080a 0580 fe83
0x0030: 0580 fe83
2013-01-24 12:55:48.274741 IP 127.0.0.1.62133 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 6e98 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2b5 3039 58cf 8e7d 1c49 db0e
0x0020: 8011 ffff fe28 0000 0101 080a 0580 fe83
0x0030: 0580 fe83
2013-01-24 12:55:48.274836 IP 127.0.0.1.12345 > 127.0.0.1.62133: tcp 0
0x0000: 4508 0034 bcc4 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2b5 1c49 db0e 58cf 8e7e
0x0020: 8010 fffe fe28 0000 0101 080a 0580 fe83
0x0030: 0580 fe83

View File

@@ -0,0 +1,82 @@
2013-01-24 13:03:25.136681 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0040 ea0e 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d49 0000 0000
0x0020: b002 ffff fe34 0000 0204 3fd8 0103 0303
0x0030: 0101 080a 0581 1055 0000 0000 0402 0000
2013-01-24 13:03:25.136728 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 0
0x0000: 4500 0040 dc6f 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 6881 ad71 3d4a
0x0020: b012 ffff fe34 0000 0204 3fd8 0103 0303
0x0030: 0101 080a 0581 1055 0581 1055 0402 0000
2013-01-24 13:03:25.136737 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 0e53 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d4a 7d01 6882
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1055
0x0030: 0581 1055
2013-01-24 13:03:25.136746 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 0
0x0000: 4500 0034 f54e 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 6882 ad71 3d4a
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1055
0x0030: 0581 1055
2013-01-24 13:03:25.146062 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 60
0x0000: 4508 0070 6334 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 6882 ad71 3d4a
0x0020: 8018 ffff fe64 0000 0101 080a 0581 1055
0x0030: 0581 1055 3800 0000 0a35 2e31 2e35 332d
0x0040: 6c6f 6700 1b00 0000 4d34 5946 3267 3260
0x0050: 00ff f708 0200 0000 0000 0000 0000 0000
0x0060: 0000 006c 225e 3633 3a6c 3048 5863 6800
2013-01-24 13:03:25.146080 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 3e79 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d4a 7d01 68be
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1055
0x0030: 0581 1055
2013-01-24 13:03:28.672802 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 15
0x0000: 4510 0043 145a 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d4a 7d01 68be
0x0020: 8018 ffff fe37 0000 0101 080a 0581 1079
0x0030: 0581 1055 6865 6c6c 6f2c 2077 6f72 6c64
0x0040: 210d 0a
2013-01-24 13:03:28.672856 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 0
0x0000: 4508 0034 b07b 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 68be ad71 3d59
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079
2013-01-24 13:03:28.672987 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 31
0x0000: 4508 0053 6336 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 68be ad71 3d59
0x0020: 8018 ffff fe47 0000 0101 080a 0581 1079
0x0030: 0581 1079 1b00 0001 ff84 0447 6f74 2070
0x0040: 6163 6b65 7473 206f 7574 206f 6620 6f72
0x0050: 6465 72
2013-01-24 13:03:28.673017 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 fb76 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d59 7d01 68dd
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079
2013-01-24 13:03:28.673103 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 0
0x0000: 4508 0034 ae21 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 68dd ad71 3d59
0x0020: 8011 ffff fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079
2013-01-24 13:03:28.673139 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 d821 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d59 7d01 68de
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079
2013-01-24 13:03:28.673156 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 0
0x0000: 4508 0034 ab2e 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 68de ad71 3d59
0x0020: 8010 ffff fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079
2013-01-24 13:03:28.673444 IP 127.0.0.1.62160 > 127.0.0.1.12345: tcp 0
0x0000: 4510 0034 e03d 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 f2d0 3039 ad71 3d59 7d01 68de
0x0020: 8011 ffff fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079
2013-01-24 13:03:28.673464 IP 127.0.0.1.12345 > 127.0.0.1.62160: tcp 0
0x0000: 4508 0034 b22d 4000 4006 0000 7f00 0001
0x0010: 7f00 0001 3039 f2d0 7d01 68de ad71 3d5a
0x0020: 8010 fffe fe28 0000 0101 080a 0581 1079
0x0030: 0581 1079

View File

@@ -0,0 +1,70 @@
2013-01-22 09:55:53.973868 IP 100.0.0.2.44432 > 100.0.0.1.3306: tcp 0
0x0000: 4510 003c bbae 4000 4006 f033 0a1c bd48
0x0010: 0a1c bd49 ad90 0cea af89 ab81 0000 0000
0x0020: a002 16d0 f7a5 0000 0204 05b4 0402 080a
0x0030: 850b 102f 0000 0000 0103 0307
2013-01-22 09:55:53.973885 IP 100.0.0.1.3306 > 100.0.0.2.44432: tcp 0
0x0000: 4500 003c 0000 4000 4006 abf2 0a1c bd49
0x0010: 0a1c bd48 0cea ad90 bcdd 5ddd af89 ab82
0x0020: a012 16a0 e720 0000 0204 05b4 0402 080a
0x0030: 7a96 7b52 850b 102f 0103 0307
2013-01-22 09:55:53.973886 IP 100.0.0.1.3306 > 100.0.0.2.44432: tcp 0
0x0000: 4500 003c 0000 4000 4006 abf2 0a1c bd49
0x0010: 0a1c bd48 0cea ad90 bcdd 5ddd af89 ab82
0x0020: a012 16a0 e720 0000 0204 05b4 0402 080a
0x0030: 7a96 7b52 850b 102f 0103 0307
2013-01-22 09:55:53.973929 IP 100.0.0.2.44432 > 100.0.0.1.3306: tcp 0
0x0000: 4510 0034 bbaf 4000 4006 f03a 0a1c bd48
0x0010: 0a1c bd49 ad90 0cea af89 ab82 bcdd 5dde
0x0020: 8010 002e 2c5f 0000 0101 080a 850b 102f
0x0030: 7a96 7b52
2013-01-22 09:55:53.974017 IP 100.0.0.1.3306 > 100.0.0.2.44432: tcp 113
0x0000: 4508 00a5 268c 4000 4006 84f5 0a1c bd49
0x0010: 0a1c bd48 0cea ad90 bcdd 5dde af89 ab82
0x0020: 8018 002e 8f61 0000 0101 080a 7a96 7b52
0x0030: 850b 102f 6d00 0000 0a35 2e35 2e32 382d
0x0040: 656e 7465 7270 7269 7365 2d63 6f6d 6d65
0x0050: 7263 6961 6c2d 6164 7661 6e63 6564 2d6c
0x0060: 6f67 000d 0000 006c 706d 5338 5d4a 3c00
0x0070: fff7 0802 000f 8015 0000 0000 0000 0000
0x0080: 0000 2f72 7265 247e 7347 4565 4f3c 006d
0x0090: 7973 716c 5f6e 6174 6976 655f 7061 7373
0x00a0: 776f 7264 00
2013-01-22 09:55:53.974019 IP 100.0.0.1.3306 > 100.0.0.2.44432: tcp 113
0x0000: 4508 00a5 268c 4000 4006 84f5 0a1c bd49
0x0010: 0a1c bd48 0cea ad90 bcdd 5dde af89 ab82
0x0020: 8018 002e 8f61 0000 0101 080a 7a96 7b52
0x0030: 850b 102f 6d00 0000 0a35 2e35 2e32 382d
0x0040: 656e 7465 7270 7269 7365 2d63 6f6d 6d65
0x0050: 7263 6961 6c2d 6164 7661 6e63 6564 2d6c
0x0060: 6f67 000d 0000 006c 706d 5338 5d4a 3c00
0x0070: fff7 0802 000f 8015 0000 0000 0000 0000
0x0080: 0000 2f72 7265 247e 7347 4565 4f3c 006d
0x0090: 7973 716c 5f6e 6174 6976 655f 7061 7373
0x00a0: 776f 7264 00
2013-01-22 09:55:53.974064 IP 100.0.0.2.44432 > 100.0.0.1.3306: tcp 0
0x0000: 4510 0034 bbb0 4000 4006 f039 0a1c bd48
0x0010: 0a1c bd49 ad90 0cea af89 ab82 bcdd 5e4f
0x0020: 8010 002e 2bee 0000 0101 080a 850b 102f
0x0030: 7a96 7b52
2013-01-22 09:55:57.793375 IP 100.0.0.2.44432 > 100.0.0.1.3306: tcp 0
0x0000: 4510 0034 bbb1 4000 4006 f038 0a1c bd48
0x0010: 0a1c bd49 ad90 0cea af89 ab82 bcdd 5e4f
0x0020: 8011 002e 1d02 0000 0101 080a 850b 1f1a
0x0030: 7a96 7b52
2013-01-22 09:55:57.793485 IP 100.0.0.1.3306 > 100.0.0.2.44432: tcp 0
0x0000: 4508 0034 268d 4000 4006 8565 0a1c bd49
0x0010: 0a1c bd48 0cea ad90 bcdd 5e4f af89 ab83
0x0020: 8011 002e 0e16 0000 0101 080a 7a96 8a3d
0x0030: 850b 1f1a
2013-01-22 09:55:57.793489 IP 100.0.0.1.3306 > 100.0.0.2.44432: tcp 0
0x0000: 4508 0034 268d 4000 4006 8565 0a1c bd49
0x0010: 0a1c bd48 0cea ad90 bcdd 5e4f af89 ab83
0x0020: 8011 002e 0e16 0000 0101 080a 7a96 8a3d
0x0030: 850b 1f1a
2013-01-22 09:55:57.793529 IP 100.0.0.2.44432 > 100.0.0.1.3306: tcp 0
0x0000: 4510 0034 bbb2 4000 4006 f037 0a1c bd48
0x0010: 0a1c bd49 ad90 0cea af89 ab83 bcdd 5e50
0x0020: 8010 002e 0e15 0000 0101 080a 850b 1f1b
0x0030: 7a96 8a3d

View File

@@ -1,123 +0,0 @@
#!/usr/bin/env bash
# This test file must be ran by util/test-bash-functions.
TESTS=6
PT_TMPDIR=$TEST_PT_TMPDIR
# ############################################################################
TEST_NAME="stacktrace-001.txt"
# ############################################################################
cat > $PT_TMPDIR/expected <<EOF
187 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,open_table,open_tables,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
62 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,close_thread_tables,dispatch_command,handle_one_connection,start_thread,clone
39 read,vio_read,my_real_read,my_net_read,handle_one_connection,start_thread,clone
18 pthread_cond_wait,safe_cond_wait,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread,clone
15 pthread_cond_wait,safe_cond_wait,end_thread,handle_one_connection,start_thread,clone
15 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,open_table,open_tables,mysql_update,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
12 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,open_table,open_tables,open_and_lock_tables,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
2 __lll_mutex_lock_wait,_L_mutex_lock_107,pthread_mutex_lock,safe_mutex_lock,Log_event::read_log_event,mysql_binlog_send,dispatch_command,handle_one_connection,start_thread,clone
1 select,os_thread_sleep,srv_master_thread,start_thread,clone
1 select,os_thread_sleep,srv_lock_timeout_and_monitor_thread,start_thread,clone
1 select,os_thread_sleep,srv_error_monitor_thread,start_thread,clone
1 select,handle_connections_sockets,main
1 _sanity,_myfree,st_join_table::cleanup,JOIN::cleanup,JOIN::join_free,do_select,JOIN::exec,mysql_select,handle_select,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 pread64,_os_file_pread,_os_file_read,_fil_io,buf_read_page_low,buf_read_page,buf_page_get_gen,btr_cur_search_to_nth_level,btr_estimate_n_rows_in_range,ha_innobase::records_in_range,check_quick_keys,check_quick_select,get_key_scans_params,SQL_SELECT::test_quick_select,mysql_update,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,_sanity,_myrealloc,String::realloc,String::append,Log_event::read_log_event,mysql_binlog_send,dispatch_command,handle_one_connection,start_thread,clone
1 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,_sanity,_mymalloc,_myrealloc,mi_alloc_rec_buff,mi_open,ha_myisam::open,handler::ha_open,open_tmp_table,create_tmp_table,select_union::create_result_table,mysql_derived_prepare,mysql_handle_derived,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,_sanity,_mymalloc,init_dynamic_array,QUICK_RANGE_SELECT,get_quick_select,TRP_RANGE::make_quick,SQL_SELECT::test_quick_select,make_join_statistics,JOIN::optimize,mysql_select,mysql_derived_filling,mysql_handle_derived,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 __lll_mutex_lock_wait,_L_mutex_lock_1133,pthread_mutex_lock,safe_mutex_lock,_mymalloc,alloc_root,MYSQLparse,mysql_make_view,open_unireg_entry,open_table,open_tables,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 __lll_mutex_lock_wait,_L_mutex_lock_107,pthread_mutex_lock,safe_mutex_lock,mi_open,ha_myisam::open,handler::ha_open,open_tmp_table,create_tmp_table,select_union::create_result_table,mysql_derived_prepare,mysql_handle_derived,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 do_sigwait,sigwait,signal_hand,start_thread,clone
EOF
aggregate_stacktrace 0 samples/stacktrace-001.txt > $PT_TMPDIR/got
no_diff $PT_TMPDIR/got $PT_TMPDIR/expected
# ############################################################################
TEST_NAME="stacktrace-002.txt"
# ############################################################################
cat > $PT_TMPDIR/expected <<EOF
2387 pthread_cond_wait,open_table,open_tables,open_and_lock_tables_derived,execute_sqlcom_select,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread,clone
5 pthread_cond_wait,open_table,open_tables,open_and_lock_tables_derived,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread,clone
4 pthread_cond_wait,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread,clone
4 pthread_cond_wait,open_table,open_tables,open_and_lock_tables_derived,mysql_delete,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread,clone
1 select,os_thread_sleep,srv_master_thread,start_thread,clone
1 select,os_thread_sleep,srv_lock_timeout_and_monitor_thread,start_thread,clone
1 select,os_thread_sleep,srv_error_monitor_thread,start_thread,clone
1 select,handle_connections_sockets,main,select
1 read,my_real_read,my_net_read,do_command,handle_one_connection,start_thread,clone
1 pthread_cond_wait,cache_thread,one_thread_per_connection_end,handle_one_connection,start_thread,clone
1 free,ut_free,page_cur_insert_rec_low,btr_cur_optimistic_insert,row_ins_index_entry_low,row_ins_index_entry,row_ins,row_ins_step,row_insert_for_mysql,ha_innobase::write_row,handler::ha_write_row,ha_partition::copy_partitions,ha_partition::change_partitions,handler::ha_change_partitions,mysql_change_partitions,fast_alter_partition_table,mysql_alter_table,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread,clone
1 do_sigwait,sigwait,signal_hand,start_thread,clone
EOF
aggregate_stacktrace 0 samples/stacktrace-002.txt > $PT_TMPDIR/got
no_diff $PT_TMPDIR/got $PT_TMPDIR/expected
# ############################################################################
TEST_NAME="stacktrace-003.txt"
# ############################################################################
cat > $PT_TMPDIR/expected <<EOF
35 pthread_cond_wait,end_thread,handle_one_connection,start_thread,clone
20 read,read,vio_read,my_real_read,my_net_read,handle_one_connection,start_thread,clone
18 pthread_cond_wait,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread,clone
3 pthread_cond_wait,MYSQL_LOG::wait_for_update,mysql_binlog_send,dispatch_command,handle_one_connection,start_thread,clone
1 select,os_thread_sleep,srv_master_thread,start_thread,clone
1 select,os_thread_sleep,srv_lock_timeout_and_monitor_thread,start_thread,clone
1 select,os_thread_sleep,srv_error_monitor_thread,start_thread,clone
1 select,handle_connections_sockets,main
1 do_sigwait,sigwait,signal_hand,start_thread,clone
1 btr_search_guess_on_hash,btr_cur_search_to_nth_level,btr_pcur_open_with_no_init,row_search_for_mysql,ha_innobase::index_read,join_read_always_key,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,do_select,JOIN::exec,mysql_select,handle_select,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
1 btr_cur_search_to_nth_level,btr_estimate_n_rows_in_range,ha_innobase::records_in_range,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_select,get_key_scans_params,SQL_SELECT::test_quick_select,get_quick_record_count,make_join_statistics,JOIN::optimize,mysql_select,handle_select,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread,clone
EOF
aggregate_stacktrace 0 samples/stacktrace-003.txt > $PT_TMPDIR/got
no_diff $PT_TMPDIR/got $PT_TMPDIR/expected
# ############################################################################
TEST_NAME="stacktrace-003-b.txt"
# ############################################################################
cat > $PT_TMPDIR/expected <<EOF
35 pthread_cond_wait,end_thread
20 read,read
18 pthread_cond_wait,os_event_wait_low
3 select,os_thread_sleep
3 pthread_cond_wait,MYSQL_LOG::wait_for_update
1 select,handle_connections_sockets
1 do_sigwait,sigwait
1 btr_search_guess_on_hash,btr_cur_search_to_nth_level
1 btr_cur_search_to_nth_level,btr_estimate_n_rows_in_range
EOF
aggregate_stacktrace 2 samples/stacktrace-003.txt > $PT_TMPDIR/got
no_diff $PT_TMPDIR/got $PT_TMPDIR/expected
# ############################################################################
TEST_NAME="stacktrace-004.txt"
# ############################################################################
cat > $PT_TMPDIR/expected <<EOF
33 pthread_cond_wait,boost::condition_variable::wait,Queue::pop,Worker::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy,start_thread,clone,??
1 StringBuilder::length,Parser::add,Parser::try_parse_query,Parser::parse_block,Parser::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy,start_thread,clone,??
1 pthread_cond_wait,boost::thread::join,LogReader::wait,Replay::wait,main
1 pthread_cond_wait,boost::condition_variable::wait,Queue::push,LogReader::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy,start_thread,clone,??
1 pthread_cond_wait,boost::condition_variable::wait,Queue::pop,Reporter::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy,start_thread,clone,??
EOF
aggregate_stacktrace 0 samples/stacktrace-004.txt > $PT_TMPDIR/got
no_diff $PT_TMPDIR/got $PT_TMPDIR/expected
# ############################################################################
TEST_NAME="stacktrace-005.txt"
# ############################################################################
cat > $PT_TMPDIR/expected <<EOF
32 read,vio_read_buff,libmysqlclient::??,my_net_read,cli_safe_read,libmysqlclient::??,mysql_real_query,Connection::run,Worker::work,thread_proxy,start_thread,clone,??
1 pthread_cond_wait,LogReader::work,thread_proxy,start_thread,clone,??
1 pthread_cond_wait,boost::thread::join,main
1 pthread_cond_wait,boost::condition_variable::wait,Worker::work,thread_proxy,start_thread,clone,??
1 pthread_cond_wait,boost::condition_variable::wait,Reporter::work,thread_proxy,start_thread,clone,??
1 pthread_cond_wait,boost::condition_variable::wait,Queue::push,Parser::work,thread_proxy,start_thread,clone,??
EOF
aggregate_stacktrace 0 samples/stacktrace-005.txt > $PT_TMPDIR/got
no_diff $PT_TMPDIR/got $PT_TMPDIR/expected

View File

@@ -11,9 +11,30 @@ use warnings FATAL => 'all';
use English qw(-no_match_vars);
use PerconaTest;
use Test::More;
my ($tool) = $PROGRAM_NAME =~ m/([\w-]+)\.t$/;
push @ARGV, "$trunk/t/$tool/*.sh" unless @ARGV;
system("$trunk/util/test-bash-functions $trunk/bin/$tool @ARGV");
my $sample = "$trunk/t/pt-pmp/samples";
exit;
opendir my $dh, $sample or die "Error opening $sample: $OS_ERROR";
while ( my $file = readdir $dh ) {
next unless -f "$sample/$file" && "$sample/$file" =~ m/\.in$/;
(my $outfile = $file) =~ s/\.in/.out/;
ok(
no_diff(
"$trunk/bin/pt-pmp $sample/$file",
"t/pt-pmp/samples/$outfile",
),
"$file"
);
}
closedir $dh;
ok(
no_diff(
"$trunk/bin/pt-pmp -l 2 $sample/stacktrace003.in",
"t/pt-pmp/samples/stacktrace003-limit2.out",
),
"Limit 2 (stacktrace003-limit2.out)"
);
done_testing;

View File

@@ -0,0 +1,20 @@
187 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,open_table,open_tables,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
62 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,close_thread_tables,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
39 read(libpthread.so.0),vio_read(unistd.h:35),my_real_read,my_net_read,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
18 pthread_cond_wait,safe_cond_wait,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread(libpthread.so.0),clone(libc.so.6)
15 pthread_cond_wait,safe_cond_wait,end_thread,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
15 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,open_table,open_tables,mysql_update,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
12 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,open_table,open_tables,open_and_lock_tables,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
2 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_107(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,Log_event::read_log_event,mysql_binlog_send,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_master_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_lock_timeout_and_monitor_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_error_monitor_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),handle_connections_sockets,main
1 _sanity,_myfree,st_join_table::cleanup,JOIN::cleanup,JOIN::join_free,do_select,JOIN::exec,mysql_select,handle_select,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 pread64(libpthread.so.0),_os_file_pread(unistd.h:57),_os_file_read,_fil_io,buf_read_page_low,buf_read_page,buf_page_get_gen,btr_cur_search_to_nth_level,btr_estimate_n_rows_in_range,ha_innobase::records_in_range,check_quick_keys,check_quick_select,get_key_scans_params,SQL_SELECT::test_quick_select,mysql_update,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,_sanity,_myrealloc,String::realloc,String::append,Log_event::read_log_event,mysql_binlog_send,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,_sanity,_mymalloc,_myrealloc,mi_alloc_rec_buff,mi_open,ha_myisam::open,handler::ha_open,open_tmp_table,create_tmp_table,select_union::create_result_table,mysql_derived_prepare,mysql_handle_derived,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,_sanity,_mymalloc,init_dynamic_array,QUICK_RANGE_SELECT,get_quick_select,TRP_RANGE::make_quick,SQL_SELECT::test_quick_select,make_join_statistics,JOIN::optimize,mysql_select,mysql_derived_filling,mysql_handle_derived,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_1133(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,_mymalloc,alloc_root,MYSQLparse,mysql_make_view,open_unireg_entry,open_table,open_tables,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 __lll_mutex_lock_wait(libpthread.so.0),_L_mutex_lock_107(libpthread.so.0),pthread_mutex_lock(libpthread.so.0),safe_mutex_lock,mi_open,ha_myisam::open,handler::ha_open,open_tmp_table,create_tmp_table,select_union::create_result_table,mysql_derived_prepare,mysql_handle_derived,open_and_lock_tables,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 do_sigwait(libpthread.so.0),sigwait(libpthread.so.0),signal_hand,start_thread(libpthread.so.0),clone(libc.so.6)

View File

@@ -0,0 +1,12 @@
2387 pthread_cond_wait,open_table,open_tables,open_and_lock_tables_derived,execute_sqlcom_select,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
5 pthread_cond_wait,open_table,open_tables,open_and_lock_tables_derived,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
4 pthread_cond_wait,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread(libpthread.so.0),clone(libc.so.6)
4 pthread_cond_wait,open_table,open_tables,open_and_lock_tables_derived,mysql_delete,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_master_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_lock_timeout_and_monitor_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_error_monitor_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),handle_connections_sockets,main,select(libc.so.6)
1 read(libpthread.so.0),my_real_read,my_net_read,do_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 pthread_cond_wait,cache_thread,one_thread_per_connection_end,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 free(libc.so.6),ut_free,page_cur_insert_rec_low,btr_cur_optimistic_insert,row_ins_index_entry_low,row_ins_index_entry,row_ins,row_ins_step,row_insert_for_mysql,ha_innobase::write_row,handler::ha_write_row,ha_partition::copy_partitions,ha_partition::change_partitions,handler::ha_change_partitions,mysql_change_partitions,fast_alter_partition_table,mysql_alter_table,mysql_execute_command,mysql_parse,dispatch_command,do_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 do_sigwait(libpthread.so.0),sigwait(libpthread.so.0),signal_hand,start_thread(libpthread.so.0),clone(libc.so.6)

View File

@@ -0,0 +1,9 @@
35 pthread_cond_wait,end_thread
20 read(libpthread.so.0),read(unistd.h:35)
18 pthread_cond_wait,os_event_wait_low
3 select(libc.so.6),os_thread_sleep
3 pthread_cond_wait,MYSQL_LOG::wait_for_update
1 select(libc.so.6),handle_connections_sockets
1 do_sigwait(libpthread.so.0),sigwait(libpthread.so.0)
1 btr_search_guess_on_hash(libc.so.6),btr_cur_search_to_nth_level
1 btr_cur_search_to_nth_level,btr_estimate_n_rows_in_range

View File

@@ -0,0 +1,11 @@
35 pthread_cond_wait,end_thread,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
20 read(libpthread.so.0),read(unistd.h:35),vio_read(unistd.h:35),my_real_read,my_net_read,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
18 pthread_cond_wait,os_event_wait_low,os_aio_simulated_handle,fil_aio_wait,io_handler_thread,start_thread(libpthread.so.0),clone(libc.so.6)
3 pthread_cond_wait,MYSQL_LOG::wait_for_update,mysql_binlog_send,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_master_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_lock_timeout_and_monitor_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),os_thread_sleep,srv_error_monitor_thread,start_thread(libpthread.so.0),clone(libc.so.6)
1 select(libc.so.6),handle_connections_sockets,main
1 do_sigwait(libpthread.so.0),sigwait(libpthread.so.0),signal_hand,start_thread(libpthread.so.0),clone(libc.so.6)
1 btr_search_guess_on_hash(libc.so.6),btr_cur_search_to_nth_level,btr_pcur_open_with_no_init,row_search_for_mysql,ha_innobase::index_read,join_read_always_key,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,evaluate_join_record,sub_select,do_select,JOIN::exec,mysql_select,handle_select,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)
1 btr_cur_search_to_nth_level,btr_estimate_n_rows_in_range,ha_innobase::records_in_range,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_keys,check_quick_select,get_key_scans_params,SQL_SELECT::test_quick_select,get_quick_record_count,make_join_statistics,JOIN::optimize,mysql_select,handle_select,mysql_execute_command,mysql_parse,dispatch_command,handle_one_connection,start_thread(libpthread.so.0),clone(libc.so.6)

View File

@@ -0,0 +1,5 @@
33 pthread_cond_wait,boost::condition_variable::wait,Queue::pop,Worker::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 StringBuilder::length,Parser::add,Parser::try_parse_query,Parser::parse_block,Parser::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 pthread_cond_wait,boost::thread::join(libboost_thread-mt.so.5),LogReader::wait,Replay::wait,main
1 pthread_cond_wait,boost::condition_variable::wait,Queue::push,LogReader::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 pthread_cond_wait,boost::condition_variable::wait,Queue::pop,Reporter::work,boost::_mfi::mf0::operator,boost::_bi::list1::operator,boost::_bi::bind_t::operator,boost::detail::thread_data::run,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??

View File

@@ -0,0 +1,6 @@
32 read(libc.so.6),vio_read_buff(libmysqlclient.so.16),libmysqlclient::??(libmysqlclient.so.16),my_net_read(libmysqlclient.so.16),cli_safe_read(libmysqlclient.so.16),libmysqlclient::??(libmysqlclient.so.16),mysql_real_query(libmysqlclient.so.16),Connection::run,Worker::work,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 pthread_cond_wait,LogReader::work,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 pthread_cond_wait,boost::thread::join(libboost_thread-mt.so.5),main
1 pthread_cond_wait,boost::condition_variable::wait,Worker::work,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 pthread_cond_wait,boost::condition_variable::wait,Reporter::work,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??
1 pthread_cond_wait,boost::condition_variable::wait,Queue::push,Parser::work,thread_proxy(libboost_thread-mt.so.5),start_thread(libpthread.so.0),clone(libc.so.6),??

View File

@@ -9,7 +9,7 @@ BEGIN {
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More tests => 6;
use Test::More;
use PerconaTest;
@@ -76,7 +76,31 @@ ok(
'Analysis for tcpdump017 with microsecond timestamps (issue 398)'
);
# #############################################################################
# Bug 1103045: pt-query-digest fails to parse non-SQL errors
# https://bugs.launchpad.net/percona-toolkit/+bug/1103045
# #############################################################################
ok(
no_diff(
sub { pt_query_digest::main(@args, $sample.'tcpdump043.txt',
'--report-format', 'header,query_report,profile',
qw(--watch-server 127.0.0.1:12345)) },
"t/pt-query-digest/samples/tcpdump043_report.txt"
),
'Analysis for tcpdump043 with connection error (bug 1103045)'
);
ok(
no_diff(
sub { pt_query_digest::main(@args, $sample.'tcpdump044.txt',
'--report-format', 'header,query_report,profile',
qw(--watch-server 100.0.0.1)) },
"t/pt-query-digest/samples/tcpdump044_report.txt"
),
'Analysis for tcpdump044 with connection error (bug 1103045)'
);
# #############################################################################
# Done.
# #############################################################################
exit;
done_testing;

View File

@@ -11,7 +11,6 @@
# Query size 100 32 32 32 32 32 0 32
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Query_time distribution
# 1us

View File

@@ -12,7 +12,6 @@
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Databases mysql
# Errors none
# Hosts 127.0.0.1
# Users msandbox
# Query_time distribution
@@ -39,7 +38,6 @@ administrator command: Connect\G
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Databases mysql
# Errors none
# Hosts 127.0.0.1
# Users msandbox
# Query_time distribution
@@ -67,7 +65,6 @@ select @@version_comment limit 1\G
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Databases mysql
# Errors none
# Hosts 127.0.0.1
# Users msandbox
# Query_time distribution
@@ -95,7 +92,6 @@ select "paris in the the spring" as trick\G
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Databases mysql
# Errors none
# Hosts 127.0.0.1
# Users msandbox
# Query_time distribution

View File

@@ -11,7 +11,6 @@
# Query size 100 32 32 32 32 32 0 32
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Query_time distribution
# 1us

View File

@@ -20,7 +20,6 @@
# Query size 100 128 32 32 32 32 0 32
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Query_time distribution
# 1us

View File

@@ -11,7 +11,6 @@
# Query size 35 35 35 35 35 35 0 35
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution
@@ -45,7 +44,6 @@ SELECT i FROM d.t WHERE i=?\G
# Boolean:
# No index use 100% yes, 0% no
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution
@@ -77,7 +75,6 @@ SELECT i FROM d.t WHERE i="3"\G
# Query size 27 27 27 27 27 27 0 27
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Query_time distribution
# 1us

View File

@@ -11,7 +11,6 @@
# Query size 47 46 46 46 46 46 0 46
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution
@@ -43,7 +42,6 @@ SELECT i,j FROM d.t2 WHERE i=? AND j=?\G
# Query size 52 51 51 51 51 51 0 51
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution

View File

@@ -11,7 +11,6 @@
# Query size 42 50 50 50 50 50 0 50
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution
@@ -43,7 +42,6 @@ SELECT * FROM d.t3 WHERE v=? OR c=? OR f=?\G
# Query size 57 69 69 69 69 69 0 69
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution

View File

@@ -11,7 +11,6 @@
# Query size 45 50 50 50 50 50 0 50
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution
@@ -43,7 +42,6 @@ SELECT * FROM d.t3 WHERE v=? OR c=? OR f=?\G
# Query size 54 59 59 59 59 59 0 59
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution

View File

@@ -11,7 +11,6 @@
# Query size 50 42 42 42 42 42 0 42
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution
@@ -45,7 +44,6 @@ SELECT * FROM d.t WHERE 1 LIMIT 1;\G
# Boolean:
# No index use 100% yes, 0% no
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution

View File

@@ -24,7 +24,6 @@
# Boolean:
# No index use 100% yes, 0% no
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2 (3/42%), 3 (2/28%), 4 (1/14%), 5 (1/14%)
# Query_time distribution
@@ -56,7 +55,6 @@ select * from d.t where name="adam"\G
# Query size 37 217 42 45 43.40 44.60 1.31 42.48
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2 (1/20%), 3 (1/20%), 4 (1/20%), 5 (1/20%)... 1 more
# Query_time distribution
@@ -88,7 +86,6 @@ select * from d.t where name="daniel"\G
# Query size 10 60 20 20 20 20 0 20
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Query_time distribution
# 1us

View File

@@ -20,7 +20,6 @@
# Query size 100 35 35 35 35 35 0 35
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Errors none
# Hosts 127.0.0.1
# Statement id 2
# Query_time distribution

View File

@@ -0,0 +1,41 @@
# Overall: 1 total, 1 unique, 0 QPS, 0x concurrency ______________________
# Time range: all events occurred at 2013-01-24 13:03:28.672987
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 4s 4s 4s 4s 4s 0 4s
# Rows affecte 0 0 0 0 0 0 0
# Query size 30 30 30 30 30 0 30
# Warning coun 0 0 0 0 0 0 0
# Query 1: 0 QPS, 0x concurrency, ID 0x5D51E5F01B88B79E at byte 0 ________
# This item is included in the report because it matches --limit.
# Scores: Apdex = 0.50 [1.0]*, V/M = 0.00
# Query_time sparkline: | ^ |
# Time range: all events occurred at 2013-01-24 13:03:28.672987
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 100 1
# Exec time 100 4s 4s 4s 4s 4s 0 4s
# Rows affecte 0 0 0 0 0 0 0 0
# Query size 100 30 30 30 30 30 0 30
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Error msg Got packets out of order
# Errors 1156
# Hosts 127.0.0.1
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms
# 1s ################################################################
# 10s+
administrator command: Connect\G
# Profile
# Rank Query ID Response time Calls R/Call Apdx V/M Item
# ==== ================== ============= ===== ====== ==== ===== ==========
# 1 0x5D51E5F01B88B79E 3.5363 100.0% 1 3.5363 0.50 0.00 ADMIN CONNECT

View File

@@ -0,0 +1,40 @@
# Overall: 1 total, 1 unique, 0 QPS, 0x concurrency ______________________
# Time range: all events occurred at 2013-01-22 09:55:57.793375
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 4s 4s 4s 4s 4s 0 4s
# Rows affecte 0 0 0 0 0 0 0
# Query size 30 30 30 30 30 0 30
# Warning coun 0 0 0 0 0 0 0
# Query 1: 0 QPS, 0x concurrency, ID 0x5D51E5F01B88B79E at byte 0 ________
# This item is included in the report because it matches --limit.
# Scores: Apdex = 0.50 [1.0]*, V/M = 0.00
# Query_time sparkline: | ^ |
# Time range: all events occurred at 2013-01-22 09:55:57.793375
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 100 1
# Exec time 100 4s 4s 4s 4s 4s 0 4s
# Rows affecte 0 0 0 0 0 0 0 0
# Query size 100 30 30 30 30 30 0 30
# Warning coun 0 0 0 0 0 0 0 0
# String:
# Error msg Client closed connection during handshake
# Hosts 100.0.0.2
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms
# 1s ################################################################
# 10s+
administrator command: Connect\G
# Profile
# Rank Query ID Response time Calls R/Call Apdx V/M Item
# ==== ================== ============= ===== ====== ==== ===== ==========
# 1 0x5D51E5F01B88B79E 3.8195 100.0% 1 3.8195 0.50 0.00 ADMIN CONNECT