From: Gilles Darold Date: Tue, 6 Dec 2016 18:29:54 +0000 (+0100) Subject: Fix duration/query association when log_duration=on and log_statement=all. Thanks... X-Git-Tag: v9.1~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9fe6b002334aa6621401707849d5c1a4a25673dc;p=pgbadger Fix duration/query association when log_duration=on and log_statement=all. Thanks to Eric Jensen for the report. --- diff --git a/pgbadger b/pgbadger index d0fa47f..2e5c83a 100644 --- a/pgbadger +++ b/pgbadger @@ -2757,7 +2757,7 @@ sub process_file # The information can be saved when we are switching to a new main message if ($cur_pid && ($prefix_vars{'t_loglevel'} =~ /^(LOG|ERROR|FATAL|PANIC|WARNING)$/)) { &store_queries($cur_pid); - delete $cur_info{$cur_pid}; + delete $cur_info{$cur_pid} if (!$log_duration || (($cur_info{$cur_pid}{duration} ne '') && ($cur_info{$cur_pid}{query} ne ''))); } # Process the log line @@ -2875,7 +2875,7 @@ sub process_file # The information can be saved when we are switching to a new main message if ($cur_pid && $prefix_vars{'t_loglevel'} =~ /^(LOG|ERROR|FATAL|PANIC|WARNING)$/) { &store_queries($cur_pid); - delete $cur_info{$cur_pid}; + delete $cur_info{$cur_pid} if (!$log_duration || (($cur_info{$cur_pid}{duration} ne '') && ($cur_info{$cur_pid}{query} ne ''))); } # Process the log line @@ -12894,25 +12894,25 @@ sub set_current_infos my $t_pid = shift; - $cur_info{$t_pid}{year} = $prefix_vars{'t_year'} if (!$log_duration || !$cur_info{$t_pid}{year}); - $cur_info{$t_pid}{month} = $prefix_vars{'t_month'} if (!$log_duration || !$cur_info{$t_pid}{month}); - $cur_info{$t_pid}{day} = $prefix_vars{'t_day'} if (!$log_duration || !$cur_info{$t_pid}{day}); - $cur_info{$t_pid}{hour} = $prefix_vars{'t_hour'} if (!$log_duration || ($cur_info{$t_pid}{hour} eq '')); - $cur_info{$t_pid}{min} = $prefix_vars{'t_min'} if (!$log_duration || !$cur_info{$t_pid}{min} eq ''); - $cur_info{$t_pid}{sec} = $prefix_vars{'t_sec'} if (!$log_duration || !$cur_info{$t_pid}{sec} eq ''); - $cur_info{$t_pid}{timestamp} = $prefix_vars{'t_timestamp'} if (!$log_duration || !$cur_info{$t_pid}{timestamp}); - $cur_info{$t_pid}{ident} = $prefix_vars{'t_ident'} if (!$log_duration || !$cur_info{$t_pid}{ident}); - $cur_info{$t_pid}{query} = $prefix_vars{'t_query'} if (!$log_duration || !$cur_info{$t_pid}{query}); - $cur_info{$t_pid}{duration} = $prefix_vars{'t_duration'} if (!$log_duration || !$cur_info{$t_pid}{duration}); - $cur_info{$t_pid}{pid} = $prefix_vars{'t_pid'} if (!$log_duration || !$cur_info{$t_pid}{pid}); - $cur_info{$t_pid}{session} = $prefix_vars{'t_session_line'} if (!$log_duration || !$cur_info{$t_pid}{session}); - $cur_info{$t_pid}{loglevel} = $prefix_vars{'t_loglevel'} if (!$log_duration || !$cur_info{$t_pid}{loglevel}); - $cur_info{$t_pid}{dbname} = $prefix_vars{'t_dbname'} if (!$log_duration || !$cur_info{$t_pid}{dbname}); - $cur_info{$t_pid}{dbuser} = $prefix_vars{'t_dbuser'} if (!$log_duration || !$cur_info{$t_pid}{dbuser}); - $cur_info{$t_pid}{dbclient} = $prefix_vars{'t_client'} || $prefix_vars{'t_dbclient'} if (!$log_duration || !$cur_info{$t_pid}{dbclient}); - $cur_info{$t_pid}{dbappname} = $prefix_vars{'t_appname'} if (!$log_duration || !$cur_info{$t_pid}{dbappname}); - $cur_info{$t_pid}{date} = $prefix_vars{'t_date'} if (!$log_duration || !$cur_info{$t_pid}{date}); - $cur_info{$t_pid}{bind} = $prefix_vars{'t_bind'} if (!$log_duration || !$cur_info{$t_pid}{bind}); + $cur_info{$t_pid}{year} = $prefix_vars{'t_year'} if (!$cur_info{$t_pid}{year}); + $cur_info{$t_pid}{month} = $prefix_vars{'t_month'} if (!$cur_info{$t_pid}{month}); + $cur_info{$t_pid}{day} = $prefix_vars{'t_day'} if (!$cur_info{$t_pid}{day}); + $cur_info{$t_pid}{hour} = $prefix_vars{'t_hour'} if (($cur_info{$t_pid}{hour} eq '')); + $cur_info{$t_pid}{min} = $prefix_vars{'t_min'} if (!$cur_info{$t_pid}{min} eq ''); + $cur_info{$t_pid}{sec} = $prefix_vars{'t_sec'} if (!$cur_info{$t_pid}{sec} eq ''); + $cur_info{$t_pid}{timestamp} = $prefix_vars{'t_timestamp'} if (!$cur_info{$t_pid}{timestamp}); + $cur_info{$t_pid}{ident} = $prefix_vars{'t_ident'} if (!$cur_info{$t_pid}{ident}); + $cur_info{$t_pid}{query} = $prefix_vars{'t_query'} if (!$cur_info{$t_pid}{query}); + $cur_info{$t_pid}{duration} = $prefix_vars{'t_duration'} if (!$cur_info{$t_pid}{duration}); + $cur_info{$t_pid}{pid} = $prefix_vars{'t_pid'} if (!$cur_info{$t_pid}{pid}); + $cur_info{$t_pid}{session} = $prefix_vars{'t_session_line'} if (!$cur_info{$t_pid}{session}); + $cur_info{$t_pid}{loglevel} = $prefix_vars{'t_loglevel'} if (!$cur_info{$t_pid}{loglevel}); + $cur_info{$t_pid}{dbname} = $prefix_vars{'t_dbname'} if (!$cur_info{$t_pid}{dbname}); + $cur_info{$t_pid}{dbuser} = $prefix_vars{'t_dbuser'} if (!$cur_info{$t_pid}{dbuser}); + $cur_info{$t_pid}{dbclient} = $prefix_vars{'t_client'} || $prefix_vars{'t_dbclient'} if (!$cur_info{$t_pid}{dbclient}); + $cur_info{$t_pid}{dbappname} = $prefix_vars{'t_appname'} if (!$cur_info{$t_pid}{dbappname}); + $cur_info{$t_pid}{date} = $prefix_vars{'t_date'} if (!$cur_info{$t_pid}{date}); + $cur_info{$t_pid}{bind} = $prefix_vars{'t_bind'} if (!$cur_info{$t_pid}{bind}); # Extract the query part from the plan if (exists $cur_plan_info{$t_pid}{plan} && ($cur_plan_info{$t_pid}{plan} ne '')) { @@ -12986,7 +12986,7 @@ sub store_queries # With separate log_duration and log_statement wait duration before storing the entry return 0 if (!$end && $log_duration && ($cur_info{$t_pid}{duration} eq '') - && ($cur_info{$t_pid}{log_level} eq 'LOG')); + && ($cur_info{$t_pid}{query} ne '')); # Remove comments if required if ($remove_comment) { @@ -12998,7 +12998,6 @@ sub store_queries $cur_info{$t_pid}{query} = &anonymize_query($cur_info{$t_pid}{query}); } -#print STDERR "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ", %{$cur_info{$t_pid}}, "\n"; return 0 if (!exists $cur_info{$t_pid}); return 1 if (!$cur_info{$t_pid}{year});