if (open(IN, "$tmp_last_parsed") ) {
while (my $line = <IN>) {
chomp($line);
+ $line =~ s/\r//;
my ($d, $p, $l) = split(/\t/, $line, 3);
if (!$last_line{datetime} || ($d gt $last_line{datetime})) {
$last_line{datetime} = $d;
if (open(IN, "$last_parsed.tmp")) {
while (my $l = <IN>) {
chomp($l);
+ $l =~ s/\r//;
push(@build_directories, $l) if (!grep(/^$l$/, @build_directories));
}
close(IN);
CSVLOOP: while (!$csv->eof()) {
while (my $row = $csv->getline($lfile)) {
+ $row =~ s/\r//;
+
# We received a signal
last CSVLOOP if ($terminate);
# We received a signal
last if ($terminate);
+ $line =~ s/\r//;
+
# Start to exclude from parsing any desired lines
if ($has_exclusion >= 0) {
$current_offset += length($line);
chomp($line);
- $line =~ s/\r//;
$nlines++;
next if (!$line);
$more_lines++;
+ $line =~ s/\r//;
+
if ($format =~ /syslog/) {
my @matches = ($line =~ $compiled_prefix);
print STDERR "$level: $str\n";
}
+# Remove quote from alias for normalisation
+sub remove_alias
+{
+ my $str = shift();
+
+ $str =~ s/'//gs;
+
+ return $str;
+}
+
# Normalize SQL queries by removing parameters
sub normalize_query
{
$orig_query =~ s/^\s*begin\s*;\s*//gs
}
+ # Normalise alias with quote
+ $orig_query =~ s/AS\s+"([^"]+)"/'AS "' . remove_alias($1) . '"'/eigs;
+
# Remove string content
$orig_query =~ s/\\'//g;
$orig_query =~ s/'[^']*'/''/g;
{
my ($norm, $q, $dt, $date, $db, $user, $remote, $app, $bind, $plan) = @_;
- $normalyzed_info{$norm}{samples}{$dt}{query} = $q;
- $normalyzed_info{$norm}{samples}{$dt}{date} = $date;
- $normalyzed_info{$norm}{samples}{$dt}{db} = $db;
- $normalyzed_info{$norm}{samples}{$dt}{user} = $user;
- $normalyzed_info{$norm}{samples}{$dt}{remote} = $remote;
- $normalyzed_info{$norm}{samples}{$dt}{app} = $app;
- $normalyzed_info{$norm}{samples}{$dt}{bind} = $bind;
- $normalyzed_info{$norm}{samples}{$dt}{plan} = $plan;
+ return if (!$norm || !$q);
+
+ $normalyzed_info{$norm}{samples}{$dt}{query} = $q;
+ $normalyzed_info{$norm}{samples}{$dt}{date} = $date;
+ $normalyzed_info{$norm}{samples}{$dt}{db} = $db;
+ $normalyzed_info{$norm}{samples}{$dt}{user} = $user;
+ $normalyzed_info{$norm}{samples}{$dt}{remote} = $remote;
+ $normalyzed_info{$norm}{samples}{$dt}{app} = $app;
+ $normalyzed_info{$norm}{samples}{$dt}{bind} = $bind;
+ $normalyzed_info{$norm}{samples}{$dt}{plan} = $plan;
if ($sample > 0) {
my $i = 1;
my $k = $top_locked_queries[$i]->[0];
my $j = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
- my $ttl = $top_locked_info[$i]->[1] || '';
+ my $ttl = $top_locked_info[$i]->[1] || '';
my $db = " - $normalyzed_info{$k}{samples}{$d}{date} - database: $normalyzed_info{$k}{samples}{$d}{db}" if ($normalyzed_info{$k}{samples}{$d}{db});
$db .= ", user: $normalyzed_info{$k}{samples}{$d}{user}" if ($normalyzed_info{$k}{samples}{$d}{user});
$db .= ", remote: $normalyzed_info{$k}{samples}{$d}{remote}" if ($normalyzed_info{$k}{samples}{$d}{remote});
" - ", $top_temporary[$i]->[0], "\n";
print $fh "--\n";
my $k = $top_temporary[$i]->[0];
- if ($normalyzed_info{$k}{count} > 1) {
+ if (scalar keys %{$normalyzed_info{$k}{samples}}) {
my $j = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
my $db = "$normalyzed_info{$k}{samples}{$d}{date} - database: $normalyzed_info{$k}{samples}{$d}{db}" if ($normalyzed_info{$k}{samples}{$d}{db});
$top_cancelled[$i]->[1], " - ", $top_cancelled[$i]->[0], "\n";
print $fh "--\n";
my $k = $top_cancelled[$i]->[0];
- if ($normalyzed_info{$k}{count} > 1) {
+ if (scalar keys %{$normalyzed_info{$k}{samples}}) {
my $j = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
my $db = "$normalyzed_info{$k}{samples}{$d}{date} - database: $normalyzed_info{$k}{samples}{$d}{db}" if ($normalyzed_info{$k}{samples}{$d}{db});
my $query = &highlight_code($top_locked_queries[$i]->[0]);
my $md5 = '';
$md5 = 'md5: ' . md5_hex($top_locked_queries[$i]->[0]) if ($enable_checksum);
- my $k = $top_locked_queries[$i]->[0];
my $example = qq{<p><button type="button" class="btn btn-mini" data-toggle="collapse" data-target="#queries-most-frequent-waiting-examples-rank-$rank">Examples</button></p>};
- $example = '' if (scalar keys %{$normalyzed_info{$k}{samples}} <= 1);
+ my $k = $top_locked_queries[$i]->[0];
+ $example = '' if (scalar keys %{$normalyzed_info{$k}{samples}} == 0);
print $fh qq{
<tr>
<td>$rank</td>
<div id="queries-most-frequent-waiting-examples-rank-$rank" class="collapse">
<dl>
};
- if ($normalyzed_info{$k}{count} > 1) {
+ if (scalar keys %{$normalyzed_info{$k}{samples}}) {
my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
my $md5 = '';
$md5 = 'md5: ' . md5_hex($top_temporary[$i]->[0]) if ($enable_checksum);
my $example = qq{<p><button type="button" class="btn btn-mini" data-toggle="collapse" data-target="#queries-generating-most-temporary-files-examples-rank-$rank">Examples</button></p>};
- $example = '' if (scalar keys %{$normalyzed_info{$top_temporary[$i]->[0]}{samples}} == 0);
+ my $k = $top_temporary[$i]->[0];
+ $example = '' if (scalar keys %{$normalyzed_info{$k}{samples}} == 0);
print $fh qq{
<tr>
<td>$rank</td>
<div id="queries-generating-most-temporary-files-examples-rank-$rank" class="collapse">
<dl>
};
- my $k = $top_temporary[$i]->[0];
- if ($normalyzed_info{$k}{count} > 1) {
+ if (scalar keys %{$normalyzed_info{$k}{samples}}) {
my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});
my $md5 = '';
$md5 = 'md5: ' . md5_hex($top_cancelled[$i]->[0]) if ($enable_checksum);
my $example = qq{<p><button type="button" class="btn btn-mini" data-toggle="collapse" data-target="#queries-generating-most-cancellation-examples-rank-$rank">Examples</button></p>};
- $example = '' if (scalar keys %{$normalyzed_info{$top_cancelled[$i]->[0]}{samples}} == 0);
+ my $k = $top_cancelled[$i]->[0];
+ $example = '' if (scalar keys %{$normalyzed_info{$k}{samples}} == 0);
print $fh qq{
<tr>
<td>$rank</td>
<div id="queries-generating-most-cancellation-examples-rank-$rank" class="collapse">
<dl>
};
- my $k = $top_cancelled[$i]->[0];
- if ($normalyzed_info{$k}{count} >= 1) {
+ if (scalar keys %{$normalyzed_info{$k}{samples}}) {
my $idx = 1;
foreach my $d (sort {$b <=> $a} keys %{$normalyzed_info{$k}{samples}}) {
$query = &highlight_code($normalyzed_info{$k}{samples}{$d}{query});