X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fdatabase-private.h;h=5c5a2bb2e51b416f0a0e9840acf5133d247bf9df;hp=24243db2e4fd38577a3aae8840003cbfef3ec637;hb=7f57b747b95eece465d10fd0acba20cc3dd868f1;hpb=c9e1c4f1c495d7cc24a64b73edb4b7b71791a87f diff --git a/lib/database-private.h b/lib/database-private.h index 24243db2..5c5a2bb2 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -100,6 +100,12 @@ enum _notmuch_features { * * Introduced: version 3. */ NOTMUCH_FEATURE_INDEXED_MIMETYPES = 1 << 5, + + /* If set, messages store the revision number of the last + * modification in NOTMUCH_VALUE_LAST_MOD. + * + * Introduced: version 3. */ + NOTMUCH_FEATURE_LAST_MOD = 1 << 6, }; /* In C++, a named enum is its own type, so define bitwise operators @@ -145,6 +151,8 @@ struct _notmuch_database { notmuch_database_mode_t mode; int atomic_nesting; + /* TRUE if changes have been made in this atomic section */ + notmuch_bool_t atomic_dirty; Xapian::Database *xapian_db; /* Bit mask of features used by this database. This is a @@ -158,6 +166,11 @@ struct _notmuch_database { * next library call. May be NULL */ char *status_string; + /* Highest committed revision number. Modifications are recorded + * under a higher revision number, which can be generated with + * notmuch_database_new_revision. */ + unsigned long revision; + Xapian::QueryParser *query_parser; Xapian::TermGenerator *term_gen; Xapian::ValueRangeProcessor *value_range_processor; @@ -179,7 +192,8 @@ struct _notmuch_database { * will have it). */ #define NOTMUCH_FEATURES_CURRENT \ (NOTMUCH_FEATURE_FILE_TERMS | NOTMUCH_FEATURE_DIRECTORY_DOCS | \ - NOTMUCH_FEATURE_BOOL_FOLDER | NOTMUCH_FEATURE_GHOSTS) + NOTMUCH_FEATURE_BOOL_FOLDER | NOTMUCH_FEATURE_GHOSTS | \ + NOTMUCH_FEATURE_LAST_MOD) /* Return the list of terms from the given iterator matching a prefix. * The prefix will be stripped from the strings in the returned list.