lib/PublicInbox/NNTP.pm | 2 +- lib/PublicInbox/Search.pm | 13 +++++++++++++ t/nntpd.t | 2 ++ diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index 267fe4b93067189661204d408a842ea8f89dfb19..23be7754445b01686a6df0e209ef539cd285553b 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -336,7 +336,7 @@ my $opts = { asc => 1, limit => 1000, offset => 0 }; long_response($self, 0, long_response_limit, sub { my ($i) = @_; my $srch = $srch[0]; - my $res = $srch->query($ts, $opts); + my $res = $srch->query_ts($ts, $opts); my $msgs = $res->{msgs}; if (my $nr = scalar @$msgs) { more($self, '<' . diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 9ab5afe6d619860a1277314b5680350a109897b8..df02e0b567587a728cd1d2d71511d96c92bb1a74 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -281,6 +281,19 @@ _do_enquire($self, $query, {num => 1, limit => 200, offset => $offset}); } +sub query_ts { + my ($self, $ts, $opts) = @_; + my $qp = $self->{qp_ts} ||= eval { + my $q = Search::Xapian::QueryParser->new; + $q->set_database($self->{xdb}); + $q->add_valuerangeprocessor( + Search::Xapian::NumberValueRangeProcessor->new(TS)); + $q + }; + my $query = $qp->parse_query($ts, QP_FLAGS); + _do_enquire($self, $query, $opts); +} + sub lookup_message { my ($self, $mid) = @_; $mid = mid_clean($mid); diff --git a/t/nntpd.t b/t/nntpd.t index 56b1d604518558e67284580f08076eef6820c4d9..2815d8d641694073b2a62ee852735303c77c15ea 100644 --- a/t/nntpd.t +++ b/t/nntpd.t @@ -204,6 +204,8 @@ 'XHDR References 1- works (empty string)'); is_deeply($n->xhdr(qw(list-id 1-)), {}, 'XHDR on invalid header returns empty'); + my $mids = $n->newnews(0, '*'); + is_deeply($mids, [''], 'NEWNEWS works'); { my $t0 = time; my $date = $n->date;