Re: [PATCH 0/4] Allow specifying alternate names for addresses in other_email
[notmuch-archives.git] / 91 / 4d461f7df1977e545dfd6deaabef9b1b8948e1
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 54653431FAE\r
6         for <notmuch@notmuchmail.org>; Mon, 25 Aug 2014 10:26:31 -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 AhTlb1CoQ49P for <notmuch@notmuchmail.org>;\r
16         Mon, 25 Aug 2014 10:26:25 -0700 (PDT)\r
17 Received: from dmz-mailsec-scanner-1.mit.edu (dmz-mailsec-scanner-1.mit.edu\r
18         [18.9.25.12])\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 43B71431FBC\r
22         for <notmuch@notmuchmail.org>; Mon, 25 Aug 2014 10:26:19 -0700 (PDT)\r
23 X-AuditID: 1209190c-f795e6d000006c66-ae-53fb71b93580\r
24 Received: from mailhub-auth-2.mit.edu ( [18.7.62.36])\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-1.mit.edu (Symantec Messaging Gateway) with SMTP\r
28         id 7F.F6.27750.9B17BF35; Mon, 25 Aug 2014 13:26:17 -0400 (EDT)\r
29 Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
30         by mailhub-auth-2.mit.edu (8.13.8/8.9.2) with ESMTP id s7PHQE1v014412; \r
31         Mon, 25 Aug 2014 13:26:14 -0400\r
32 Received: from drake.dyndns.org (31-35-14.wireless.csail.mit.edu\r
33         [128.31.35.14]) (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 s7PHQCru029617\r
36         (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
37         Mon, 25 Aug 2014 13:26:13 -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 1XLy20-0003jb-0y; Mon, 25 Aug 2014 13:26:12 -0400\r
41 From: Austin Clements <amdragon@mit.edu>\r
42 To: notmuch@notmuchmail.org\r
43 Subject: [PATCH v4 07/11] lib: Reorganize upgrade around document types\r
44 Date: Mon, 25 Aug 2014 13:26:05 -0400\r
45 Message-Id: <1408987569-14146-8-git-send-email-amdragon@mit.edu>\r
46 X-Mailer: git-send-email 2.0.0\r
47 In-Reply-To: <1408987569-14146-1-git-send-email-amdragon@mit.edu>\r
48 References: <1408987569-14146-1-git-send-email-amdragon@mit.edu>\r
49 X-Brightmail-Tracker:\r
50  H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsUixG6noruz8HewwcZWVYsbrd2MFk3TnS2u\r
51         35zJ7MDscev+a3aPZ6tuMXtsOfSeOYA5issmJTUnsyy1SN8ugStj2br3LAVPFSrOnX/A3sD4\r
52         VbKLkZNDQsBEYtmVsywQtpjEhXvr2boYuTiEBGYzSTzf2MUO4WxklDi9/wkjhHOMSeJn3wUW\r
53         CGcuo8S501PB+tkENCR+31rMBGKLCEhL7Lw7mxXEZhbwklh2oR/MFhZwl9j9bxpYPYuAqsTC\r
54         u5/B6nkFHCRuvLvABnGHnETDjU9gNqeAo8T0hbPBaoSAar5fPs88gZF/ASPDKkbZlNwq3dzE\r
55         zJzi1GTd4uTEvLzUIl1DvdzMEr3UlNJNjKDw4pTk2cH45qDSIUYBDkYlHt4b8b+DhVgTy4or\r
56         cw8xSnIwKYnyTssHCvEl5adUZiQWZ8QXleakFh9ilOBgVhLhbQbJ8aYkVlalFuXDpKQ5WJTE\r
57         ed9aWwULCaQnlqRmp6YWpBbBZGU4OJQkeHMLgBoFi1LTUyvSMnNKENJMHJwgw3mAhseD1PAW\r
58         FyTmFmemQ+RPMSpKifOuBdkqAJLIKM2D64XF/ytGcaBXhHmPgrTzAFMHXPcroMFMQINNe36C\r
59         DC5JREhJNTDO+72384mZa3vRp+l5zn6T9z8SyFjOp+EztUWqvK9RPea9ofTK1tQWAdv1AWIc\r
60         Tgobotj3tijqvDhQFMfOW8dc/6vd8m2D4IawFBW3j4dqfv3iPyl04sPcy4ujZ6xKMdLPvtHC\r
61         +ky7/p+wZ5z4HyNze/0oydIDj9cHTlfefvThzd9br/S3vVViKc5INNRiLipOBACX2MKp2gIA        AA==\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: Mon, 25 Aug 2014 17:26:31 -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 | 72 +++++++++++++++++++++------------------------------------\r
83  1 file changed, 26 insertions(+), 46 deletions(-)\r
84 \r
85 diff --git a/lib/database.cc b/lib/database.cc\r
86 index 525c9c3..6a7ce29 100644\r
87 --- a/lib/database.cc\r
88 +++ b/lib/database.cc\r
89 @@ -1248,11 +1248,9 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,\r
90       * format. */\r
91      notmuch->features = target_features;\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 @@ -1271,13 +1269,27 @@ 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 -               _notmuch_message_sync (message);\r
113 +           /* Before version 1, each message document had its\r
114 +            * filename in the data field. Copy that into the new\r
115 +            * format by calling notmuch_message_add_filename.\r
116 +            */\r
117 +           if (new_features & NOTMUCH_FEATURE_FILE_TERMS) {\r
118 +               filename = _notmuch_message_talloc_copy_data (message);\r
119 +               if (filename && *filename != '\0') {\r
120 +                   _notmuch_message_add_filename (message, filename);\r
121 +                   _notmuch_message_clear_data (message);\r
122 +               }\r
123 +               talloc_free (filename);\r
124             }\r
125 -           talloc_free (filename);\r
126 +\r
127 +           /* Prior to version 2, the "folder:" prefix was\r
128 +            * probabilistic and stemmed. Change it to the current\r
129 +            * boolean prefix. Add "path:" prefixes while at it.\r
130 +            */\r
131 +           if (new_features & NOTMUCH_FEATURE_BOOL_FOLDER)\r
132 +               _notmuch_message_upgrade_folder (message);\r
133 +\r
134 +           _notmuch_message_sync (message);\r
135  \r
136             notmuch_message_destroy (message);\r
137  \r
138 @@ -1287,7 +1299,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 @@ -1329,40 +1343,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      db->set_metadata ("features", _print_features (local, notmuch->features));\r
188      db->set_metadata ("version", STRINGIFY (NOTMUCH_DATABASE_VERSION));\r
189  \r
190 -- \r
191 2.0.0\r
192 \r