database: Store directory path in 'data' of directory documents.
authorCarl Worth <cworth@cworth.org>
Sun, 20 Dec 2009 23:46:41 +0000 (15:46 -0800)
committerCarl Worth <cworth@cworth.org>
Wed, 6 Jan 2010 18:32:05 +0000 (10:32 -0800)
We're planning to have mail documents refer to directory documents for
the path of the containing directory. To support this, we need the
path in the data, (since the path in the 'directory' term can be
irretrievable as it will be the SHA1 sum of the path for a very long
path).

lib/database.cc

index bf56f5206d0f950290ec31637e6fc68516acfe25..dbfec63031b367bab636c6c83180703ca6c0cbd5 100644 (file)
@@ -87,12 +87,19 @@ typedef struct {
  * The directory document contains the following terms:
  *
  *     directory:      The directory path (relative to the database path)
+ *                     Or the SHA1 sum of the directory path (if the
+ *                     path itself is too long to fit in a Xapian
+ *                     term).
+ *
  *     parent:         The document ID of the parent directory document.
  *                     Top-level directories will have a parent value of 0.
  *
  * and has a single value:
  *
  *     TIMESTAMP:      The mtime of the directory (at last scan)
+ *
+ * The data portion of a directory document contains the path of the
+ * directory (relative to the datbase path).
  */
 
 /* With these prefix values we follow the conventions published here:
@@ -754,6 +761,8 @@ notmuch_database_set_directory_mtime (notmuch_database_t *notmuch,
            doc.add_term (term);
            talloc_free (term);
 
+           doc.set_data (path);
+
            ret = _notmuch_database_find_parent_id (notmuch, path,
                                                    &parent_id);
            if (ret)