cli: do not sort addresses on --output=count or --deduplicate=address

The order of the results with --output=count and --deduplicate=address
are unspecified as they're based on a hash table traversal. This being
the case, optimize the query by explicitly requesting unsorted
results. Clarify the documentation accordingly.
This commit is contained in:
Jani Nikula 2015-09-03 22:40:05 +03:00 committed by David Bremner
parent 71fae18fba
commit 02e394aed2
2 changed files with 8 additions and 1 deletions

View file

@ -85,7 +85,9 @@ Supported options for **address** include
By default, results will be displayed in reverse chronological
order, (that is, the newest results will be displayed first).
This option is not supported with --output=count.
However, if either --output=count or --deduplicate=address is
specified, this option is ignored and the order of the results
is unspecified.
``--exclude=(true|false)``
A message is called "excluded" if it matches at least one tag in

View file

@ -883,6 +883,11 @@ notmuch_address_command (notmuch_config_t *config, int argc, char *argv[])
_talloc_free_for_g_hash,
_list_free_for_g_hash);
/* The order is not guaranteed if a full pass is required, so go
* for fastest. */
if (ctx->output & OUTPUT_COUNT || ctx->dedup == DEDUP_ADDRESS)
notmuch_query_set_sort (ctx->query, NOTMUCH_SORT_UNSORTED);
ret = do_search_messages (ctx);
g_hash_table_unref (ctx->addresses);