]> granicus.if.org Git - pgbadger/commitdiff
Fix duration/query association when log_duration=on and log_statement=all. Thanks...
authorGilles Darold <gilles.darold@dalibo.com>
Tue, 6 Dec 2016 18:29:54 +0000 (19:29 +0100)
committerGilles Darold <gilles.darold@dalibo.com>
Tue, 6 Dec 2016 18:29:54 +0000 (19:29 +0100)
pgbadger

index d0fa47f369242e4790084ee47a0cb1645f14baec..2e5c83aa352564d209b75cb3ecb7d84bc70a1de6 100644 (file)
--- 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});