From: Mark Walters Date: Wed, 14 Mar 2012 12:26:54 +0000 (+0000) Subject: lib: fix an exclude bug X-Git-Tag: 0.13_rc1~141 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=c695534df5830d0681f451bd213e75758b532e31;p=notmuch.git lib: fix an exclude bug When the exclude tags contain a tag that does not occur anywhere in the Xapian database the exclusion fails. We modify the way the query is constructed to `work around' this. (In fact the new code is cleaner anyway.) It also seems to fix another exclusion failure bug reported by jrollins but we have not yet worked out why it helps in that case. --- diff --git a/lib/query.cc b/lib/query.cc index 53d505a5..68ac1e40 100644 --- a/lib/query.cc +++ b/lib/query.cc @@ -219,13 +219,14 @@ notmuch_query_search_messages (notmuch_query_t *query) if (query->exclude_terms) { exclude_query = _notmuch_exclude_tags (query, final_query); - exclude_query = Xapian::Query (Xapian::Query::OP_AND, - exclude_query, final_query); if (query->omit_excluded_messages) final_query = Xapian::Query (Xapian::Query::OP_AND_NOT, final_query, exclude_query); else { + exclude_query = Xapian::Query (Xapian::Query::OP_AND, + exclude_query, final_query); + enquire.set_weighting_scheme (Xapian::BoolWeight()); enquire.set_query (exclude_query);