about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-08-26 12:33:38 +0000
committerEric Wong <e@80x24.org>2021-08-28 10:37:03 +0000
commitd7780e12856d83b9f5c58586691e2fbe711321ed (patch)
tree621a3c478ee88ecf17df53fef40e0632bbaf9960 /lib
parent9a157ecd55d759418b30a81769eaa05ea8b7e5d5 (diff)
downloadpublic-inbox-d7780e12856d83b9f5c58586691e2fbe711321ed.tar.gz
move ->ids_after from mm to over
Since we favor ->over in WWW and IMAP, move this method to
->over to reduce open files in common cases.

This fixes the /$EXTINDEX_NAME/all.mbox.gz endpoint for extindex
entries (which may get expensive...).
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/Mbox.pm10
-rw-r--r--lib/PublicInbox/Msgmap.pm11
-rw-r--r--lib/PublicInbox/NNTP.pm2
-rw-r--r--lib/PublicInbox/Over.pm11
4 files changed, 16 insertions, 18 deletions
diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm
index 844099aa..f72af26b 100644
--- a/lib/PublicInbox/Mbox.pm
+++ b/lib/PublicInbox/Mbox.pm
@@ -161,19 +161,17 @@ sub all_ids_cb {
                         my $smsg = $ctx->{over}->get_art($num) or next;
                         return $smsg;
                 }
-                $ctx->{ids} = $ids = $ctx->{mm}->ids_after(\($ctx->{prev}));
+                $ctx->{ids} = $ids = $ctx->{over}->ids_after(\($ctx->{prev}));
         } while (@$ids);
 }
 
 sub mbox_all_ids {
         my ($ctx) = @_;
-        my $ibx = $ctx->{ibx};
         my $prev = 0;
-        my $mm = $ctx->{mm} = $ibx->mm;
-        my $ids = $mm->ids_after(\$prev) or return
-                [404, [qw(Content-Type text/plain)], ["No results found\n"]];
-        $ctx->{over} = $ibx->over or
+        $ctx->{over} = $ctx->{ibx}->over or
                 return PublicInbox::WWW::need($ctx, 'Overview');
+        my $ids = $ctx->{over}->ids_after(\$prev) or return
+                [404, [qw(Content-Type text/plain)], ["No results found\n"]];
         $ctx->{ids} = $ids;
         $ctx->{prev} = $prev;
         require PublicInbox::MboxGz;
diff --git a/lib/PublicInbox/Msgmap.pm b/lib/PublicInbox/Msgmap.pm
index 16a9a476..3887a9e6 100644
--- a/lib/PublicInbox/Msgmap.pm
+++ b/lib/PublicInbox/Msgmap.pm
@@ -189,17 +189,6 @@ CREATE TABLE IF NOT EXISTS meta (
 
 }
 
-# used by NNTP.pm
-sub ids_after {
-        my ($self, $num) = @_;
-        my $ids = $self->{dbh}->selectcol_arrayref(<<'', undef, $$num);
-SELECT num FROM msgmap WHERE num > ?
-ORDER BY num ASC LIMIT 1000
-
-        $$num = $ids->[-1] if @$ids;
-        $ids;
-}
-
 sub msg_range {
         my ($self, $beg, $end, $cols) = @_;
         $cols //= 'num,mid';
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index aea04c05..ea9ce183 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -210,7 +210,7 @@ sub listgroup_range_i {
 
 sub listgroup_all_i {
         my ($self, $num) = @_;
-        my $ary = $self->{ibx}->mm(1)->ids_after($num);
+        my $ary = $self->{ibx}->over(1)->ids_after($num);
         scalar(@$ary) or return;
         more($self, join("\r\n", @$ary));
         1;
diff --git a/lib/PublicInbox/Over.pm b/lib/PublicInbox/Over.pm
index 58fdea0e..19da056a 100644
--- a/lib/PublicInbox/Over.pm
+++ b/lib/PublicInbox/Over.pm
@@ -371,4 +371,15 @@ SELECT COUNT(*) FROM xref3 WHERE oidbin = ?
 
 sub blob_exists { oidbin_exists($_[0], pack('H*', $_[1])) }
 
+# used by NNTP.pm
+sub ids_after {
+        my ($self, $num) = @_;
+        my $ids = dbh($self)->selectcol_arrayref(<<'', undef, $$num);
+SELECT num FROM over WHERE num > ?
+ORDER BY num ASC LIMIT 1000
+
+        $$num = $ids->[-1] if @$ids;
+        $ids;
+}
+
 1;