]> Sergey Matveev's repositories - public-inbox.git/commitdiff
move ->ids_after from mm to over
authorEric Wong <e@80x24.org>
Thu, 26 Aug 2021 12:33:38 +0000 (12:33 +0000)
committerEric Wong <e@80x24.org>
Sat, 28 Aug 2021 10:37:03 +0000 (10:37 +0000)
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...).

lib/PublicInbox/Mbox.pm
lib/PublicInbox/Msgmap.pm
lib/PublicInbox/NNTP.pm
lib/PublicInbox/Over.pm
t/extindex-psgi.t

index 844099aa60b99c5ab04a942ba61f9b027b22b5e6..f72af26baeadc9602bbccbd75a6e2395bcf7bdae 100644 (file)
@@ -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;
index 16a9a476407f7ff30b722c7501d85a76d6f5c842..3887a9e6b2c2264a468e9f7903ecf1e68af14b47 100644 (file)
@@ -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';
index aea04c05464b28b30d5e8d7a713e5da0446c9282..ea9ce18358f984e546d86b501defde569d8ac4ec 100644 (file)
@@ -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;
index 58fdea0e197ce4c54364a0e45befc89560284f6a..19da056a10aff5de4455e80c1e30b03190352258 100644 (file)
@@ -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;
index b9acc9793292b6d3b7a7189853c01b75af186279..d47616417a525b5b48a468141d8e03a25863c0d5 100644 (file)
@@ -52,6 +52,9 @@ my $client = sub {
        my $cfg = PublicInbox::Config->git_config_dump($f);
        is($?, 0, 'no errors from git-config parsing');
        ok($cfg->{'extindex.all.topdir'}, 'extindex.topdir defined');
+
+       $res = $cb->(GET('/all/all.mbox.gz'));
+       is($res->code, 200, 'all.mbox.gz');
 };
 test_psgi(sub { $www->call(@_) }, $client);
 %$env = (%$env, TMPDIR => $tmpdir, PI_CONFIG => $pi_config);