]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 91808: Additional sanitycheck tests for the duplicates table.
authorjustdave%syndicomm.com <>
Mon, 3 Sep 2001 08:08:05 +0000 (08:08 +0000)
committerjustdave%syndicomm.com <>
Mon, 3 Sep 2001 08:08:05 +0000 (08:08 +0000)
Patch by Matthew Tuck <matty@chariot.net.au>
r= jake@acutex.net, caillon@returnzero.com

sanitycheck.cgi

index c8f628e58885a9bea375b66a19c8d156757d1f9e..72a2d3818668d0b89f56c4e4b1ea115c0f3011e5 100755 (executable)
@@ -19,6 +19,7 @@
 # Rights Reserved.
 #
 # Contributor(s): Terry Weissman <terry@mozilla.org>
+#                 Matthew Tuck <matty@chariot.net.au>
 
 use diagnostics;
 use strict;
@@ -109,6 +110,7 @@ sub CrossCheck {
 }
 
     
+my @badbugs;
 
 
 my @row;
@@ -355,24 +357,25 @@ while (1) {
     push(@list, $k);
 }
 
-my @fixlist;
+@badbugs = ();
+
 foreach my $b (keys(%keyword)) {
     if (!exists $realk{$b} || $realk{$b} ne $keyword{$b}) {
-        push(@fixlist, $b);
+        push(@badbugs, $b);
     }
 }
 foreach my $b (keys(%realk)) {
     if (!exists $keyword{$b}) {
-        push(@fixlist, $b);
+        push(@badbugs, $b);
     }
 }
-if (@fixlist) {
-    @fixlist = sort {$a <=> $b} @fixlist;
+if (@badbugs) {
+    @badbugs = sort {$a <=> $b} @badbugs;
     Alert("Bug(s) found with incorrect keyword cache: " .
-          join(', ', @fixlist));
+          join(', ', @badbugs));
     if (exists $::FORM{'rebuildkeywordcache'}) {
         Status("OK, now fixing keyword cache.");
-        foreach my $b (@fixlist) {
+        foreach my $b (@badbugs) {
             my $k = '';
             if (exists($realk{$b})) {
                 $k = $realk{$b};
@@ -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.");