need to call notmuch_threads_get (..) to actually move iterator

Franz Fellner alpine.art.de at gmail.com
Sun Feb 28 06:26:05 PST 2016


It might be I found the issue:
One big thing notmuch_threads_get does is remove the thread_id from the
match_set. Playing with astroid (branch ti-skip-and-load) i see that it
is not entirely true that the iterator doesn't move. It just seems to
duplicate some messages. There definitely are coming new messages.
So my explanation is that match_set contains duplicate thread_ids. If
that is true a solution to Gautes problem might be to deduplicate the
match_set.

Excerpts from Gaute Hope's message of Februar 24, 2016 1:08 :
> Hi,
> 
> it seems to be necessary to actually call notmuch_threads_get (threads)
> to move the thread iterator from a query object, just calling
> notmuch_threads_move_to_next (..) is not enough:
> 
> ```
> 
> notmuch_query_t *query;
> notmuch_threads_t *threads;
> notmuch_thread_t *thread;
> 
> query = notmuch_query_create (database, query_string);
> threads = notmuch_query_search_threads (query);
> 
> int i = 0;
> 
> for (;
>      notmuch_threads_valid (threads);
>      notmuch_threads_move_to_next (threads))
> {
>     /*
>      * with this line commented out the iterator seems to remain in
>      * place, and if I below do another loop it will start from the
>      * beginning.
> 
>     thread = notmuch_threads_get (threads);
>     ....
>     notmuch_thread_destroy (thread);
>     */
> 
>     i++;
>     if (i > 100) break;
> }
> 
> for (;
>      notmuch_threads_valid (threads);
>      notmuch_threads_move_to_next (threads))
> {
>     /* the thread acquired here will be the first thread in the query.
>      * it should be the 101th. */
> 
>     thread = notmuch_threads_get (threads);
>     ....
>     notmuch_thread_destroy (thread);
> 
> }
> 
> 
> notmuch_query_destroy (query);
> ```
> 
> It is quite slow to skip the threads in this way, might it be faster if
> move_to_next works correctly?
> 
> Regards, Gaute
> 
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> https://notmuchmail.org/mailman/listinfo/notmuch
> 


More information about the notmuch mailing list