]> git.notmuchmail.org Git - notmuch/blobdiff - query.cc
Change database to store only a single thread ID per message.
[notmuch] / query.cc
index 5750167580c0f94ecf0eae11a18aef7ce399300d..88d76ef19ff6c2b825d81bbb256e218607c6f839 100644 (file)
--- a/query.cc
+++ b/query.cc
@@ -92,7 +92,9 @@ notmuch_query_search (notmuch_query_t *query)
 
     try {
        Xapian::Enquire enquire (*notmuch->xapian_db);
-       Xapian::Query mail_query ("Kmail");
+       Xapian::Query mail_query (talloc_asprintf (query, "%s%s",
+                                                  _find_prefix ("type"),
+                                                  "mail"));
        Xapian::Query string_query, final_query;
        Xapian::MSet mset;
        unsigned int flags = (Xapian::QueryParser::FLAG_BOOLEAN |
@@ -112,10 +114,10 @@ notmuch_query_search (notmuch_query_t *query)
 
        switch (query->sort) {
        case NOTMUCH_SORT_DATE_OLDEST_FIRST:
-           enquire.set_sort_by_value (NOTMUCH_VALUE_DATE, FALSE);
+           enquire.set_sort_by_value (NOTMUCH_VALUE_TIMESTAMP, FALSE);
            break;
        case NOTMUCH_SORT_DATE_NEWEST_FIRST:
-           enquire.set_sort_by_value (NOTMUCH_VALUE_DATE, TRUE);
+           enquire.set_sort_by_value (NOTMUCH_VALUE_TIMESTAMP, TRUE);
            break;
        case NOTMUCH_SORT_MESSAGE_ID:
            enquire.set_sort_by_value (NOTMUCH_VALUE_MESSAGE_ID, FALSE);
@@ -163,12 +165,23 @@ notmuch_results_has_more (notmuch_results_t *results)
 notmuch_message_t *
 notmuch_results_get (notmuch_results_t *results)
 {
+    notmuch_message_t *message;
     Xapian::docid doc_id;
+    notmuch_private_status_t status;
 
     doc_id = *results->iterator;
 
-    return _notmuch_message_create (results,
-                                   results->notmuch, doc_id);
+    message = _notmuch_message_create (results,
+                                      results->notmuch, doc_id,
+                                      &status);
+
+    if (message == NULL &&
+       status == NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND)
+    {
+       INTERNAL_ERROR ("a results iterator contains a non-existent document ID.\n");
+    }
+
+    return message;
 }
 
 void