Test --output json-anon.

This commit is contained in:
Daniel Nichter
2013-07-01 13:59:12 -07:00
parent f4f381ab7f
commit b14a478f3c
4 changed files with 301 additions and 30 deletions

View File

@@ -7983,19 +7983,21 @@ override query_report => sub {
push @tables, { status => $status, create => $create }; push @tables, { status => $status, create => $create };
} }
if ( $item =~ m/^(?:[\(\s]*select|insert|replace)/ ) { if ( !$args{anon} ) {
if ( $item =~ m/^(?:insert|replace)/ ) { if ( $item =~ m/^(?:[\(\s]*select|insert|replace)/ ) {
if ( $item =~ m/^(?:insert|replace)/ ) {
}
else {
}
} }
else { else {
my $converted = $qr->convert_to_select(
} $sample->{arg} || '',
} );
else { if ( $converted && $converted =~ m/^[\(\s]*select/i ) {
my $converted = $qr->convert_to_select( $class->{example}->{as_select} = $converted;
$sample->{arg} || '', }
);
if ( $converted && $converted =~ m/^[\(\s]*select/i ) {
$class->{example}->{as_select} = $converted;
} }
} }
} }
@@ -14184,7 +14186,7 @@ sub print_reports {
variations => $o->get('variations'), variations => $o->get('variations'),
group => { map { $_=>1 } qw(rusage date hostname files header) }, group => { map { $_=>1 } qw(rusage date hostname files header) },
resume => $resume, resume => $resume,
anon => $report_class eq 'json-anon', anon => $o->get('output') eq 'json-anon',
); );
} }

View File

@@ -342,26 +342,28 @@ override query_report => sub {
push @tables, { status => $status, create => $create }; push @tables, { status => $status, create => $create };
} }
# Convert possible non-SELECTs for EXPLAIN. if ( !$args{anon} ) {
if ( $item =~ m/^(?:[\(\s]*select|insert|replace)/ ) { # Convert possible non-SELECTs for EXPLAIN.
if ( $item =~ m/^(?:insert|replace)/ ) { if ( $item =~ m/^(?:[\(\s]*select|insert|replace)/ ) {
# Cannot convert or EXPLAIN INSERT or REPLACE queries. if ( $item =~ m/^(?:insert|replace)/ ) {
# Cannot convert or EXPLAIN INSERT or REPLACE queries.
}
else {
# SELECT queries don't need to converted for EXPLAIN.
# TODO: return the actual EXPLAIN plan
# $self->explain_report($query, $vals->{default_db});
}
} }
else { else {
# SELECT queries don't need to converted for EXPLAIN. # Query is not SELECT, INSERT, or REPLACE, so we can convert
# it for EXPLAIN.
# TODO: return the actual EXPLAIN plan my $converted = $qr->convert_to_select(
# $self->explain_report($query, $vals->{default_db}); $sample->{arg} || '',
} );
} if ( $converted && $converted =~ m/^[\(\s]*select/i ) {
else { $class->{example}->{as_select} = $converted;
# Query is not SELECT, INSERT, or REPLACE, so we can convert }
# it for EXPLAIN.
my $converted = $qr->convert_to_select(
$sample->{arg} || '',
);
if ( $converted && $converted =~ m/^[\(\s]*select/i ) {
$class->{example}->{as_select} = $converted;
} }
} }
} }

View File

@@ -39,6 +39,16 @@ ok(
'json output for slow002' 'json output for slow002'
) or diag($test_diff); ) or diag($test_diff);
ok(
no_diff(
sub { pt_query_digest::main(qw(--output json-anon),
"$sample/slowlogs/slow002.txt") },
"$results/slow002-anon.txt",
sed => [ qq/'s!$trunk!TRUNK!'/ ],
),
'json-anon output for slow002'
) or diag($test_diff);
# --type tcpdump # --type tcpdump
ok( ok(

View File

@@ -0,0 +1,257 @@
{
"classes" : [
{
"attribute" : "fingerprint",
"checksum" : "66825DDC008FFA89",
"distillate" : "UPDATE db?.tuningdetail_?_? db?.gonzo",
"fingerprint" : "update d?tuningdetail_?_? n inner join d?gonzo a using(gonzo) set n.column? = a.column?, n.word? = a.word?",
"metrics" : {
"Filesort" : {
"yes" : "0"
},
"Filesort_on_disk" : {
"yes" : "0"
},
"Full_join" : {
"yes" : "0"
},
"Full_scan" : {
"yes" : "1"
},
"Lock_time" : {
"avg" : "0.000091",
"max" : "0.000091",
"median" : "0.000091",
"min" : "0.000091",
"pct" : "0.125000",
"pct_95" : "0.000091",
"stddev" : "0.000000",
"sum" : "0.000091"
},
"Merge_passes" : {
"avg" : "0",
"max" : "0",
"median" : "0",
"min" : "0",
"pct" : "0",
"pct_95" : "0",
"stddev" : "0",
"sum" : "0"
},
"QC_Hit" : {
"yes" : "0"
},
"Query_length" : {
"avg" : "129",
"max" : "129",
"median" : "129",
"min" : "129",
"pct" : "0",
"pct_95" : "129",
"stddev" : "0",
"sum" : "129"
},
"Query_time" : {
"avg" : "0.726052",
"max" : "0.726052",
"median" : "0.726052",
"min" : "0.726052",
"pct" : "0.125000",
"pct_95" : "0.726052",
"stddev" : "0.000000",
"sum" : "0.726052"
},
"Rows_examined" : {
"avg" : "62951",
"max" : "62951",
"median" : "62951",
"min" : "62951",
"pct" : "0",
"pct_95" : "62951",
"stddev" : "0",
"sum" : "62951"
},
"Rows_sent" : {
"avg" : "0",
"max" : "0",
"median" : "0",
"min" : "0",
"pct" : "0",
"pct_95" : "0",
"stddev" : "0",
"sum" : "0"
},
"Tmp_table" : {
"yes" : "0"
},
"Tmp_table_on_disk" : {
"yes" : "0"
},
"db" : {
"value" : "db1"
},
"host" : {
"value" : ""
},
"user" : {
"value" : "[SQL_SLAVE]"
}
},
"query_count" : 1,
"tables" : [
{
"create" : "SHOW CREATE TABLE `db2`.`tuningdetail_21_265507`\\G",
"status" : "SHOW TABLE STATUS FROM `db2` LIKE 'tuningdetail_21_265507'\\G"
},
{
"create" : "SHOW CREATE TABLE `db1`.`gonzo`\\G",
"status" : "SHOW TABLE STATUS FROM `db1` LIKE 'gonzo'\\G"
}
],
"ts_max" : "2007-12-18 11:48:27",
"ts_min" : "2007-12-18 11:48:27"
}
],
"global" : {
"files" : [
{
"name" : "TRUNK/t/lib/samples/slowlogs/slow002.txt",
"size" : 3841
}
],
"metrics" : {
"Filesort" : {
"cnt" : "0"
},
"Filesort_on_disk" : {
"cnt" : "0"
},
"Full_join" : {
"cnt" : "0"
},
"Full_scan" : {
"cnt" : "1"
},
"InnoDB_IO_r_bytes" : {
"avg" : "0",
"max" : "0",
"median" : "0",
"min" : "0",
"pct_95" : "0",
"stddev" : "0",
"sum" : "0"
},
"InnoDB_IO_r_ops" : {
"avg" : "0",
"max" : "0",
"median" : "0",
"min" : "0",
"pct_95" : "0",
"stddev" : "0",
"sum" : "0"
},
"InnoDB_IO_r_wait" : {
"avg" : "0.000000",
"max" : "0.000000",
"median" : "0.000000",
"min" : "0.000000",
"pct_95" : "0.000000",
"stddev" : "0.000000",
"sum" : "0.000000"
},
"InnoDB_pages_distinct" : {
"avg" : "17",
"max" : "24",
"median" : "17",
"min" : "11",
"pct_95" : "23",
"stddev" : "3",
"sum" : "107"
},
"InnoDB_queue_wait" : {
"avg" : "0.000000",
"max" : "0.000000",
"median" : "0.000000",
"min" : "0.000000",
"pct_95" : "0.000000",
"stddev" : "0.000000",
"sum" : "0.000000"
},
"InnoDB_rec_lock_wait" : {
"avg" : "0.000000",
"max" : "0.000000",
"median" : "0.000000",
"min" : "0.000000",
"pct_95" : "0.000000",
"stddev" : "0.000000",
"sum" : "0.000000"
},
"Lock_time" : {
"avg" : "0.000038",
"max" : "0.000091",
"median" : "0.000026",
"min" : "0.000000",
"pct_95" : "0.000089",
"stddev" : "0.000028",
"sum" : "0.000304"
},
"Merge_passes" : {
"avg" : "0",
"max" : "0",
"median" : "0",
"min" : "0",
"pct_95" : "0",
"stddev" : "0",
"sum" : "0"
},
"QC_Hit" : {
"cnt" : "0"
},
"Query_length" : {
"avg" : "62",
"max" : "129",
"median" : "62",
"min" : "5",
"pct_95" : "124",
"stddev" : "34",
"sum" : "502"
},
"Query_time" : {
"avg" : "0.095260",
"max" : "0.726052",
"median" : "0.000516",
"min" : "0.000012",
"pct_95" : "0.705093",
"stddev" : "0.231765",
"sum" : "0.762080"
},
"Rows_examined" : {
"avg" : "7868",
"max" : "62951",
"median" : "0",
"min" : "0",
"pct_95" : "61003",
"stddev" : "20174",
"sum" : "62951"
},
"Rows_sent" : {
"avg" : "0",
"max" : "0",
"median" : "0",
"min" : "0",
"pct_95" : "0",
"stddev" : "0",
"sum" : "0"
},
"Tmp_table" : {
"cnt" : "0"
},
"Tmp_table_on_disk" : {
"cnt" : "0"
}
},
"query_count" : 8,
"unique_query_count" : 7
}
}