]> git.donarmstrong.com Git - debbugs.git/commitdiff
[project @ 2001-02-20 09:12:30 by ajt]
authorajt <>
Tue, 20 Feb 2001 17:12:30 +0000 (09:12 -0800)
committerajt <>
Tue, 20 Feb 2001 17:12:30 +0000 (09:12 -0800)
first pass at using by-<blah>.idx indexes to speed up pkgreport.cgi
don't getmaintainers for by submitter listings, since they're not used

cgi/common.pl
cgi/pkgreport.cgi

index 11517de2d0befa14e1ed02d8e3763f31480d4e3f..eb837e59956a584acc9b92aed2fa25c35892f6dd 100644 (file)
@@ -292,28 +292,40 @@ sub countbugs {
 
 sub getbugs {
     my $bugfunc = shift;
+    my $opt = shift;
 
-    if ( $common_archive ) {
-        open I, "<$debbugs::gSpoolDir/index.archive" or &quit("bugindex: $!");
-    } else {
-        open I, "<$debbugs::gSpoolDir/index.db" or &quit("bugindex: $!");
-    }
-    
     my @result = ();
-print STDERR "here start getbugs\n" if ($debug);
-    while(<I>) 
+
+    if (!$common_archive && defined $opt && 
+        -e "$debbugs::gSpoolDir/by-$opt.idx") 
     {
-        if (m/^(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+\[\s*([^]]*)\s*\]\s+(\w+)\s+(.*)$/) {
-            if ($bugfunc->(pkg => $1, bug => $2, status => $4, submitter => $5,
-                          severity => $6, tags => $7))
-           {
-               push (@result, $2);
-               #last if (@result > 400);
+        tie my %lookup, DB_File => "$debbugs::gSpoolDir/by-$opt.idx", O_RDONLY
+            or die "$0: can't open $debbugs::gSpoolDir/by-$opt.idx ($!)\n";
+       while ($key = shift) {
+            my $bugs = $lookup{$key};
+            if (defined $bugs) {
+                push @result, (unpack 'N*', $bugs);
+            }
+        }
+    } else {
+        if ( $common_archive ) {
+            open I, "<$debbugs::gSpoolDir/index.archive" 
+                or &quit("bugindex: $!");
+        } else {
+            open I, "<$debbugs::gSpoolDir/index.db" 
+                or &quit("bugindex: $!");
+        }
+        while(<I>) {
+            if (m/^(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+\[\s*([^]]*)\s*\]\s+(\w+)\s+(.*)$/) {
+                if ($bugfunc->(pkg => $1, bug => $2, status => $4, 
+                               submitter => $5, severity => $6, tags => $7))
+               {
+                   push (@result, $2);
+               }
            }
-       }
+        }
+        close I;
     }
-    close I;
-print STDERR "here end getbugs\n" if ($debug);
     return sort {$a <=> $b} @result;
 }
 
index 876e1dee9034e516ce79ab04b317f5240e59bbe4..ddf6f01a6909b2321441fa47d5c48470dad6a832 100755 (executable)
@@ -37,7 +37,6 @@ my $Archived = $archive ? "Archived" : "";
 my $this = "";
 
 my %indexentry;
-my %maintainers = getmaintainers();
 my %strings = ();
 
 $ENV{"TZ"} = 'UTC';
@@ -59,8 +58,9 @@ my $tag;
 my @bugs;
 if (defined $pkg) {
   $tag = "package $pkg";
-  @bugs = getbugs(sub {my %d=@_; return $pkg eq $d{"pkg"}});
+  @bugs = getbugs(sub {my %d=@_; return $pkg eq $d{"pkg"}}, 'package', $pkg);
 } elsif (defined $maint) {
+  my %maintainers = getmaintainers();
   $tag = "maintainer $maint";
   @bugs = getbugs(sub {my %d=@_; my $me; 
                       ($me = $maintainers{$d{"pkg"}}||"") =~ s/\s*\(.*\)\s*//;
@@ -68,6 +68,7 @@ if (defined $pkg) {
                       return $me eq $maint;
                     })
 } elsif (defined $maintenc) {
+  my %maintainers = getmaintainers();
   $tag = "encoded maintainer $maintenc";
   @bugs = getbugs(sub {my %d=@_; 
                       return maintencoded($maintainers{$d{"pkg"}} || "") 
@@ -79,7 +80,7 @@ if (defined $pkg) {
                       ($se = $d{"submitter"} || "") =~ s/\s*\(.*\)\s*//;
                       $se = $1 if ($se =~ m/<(.*)>/);
                       return $se eq $submitter;
-                    });
+                    }, 'submitter', $submitter);
 } elsif (defined $severity) {
   $tag = "$status $severity bugs";
   @bugs = getbugs(sub {my %d=@_;
@@ -102,6 +103,7 @@ print "<H1>" . "$debbugs::gProject $Archived $debbugs::gBug report logs: $tag" .
       "</H1>\n";
 
 if (defined $pkg) {
+    my %maintainers = getmaintainers();
     if (defined $maintainers{$pkg}) {
         print "<p>Maintainer for $pkg is <a href=\"" 
               . mainturl($maintainers{$pkg}) . "\">"