From 329a524af7bfdf90a61a3d5a7e06009a42f558b2 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Wed, 13 Jul 2011 08:18:42 +0300 Subject: [PATCH] * mu-query: special-case the empty search expr to mean 'match-all' --- src/mu-query.cc | 9 +++++++-- src/mu-query.h | 2 +- src/tests/test-mu-query.c | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) 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 } };