From: Jani Nikula Date: Tue, 14 Oct 2014 16:32:54 +0000 (+0300) Subject: lib: make notmuch_query_count_messages explicitely exact X-Git-Tag: 0.20~31 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=6d44e5ac4743f618513c9a080733d91afa683f16 lib: make notmuch_query_count_messages explicitely exact The default is actually exact if no checkatleast parameter is specified. This change makes that explicit, mainly for documentation, but also to be safe in the unlikely event of a change of default. [ commit message rewritten by db based on id:87lho0nlkk.fsf@nikula.org ] --- diff --git a/devel/TODO b/devel/TODO index 1cf4089f..116194d8 100644 --- a/devel/TODO +++ b/devel/TODO @@ -188,11 +188,6 @@ into the shared-library interface. Audit all libnotmuch entry points to ensure that all Xapian calls are wrapped in a try/catch block. -Fix the "count" functionality to be exact as Olly explained in IRC: - - ojwb> cworth: if you set the check_at_least parameter to the - database size, get_matches_estimated() will be exact - Fix the threading of a message that has a References: header but no In-Reply-To: header (see id:"87lixxnxpb.fsf@yoom.home.cworth.org"). diff --git a/lib/notmuch.h b/lib/notmuch.h index f0b60b83..f0662454 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -909,10 +909,10 @@ void notmuch_threads_destroy (notmuch_threads_t *threads); /** - * Return an estimate of the number of messages matching a search. + * Return the number of messages matching a search. * - * This function performs a search and returns Xapian's best - * guess as to number of matching messages. + * This function performs a search and returns the number of matching + * messages. * * If a Xapian exception occurs, this function may return 0 (after * printing a message). diff --git a/lib/query.cc b/lib/query.cc index 9279915d..57aa6d24 100644 --- a/lib/query.cc +++ b/lib/query.cc @@ -587,7 +587,12 @@ notmuch_query_count_messages (notmuch_query_t *query) enquire.set_query (final_query); - mset = enquire.get_mset (0, notmuch->xapian_db->get_doccount ()); + /* + * Set the checkatleast parameter to the number of documents + * in the database to make get_matches_estimated() exact. + */ + mset = enquire.get_mset (0, notmuch->xapian_db->get_doccount (), + notmuch->xapian_db->get_doccount ()); count = mset.get_matches_estimated();