diff --git a/bin/pt-kill b/bin/pt-kill index 29584395..f725a67e 100755 --- a/bin/pt-kill +++ b/bin/pt-kill @@ -2959,7 +2959,7 @@ sub parse_event { int($query_start), # START $etime, # ETIME $time, # FSEEN - { $curr->[STATE] => 0 }, # PROFILE + { ($curr->[STATE] || "") => 0 }, # PROFILE ]; } } @@ -2973,7 +2973,7 @@ sub parse_event { int($query_start), # START $etime, # ETIME $time, # FSEEN - { $curr->[STATE] => 0 }, # PROFILE + { ($curr->[STATE] || "") => 0 }, # PROFILE ]; } } diff --git a/bin/pt-query-digest b/bin/pt-query-digest index e4dc5cb9..15155889 100755 --- a/bin/pt-query-digest +++ b/bin/pt-query-digest @@ -2398,7 +2398,7 @@ sub parse_event { int($query_start), # START $etime, # ETIME $time, # FSEEN - { $curr->[STATE] => 0 }, # PROFILE + { ($curr->[STATE] || "") => 0 }, # PROFILE ]; } } @@ -2412,7 +2412,7 @@ sub parse_event { int($query_start), # START $etime, # ETIME $time, # FSEEN - { $curr->[STATE] => 0 }, # PROFILE + { ($curr->[STATE] || "") => 0 }, # PROFILE ]; } } diff --git a/lib/Processlist.pm b/lib/Processlist.pm index 29128fb7..556c1832 100644 --- a/lib/Processlist.pm +++ b/lib/Processlist.pm @@ -279,7 +279,7 @@ sub parse_event { int($query_start), # START $etime, # ETIME $time, # FSEEN - { $curr->[STATE] => 0 }, # PROFILE + { ($curr->[STATE] || "") => 0 }, # PROFILE ]; } } @@ -294,7 +294,7 @@ sub parse_event { int($query_start), # START $etime, # ETIME $time, # FSEEN - { $curr->[STATE] => 0 }, # PROFILE + { ($curr->[STATE] || "") => 0 }, # PROFILE ]; } } diff --git a/t/lib/Processlist.t b/t/lib/Processlist.t index a44c2984..0bab3347 100644 --- a/t/lib/Processlist.t +++ b/t/lib/Processlist.t @@ -9,7 +9,7 @@ BEGIN { use strict; use warnings FATAL => 'all'; use English qw(-no_match_vars); -use Test::More tests => 35; +use Test::More; use Processlist; use PerconaTest; @@ -862,7 +862,35 @@ eval { $pl->find([$proc], %find_spec) }; ok !$@, "Bug 923896: NULL Time in processlist doesn't fail for idle_time+Command=Sleep"; +# ############################################################################# +# NULL STATE doesn't generate warnings +# https://bugs.launchpad.net/percona-toolkit/+bug/821703 +# ############################################################################# + +$procs = [ + [ [1, 'unauthenticated user', 'localhost', undef, 'Connect', 7, + 'some state', 1] ], + [ [1, 'unauthenticated user', 'localhost', undef, 'Connect', 8, + undef, 2] ], +], + +eval { + parse_n_times( + 2, + code => sub { + return shift @$procs; + }, + time => Transformers::unix_timestamp('2001-01-01 00:05:00'), + ); +}; + +is( + $EVAL_ERROR, + '', + "NULL STATE shouldn't cause warnings" +); + # ############################################################################# # Done. # ############################################################################# -exit; +done_testing;