Re: [PATCH v4 13/16] add indexopts to notmuch python bindings.
[notmuch-archives.git] / 55 / 223aace8b62c8544b5143eb840ded70a24237d
1 Return-Path: <amdragon@mit.edu>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id 15DB7431E62\r
6         for <notmuch@notmuchmail.org>; Tue, 29 Jul 2014 09:48:36 -0700 (PDT)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -2.3\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-2.3 tagged_above=-999 required=5\r
12         tests=[RCVD_IN_DNSWL_MED=-2.3] autolearn=disabled\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id 8XxPaj8Gw+Dd for <notmuch@notmuchmail.org>;\r
16         Tue, 29 Jul 2014 09:48:27 -0700 (PDT)\r
17 Received: from dmz-mailsec-scanner-3.mit.edu (dmz-mailsec-scanner-3.mit.edu\r
18         [18.9.25.14])\r
19         (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
20         (No client certificate requested)\r
21         by olra.theworths.org (Postfix) with ESMTPS id 33CB6431FC3\r
22         for <notmuch@notmuchmail.org>; Tue, 29 Jul 2014 09:48:21 -0700 (PDT)\r
23 X-AuditID: 1209190e-f79946d000007db1-be-53d7d052b4c2\r
24 Received: from mailhub-auth-1.mit.edu ( [18.9.21.35])\r
25         (using TLS with cipher AES256-SHA (256/256 bits))\r
26         (Client did not present a certificate)\r
27         by dmz-mailsec-scanner-3.mit.edu (Symantec Messaging Gateway) with SMTP\r
28         id B8.F5.32177.350D7D35; Tue, 29 Jul 2014 12:48:19 -0400 (EDT)\r
29 Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
30         by mailhub-auth-1.mit.edu (8.13.8/8.9.2) with ESMTP id s6TGmHM2003473; \r
31         Tue, 29 Jul 2014 12:48:18 -0400\r
32 Received: from drake.dyndns.org (31-33-71.wireless.csail.mit.edu\r
33         [128.31.33.71]) (authenticated bits=0)\r
34         (User authenticated as amdragon@ATHENA.MIT.EDU)\r
35         by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id s6TGmFNk030242\r
36         (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
37         Tue, 29 Jul 2014 12:48:17 -0400\r
38 Received: from amthrax by drake.dyndns.org with local (Exim 4.77)\r
39         (envelope-from <amdragon@mit.edu>)\r
40         id 1XCAZS-0007GZ-Ky; Tue, 29 Jul 2014 12:48:14 -0400\r
41 From: Austin Clements <amdragon@MIT.EDU>\r
42 To: notmuch@notmuchmail.org\r
43 Subject: [PATCH v2 00/14] Implement and use database "features"\r
44 Date: Tue, 29 Jul 2014 12:47:58 -0400\r
45 Message-Id: <1406652492-27803-1-git-send-email-amdragon@mit.edu>\r
46 X-Mailer: git-send-email 2.0.0\r
47 X-Brightmail-Tracker:\r
48  H4sIAAAAAAAAA+NgFtrIIsWRmVeSWpSXmKPExsUixCmqrBt84XqwQf8JdovVc3ksrt+cyezA\r
49         5LFz1l12j2erbjEHMEVx2aSk5mSWpRbp2yVwZexvecZYcM66Yv2kk+wNjG2GXYycHBICJhIN\r
50         87eyQNhiEhfurWfrYuTiEBKYzSQxacU9JghnI6NE6+XNUM4xJok5y6ZAOXMZJRpmtLGB9LMJ\r
51         aEhs27+cEcQWEZCW2Hl3NiuIzSwgK/Hj/B8wW1jAXuLzur9g9SwCqhINEz+wg9i8Ag4SG69+\r
52         Y4W4Q06i4cYntgmMvAsYGVYxyqbkVunmJmbmFKcm6xYnJ+blpRbpGuvlZpbopaaUbmIEh4Yk\r
53         3w7GrweVDjEKcDAq8fBumHstWIg1say4MvcQoyQHk5Ior96+68FCfEn5KZUZicUZ8UWlOanF\r
54         hxglOJiVRHj5zgLleFMSK6tSi/JhUtIcLErivG+trYKFBNITS1KzU1MLUotgsjIcHEoSvK/P\r
55         AzUKFqWmp1akZeaUIKSZODhBhvMADd8HUsNbXJCYW5yZDpE/xajL8aH3TBuTEEtefl6qlDjv\r
56         JpAiAZCijNI8uDmwmH7FKA70ljDvQZAqHmA6gJv0CmgJE9ASVhewJSWJCCmpBkY+o9IvuUzm\r
57         IU47p2ld6sxYpKvJcZi5XOF0VJ9wyKw51TWBmbs2PKqfvH8Ot9tUOxNhi8KAZrdlYVoTlS/c\r
58         1mD9Nj/amHNB1kaTDLWwQ4d7/jSLm1+PrLU+ulbiydnwEwtkwqP3H5+29e2XJbmSkQclkz6z\r
59         zjffGD+xZbGS+84v/47ytm3cdESJpTgj0VCLuag4EQBdjj2VxAIAAA==\r
60 X-BeenThere: notmuch@notmuchmail.org\r
61 X-Mailman-Version: 2.1.13\r
62 Precedence: list\r
63 List-Id: "Use and development of the notmuch mail system."\r
64         <notmuch.notmuchmail.org>\r
65 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
66         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
67 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
68 List-Post: <mailto:notmuch@notmuchmail.org>\r
69 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
70 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
71         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
72 X-List-Received-Date: Tue, 29 Jul 2014 16:48:36 -0000\r
73 \r
74 This is version 2 of\r
75 id:1406433173-19169-1-git-send-email-amdragon@mit.edu.  It fixes a bug\r
76 pointed out by Mark [1] where the upgrade test would fail if the\r
77 prerequisites were not available (rather than cleanly skipping the\r
78 test like before).  It also makes feature names more user-friendly and\r
79 eliminates notmuch->needs_upgrade in favor of computing it on-the-fly\r
80 in notmuch_database_needs_upgrade.  The diff from v1 is below.\r
81 \r
82 [1] id:871tt718xp.fsf@qmul.ac.uk\r
83 \r
84 diff --git a/lib/database-private.h b/lib/database-private.h\r
85 index 323b9fe..2ffab33 100644\r
86 --- a/lib/database-private.h\r
87 +++ b/lib/database-private.h\r
88 @@ -41,7 +41,6 @@ struct _notmuch_database {\r
89  \r
90      char *path;\r
91  \r
92 -    notmuch_bool_t needs_upgrade;\r
93      notmuch_database_mode_t mode;\r
94      int atomic_nesting;\r
95      Xapian::Database *xapian_db;\r
96 diff --git a/lib/database.cc b/lib/database.cc\r
97 index f105e27..b323691 100644\r
98 --- a/lib/database.cc\r
99 +++ b/lib/database.cc\r
100 @@ -238,7 +238,6 @@ static prefix_t PROBABILISTIC_PREFIX[]= {\r
101      { "subject",               "XSUBJECT"},\r
102  };\r
103  \r
104 -\r
105  const char *\r
106  _find_prefix (const char *name)\r
107  {\r
108 @@ -275,12 +274,12 @@ static const struct\r
109      /* Compatibility flags when this feature is declared. */\r
110      const char *flags;\r
111  } feature_names[] = {\r
112 -    {NOTMUCH_FEATURE_FILE_TERMS,             "file terms", "rw"},\r
113 -    {NOTMUCH_FEATURE_DIRECTORY_DOCS,         "directory documents", "rw"},\r
114 +    {NOTMUCH_FEATURE_FILE_TERMS,             "multiple paths per message", "rw"},\r
115 +    {NOTMUCH_FEATURE_DIRECTORY_DOCS,         "relative directory paths", "rw"},\r
116      /* Header values are not required for reading a database because a\r
117       * reader can just refer to the message file. */\r
118 -    {NOTMUCH_FEATURE_FROM_SUBJECT_ID_VALUES, "from/subject/ID values", "w"},\r
119 -    {NOTMUCH_FEATURE_BOOL_FOLDER,            "boolean folder terms", "rw"},\r
120 +    {NOTMUCH_FEATURE_FROM_SUBJECT_ID_VALUES, "from/subject/message-ID in database", "w"},\r
121 +    {NOTMUCH_FEATURE_BOOL_FOLDER,            "exact folder:/path: search", "rw"},\r
122  };\r
123  \r
124  const char *\r
125 @@ -790,7 +789,6 @@ notmuch_database_open (const char *path,\r
126      if (notmuch->path[strlen (notmuch->path) - 1] == '/')\r
127         notmuch->path[strlen (notmuch->path) - 1] = '\0';\r
128  \r
129 -    notmuch->needs_upgrade = FALSE;\r
130      notmuch->mode = mode;\r
131      notmuch->atomic_nesting = 0;\r
132      try {\r
133 @@ -839,11 +837,6 @@ notmuch_database_open (const char *path,\r
134             goto DONE;\r
135         }\r
136  \r
137 -       /* Do we want an upgrade? */\r
138 -       if (mode == NOTMUCH_DATABASE_MODE_READ_WRITE &&\r
139 -           NOTMUCH_FEATURES_CURRENT & ~notmuch->features)\r
140 -           notmuch->needs_upgrade = TRUE;\r
141 -\r
142         notmuch->last_doc_id = notmuch->xapian_db->get_lastdocid ();\r
143         last_thread_id = notmuch->xapian_db->get_metadata ("last_thread_id");\r
144         if (last_thread_id.empty ()) {\r
145 @@ -1173,7 +1166,8 @@ notmuch_database_get_version (notmuch_database_t *notmuch)\r
146  notmuch_bool_t\r
147  notmuch_database_needs_upgrade (notmuch_database_t *notmuch)\r
148  {\r
149 -    return notmuch->needs_upgrade;\r
150 +    return notmuch->mode == NOTMUCH_DATABASE_MODE_READ_WRITE &&\r
151 +       (NOTMUCH_FEATURES_CURRENT & ~notmuch->features);\r
152  }\r
153  \r
154  static volatile sig_atomic_t do_progress_notify = 0;\r
155 diff --git a/test/T530-upgrade.sh b/test/T530-upgrade.sh\r
156 index c88bbc7..c4c4ac8 100755\r
157 --- a/test/T530-upgrade.sh\r
158 +++ b/test/T530-upgrade.sh\r
159 @@ -3,52 +3,6 @@ test_description="database upgrade"\r
160  \r
161  . ./test-lib.sh\r
162  \r
163 -test_begin_subtest "future database versions abort open"\r
164 -${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 9999 ""\r
165 -output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
166 -rm -rf ${MAIL_DIR}/.notmuch\r
167 -test_expect_equal "$output" "\\r
168 -Error: Notmuch database at FILENAME\r
169 -       has a newer database format version (9999) than supported by this\r
170 -       version of notmuch (3)."\r
171 -\r
172 -test_begin_subtest "unknown 'rw' feature aborts read/write open"\r
173 -${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\trw'\r
174 -output=$(notmuch new 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
175 -rm -rf ${MAIL_DIR}/.notmuch\r
176 -test_expect_equal "$output" "\\r
177 -Error: Notmuch database at FILENAME\r
178 -       requires features (test feature)\r
179 -       not supported by this version of notmuch."\r
180 -\r
181 -test_begin_subtest "unknown 'rw' feature aborts read-only open"\r
182 -${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\trw'\r
183 -output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
184 -rm -rf ${MAIL_DIR}/.notmuch\r
185 -test_expect_equal "$output" "\\r
186 -Error: Notmuch database at FILENAME\r
187 -       requires features (test feature)\r
188 -       not supported by this version of notmuch."\r
189 -\r
190 -test_begin_subtest "unknown 'w' feature aborts read/write open"\r
191 -${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\tw'\r
192 -output=$(notmuch new 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
193 -rm -rf ${MAIL_DIR}/.notmuch\r
194 -test_expect_equal "$output" "\\r
195 -Error: Notmuch database at FILENAME\r
196 -       requires features (test feature)\r
197 -       not supported by this version of notmuch."\r
198 -\r
199 -test_begin_subtest "unknown 'w' feature does not abort read-only open"\r
200 -${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\tw'\r
201 -output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
202 -rm -rf ${MAIL_DIR}/.notmuch\r
203 -test_expect_equal "$output" ""\r
204 -\r
205 -#\r
206 -# Database v1\r
207 -#\r
208 -\r
209  dbtarball=database-v1.tar.xz\r
210  \r
211  # XXX: Accomplish the same with test lib helpers\r
212 diff --git a/test/T550-db-features.sh b/test/T550-db-features.sh\r
213 new file mode 100755\r
214 index 0000000..5569768\r
215 --- /dev/null\r
216 +++ b/test/T550-db-features.sh\r
217 @@ -0,0 +1,48 @@\r
218 +#!/usr/bin/env bash\r
219 +test_description="database version and feature compatibility"\r
220 +\r
221 +. ./test-lib.sh\r
222 +\r
223 +test_begin_subtest "future database versions abort open"\r
224 +${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 9999 ""\r
225 +output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
226 +rm -rf ${MAIL_DIR}/.notmuch\r
227 +test_expect_equal "$output" "\\r
228 +Error: Notmuch database at FILENAME\r
229 +       has a newer database format version (9999) than supported by this\r
230 +       version of notmuch (3)."\r
231 +\r
232 +test_begin_subtest "unknown 'rw' feature aborts read/write open"\r
233 +${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\trw'\r
234 +output=$(notmuch new 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
235 +rm -rf ${MAIL_DIR}/.notmuch\r
236 +test_expect_equal "$output" "\\r
237 +Error: Notmuch database at FILENAME\r
238 +       requires features (test feature)\r
239 +       not supported by this version of notmuch."\r
240 +\r
241 +test_begin_subtest "unknown 'rw' feature aborts read-only open"\r
242 +${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\trw'\r
243 +output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
244 +rm -rf ${MAIL_DIR}/.notmuch\r
245 +test_expect_equal "$output" "\\r
246 +Error: Notmuch database at FILENAME\r
247 +       requires features (test feature)\r
248 +       not supported by this version of notmuch."\r
249 +\r
250 +test_begin_subtest "unknown 'w' feature aborts read/write open"\r
251 +${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\tw'\r
252 +output=$(notmuch new 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
253 +rm -rf ${MAIL_DIR}/.notmuch\r
254 +test_expect_equal "$output" "\\r
255 +Error: Notmuch database at FILENAME\r
256 +       requires features (test feature)\r
257 +       not supported by this version of notmuch."\r
258 +\r
259 +test_begin_subtest "unknown 'w' feature does not abort read-only open"\r
260 +${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 3 $'test feature\tw'\r
261 +output=$(notmuch search x 2>&1 | sed 's/\(database at\) .*/\1 FILENAME/')\r
262 +rm -rf ${MAIL_DIR}/.notmuch\r
263 +test_expect_equal "$output" ""\r
264 +\r
265 +test_done\r
266 \r
267 \r