]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 155584 - Opening duplicates.cgi with no frequent bugs causes SQL syntax error...
authorgerv%gerv.net <>
Sat, 10 Aug 2002 16:53:29 +0000 (16:53 +0000)
committergerv%gerv.net <>
Sat, 10 Aug 2002 16:53:29 +0000 (16:53 +0000)
duplicates.cgi
template/en/default/reports/duplicates-table.html.tmpl
template/en/default/reports/duplicates.html.tmpl

index 52e611cbf5beeed7f55ec0d07fd3391600e93bbf..3d0875313087000cd4596c80fd0d9af6c7cfb9ac 100755 (executable)
@@ -135,48 +135,50 @@ if (!tie(%before, 'AnyDBM_File', "data/duplicates/dupes$whenever",
     $dobefore = 1;
 }
 
-# Don't add CLOSED, and don't add VERIFIED unless they are INVALID or 
-# WONTFIX. We want to see VERIFIED INVALID and WONTFIX because common 
-# "bugs" which aren't bugs end up in this state.
-my $query = "
-  SELECT bugs.bug_id, component, bug_severity, op_sys, target_milestone,
-         short_desc, bug_status, resolution
-  FROM bugs 
-  WHERE (bug_status != 'CLOSED') 
-  AND   ((bug_status = 'VERIFIED' AND resolution IN ('INVALID', 'WONTFIX')) 
-         OR (bug_status != 'VERIFIED'))
-  AND bugs.bug_id IN (" . join(", ", keys %count) . ")";
-
-# Limit to a single product if requested             
-$query .= (" AND product = " . SqlQuote($product)) if $product;
-SendSQL(SelectVisible($query, 
-                      $userid, 
-                      $usergroupset));
-                       
 my @bugs;
 my @bug_ids; 
 
-while (MoreSQLData()) {
-    # Note: maximum row count is dealt with in the template.
-
-    my ($id, $component, $bug_severity, $op_sys, $target_milestone, 
-        $short_desc, $bug_status, $resolution) = FetchSQLData();
-
-    # Limit to open bugs only if requested
-    next if $openonly && ($resolution ne "");
-
-    push (@bugs, { id => $id,
-                   count => $count{$id},
-                   delta => $delta{$id}, 
-                   component => $component,
-                   bug_severity => $bug_severity,
-                   op_sys => $op_sys,
-                   target_milestone => $target_milestone,
-                   short_desc => $short_desc,
-                   bug_status => $bug_status, 
-                   resolution => $resolution });
-    push (@bug_ids, $id); 
+if (scalar(%count)) {
+    # Don't add CLOSED, and don't add VERIFIED unless they are INVALID or 
+    # WONTFIX. We want to see VERIFIED INVALID and WONTFIX because common 
+    # "bugs" which aren't bugs end up in this state.
+    my $query = "
+      SELECT bugs.bug_id, component, bug_severity, op_sys, target_milestone,
+             short_desc, bug_status, resolution
+      FROM bugs 
+      WHERE (bug_status != 'CLOSED') 
+      AND   ((bug_status = 'VERIFIED' AND resolution IN ('INVALID', 'WONTFIX')) 
+             OR (bug_status != 'VERIFIED'))
+      AND bugs.bug_id IN (" . join(", ", keys %count) . ")";
+
+    # Limit to a single product if requested             
+    $query .= (" AND product = " . SqlQuote($product)) if $product;
+
+    SendSQL(SelectVisible($query, 
+                          $userid, 
+                          $usergroupset));
+
+    while (MoreSQLData()) {
+        # Note: maximum row count is dealt with in the template.
+
+        my ($id, $component, $bug_severity, $op_sys, $target_milestone, 
+            $short_desc, $bug_status, $resolution) = FetchSQLData();
+
+        # Limit to open bugs only if requested
+        next if $openonly && ($resolution ne "");
+
+        push (@bugs, { id => $id,
+                       count => $count{$id},
+                       delta => $delta{$id}, 
+                       component => $component,
+                       bug_severity => $bug_severity,
+                       op_sys => $op_sys,
+                       target_milestone => $target_milestone,
+                       short_desc => $short_desc,
+                       bug_status => $bug_status, 
+                       resolution => $resolution });
+        push (@bug_ids, $id); 
+    }
 }
 
 $vars->{'bugs'} = \@bugs;
index 83499b377d17330e747ed995e27cfc8c0ad1d536..ae9f074a9b807f42c7ff64dd1f0203049a6a883f 100644 (file)
   
 [%# *** Column Headers *** %]
 
-<table border>
-  <tr bgcolor="#CCCCCC">
-    [% FOREACH column = [ { name => "id", description => "Bug #" },
-                          { name => "count", description => "Dupe<br>Count" },
-                          { name => "delta", 
-                      description => "Change in last<br>$changedsince day(s)" },
-                          { name => "component", description => "Component" },
-                          { name => "bug_severity", description => "Severity" },
-                          { name => "op_sys", description => "Op Sys" }, 
-                          { name => "target_milestone", 
-                            description => "Target<br>Milestone" },
-                          { name => "short_desc", description => "Summary" } ] 
-     %]
-                          
-      [%# Small hack to keep delta column out if we don't need it %]
-      [% NEXT IF column.name == "delta" AND NOT dobefore %]                     
+[% IF bug_ids.size > 0 %]
+  <table border>
+    <tr bgcolor="#CCCCCC">
+      [% FOREACH column = [ { name => "id", description => "Bug #" },
+                            { name => "count", description => "Dupe<br>Count" },
+                            { name => "delta", 
+                        description => "Change in last<br>$changedsince day(s)" },
+                            { name => "component", description => "Component" },
+                            { name => "bug_severity", description => "Severity" },
+                            { name => "op_sys", description => "Op Sys" }, 
+                            { name => "target_milestone", 
+                              description => "Target<br>Milestone" },
+                            { name => "short_desc", description => "Summary" } ] 
+       %]
 
-      <td>
-        <center>
-          <b>
-            [% bug_ids_string = bug_ids.join(',') %]
-            <a href="duplicates.cgi?sortby=[% column.name %]
-              [% IF sortby == column.name %]
-                [% "&reverse=1" IF NOT reverse %]
-              [% ELSE %]
-                [%-# Some columns start off reversed %]
-                [% "&reverse=1" IF column.name.match('delta|count') %]
-              [% END %]
-              [% "&maxrows=$maxrows" IF maxrows %]
-              [% "&changedsince=$changedsince" IF changedsince %]
-              [% "&openonly=1" IF openonly %]
-              [% "&product=$product" IF product %]
-              [% "&format=$format" IF format %]
-              [% "&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible %]">
-              [% column.description %]</a>
-          </b>
-        </center>
-      </td>
-    [% END %]
-  </tr>
-  
-[% IF NOT sortby %]
-  [% sortby = "count"; reverse = "1" %]
-[% END %]
+        [%# Small hack to keep delta column out if we don't need it %]
+        [% NEXT IF column.name == "delta" AND NOT dobefore %]                     
 
-[% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %]
-  [%# Numeric sort %]
-  [% sortedbugs = bugs.nsort(sortby) %]
-[% ELSE %]
-  [% sortedbugs = bugs.sort(sortby) %]
-[% END %]
+        <td>
+          <center>
+            <b>
+              [% bug_ids_string = bug_ids.join(',') %]
+              <a href="duplicates.cgi?sortby=[% column.name %]
+                [% IF sortby == column.name %]
+                  [% "&reverse=1" IF NOT reverse %]
+                [% ELSE %]
+                  [%-# Some columns start off reversed %]
+                  [% "&reverse=1" IF column.name.match('delta|count') %]
+                [% END %]
+                [% "&maxrows=$maxrows" IF maxrows %]
+                [% "&changedsince=$changedsince" IF changedsince %]
+                [% "&openonly=1" IF openonly %]
+                [% "&product=$product" IF product %]
+                [% "&format=$format" IF format %]
+                [% "&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible %]">
+                [% column.description %]</a>
+            </b>
+          </center>
+        </td>
+      [% END %]
+    </tr>
 
-[% IF reverse %]
-  [% bugs = sortedbugs.reverse %]
-[% ELSE %]
-  [% bugs = sortedbugs %]
-[% END %]
+  [% IF NOT sortby %]
+    [% sortby = "count"; reverse = "1" %]
+  [% END %]
 
-[%# *** Buglist *** %]
+  [% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %]
+    [%# Numeric sort %]
+    [% sortedbugs = bugs.nsort(sortby) %]
+  [% ELSE %]
+    [% sortedbugs = bugs.sort(sortby) %]
+  [% END %]
 
-[%# We need to keep track of the bug IDs we are actually displaying, because
-  # if the user decides to sort the visible list, we need to know what that
-  # list actually is. %]
-[% vis_bug_ids = [] %]
+  [% IF reverse %]
+    [% bugs = sortedbugs.reverse %]
+  [% ELSE %]
+    [% bugs = sortedbugs %]
+  [% END %]
 
-[% FOREACH bug = bugs %]
-  [% LAST IF loop.index() >= maxrows %]
-  [% vis_bug_ids.push(bug.id) %]      
+  [%# *** Buglist *** %]
 
-  <tr>
-    <td>
-      <center>
-        [% "<strike>" IF bug.resolution != "" %]
-        <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
-        [% "</strike>" IF bug.resolution != "" %]
-      </center>
-    </td>
+  [%# We need to keep track of the bug IDs we are actually displaying, because
+    # if the user decides to sort the visible list, we need to know what that
+    # list actually is. %]
+  [% vis_bug_ids = [] %]
 
-    <td>
-      <center>
-        [% bug.count %]
-      </center>
-    </td>
+  [% FOREACH bug = bugs %]
+    [% LAST IF loop.index() >= maxrows %]
+    [% vis_bug_ids.push(bug.id) %]      
 
-    [% IF dobefore %]
-      <td><center>[% bug.delta %]</center></td>
-    [% END %]
+    <tr>
+      <td>
+        <center>
+          [% "<strike>" IF bug.resolution != "" %]
+          <a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
+          [% "</strike>" IF bug.resolution != "" %]
+        </center>
+      </td>
 
-    <td>[% bug.component %]</td>
-    <td><center>[% bug.bug_severity %]</center></td>
-    <td><center>[% bug.op_sys %]</center></td>
-    <td><center>[% bug.target_milestone %]</center></td>
-    <td>[% bug.short_desc FILTER html %]</td>
-  </tr>
-[% END %]
+      <td>
+        <center>
+          [% bug.count %]
+        </center>
+      </td>
+
+      [% IF dobefore %]
+        <td><center>[% bug.delta %]</center></td>
+      [% END %]
+
+      <td>[% bug.component %]</td>
+      <td><center>[% bug.bug_severity %]</center></td>
+      <td><center>[% bug.op_sys %]</center></td>
+      <td><center>[% bug.target_milestone %]</center></td>
+      <td>[% bug.short_desc FILTER html %]</td>
+    </tr>
+  [% END %]
 
-</table>
+  </table>
+[% ELSE %]
+  <h3>No duplicate bugs found.</h3>
+[% END %]
index 64ba5e120d56eb02b40b551f4d12931bd322b618..531196eb8216edfd20bb3dd8581d876a637a063f 100644 (file)
@@ -49,9 +49,6 @@
 
 [% PROCESS "reports/duplicates-table.html.tmpl" %]
 
-<br>
-<br>
-
 [%# *** Parameters *** %]
 
 [% bug_ids_string = vis_bug_ids.join(',') %]