[PATCH v3 04/13] lib: Database version 3: Introduce fine-grained "features"
David Bremner
david at tethera.net
Sat Aug 23 15:21:07 PDT 2014
Austin Clements <amdragon at MIT.EDU> writes:
>
> + /* Bit mask of features used by this database. Features are
> + * named, independent aspects of the database schema. This is a
> + * bitwise-OR of NOTMUCH_FEATURE_* values (below). */
> + unsigned int features;
Should we be using a fixed size integer (uint_32t or whatever) for
features? iirc the metadata in the database is actually a string, so I
guess arbitrary precision there.
> +/* Bit masks for _notmuch_database::features. */
> +enum {
> + /* If set, file names are stored in "file-direntry" terms. If
> + * unset, file names are stored in document data.
> + *
> + * Introduced: version 1. Implementation support: both for read;
> + * required for write. */
> + NOTMUCH_FEATURE_FILE_TERMS = 1 << 0,
I agree with Jani that the Implementation support: part is a bit
mystifying without the commit message. Maybe part of the commit message
could migrate here? Or maybe just add a pointer to the comment in database.cc.
> + if (! *incompat_out)
Should we support passing NULL for incompat_out? or at least check for
it?
> @@ -1048,7 +1164,8 @@ notmuch_database_get_version (notmuch_database_t *notmuch)
> notmuch_bool_t
> notmuch_database_needs_upgrade (notmuch_database_t *notmuch)
> {
> - return notmuch->needs_upgrade;
> + return notmuch->mode == NOTMUCH_DATABASE_MODE_READ_WRITE &&
> + (NOTMUCH_FEATURES_CURRENT & ~notmuch->features);
> }
Maybe I'm not thinking hard enough here, but how does this deal with a
feature that is needed to open a database in read only mode? Maybe it
needs a comment for people not as clever as Austin ;).
d
More information about the notmuch
mailing list