Fix for bug 91808: Additional sanitycheck tests for the duplicates table.

Patch by Matthew Tuck <matty@chariot.net.au> r= jake@acutex.net, caillon@returnzero.com
parent fe6d2a3a
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
# Rights Reserved. # Rights Reserved.
# #
# Contributor(s): Terry Weissman <terry@mozilla.org> # Contributor(s): Terry Weissman <terry@mozilla.org>
# Matthew Tuck <matty@chariot.net.au>
use diagnostics; use diagnostics;
use strict; use strict;
...@@ -109,6 +110,7 @@ sub CrossCheck { ...@@ -109,6 +110,7 @@ sub CrossCheck {
} }
my @badbugs;
my @row; my @row;
...@@ -355,24 +357,25 @@ while (1) { ...@@ -355,24 +357,25 @@ while (1) {
push(@list, $k); push(@list, $k);
} }
my @fixlist; @badbugs = ();
foreach my $b (keys(%keyword)) { foreach my $b (keys(%keyword)) {
if (!exists $realk{$b} || $realk{$b} ne $keyword{$b}) { if (!exists $realk{$b} || $realk{$b} ne $keyword{$b}) {
push(@fixlist, $b); push(@badbugs, $b);
} }
} }
foreach my $b (keys(%realk)) { foreach my $b (keys(%realk)) {
if (!exists $keyword{$b}) { if (!exists $keyword{$b}) {
push(@fixlist, $b); push(@badbugs, $b);
} }
} }
if (@fixlist) { if (@badbugs) {
@fixlist = sort {$a <=> $b} @fixlist; @badbugs = sort {$a <=> $b} @badbugs;
Alert("Bug(s) found with incorrect keyword cache: " . Alert("Bug(s) found with incorrect keyword cache: " .
join(', ', @fixlist)); join(', ', @badbugs));
if (exists $::FORM{'rebuildkeywordcache'}) { if (exists $::FORM{'rebuildkeywordcache'}) {
Status("OK, now fixing keyword cache."); Status("OK, now fixing keyword cache.");
foreach my $b (@fixlist) { foreach my $b (@badbugs) {
my $k = ''; my $k = '';
if (exists($realk{$b})) { if (exists($realk{$b})) {
$k = $realk{$b}; $k = $realk{$b};
...@@ -389,6 +392,47 @@ if (@fixlist) { ...@@ -389,6 +392,47 @@ if (@fixlist) {
} }
###########################################################################
# Perform duplicates table checks
###########################################################################
Status("Checking duplicates table");
SendSQL("SELECT bugs.bug_id " .
"FROM bugs INNER JOIN duplicates ON bugs.bug_id = duplicates.dupe " .
"WHERE bugs.resolution != 'DUPLICATE' " .
"ORDER BY bugs.bug_id");
@badbugs = ();
while (@row = FetchSQLData()) {
my ($id) = (@row);
push (@badbugs, $id);
}
if (@badbugs) {
Alert("Bug(s) found on duplicates table that are not marked duplicate: " .
join(', ', @badbugs));
}
SendSQL("SELECT bugs.bug_id " .
"FROM bugs LEFT JOIN duplicates ON bugs.bug_id = duplicates.dupe " .
"WHERE bugs.resolution = 'DUPLICATE' AND duplicates.dupe IS NULL " .
"ORDER BY bugs.bug_id");
@badbugs = ();
while (@row = FetchSQLData()) {
my ($id) = (@row);
push (@badbugs, $id);
}
if (@badbugs) {
Alert("Bug(s) found marked resolved duplicate and not on duplicates " .
"table: " . join(', ', @badbugs));
}
Status("Sanity check completed."); Status("Sanity check completed.");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment