[PATCH 0/5] lib: make folder: prefix literal

Austin Clements aclements at csail.mit.edu
Fri Jan 24 13:17:58 PST 2014


On Thu, 09 Jan 2014, Jani Nikula <jani at nikula.org> wrote:
> Hi all, this series makes the folder: search prefix literal, or switches
> it from a probabilistic prefix to a boolean prefix. With this, you have
> to give the path from the maildir root to the folder you want in full,
> including the maildir cur/new component, if any. Examples:

I strongly disagree with requiring the cur/new component.  The cur/new
directory is an internal implementation detail of Maildir (and a rather
broken one at that) and no more a part of the "folder" of a piece of
mail than its final file name component.  It's also the less obvious
user interface; if we require the cur/new component, we *will* get
people asking why their folder searches aren't working, but if we strip
the cur/new component, nobody will be surprised.

I think the question is not whether we should strip cur/new, but when.
We've already defined a "_filename_is_in_maildir" test in
lib/message.cc, which we depend on for flag sync.  It's simple, but I
think this would be the right thing to use for consistency.

> folder:cur
> folder:foo/bar
> folder:""
>
> The last one can be used to refer to the maildir root (note that in
> shell you'll need quoting to pass the double quotes to xapian,
> folder:'""').
>
> The old probabilistic folder: prefix is problematic in a number of
> ways. It's not possible to refer to the maildir root. It does stemming,
> so "inboxing" would match "inbox" too. "cur" for the folder in maildir
> root would match all "cur" folders across the maildir hierarchy. Likely
> some others I forgot.
>
> WARNING! The change requires a database format version bump, and a
> database upgrade, which is automatically done on 'notmuch new'. The
> upgrade is irreversible if you want to try this on your database! A
> complete database rebuild is required for reverting the database format
> version. Make sure your backups are in order!
>
> The series includes some tests, including an initial upgrade test, along
> with a test database in the previous format version.
>
>
> BR,
> Jani.
>
>
>
> Jani Nikula (5):
>   lib: make folder: prefix literal
>   test: fix insert folder: searches
>   test: fix test for literal folder: search
>   test: add test database in format version 1
>   test: add database upgrade test from format version 1
>
>  lib/database.cc                        |  39 ++++++++-
>  lib/message.cc                         | 154 +++++++++++++++++----------------
>  lib/notmuch-private.h                  |   3 +
>  test/insert                            |  10 +--
>  test/notmuch-test                      |   1 +
>  test/search-by-folder                  |  24 ++++-
>  test/test-databases/README             |   5 ++
>  test/test-databases/database-v1.tar.gz | Bin 0 -> 252243 bytes
>  test/upgrade                           |  25 ++++++
>  9 files changed, 174 insertions(+), 87 deletions(-)
>  create mode 100644 test/test-databases/README
>  create mode 100644 test/test-databases/database-v1.tar.gz
>  create mode 100755 test/upgrade
>
> -- 
> 1.8.5.2
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list