diff options
| author | Dirk-Jan C. Binnema <djcb@djcbsoftware.nl> | 2021-10-23 11:31:30 +0300 |
|---|---|---|
| committer | Dirk-Jan C. Binnema <djcb@djcbsoftware.nl> | 2021-10-23 11:31:30 +0300 |
| commit | f16f570273b613b2baff92082fef5bbf21ec601e (patch) | |
| tree | 343bf8ef827af419c07223da978e346776c16bc0 | |
| parent | 8bb5b0352f7b992587a18931bd208c13f7eb7728 (diff) | |
mu-query: honor maxnum for threaded queries1.6.8
| -rw-r--r-- | lib/mu-query.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/mu-query.cc b/lib/mu-query.cc index 59e9973..9cd88d4 100644 --- a/lib/mu-query.cc +++ b/lib/mu-query.cc @@ -49,7 +49,7 @@ struct Query::Private { MuMsgFieldId sortfieldid, QueryFlags qflags) const; Option<QueryResults> run_threaded (QueryResults&& qres, Xapian::Enquire& enq, - QueryFlags qflags) const; + QueryFlags qflags, size_t maxnum) const; Option<QueryResults> run_singular (const std::string& expr, MuMsgFieldId sortfieldid, QueryFlags qflags, size_t maxnum) const; Option<QueryResults> run_related (const std::string& expr, MuMsgFieldId sortfieldid, @@ -127,7 +127,7 @@ struct ThreadKeyMaker: public Xapian::KeyMaker { Option<QueryResults> Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq, - QueryFlags qflags) const + QueryFlags qflags, size_t maxnum) const { const auto descending{any_of(qflags & QueryFlags::Descending)}; @@ -138,7 +138,7 @@ Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq, DeciderInfo minfo; minfo.matches = qres.query_matches(); - auto mset{enq.get_mset(0, store_.size(), {}, + auto mset{enq.get_mset(0, maxnum, {}, make_thread_decider(qflags, minfo).get())}; mset.fetch(); @@ -170,7 +170,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; } static Option<std::string> @@ -217,7 +217,7 @@ Query::Private::run_related (const std::string& expr, MuMsgFieldId sortfieldid, const auto r_mset{r_enq.get_mset(0, threading ? store_.size() : maxnum, {}, 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; } |
