From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id E555B6DE0FE6 for ; Sun, 4 Jun 2017 05:33:06 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: -0.001 X-Spam-Level: X-Spam-Status: No, score=-0.001 tagged_above=-999 required=5 tests=[AWL=0.010, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oyMqvGUWExYO for ; Sun, 4 Jun 2017 05:33:06 -0700 (PDT) Received: from fethera.tethera.net (fethera.tethera.net [198.245.60.197]) by arlo.cworth.org (Postfix) with ESMTPS id E11216DE096A for ; Sun, 4 Jun 2017 05:32:52 -0700 (PDT) Received: from remotemail by fethera.tethera.net with local (Exim 4.84_2) (envelope-from ) id 1dHUhF-0004aP-Jv; Sun, 04 Jun 2017 08:31:53 -0400 Received: (nullmailer pid 24535 invoked by uid 1000); Sun, 04 Jun 2017 12:32:38 -0000 From: David Bremner To: notmuch@freelists.org, notmuch@notmuchmail.org Subject: [patch v3 06/12] lib: index message files with duplicate message-ids Date: Sun, 4 Jun 2017 09:32:29 -0300 Message-Id: <20170604123235.24466-7-david@tethera.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170604123235.24466-1-david@tethera.net> References: <20170604123235.24466-1-david@tethera.net> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Jun 2017 12:33:07 -0000 The corresponding xapian document just gets more terms added to it, but this doesn't seem to break anything. Values on the other hand get overwritten, which is a bit annoying, but arguably it is not worse to take the values (from, subject, date) from the last file indexed rather than the first. --- lib/add-message.cc | 20 +++++++++++--------- test/T160-json.sh | 4 ++-- test/T670-duplicate-mid.sh | 2 -- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/add-message.cc b/lib/add-message.cc index 2922eaa9..ae9b14a7 100644 --- a/lib/add-message.cc +++ b/lib/add-message.cc @@ -529,19 +529,21 @@ notmuch_database_add_message (notmuch_database_t *notmuch, if (is_ghost) /* Convert ghost message to a regular message */ _notmuch_message_remove_term (message, "type", "ghost"); - ret = _notmuch_database_link_message (notmuch, message, + } + + ret = _notmuch_database_link_message (notmuch, message, message_file, is_ghost); - if (ret) - goto DONE; + if (ret) + goto DONE; - _notmuch_message_set_header_values (message, date, from, subject); + _notmuch_message_set_header_values (message, date, from, subject); - ret = _notmuch_message_index_file (message, message_file); - if (ret) - goto DONE; - } else { + ret = _notmuch_message_index_file (message, message_file); + if (ret) + goto DONE; + + if (! is_new && !is_ghost) ret = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID; - } _notmuch_message_sync (message); } catch (const Xapian::Error &error) { diff --git a/test/T160-json.sh b/test/T160-json.sh index ac51895e..07955a2b 100755 --- a/test/T160-json.sh +++ b/test/T160-json.sh @@ -71,8 +71,8 @@ test_begin_subtest "Format version: too high" test_expect_code 21 "notmuch search --format-version=999 \\*" test_begin_subtest "Show message: multiple filenames" -add_message "[id]=message-id@example.com [filename]=copy1" -add_message "[id]=message-id@example.com [filename]=copy2" +add_message '[id]=message-id@example.com [filename]=copy1 [date]="Fri, 05 Jan 2001 15:43:52 +0000"' +add_message '[id]=message-id@example.com [filename]=copy2 [date]="Fri, 05 Jan 2001 15:43:52 +0000"' cat < EXPECTED [ [ diff --git a/test/T670-duplicate-mid.sh b/test/T670-duplicate-mid.sh index ced28a21..f1952555 100755 --- a/test/T670-duplicate-mid.sh +++ b/test/T670-duplicate-mid.sh @@ -6,7 +6,6 @@ add_message '[id]="duplicate"' '[subject]="message 1" [filename]=copy1' add_message '[id]="duplicate"' '[subject]="message 2" [filename]=copy2' test_begin_subtest 'Search for second subject' -test_subtest_known_broken cat <EXPECTED MAIL_DIR/copy1 MAIL_DIR/copy2 @@ -16,7 +15,6 @@ test_expect_equal_file EXPECTED OUTPUT add_message '[id]="duplicate"' '[body]="sekrit" [filename]=copy3' test_begin_subtest 'search for body in duplicate file' -test_subtest_known_broken cat <EXPECTED MAIL_DIR/copy1 MAIL_DIR/copy2 -- 2.11.0