mirror of
https://github.com/percona/percona-toolkit.git
synced 2026-04-17 01:01:39 +08:00
Update SlowLogParser in pqd and add test case.
This commit is contained in:
@@ -4875,8 +4875,18 @@ sub parse_event {
|
|||||||
|
|
||||||
if ( !$found_arg && $pos == $len ) {
|
if ( !$found_arg && $pos == $len ) {
|
||||||
PTDEBUG && _d("Did not find arg, looking for special cases");
|
PTDEBUG && _d("Did not find arg, looking for special cases");
|
||||||
local $INPUT_RECORD_SEPARATOR = ";\n";
|
local $INPUT_RECORD_SEPARATOR = ";\n"; # get next line
|
||||||
if ( defined(my $l = $next_event->()) ) {
|
if ( defined(my $l = $next_event->()) ) {
|
||||||
|
if ( $l =~ /^\s*[A-Z][a-z_]+: / ) {
|
||||||
|
PTDEBUG && _d("Found NULL query before", $l);
|
||||||
|
local $INPUT_RECORD_SEPARATOR = ";\n#";
|
||||||
|
my $rest_of_event = $next_event->();
|
||||||
|
push @{$self->{pending}}, $l . $rest_of_event;
|
||||||
|
push @properties, 'cmd', 'Query', 'arg', '/* No query */';
|
||||||
|
push @properties, 'bytes', 0;
|
||||||
|
$found_arg++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
chomp $l;
|
chomp $l;
|
||||||
$l =~ s/^\s+//;
|
$l =~ s/^\s+//;
|
||||||
PTDEBUG && _d("Found admin statement", $l);
|
PTDEBUG && _d("Found admin statement", $l);
|
||||||
@@ -4884,6 +4894,7 @@ sub parse_event {
|
|||||||
push @properties, 'bytes', length($properties[-1]);
|
push @properties, 'bytes', length($properties[-1]);
|
||||||
$found_arg++;
|
$found_arg++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
PTDEBUG && _d("I can't figure out what to do with this line");
|
PTDEBUG && _d("I can't figure out what to do with this line");
|
||||||
next EVENT;
|
next EVENT;
|
||||||
|
|||||||
68
t/pt-query-digest/samples/slow056.txt
Normal file
68
t/pt-query-digest/samples/slow056.txt
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
# Query 1: 0 QPS, 0x concurrency, ID 0x54E0BB9E70EAA792 at byte 596 ______
|
||||||
|
# This item is included in the report because it matches --limit.
|
||||||
|
# Scores: Apdex = 1.00 [1.0]*, V/M = 0.00
|
||||||
|
# Query_time sparkline: | ^ |
|
||||||
|
# Time range: all events occurred at 2012-11-23 19:56:06
|
||||||
|
# Attribute pct total min max avg 95% stddev median
|
||||||
|
# ============ === ======= ======= ======= ======= ======= ======= =======
|
||||||
|
# Count 50 1
|
||||||
|
# Exec time 96 3ms 3ms 3ms 3ms 3ms 0 3ms
|
||||||
|
# Lock time 100 197us 197us 197us 197us 197us 0 197us
|
||||||
|
# Rows sent 0 0 0 0 0 0 0 0
|
||||||
|
# Rows examine 100 1 1 1 1 1 0 1
|
||||||
|
# Rows affecte 100 1 1 1 1 1 0 1
|
||||||
|
# Rows read 0 0 0 0 0 0 0 0
|
||||||
|
# Query size 100 39 39 39 39 39 0 39
|
||||||
|
# String:
|
||||||
|
# Databases test_db
|
||||||
|
# Hosts
|
||||||
|
# Last errno 0
|
||||||
|
# Users root
|
||||||
|
# Query_time distribution
|
||||||
|
# 1us
|
||||||
|
# 10us
|
||||||
|
# 100us
|
||||||
|
# 1ms ################################################################
|
||||||
|
# 10ms
|
||||||
|
# 100ms
|
||||||
|
# 1s
|
||||||
|
# 10s+
|
||||||
|
# Tables
|
||||||
|
# SHOW TABLE STATUS FROM `test_db` LIKE 't'\G
|
||||||
|
# SHOW CREATE TABLE `test_db`.`t`\G
|
||||||
|
update t set b = b + 30 where user_id=1\G
|
||||||
|
# Converted for EXPLAIN
|
||||||
|
# EXPLAIN /*!50100 PARTITIONS*/
|
||||||
|
select b = b + 30 from t where user_id=1\G
|
||||||
|
|
||||||
|
# Query 2: 0 QPS, 0x concurrency, ID 0xE9800998ECF8427E at byte 0 ________
|
||||||
|
# This item is included in the report because it matches --limit.
|
||||||
|
# Scores: Apdex = 1.00 [1.0]*, V/M = 0.00
|
||||||
|
# Query_time sparkline: | ^ |
|
||||||
|
# Time range: all events occurred at 2012-11-23 19:56:06
|
||||||
|
# Attribute pct total min max avg 95% stddev median
|
||||||
|
# ============ === ======= ======= ======= ======= ======= ======= =======
|
||||||
|
# Count 50 1
|
||||||
|
# Exec time 3 102us 102us 102us 102us 102us 0 102us
|
||||||
|
# Lock time 0 0 0 0 0 0 0 0
|
||||||
|
# Rows sent 0 0 0 0 0 0 0 0
|
||||||
|
# Rows examine 0 0 0 0 0 0 0 0
|
||||||
|
# Rows affecte 0 0 0 0 0 0 0 0
|
||||||
|
# Rows read 0 0 0 0 0 0 0 0
|
||||||
|
# Query size 0 0 0 0 0 0 0 0
|
||||||
|
# String:
|
||||||
|
# Databases test_db
|
||||||
|
# Hosts
|
||||||
|
# Last errno 0
|
||||||
|
# Users root
|
||||||
|
# Query_time distribution
|
||||||
|
# 1us
|
||||||
|
# 10us
|
||||||
|
# 100us ################################################################
|
||||||
|
# 1ms
|
||||||
|
# 10ms
|
||||||
|
# 100ms
|
||||||
|
# 1s
|
||||||
|
# 10s+
|
||||||
|
/* No query */\G
|
||||||
@@ -434,6 +434,17 @@ ok(
|
|||||||
'Analysis for slow055 (group by blank db bug 924950)'
|
'Analysis for slow055 (group by blank db bug 924950)'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# #############################################################################
|
||||||
|
# Bug 1082599: pt-query-digest fails to parse timestamp with no query
|
||||||
|
# #############################################################################
|
||||||
|
ok(
|
||||||
|
no_diff(
|
||||||
|
sub { pt_query_digest::main(@args, $sample.'slow056.txt') },
|
||||||
|
"t/pt-query-digest/samples/slow056.txt",
|
||||||
|
),
|
||||||
|
'Analysis for slow056 (no query bug 1082599)'
|
||||||
|
);
|
||||||
|
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
# Done.
|
# Done.
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user