X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMsgmap.pm;h=9523752e9af07f8b973ac45d5a5aeda408801513;hb=95bdac7f09c69036efed537a4d03d5bdd2ae4eb6;hp=d474badef16b06a9bf74b63f80224860598d406c;hpb=861bec7bec5908871e5b0ede244cb1e990a47403;p=public-inbox.git diff --git a/lib/PublicInbox/Msgmap.pm b/lib/PublicInbox/Msgmap.pm index d474bade..9523752e 100644 --- a/lib/PublicInbox/Msgmap.pm +++ b/lib/PublicInbox/Msgmap.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2018 all contributors +# Copyright (C) 2015-2020 all contributors # License: AGPL-3.0+ # bidirectional Message-ID <-> Article Number mapping for the NNTP @@ -126,11 +126,11 @@ sub mid_insert { my ($self, $mid) = @_; my $dbh = $self->{dbh}; my $sth = $dbh->prepare_cached(<<''); -INSERT OR IGNORE INTO msgmap (mid) VALUES (?) +INSERT INTO msgmap (mid) VALUES (?) - return if $sth->execute($mid) == 0; + return unless eval { $sth->execute($mid) }; my $num = $dbh->last_insert_id(undef, undef, 'msgmap', 'num'); - $self->num_highwater($num) unless !defined($num); + $self->num_highwater($num) if defined($num); $num; } @@ -211,11 +211,12 @@ ORDER BY num ASC LIMIT 1000 } sub msg_range { - my ($self, $beg, $end) = @_; + my ($self, $beg, $end, $cols) = @_; + $cols //= 'num,mid'; my $dbh = $self->{dbh}; my $attr = { Columns => [] }; - my $mids = $dbh->selectall_arrayref(<<'', $attr, $$beg, $end); -SELECT num,mid FROM msgmap WHERE num >= ? AND num <= ? + my $mids = $dbh->selectall_arrayref(<<"", $attr, $$beg, $end); +SELECT $cols FROM msgmap WHERE num >= ? AND num <= ? ORDER BY num ASC LIMIT 1000 $$beg = $mids->[-1]->[0] + 1 if @$mids;