Add the NOTMUCH_FEATURE_INDEXED_MIMETYPES database feature
authorTodd <todd@electricoding.com>
Thu, 22 Jan 2015 23:43:37 +0000 (17:43 -0600)
committerDavid Bremner <david@tethera.net>
Sat, 24 Jan 2015 15:47:47 +0000 (16:47 +0100)
This feature will exist in all newly created databases, but there is
no upgrade provided for it.  If this flag exists, it indicates that
the database was created after the indexed MIME-types feature was
added.

lib/database-private.h
lib/database.cc

index 15e03ccf6d6f433bdd7550654bd7b092ef97f585..6d6fa2c9f6bd56af79a7039d0da9d3694aa8b942 100644 (file)
@@ -92,6 +92,14 @@ enum _notmuch_features {
      *
      * Introduced: version 3. */
     NOTMUCH_FEATURE_GHOSTS = 1 << 4,
+
+
+    /* If set, then the database was created after the introduction of
+     * indexed mime types. If unset, then the database may contain a
+     * mixture of messages with indexed and non-indexed mime types.
+     *
+     * Introduced: version 3. */
+    NOTMUCH_FEATURE_INDEXED_MIMETYPES = 1 << 5,
 };
 
 /* In C++, a named enum is its own type, so define bitwise operators
@@ -161,9 +169,10 @@ struct _notmuch_database {
 
 /* Current database features.  If any of these are missing from a
  * database, request an upgrade.
- * NOTMUCH_FEATURE_FROM_SUBJECT_ID_VALUES is not included because
- * upgrade doesn't currently introduce the feature (though brand new
- * databases will have it). */
+ * NOTMUCH_FEATURE_FROM_SUBJECT_ID_VALUES and
+ * NOTMUCH_FEATURE_INDEXED_MIMETYPES are not included because upgrade
+ * doesn't currently introduce the features (though brand new databases
+ * will have it). */
 #define NOTMUCH_FEATURES_CURRENT \
     (NOTMUCH_FEATURE_FILE_TERMS | NOTMUCH_FEATURE_DIRECTORY_DOCS | \
      NOTMUCH_FEATURE_BOOL_FOLDER | NOTMUCH_FEATURE_GHOSTS)
index 3601f9ded30778620e18a5835de00e6e00ef7854..0d2c417214e87e79c7daf26301d33555b591775d 100644 (file)
@@ -304,6 +304,11 @@ static const struct {
       "exact folder:/path: search", "rw" },
     { NOTMUCH_FEATURE_GHOSTS,
       "mail documents for missing messages", "w"},
+    /* Knowledge of the index mime-types are not required for reading
+     * a database because a reader will just be unable to query
+     * them. */
+    { NOTMUCH_FEATURE_INDEXED_MIMETYPES,
+      "indexed MIME types", "w"},
 };
 
 const char *
@@ -646,9 +651,10 @@ notmuch_database_create (const char *path, notmuch_database_t **database)
     if (status)
        goto DONE;
 
-    /* Upgrade doesn't add this feature to existing databases, but new
-     * databases have it. */
+    /* Upgrade doesn't add these feature to existing databases, but
+     * new databases have them. */
     notmuch->features |= NOTMUCH_FEATURE_FROM_SUBJECT_ID_VALUES;
+    notmuch->features |= NOTMUCH_FEATURE_INDEXED_MIMETYPES;
 
     status = notmuch_database_upgrade (notmuch, NULL, NULL);
     if (status) {