diff --git a/lib/database.cc b/lib/database.cc index 6a7ce299..53397bb0 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -1241,6 +1241,19 @@ notmuch_database_upgrade (notmuch_database_t *notmuch, timer_is_active = TRUE; } + /* Figure out how much total work we need to do. */ + if (new_features & + (NOTMUCH_FEATURE_FILE_TERMS | NOTMUCH_FEATURE_BOOL_FOLDER)) { + notmuch_query_t *query = notmuch_query_create (notmuch, ""); + total += notmuch_query_count_messages (query); + notmuch_query_destroy (query); + } + if (new_features & NOTMUCH_FEATURE_DIRECTORY_DOCS) { + t_end = db->allterms_end ("XTIMESTAMP"); + for (t = db->allterms_begin ("XTIMESTAMP"); t != t_end; t++) + ++total; + } + /* Perform the upgrade in a transaction. */ db->begin_transaction (true); @@ -1256,8 +1269,6 @@ notmuch_database_upgrade (notmuch_database_t *notmuch, notmuch_message_t *message; char *filename; - total = notmuch_query_count_messages (query); - for (messages = notmuch_query_search_messages (query); notmuch_messages_valid (messages); notmuch_messages_move_to_next (messages)) @@ -1340,6 +1351,8 @@ notmuch_database_upgrade (notmuch_database_t *notmuch, db->delete_document (*p); } + + ++count; } }