From 91052e71980caf33de48b31462e0457cf490dd52 Mon Sep 17 00:00:00 2001 From: Brian Fraser Date: Tue, 5 Mar 2013 02:50:13 -0300 Subject: [PATCH] Make some internal values show up nicer in --output json --- bin/pt-query-digest | 9 +- lib/JSONReportFormatter.pm | 9 +- .../samples/output_json_slow002.txt | 50 ++--------- .../samples/output_json_tcpdump021.txt | 90 ++----------------- 4 files changed, 28 insertions(+), 130 deletions(-) diff --git a/bin/pt-query-digest b/bin/pt-query-digest index fa9f041b..19b86b45 100755 --- a/bin/pt-query-digest +++ b/bin/pt-query-digest @@ -7541,8 +7541,8 @@ use constant PTDEBUG => $ENV{PTDEBUG} || 0; my $have_json = eval { require JSON }; -our $pretty_json = undef; -our $sorted_json = undef; +our $pretty_json = 0; +our $sorted_json = 0; extends qw(QueryReportFormatter); @@ -7588,6 +7588,8 @@ override query_report => sub { my $worst = $args{worst}; my @attribs = @{$ea->get_attributes()}; + + my %string_args = map { $_ => 1 } qw( db host arg user bytes pos_in_log ); my @queries; foreach my $worst_info ( @$worst ) { @@ -7628,6 +7630,9 @@ override query_report => sub { $class{ts_min} = $ts->{min}; $class{ts_max} = $ts->{max}; } + elsif ( $string_args{$attrib} ) { + $metrics{$attrib} = { value => $metrics{$attrib}{max} }; + } elsif ( ($ea->{type_for}->{$attrib} || '') eq 'num' ) { for my $value ( values %{$metrics{$attrib}} ) { next unless $value; diff --git a/lib/JSONReportFormatter.pm b/lib/JSONReportFormatter.pm index 883b8069..ab981ade 100644 --- a/lib/JSONReportFormatter.pm +++ b/lib/JSONReportFormatter.pm @@ -9,8 +9,8 @@ use constant PTDEBUG => $ENV{PTDEBUG} || 0; my $have_json = eval { require JSON }; -our $pretty_json = undef; -our $sorted_json = undef; +our $pretty_json = 0; +our $sorted_json = 0; extends qw(QueryReportFormatter); @@ -56,6 +56,8 @@ override query_report => sub { my $worst = $args{worst}; my @attribs = @{$ea->get_attributes()}; + + my %string_args = map { $_ => 1 } qw( db host arg user bytes pos_in_log ); my @queries; foreach my $worst_info ( @$worst ) { @@ -96,6 +98,9 @@ override query_report => sub { $class{ts_min} = $ts->{min}; $class{ts_max} = $ts->{max}; } + elsif ( $string_args{$attrib} ) { + $metrics{$attrib} = { value => $metrics{$attrib}{max} }; + } elsif ( ($ea->{type_for}->{$attrib} || '') eq 'num' ) { # Avoid scientific notation in the metrics by forcing it to use # six decimal places. diff --git a/t/pt-query-digest/samples/output_json_slow002.txt b/t/pt-query-digest/samples/output_json_slow002.txt index f8604c65..3d2fadbb 100644 --- a/t/pt-query-digest/samples/output_json_slow002.txt +++ b/t/pt-query-digest/samples/output_json_slow002.txt @@ -135,59 +135,19 @@ "sum" : 0 }, "bytes" : { - "avg" : "129.000000", - "cnt" : "1.000000", - "max" : "129.000000", - "median" : "129.000000", - "min" : "129.000000", - "pct" : "0.12", - "pct_95" : "129.000000", - "stddev" : 0, - "sum" : "129.000000" + "value" : 129 }, "db" : { - "avg" : 0, - "cnt" : 1, - "max" : "db1", - "median" : 0, - "min" : "db1", - "pct" : 0.142857142857143, - "pct_95" : 0, - "stddev" : 0, - "sum" : null + "value" : "db1" }, "host" : { - "avg" : 0, - "cnt" : 1, - "max" : "", - "median" : 0, - "min" : "", - "pct" : 0.125, - "pct_95" : 0, - "stddev" : 0, - "sum" : null + "value" : "" }, "pos_in_log" : { - "avg" : "338.000000", - "cnt" : "1.000000", - "max" : "338.000000", - "median" : "338.000000", - "min" : "338.000000", - "pct" : "0.12", - "pct_95" : "338.000000", - "stddev" : 0, - "sum" : "338.000000" + "value" : 338 }, "user" : { - "avg" : 0, - "cnt" : 1, - "max" : "[SQL_SLAVE]", - "median" : 0, - "min" : "[SQL_SLAVE]", - "pct" : 0.125, - "pct_95" : 0, - "stddev" : 0, - "sum" : null + "value" : "[SQL_SLAVE]" } }, "class" : { diff --git a/t/pt-query-digest/samples/output_json_tcpdump021.txt b/t/pt-query-digest/samples/output_json_tcpdump021.txt index 3357f2a9..d3a08e79 100644 --- a/t/pt-query-digest/samples/output_json_tcpdump021.txt +++ b/t/pt-query-digest/samples/output_json_tcpdump021.txt @@ -69,37 +69,13 @@ "sum" : 0 }, "bytes" : { - "avg" : "35.000000", - "cnt" : "1.000000", - "max" : "35.000000", - "median" : "35.000000", - "min" : "35.000000", - "pct" : "0.33", - "pct_95" : "35.000000", - "stddev" : 0, - "sum" : "35.000000" + "value" : 35 }, "host" : { - "avg" : 0, - "cnt" : 1, - "max" : "127.0.0.1", - "median" : 0, - "min" : "127.0.0.1", - "pct" : 0.333333333333333, - "pct_95" : 0, - "stddev" : 0, - "sum" : null + "value" : "127.0.0.1" }, "pos_in_log" : { - "avg" : 0, - "cnt" : "1.000000", - "max" : 0, - "median" : 0, - "min" : 0, - "pct" : "0.33", - "pct_95" : 0, - "stddev" : 0, - "sum" : 0 + "value" : 0 } }, "class" : { @@ -180,37 +156,13 @@ "sum" : 0 }, "bytes" : { - "avg" : "37.000000", - "cnt" : "1.000000", - "max" : "37.000000", - "median" : "37.000000", - "min" : "37.000000", - "pct" : "0.33", - "pct_95" : "37.000000", - "stddev" : 0, - "sum" : "37.000000" + "value" : 37 }, "host" : { - "avg" : 0, - "cnt" : 1, - "max" : "127.0.0.1", - "median" : 0, - "min" : "127.0.0.1", - "pct" : 0.333333333333333, - "pct_95" : 0, - "stddev" : 0, - "sum" : null + "value" : "127.0.0.1" }, "pos_in_log" : { - "avg" : "1106.000000", - "cnt" : "1.000000", - "max" : "1106.000000", - "median" : "1106.000000", - "min" : "1106.000000", - "pct" : "0.33", - "pct_95" : "1106.000000", - "stddev" : 0, - "sum" : "1106.000000" + "value" : 1106 } }, "class" : { @@ -280,37 +232,13 @@ "sum" : 0 }, "bytes" : { - "avg" : "27.000000", - "cnt" : "1.000000", - "max" : "27.000000", - "median" : "27.000000", - "min" : "27.000000", - "pct" : "0.33", - "pct_95" : "27.000000", - "stddev" : 0, - "sum" : "27.000000" + "value" : 27 }, "host" : { - "avg" : 0, - "cnt" : 1, - "max" : "127.0.0.1", - "median" : 0, - "min" : "127.0.0.1", - "pct" : 0.333333333333333, - "pct_95" : 0, - "stddev" : 0, - "sum" : null + "value" : "127.0.0.1" }, "pos_in_log" : { - "avg" : "1850.000000", - "cnt" : "1.000000", - "max" : "1850.000000", - "median" : "1850.000000", - "min" : "1850.000000", - "pct" : "0.33", - "pct_95" : "1850.000000", - "stddev" : 0, - "sum" : "1850.000000" + "value" : 1850 } }, "class" : {