summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2021-10-23 11:31:30 +0300
committerDirk-Jan C. Binnema <djcb@djcbsoftware.nl>2021-10-23 11:31:30 +0300
commitf16f570273b613b2baff92082fef5bbf21ec601e (patch)
tree343bf8ef827af419c07223da978e346776c16bc0
parent8bb5b0352f7b992587a18931bd208c13f7eb7728 (diff)
mu-query: honor maxnum for threaded queries1.6.8
-rw-r--r--lib/mu-query.cc10
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;
}