From 98a742e5e58e3dd1ed7cd1f2bf0c251b4ccd0221 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Mon, 15 Feb 2021 22:45:33 +0200 Subject: [PATCH] query: honor maxnum in threaded searches --- lib/mu-query.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/mu-query.cc b/lib/mu-query.cc index 1b337a09..f6602320 100644 --- a/lib/mu-query.cc +++ b/lib/mu-query.cc @@ -50,7 +50,7 @@ struct Query::Private { MuMsgFieldId sortfieldid, QueryFlags qflags) const; Option run_threaded (QueryResults&& qres, Xapian::Enquire& enq, - QueryFlags qflags) const; + QueryFlags qflags, size_t max_size) const; Option run_singular (const std::string& expr, MuMsgFieldId sortfieldid, QueryFlags qflags, size_t maxnum) const; Option run_related (const std::string& expr, MuMsgFieldId sortfieldid, @@ -128,7 +128,7 @@ struct ThreadKeyMaker: public Xapian::KeyMaker { Option Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq, - QueryFlags qflags) const + QueryFlags qflags, size_t max_size) const { const auto descending{any_of(qflags & QueryFlags::Descending)}; @@ -139,7 +139,7 @@ Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq, DeciderInfo minfo; minfo.matches = qres.query_matches(); - auto mset{enq.get_mset(0, qres.size(), {}, + auto mset{enq.get_mset(0, max_size, {}, make_thread_decider(qflags, minfo).get())}; mset.fetch(); @@ -171,7 +171,7 @@ Query::Private::run_singular (const std::string& expr, MuMsgFieldId sortfieldid, auto qres{QueryResults{mset, std::move(minfo.matches)}}; - return threading ? run_threaded(std::move(qres), enq, qflags) : qres; + return threading ? run_threaded(std::move(qres), enq, qflags, maxnum) : qres; } @@ -206,7 +206,7 @@ Query::Private::run_related (const std::string& expr, MuMsgFieldId sortfieldid, {}, make_related_decider(qflags, minfo).get())}; auto qres{QueryResults{r_mset, std::move(minfo.matches)}}; - return threading ? run_threaded(std::move(qres), r_enq, qflags) : qres; + return threading ? run_threaded(std::move(qres), r_enq, qflags, maxnum) : qres; } Option