lib/sexp: special case "" as an argument in lastmod ranges.

Support this syntax for constincy with (data from to) ranges.
This commit is contained in:
David Bremner 2022-06-04 18:53:57 -03:00
parent 254912821f
commit 7863234586
2 changed files with 8 additions and 4 deletions

View file

@ -504,14 +504,20 @@ _sexp_parse_range (notmuch_database_t *notmuch, const _sexp_prefix_t *prefix,
long from_idx, to_idx; long from_idx, to_idx;
try { try {
from_idx = std::stol (from); if (EMPTY_STRING (from))
from_idx = 0L;
else
from_idx = std::stol (from);
} catch (std::logic_error &e) { } catch (std::logic_error &e) {
_notmuch_database_log (notmuch, "bad 'from' revision: '%s'\n", from); _notmuch_database_log (notmuch, "bad 'from' revision: '%s'\n", from);
return NOTMUCH_STATUS_BAD_QUERY_SYNTAX; return NOTMUCH_STATUS_BAD_QUERY_SYNTAX;
} }
try { try {
to_idx = std::stol (to); if (EMPTY_STRING (to))
to_idx = LONG_MAX;
else
to_idx = std::stol (to);
} catch (std::logic_error &e) { } catch (std::logic_error &e) {
_notmuch_database_log (notmuch, "bad 'to' revision: '%s'\n", to); _notmuch_database_log (notmuch, "bad 'to' revision: '%s'\n", to);
return NOTMUCH_STATUS_BAD_QUERY_SYNTAX; return NOTMUCH_STATUS_BAD_QUERY_SYNTAX;

View file

@ -932,13 +932,11 @@ notmuch search --query=sexp "(and (lastmod $revision $revision2))" | notmuch_se
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "lastmod query, lower bound only" test_begin_subtest "lastmod query, lower bound only"
test_subtest_known_broken
notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp "(lastmod $revision \"\")" | notmuch_search_sanitize > OUTPUT notmuch search --query=sexp "(lastmod $revision \"\")" | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "lastmod query, upper bound only" test_begin_subtest "lastmod query, upper bound only"
test_subtest_known_broken
notmuch search lastmod:..$revision2 | notmuch_search_sanitize > EXPECTED notmuch search lastmod:..$revision2 | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp "(lastmod \"\" $revision2)" | notmuch_search_sanitize > OUTPUT notmuch search --query=sexp "(lastmod \"\" $revision2)" | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT