diff --git a/src/mu-query.cc b/src/mu-query.cc index 452dbfd7..88934a3f 100644 --- a/src/mu-query.cc +++ b/src/mu-query.cc @@ -350,7 +350,6 @@ mu_query_run (MuQuery *self, const char* searchexpr, gboolean threads, sortfieldid == MU_MSG_FIELD_ID_NONE, NULL); try { - Xapian::Query query (get_query (self, searchexpr, err)); Xapian::Enquire enq (self->_db); /* note, when our result will be *threaded*, we sort @@ -358,7 +357,13 @@ mu_query_run (MuQuery *self, const char* searchexpr, gboolean threads, if (!threads && sortfieldid != MU_MSG_FIELD_ID_NONE) enq.set_sort_by_value ((Xapian::valueno)sortfieldid, ascending ? true : false); - enq.set_query(query); + + if (!mu_str_is_empty(searchexpr)) /* NULL or "" */ + enq.set_query(get_query (self, searchexpr, err)); + else + enq.set_query(Xapian::Query::MatchAll); + + enq.set_cutoff(0,0); return mu_msg_iter_new ( diff --git a/src/mu-query.h b/src/mu-query.h index d91e94e4..a93faa07 100644 --- a/src/mu-query.h +++ b/src/mu-query.h @@ -68,7 +68,7 @@ char* mu_query_version (MuQuery *store) * manpage, or http://xapian.org/docs/queryparser.html * * @param self a valid MuQuery instance - * @param expr the search expression + * @param expr the search expression or "" to match all messages * @param threads calculate message-threads * @param sortfield the field id to sort by or MU_MSG_FIELD_ID_NONE if * sorting is not desired diff --git a/src/tests/test-mu-query.c b/src/tests/test-mu-query.c index 6cfeff3f..9518d642 100644 --- a/src/tests/test-mu-query.c +++ b/src/tests/test-mu-query.c @@ -150,6 +150,7 @@ test_mu_query_01 (void) { "foo:pepernoot", 0 }, { "funky", 1 }, { "fünkÿ", 1 }, + { "", 13 } };