mu4e: use faster count queries, document differences

Use faster queries for counting read/unread messages; document why the
results might differ from what you get doing a normal search.
This commit is contained in:
Dirk-Jan C. Binnema
2020-03-14 14:27:51 +02:00
parent c4953a4310
commit 46ae663937
6 changed files with 42 additions and 50 deletions

View File

@ -474,27 +474,11 @@ mu_query_count_run (MuQuery *self, const char *searchexpr) try
g_return_val_if_fail (self, 0);
g_return_val_if_fail (searchexpr, 0);
// XXX: this _should_ work and be a bit faster, but gives incorrect
// results.
// find out why.
// const auto enq{get_enquire(self, searchexpr,MU_MSG_FIELD_ID_NONE, false, false, NULL)};
// auto mset(enq.get_mset(0, self->db().get_doccount()));
// mset.fetch();
// return mset.size();
const auto enq{get_enquire(self, searchexpr,MU_MSG_FIELD_ID_NONE, false, false, NULL)};
auto mset(enq.get_mset(0, self->db().get_doccount()));
mset.fetch();
auto msgiter{mu_query_run(self, searchexpr, MU_MSG_FIELD_ID_NONE, -1,
MU_QUERY_FLAG_NONE, NULL)};
if (!msgiter)
return 0;
size_t num{};
while (!mu_msg_iter_is_done(msgiter)) {
++num;
mu_msg_iter_next(msgiter);
}
mu_msg_iter_destroy (msgiter);
return num;
return mset.size();
} MU_XAPIAN_CATCH_BLOCK_RETURN (0);