From 09035a1555ac79a74a3c40631701ae35dcd7f9fd Mon Sep 17 00:00:00 2001 From: "terry%mozilla.org" <> Date: Tue, 11 Jan 2000 08:26:21 +0000 Subject: Worked around bug in older versions of MySQL that caused a report of one bug matching a keyword when there really are zero. --- describekeywords.cgi | 11 ++++++++--- editkeywords.cgi | 12 ++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/describekeywords.cgi b/describekeywords.cgi index 4da535c7c..bddf3b423 100755 --- a/describekeywords.cgi +++ b/describekeywords.cgi @@ -41,14 +41,19 @@ print qq{ }; SendSQL("SELECT keyworddefs.name, keyworddefs.description, - COUNT(keywords.bug_id) + COUNT(keywords.bug_id), keywords.bug_id FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id=keywords.keywordid GROUP BY keyworddefs.id ORDER BY keyworddefs.name"); while (MoreSQLData()) { - my ($name, $description, $bugs) = FetchSQLData(); - if ($bugs) { + my ($name, $description, $bugs, $onebug) = FetchSQLData(); + if ($bugs && $onebug) { + # This 'onebug' stuff is silly hackery for old versions of + # MySQL that seem to return a count() of 1 even if there are + # no matching. So, we ask for an actual bug number. If it + # can't find any bugs that match the keyword, then we set the + # count to be zero, ignoring what it had responded. my $q = url_quote($name); $bugs = qq{$bugs}; } else { diff --git a/editkeywords.cgi b/editkeywords.cgi index 03525f725..dcb72ae2e 100755 --- a/editkeywords.cgi +++ b/editkeywords.cgi @@ -135,14 +135,22 @@ if ($action eq "") { }; SendSQL("SELECT keyworddefs.id, keyworddefs.name, keyworddefs.description, - COUNT(keywords.bug_id) + COUNT(keywords.bug_id), keywords.bug_id FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id = keywords.keywordid GROUP BY keyworddefs.id ORDER BY keyworddefs.name"); while (MoreSQLData()) { - my ($id, $name, $description, $bugs) = FetchSQLData(); + my ($id, $name, $description, $bugs, $onebug) = FetchSQLData(); $description ||= "missing"; $bugs ||= 'none'; + if (!$onebug) { + # This is silly hackery for old versions of MySQL that seem to + # return a count() of 1 even if there are no matching. So, we + # ask for an actual bug number. If it can't find any bugs that + # match the keyword, then we set the count to be zero, ignoring + # what it had responded. + $bugs = 'none'; + } print qq{ $name -- cgit v1.2.3-24-g4f1b