]> granicus.if.org Git - pgbadger/commitdiff
Fix major bug when running pgbadger with the -e option. Thanks to Casey Allen Shobe...
authorDarold Gilles <gilles@darold.net>
Wed, 12 Sep 2012 17:38:49 +0000 (19:38 +0200)
committerDarold Gilles <gilles@darold.net>
Wed, 12 Sep 2012 17:38:49 +0000 (19:38 +0200)
pgbadger

index 5ae93bfbf63af982e54583c08f777cbff96b1234..2e2ad1123cc9b43d48a46677823e76eb8af21482 100755 (executable)
--- a/pgbadger
+++ b/pgbadger
@@ -453,6 +453,7 @@ foreach my $logfile (@log_files) {
                open(my $io, "<", $logfile) or die "FATAL: cannot read csvlog file $logfile. $!\n";
 
                # Parse csvlog lines
+               my $getout = 0;
                while (my $row = $csv->getline($io)) {
 
                        # Set progress statistics
@@ -467,7 +468,6 @@ foreach my $logfile (@log_files) {
                        }
                        # Process only relevant lines
                        next if ($row->[11] !~ /^(LOG|WARNING|ERROR|FATAL|PANIC|DETAIL|STATEMENT|HINT|CONTEXT)$/);
-
                        # Extract the date
                        $row->[0] =~ m/^(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)\.(\d+)/;
                        my $milli = $7 || 0;
@@ -476,7 +476,7 @@ foreach my $logfile (@log_files) {
                        $prefix_vars{'t_timestamp'} = "$prefix_vars{'t_year'}-$prefix_vars{'t_month'}-$prefix_vars{'t_day'} $prefix_vars{'t_hour'}:$prefix_vars{'t_min'}:$prefix_vars{'t_sec'}";
                        # Skip unwanted lines
                        next if ($from && ($from > $prefix_vars{'t_date'}));
-                       last if ($to   && ($to < $prefix_vars{'t_date'}));
+                       $getout = 1, last if ($to && ($to < $prefix_vars{'t_date'}));
 
                        # Jump to the last line parsed if required
                        next if (!&check_incremental_position($prefix_vars{'t_date'}, join(',', @$row)));
@@ -518,7 +518,9 @@ foreach my $logfile (@log_files) {
                                &parse_query();
                        }
                }
-               $csv->eof or warn "FATAL: cannot use CSV, " . $csv->error_diag() . "\n";
+               if (!$getout) {
+                       $csv->eof or warn "FATAL: cannot use CSV, " . $csv->error_diag() . "\n";
+               }
                close $io;
        } else {