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 A85596DE0F56 for ; Wed, 21 Aug 2019 05:25:20 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: -0.052 X-Spam-Level: X-Spam-Status: No, score=-0.052 tagged_above=-999 required=5 tests=[AWL=-0.051, SPF_PASS=-0.001] 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 W-1EtxRyoTyU for ; Wed, 21 Aug 2019 05:25:19 -0700 (PDT) Received: from fethera.tethera.net (fethera.tethera.net [198.245.60.197]) by arlo.cworth.org (Postfix) with ESMTPS id 768F16DE0F54 for ; Wed, 21 Aug 2019 05:25:19 -0700 (PDT) Received: from remotemail by fethera.tethera.net with local (Exim 4.89) (envelope-from ) id 1i0Oza-0002Im-3a; Wed, 21 Aug 2019 07:41:30 -0400 Received: (nullmailer pid 23851 invoked by uid 1000); Wed, 21 Aug 2019 11:41:27 -0000 From: David Bremner To: "Rollins, Jameson" , David Bremner , "Jorge P. de Morais Neto" , "notmuch@notmuchmail.org" Subject: [PATCH 2/3] lib: introduce N_F_GROUP and use it to fix implicit AND for from: Date: Wed, 21 Aug 2019 08:41:25 -0300 Message-Id: <20190821114126.23540-3-david@tethera.net> X-Mailer: git-send-email 2.23.0.rc1 In-Reply-To: <20190821114126.23540-1-david@tethera.net> References: <87v9urjch9.fsf@caltech.edu> <20190821114126.23540-1-david@tethera.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.29 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: Wed, 21 Aug 2019 12:25:20 -0000 This needs tests for every prefix and documentation --- lib/database-private.h | 1 + lib/database.cc | 23 +++++++++++++++++------ test/T760-implicit-operators.sh | 4 ++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/database-private.h b/lib/database-private.h index 87ae1bdf..a5eb83cb 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -159,6 +159,7 @@ typedef enum notmuch_field_flags { NOTMUCH_FIELD_EXTERNAL = 1 << 0, NOTMUCH_FIELD_PROBABILISTIC = 1 << 1, NOTMUCH_FIELD_PROCESSOR = 1 << 2, + NOTMUCH_FIELD_GROUP = 1 << 3, } notmuch_field_flag_t; /* diff --git a/lib/database.cc b/lib/database.cc index 24b7ec43..5d6c4ee6 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -272,16 +272,21 @@ prefix_t prefix_table[] = { { "body", "", NOTMUCH_FIELD_EXTERNAL | NOTMUCH_FIELD_PROBABILISTIC }, { "thread", "G", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, + NOTMUCH_FIELD_PROCESSOR | + NOTMUCH_FIELD_GROUP + }, { "tag", "K", NOTMUCH_FIELD_EXTERNAL | NOTMUCH_FIELD_PROCESSOR }, { "is", "K", NOTMUCH_FIELD_EXTERNAL | NOTMUCH_FIELD_PROCESSOR }, - { "id", "Q", NOTMUCH_FIELD_EXTERNAL }, + { "id", "Q", NOTMUCH_FIELD_EXTERNAL | + NOTMUCH_FIELD_GROUP }, { "mid", "Q", NOTMUCH_FIELD_EXTERNAL | NOTMUCH_FIELD_PROCESSOR }, { "path", "P", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, + NOTMUCH_FIELD_PROCESSOR | + NOTMUCH_FIELD_GROUP + }, { "property", "XPROPERTY", NOTMUCH_FIELD_EXTERNAL }, /* * Unconditionally add ':' to reduce potential ambiguity with @@ -290,10 +295,14 @@ prefix_t prefix_table[] = { * discussion. */ { "folder", "XFOLDER:", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, + NOTMUCH_FIELD_PROCESSOR | + NOTMUCH_FIELD_GROUP + }, #if HAVE_XAPIAN_FIELD_PROCESSOR { "date", NULL, NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, + NOTMUCH_FIELD_PROCESSOR | + NOTMUCH_FIELD_GROUP + }, { "query", NULL, NOTMUCH_FIELD_EXTERNAL | NOTMUCH_FIELD_PROCESSOR }, #endif @@ -400,7 +409,9 @@ _setup_query_field (const prefix_t *prefix, notmuch_database_t *notmuch) /* we treat all field-processor fields as boolean in order to get the raw input */ if (prefix->prefix) notmuch->query_parser->add_prefix ("", prefix->prefix); - notmuch->query_parser->add_boolean_prefix (prefix->name, fp); + notmuch->query_parser->add_boolean_prefix (prefix->name, fp, + !(prefix->flags & NOTMUCH_FIELD_PROBABILISTIC) && + (prefix->flags & NOTMUCH_FIELD_GROUP)); } else { _setup_query_field_default (prefix, notmuch); } diff --git a/test/T760-implicit-operators.sh b/test/T760-implicit-operators.sh index b79673df..1a6ba61f 100755 --- a/test/T760-implicit-operators.sh +++ b/test/T760-implicit-operators.sh @@ -21,8 +21,8 @@ EOF test_expect_equal_file EXPECTED OUTPUT } -test_AND from test_subtest_known_broken -test_AND subject test_subtest_known_broken +test_AND from +test_AND subject test_AND to test_done -- 2.23.0.rc1