Merge lp:~percona-toolkit-dev/percona-toolkit/pqd-group-by-bug-924950 into lp:percona-toolkit/2.1

Proposed by Daniel Nichter
Status: Merged
Merged at revision: 309
Proposed branch: lp:~percona-toolkit-dev/percona-toolkit/pqd-group-by-bug-924950
Merge into: lp:percona-toolkit/2.1
Diff against target: 223 lines (+84/-12)
7 files modified
bin/pt-query-digest (+5/-5)
lib/EventAggregator.pm (+1/-1)
lib/QueryReportFormatter.pm (+4/-4)
t/lib/EventAggregator.t (+16/-1)
t/lib/samples/slowlogs/slow055.txt (+15/-0)
t/pt-query-digest/samples/slow055.txt (+30/-0)
t/pt-query-digest/slowlog_analyses.t (+13/-1)
To merge this branch: bzr merge lp:~percona-toolkit-dev/percona-toolkit/pqd-group-by-bug-924950
Reviewer Review Type Date Requested Status
Daniel Nichter Approve
Review via email: mp+114526@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Daniel Nichter (daniel-nichter) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/pt-query-digest'
2--- bin/pt-query-digest 2012-06-12 14:06:39 +0000
3+++ bin/pt-query-digest 2012-07-11 21:50:34 +0000
4@@ -5453,7 +5453,7 @@
5 sub metrics {
6 my ( $self, %args ) = @_;
7 foreach my $arg ( qw(attrib where) ) {
8- die "I need a $arg argument" unless $args{$arg};
9+ die "I need a $arg argument" unless defined $args{$arg};
10 }
11 my $attrib = $args{attrib};
12 my $where = $args{where};
13@@ -6365,7 +6365,7 @@
14 sub header {
15 my ( $self, %args ) = @_;
16 foreach my $arg ( qw(ea orderby) ) {
17- die "I need a $arg argument" unless $args{$arg};
18+ die "I need a $arg argument" unless defined $args{$arg};
19 }
20 my $ea = $args{ea};
21 my $orderby = $args{orderby};
22@@ -6594,7 +6594,7 @@
23 sub event_report {
24 my ( $self, %args ) = @_;
25 foreach my $arg ( qw(ea item orderby) ) {
26- die "I need a $arg argument" unless $args{$arg};
27+ die "I need a $arg argument" unless defined $args{$arg};
28 }
29 my $ea = $args{ea};
30 my $item = $args{item};
31@@ -6765,7 +6765,7 @@
32 sub chart_distro {
33 my ( $self, %args ) = @_;
34 foreach my $arg ( qw(ea item attrib) ) {
35- die "I need a $arg argument" unless $args{$arg};
36+ die "I need a $arg argument" unless defined $args{$arg};
37 }
38 my $ea = $args{ea};
39 my $item = $args{item};
40@@ -6814,7 +6814,7 @@
41 sub distro_sparkline {
42 my ( $self, %args ) = @_;
43 foreach my $arg ( qw(ea item attrib) ) {
44- die "I need a $arg argument" unless $args{$arg};
45+ die "I need a $arg argument" unless defined $args{$arg};
46 }
47 my $ea = $args{ea};
48 my $item = $args{item};
49
50=== modified file 'lib/EventAggregator.pm'
51--- lib/EventAggregator.pm 2012-03-06 13:56:08 +0000
52+++ lib/EventAggregator.pm 2012-07-11 21:50:34 +0000
53@@ -764,7 +764,7 @@
54 sub metrics {
55 my ( $self, %args ) = @_;
56 foreach my $arg ( qw(attrib where) ) {
57- die "I need a $arg argument" unless $args{$arg};
58+ die "I need a $arg argument" unless defined $args{$arg};
59 }
60 my $attrib = $args{attrib};
61 my $where = $args{where};
62
63=== modified file 'lib/QueryReportFormatter.pm'
64--- lib/QueryReportFormatter.pm 2012-06-12 00:43:05 +0000
65+++ lib/QueryReportFormatter.pm 2012-07-11 21:50:34 +0000
66@@ -209,7 +209,7 @@
67 sub header {
68 my ( $self, %args ) = @_;
69 foreach my $arg ( qw(ea orderby) ) {
70- die "I need a $arg argument" unless $args{$arg};
71+ die "I need a $arg argument" unless defined $args{$arg};
72 }
73 my $ea = $args{ea};
74 my $orderby = $args{orderby};
75@@ -489,7 +489,7 @@
76 sub event_report {
77 my ( $self, %args ) = @_;
78 foreach my $arg ( qw(ea item orderby) ) {
79- die "I need a $arg argument" unless $args{$arg};
80+ die "I need a $arg argument" unless defined $args{$arg};
81 }
82 my $ea = $args{ea};
83 my $item = $args{item};
84@@ -686,7 +686,7 @@
85 sub chart_distro {
86 my ( $self, %args ) = @_;
87 foreach my $arg ( qw(ea item attrib) ) {
88- die "I need a $arg argument" unless $args{$arg};
89+ die "I need a $arg argument" unless defined $args{$arg};
90 }
91 my $ea = $args{ea};
92 my $item = $args{item};
93@@ -765,7 +765,7 @@
94 sub distro_sparkline {
95 my ( $self, %args ) = @_;
96 foreach my $arg ( qw(ea item attrib) ) {
97- die "I need a $arg argument" unless $args{$arg};
98+ die "I need a $arg argument" unless defined $args{$arg};
99 }
100 my $ea = $args{ea};
101 my $item = $args{item};
102
103=== modified file 't/lib/EventAggregator.t'
104--- t/lib/EventAggregator.t 2012-03-06 13:56:08 +0000
105+++ t/lib/EventAggregator.t 2012-07-11 21:50:34 +0000
106@@ -9,7 +9,7 @@
107 use strict;
108 use warnings FATAL => 'all';
109 use English qw(-no_match_vars);
110-use Test::More tests => 81;
111+use Test::More tests => 82;
112
113 use QueryRewriter;
114 use EventAggregator;
115@@ -1925,6 +1925,21 @@
116 );
117
118 # #############################################################################
119+# Bug 924950: pt-query-digest --group-by db may crash profile report
120+# #############################################################################
121+$ea = new EventAggregator(
122+ groupby => 'Schema',
123+ worst => 'Query_time',
124+);
125+parse_file('t/lib/samples/slowlogs/slow055.txt', $p, $ea);
126+my $m = $ea->metrics(where => '', attrib => 'Query_time');
127+is(
128+ $m->{cnt},
129+ 3,
130+ "Metrics for '' attrib (bug 924950)"
131+);
132+
133+# #############################################################################
134 # Done.
135 # #############################################################################
136 my $output = '';
137
138=== added file 't/lib/samples/slowlogs/slow055.txt'
139--- t/lib/samples/slowlogs/slow055.txt 1970-01-01 00:00:00 +0000
140+++ t/lib/samples/slowlogs/slow055.txt 2012-07-11 21:50:34 +0000
141@@ -0,0 +1,15 @@
142+# User@Host: meow[meow] @ [1.2.3.8]
143+# Thread_id: 5 Schema:
144+# Query_time: 0.000002 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
145+# No InnoDB statistics available for this query
146+# administrator command: Quit;
147+# User@Host: meow[meow] @ [1.2.3.8]
148+# Thread_id: 6 Schema:
149+# Query_time: 0.000899 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
150+# No InnoDB statistics available for this query
151+SET NAMES utf8;
152+# User@Host: meow[meow] @ [1.2.3.8]
153+# Thread_id: 6 Schema:
154+# Query_time: 0.018799 Lock_time: 0.009453 Rows_sent: 0 Rows_examined: 0
155+# No InnoDB statistics available for this query
156+SELECT MIN(id),MAX(id) FROM tbl;
157
158=== added file 't/pt-query-digest/samples/slow055.txt'
159--- t/pt-query-digest/samples/slow055.txt 1970-01-01 00:00:00 +0000
160+++ t/pt-query-digest/samples/slow055.txt 2012-07-11 21:50:34 +0000
161@@ -0,0 +1,30 @@
162+
163+# ########################################################################
164+# Report grouped by db
165+# ########################################################################
166+
167+# Item 1: 0 QPS, 0x concurrency, ID 0xE9800998ECF8427E at byte 420 _______
168+# This item is included in the report because it matches --limit.
169+# Scores: Apdex = 1.00 [1.0]*, V/M = 0.01
170+# Query_time sparkline: |^ ^ ^ |
171+# Attribute pct total min max avg 95% stddev median
172+# ============ === ======= ======= ======= ======= ======= ======= =======
173+# Count 100 3
174+# Exec time 100 20ms 2us 19ms 7ms 18ms 8ms 881us
175+# Lock time 100 9ms 0 9ms 3ms 9ms 4ms 0
176+# Rows sent 0 0 0 0 0 0 0 0
177+# Rows examine 0 0 0 0 0 0 0 0
178+# Query size 100 72 14 31 24 30.19 6.95 26.08
179+# String:
180+# Hosts
181+# Users meow
182+# Query_time distribution
183+# 1us ################################################################
184+# 10us
185+# 100us ################################################################
186+# 1ms
187+# 10ms ################################################################
188+# 100ms
189+# 1s
190+# 10s+
191+
192
193=== modified file 't/pt-query-digest/slowlog_analyses.t'
194--- t/pt-query-digest/slowlog_analyses.t 2012-02-23 16:34:17 +0000
195+++ t/pt-query-digest/slowlog_analyses.t 2012-07-11 21:50:34 +0000
196@@ -9,7 +9,7 @@
197 use strict;
198 use warnings FATAL => 'all';
199 use English qw(-no_match_vars);
200-use Test::More tests => 43;
201+use Test::More tests => 44;
202
203 use PerconaTest;
204
205@@ -434,6 +434,18 @@
206 );
207
208 # #############################################################################
209+# Bug 924950: pt-query-digest --group-by db may crash profile report
210+# #############################################################################
211+ok(
212+ no_diff(
213+ sub { pt_query_digest::main(@args, $sample.'slow055.txt',
214+ qw(--group-by db)) },
215+ "t/pt-query-digest/samples/slow055.txt",
216+ ),
217+ 'Analysis for slow055 (group by blank db bug 924950)'
218+);
219+
220+# #############################################################################
221 # Done.
222 # #############################################################################
223 exit;

Subscribers

People subscribed via source and target branches