Commit c58ca9fb authored by jake%acutex.net's avatar jake%acutex.net

Fix for bug 76140 - Adding some more sanity checks.

Patch by Matthew Tuck <matty@chariot.net.au> r= caillon@returnzero.com, jake@acutex.net
parent 2673d244
...@@ -90,7 +90,8 @@ sub CrossCheck { ...@@ -90,7 +90,8 @@ sub CrossCheck {
Status("... from $t2.$f2"); Status("... from $t2.$f2");
SendSQL("SELECT DISTINCT $f2" . ($key2 ? ", $key2" : '') ." FROM $t2"); SendSQL("SELECT DISTINCT $f2" . ($key2 ? ", $key2" : '') ." FROM $t2 "
. "WHERE $f2 IS NOT NULL");
while (MoreSQLData()) { while (MoreSQLData()) {
my ($value, $key) = FetchSQLData(); my ($value, $key) = FetchSQLData();
if (!$valid{$value} && !$exceptions{$value}) { if (!$valid{$value} && !$exceptions{$value}) {
...@@ -142,7 +143,13 @@ CrossCheck("keyworddefs", "id", ...@@ -142,7 +143,13 @@ CrossCheck("keyworddefs", "id",
CrossCheck("fielddefs", "fieldid", CrossCheck("fielddefs", "fieldid",
["bugs_activity", "fieldid"]); ["bugs_activity", "fieldid"]);
CrossCheck("attachments", "attach_id",
["attachstatuses", "attach_id"],
["bugs_activity", "attach_id"]);
CrossCheck("attachstatusdefs", "id",
["attachstatuses", "statusid"]);
CrossCheck("bugs", "bug_id", CrossCheck("bugs", "bug_id",
["bugs_activity", "bug_id"], ["bugs_activity", "bug_id"],
...@@ -152,7 +159,9 @@ CrossCheck("bugs", "bug_id", ...@@ -152,7 +159,9 @@ CrossCheck("bugs", "bug_id",
["dependencies", "blocked"], ["dependencies", "blocked"],
["dependencies", "dependson"], ["dependencies", "dependson"],
["votes", "bug_id"], ["votes", "bug_id"],
["keywords", "bug_id"]); ["keywords", "bug_id"],
["duplicates", "dupe_of", "dupe"],
["duplicates", "dupe", "dupe_of"]);
CrossCheck("profiles", "userid", CrossCheck("profiles", "userid",
["bugs", "reporter", "bug_id"], ["bugs", "reporter", "bug_id"],
...@@ -163,10 +172,21 @@ CrossCheck("profiles", "userid", ...@@ -163,10 +172,21 @@ CrossCheck("profiles", "userid",
["cc", "who", "bug_id"], ["cc", "who", "bug_id"],
["votes", "who", "bug_id"], ["votes", "who", "bug_id"],
["longdescs", "who", "bug_id"], ["longdescs", "who", "bug_id"],
["logincookies", "userid"],
["namedqueries", "userid"], ["namedqueries", "userid"],
["watch", "watcher"],
["watch", "watched"],
["tokens", "userid"],
["components", "initialowner", "value"], ["components", "initialowner", "value"],
["components", "initialqacontact", "value", ["0"]]); ["components", "initialqacontact", "value", ["0"]]);
CrossCheck("products", "product",
["bugs", "product", "bug_id"],
["components", "program", "value"],
["milestones", "product", "value"],
["versions", "program", "value"],
["attachstatusdefs", "product", "name"]);
Status("Checking groups"); Status("Checking groups");
SendSQL("select bit from groups where bit != pow(2, round(log(bit) / log(2)))"); SendSQL("select bit from groups where bit != pow(2, round(log(bit) / log(2)))");
...@@ -217,11 +237,28 @@ foreach my $ref (@checklist) { ...@@ -217,11 +237,28 @@ foreach my $ref (@checklist) {
my ($product, $milestone) = (@$ref); my ($product, $milestone) = (@$ref);
SendSQL("SELECT count(*) FROM milestones WHERE product = " . SqlQuote($product) . " AND value = " . SqlQuote($milestone)); SendSQL("SELECT count(*) FROM milestones WHERE product = " . SqlQuote($product) . " AND value = " . SqlQuote($milestone));
if(FetchOneColumn() != 1) { if(FetchOneColumn() != 1) {
Alert("Bug(s) found with invalud product/milestone: $product/$milestone"); Alert("Bug(s) found with invalid product/milestone: $product/$milestone");
} }
} }
Status("Checking default milestone/products");
@checklist = ();
SendSQL("select product, defaultmilestone from products");
while (@row = FetchSQLData()) {
my @copy = @row;
push(@checklist, \@copy);
}
foreach my $ref (@checklist) {
my ($product, $milestone) = (@$ref);
SendSQL("SELECT count(*) FROM milestones WHERE product = " . SqlQuote($product) . " AND value = " . SqlQuote($milestone));
if(FetchOneColumn() != 1) {
Alert("Product(s) found with invalid default milestone: $product/$milestone");
}
}
Status("Checking components/products"); Status("Checking components/products");
......
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