GNOME Bugzilla – Bug 720676
[IMAPX] Do more searching server-side
Last modified: 2014-02-03 14:37:56 UTC
Created attachment 264478 [details] evo output with CAMEL_DEBUG=all Header searches are quite handy sometimes, e.g. when working with bugzilla email. They're quite inconvenient in Evolution when the respective folder is _not_ cached on the disk because: 1) evo doesn't store all message headers locally 2) evo doesn't invoke server-side search so the worst-case scenario kicks in: all messages in folder are retrieved from the server only to be discarded again. IMO Evolution should do both: * store all headers: even for folder with 15k messages and extremely large headers (10 kB/message), the header cache is around 15 MB - no big deal these days * use server-side searches to avoid download of not-locally-available data that user doesn't want to see In the attachment is part of evolution console output with CAMEL_DEBUG=all; its start is right after such header-based search is invoked and anything following full bodies is stripped. The search in question is: match if any of these matches: Specific header | X-Bugzilla-Who | contains | fake_email1@example.org Specific header | X-Bugzilla-Who | contains | fake_email2@example.com Evolution version: 3.10.2 @ Fedora 20
I just fixed this, there is more searching done server-side in IMAP+ now. The SEARCH IMAP command doesn't support all the things evolution can search for, but it can cover the most common cases, which speeds searching significantly (especially when the folder content is not required locally). It definitely covers your case. Please note that since this change IMAP+ relies on the server filtering abilities, thus if a server doesn't follow RFC [1] for the HEADER search, which says "the value _contains_", then it can result in incorrect messages being shown (for example, a Zimbra server I tested this with does "begins with", instead of "contains"). Created commit 597802d in eds master (3.11.5+) [2] Created commit 540a2df in eds gnome-3-10 (3.10.4+) [1] http://tools.ietf.org/html/rfc3501#section-6.4.4 [2] https://git.gnome.org/browse/evolution-data-server/commit/?id=597802d
The first patch caused server-side searching also for cases where all data were available locally, which made searching slower. This tests first if everything in match-all is available locally, and if so, then it uses local search, rather than the server side. Created commit 54b89c7 in eds master (3.11.90+) Created commit 6a8a680 in eds gnome-3-10 (3.10.4+)