Re: [PATCH 0/4] Allow specifying alternate names for addresses in other_email
[notmuch-archives.git] / 24 / a053606c339518be538157ddfcd86ffa49afa7
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 D4B76431FC7\r
6         for <notmuch@notmuchmail.org>; Tue, 29 Jul 2014 09:49:18 -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 dHmVjMPNZrTi for <notmuch@notmuchmail.org>;\r
16         Tue, 29 Jul 2014 09:49:12 -0700 (PDT)\r
17 Received: from dmz-mailsec-scanner-4.mit.edu (dmz-mailsec-scanner-4.mit.edu\r
18         [18.9.25.15])\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 8A37A431FBC\r
22         for <notmuch@notmuchmail.org>; Tue, 29 Jul 2014 09:48:31 -0700 (PDT)\r
23 X-AuditID: 1209190f-f79f86d0000061c8-12-53d7d05d56c3\r
24 Received: from mailhub-auth-3.mit.edu ( [18.9.21.43])\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-4.mit.edu (Symantec Messaging Gateway) with SMTP\r
28         id 83.B5.25032.D50D7D35; Tue, 29 Jul 2014 12:48:29 -0400 (EDT)\r
29 Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
30         by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id s6TGmIu7030916; \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 s6TGmFXl030266\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-0007H2-UZ; 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 10/14] lib: Reorganize upgrade around document types\r
44 Date: Tue, 29 Jul 2014 12:48:08 -0400\r
45 Message-Id: <1406652492-27803-11-git-send-email-amdragon@mit.edu>\r
46 X-Mailer: git-send-email 2.0.0\r
47 In-Reply-To: <1406652492-27803-1-git-send-email-amdragon@mit.edu>\r
48 References: <1406652492-27803-1-git-send-email-amdragon@mit.edu>\r
49 X-Brightmail-Tracker:\r
50  H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsUixCmqrRt74XqwwbdHyhar5/JYXL85k9mB\r
51         yWPnrLvsHs9W3WIOYIrisklJzcksSy3St0vgynj+rI29YK1ixYUj5Q2Ma6S6GDk5JARMJI6s\r
52         +ssEYYtJXLi3ng3EFhKYzSSxanZgFyMXkL2RUWLv3GeMEIljTBKPm0UhEnMZJT6vW8cCkmAT\r
53         0JDYtn85WJGIgLTEzruzWUFsZgFHic/7F4FNFRZwl3g59S3YNhYBVYl3U9vB4rxANcdbn7BB\r
54         XCEn0XDjE5jNCRS/de8uE8RiB4lDszazTGDkX8DIsIpRNiW3Sjc3MTOnODVZtzg5MS8vtUjX\r
55         RC83s0QvNaV0EyM4iCT5dzB+O6h0iFGAg1GJh5djwbVgIdbEsuLK3EOMkhxMSqK8evuuBwvx\r
56         JeWnVGYkFmfEF5XmpBYfYpTgYFYS4eU7C5TjTUmsrEotyodJSXOwKInzvrW2ChYSSE8sSc1O\r
57         TS1ILYLJynBwKEnwGp0HahQsSk1PrUjLzClBSDNxcIIM5wEa3gxSw1tckJhbnJkOkT/FqCgl\r
58         zpt9DighAJLIKM2D64VF+StGcaBXhHndQdp5gAkCrvsV0GAmoMGsLmCDSxIRUlINjJIHFypP\r
59         9nkv837VN6vwE7NzfN3KP8xjjdi3+NiTbJPH6qpxs1JC++9MDUh4I2kj+qhQ3qIoms0zYm69\r
60         nGdRguyza4Jdjl/y43Z6/lJwsf+w+Z7VtCUz1pv/XON84cuF6c9tveZIynk3LeAN+XNz0TEd\r
61         Lxnzr/7dFSsPPp0l2le5f3Jb0Qn1bCWW4oxEQy3mouJEAL46PhXNAgAA\r
62 X-BeenThere: notmuch@notmuchmail.org\r
63 X-Mailman-Version: 2.1.13\r
64 Precedence: list\r
65 List-Id: "Use and development of the notmuch mail system."\r
66         <notmuch.notmuchmail.org>\r
67 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
68         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
69 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
70 List-Post: <mailto:notmuch@notmuchmail.org>\r
71 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
72 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
73         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
74 X-List-Received-Date: Tue, 29 Jul 2014 16:49:19 -0000\r
75 \r
76 Rather than potentially making multiple passes over the same type of\r
77 data in the database, reorganize upgrade around each type of data that\r
78 may be upgraded.  This eliminates code duplication, will make\r
79 multi-version upgrades faster, and will let us improve progress\r
80 reporting.\r
81 ---\r
82  lib/database.cc | 71 +++++++++++++++++++++------------------------------------\r
83  1 file changed, 26 insertions(+), 45 deletions(-)\r
84 \r
85 diff --git a/lib/database.cc b/lib/database.cc\r
86 index 5f68550..4940634 100644\r
87 --- a/lib/database.cc\r
88 +++ b/lib/database.cc\r
89 @@ -1237,11 +1237,9 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,\r
90      /* Perform the upgrade in a transaction. */\r
91      db->begin_transaction (true);\r
92  \r
93 -    /* Before version 1, each message document had its filename in the\r
94 -     * data field. Copy that into the new format by calling\r
95 -     * notmuch_message_add_filename.\r
96 -     */\r
97 -    if (new_features & NOTMUCH_FEATURE_FILE_TERMS) {\r
98 +    /* Perform per-message upgrades. */\r
99 +    if (new_features &\r
100 +       (NOTMUCH_FEATURE_FILE_TERMS | NOTMUCH_FEATURE_BOOL_FOLDER)) {\r
101         notmuch_query_t *query = notmuch_query_create (notmuch, "");\r
102         notmuch_messages_t *messages;\r
103         notmuch_message_t *message;\r
104 @@ -1260,13 +1258,28 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,\r
105  \r
106             message = notmuch_messages_get (messages);\r
107  \r
108 -           filename = _notmuch_message_talloc_copy_data (message);\r
109 -           if (filename && *filename != '\0') {\r
110 -               _notmuch_message_add_filename (message, filename);\r
111 -               _notmuch_message_clear_data (message);\r
112 +           /* Before version 1, each message document had its\r
113 +            * filename in the data field. Copy that into the new\r
114 +            * format by calling notmuch_message_add_filename.\r
115 +            */\r
116 +           if (new_features & NOTMUCH_FEATURE_FILE_TERMS) {\r
117 +               filename = _notmuch_message_talloc_copy_data (message);\r
118 +               if (filename && *filename != '\0') {\r
119 +                   _notmuch_message_add_filename (message, filename);\r
120 +                   _notmuch_message_clear_data (message);\r
121 +                   _notmuch_message_sync (message);\r
122 +               }\r
123 +               talloc_free (filename);\r
124 +           }\r
125 +\r
126 +           /* Prior to version 2, the "folder:" prefix was\r
127 +            * probabilistic and stemmed. Change it to the current\r
128 +            * boolean prefix. Add "path:" prefixes while at it.\r
129 +            */\r
130 +           if (new_features & NOTMUCH_FEATURE_BOOL_FOLDER) {\r
131 +               _notmuch_message_upgrade_folder (message);\r
132                 _notmuch_message_sync (message);\r
133             }\r
134 -           talloc_free (filename);\r
135  \r
136             notmuch_message_destroy (message);\r
137  \r
138 @@ -1276,7 +1289,9 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,\r
139         notmuch_query_destroy (query);\r
140      }\r
141  \r
142 -    /* Also, before version 1 we stored directory timestamps in\r
143 +    /* Perform per-directory upgrades. */\r
144 +\r
145 +    /* Before version 1 we stored directory timestamps in\r
146       * XTIMESTAMP documents instead of the current XDIRECTORY\r
147       * documents. So copy those as well. */\r
148      if (new_features & NOTMUCH_FEATURE_DIRECTORY_DOCS) {\r
149 @@ -1318,40 +1333,6 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,\r
150         }\r
151      }\r
152  \r
153 -    /*\r
154 -     * Prior to version 2, the "folder:" prefix was probabilistic and\r
155 -     * stemmed. Change it to the current boolean prefix. Add "path:"\r
156 -     * prefixes while at it.\r
157 -     */\r
158 -    if (new_features & NOTMUCH_FEATURE_BOOL_FOLDER) {\r
159 -       notmuch_query_t *query = notmuch_query_create (notmuch, "");\r
160 -       notmuch_messages_t *messages;\r
161 -       notmuch_message_t *message;\r
162 -\r
163 -       count = 0;\r
164 -       total = notmuch_query_count_messages (query);\r
165 -\r
166 -       for (messages = notmuch_query_search_messages (query);\r
167 -            notmuch_messages_valid (messages);\r
168 -            notmuch_messages_move_to_next (messages)) {\r
169 -           if (do_progress_notify) {\r
170 -               progress_notify (closure, (double) count / total);\r
171 -               do_progress_notify = 0;\r
172 -           }\r
173 -\r
174 -           message = notmuch_messages_get (messages);\r
175 -\r
176 -           _notmuch_message_upgrade_folder (message);\r
177 -           _notmuch_message_sync (message);\r
178 -\r
179 -           notmuch_message_destroy (message);\r
180 -\r
181 -           count++;\r
182 -       }\r
183 -\r
184 -       notmuch_query_destroy (query);\r
185 -    }\r
186 -\r
187      notmuch->features = target_features;\r
188      db->set_metadata ("features", _print_features (local, notmuch->features));\r
189      db->set_metadata ("version", STRINGIFY (NOTMUCH_DATABASE_VERSION));\r
190 -- \r
191 2.0.0\r
192 \r