For this first point, the problem is that dovecot core sends TWICE the request and "Inbox" appears in the list of arguments ! (inbox shall serve to select teh right mailbox, never sent to the backend)
And even if this would be solved, the dovecot core loops *after* the backend hs returneds the results
# doveadm search -u jom@grosjo.net mailbox inbox text milan doveadm(jom@grosjo.net): Info: Get last UID of INBOX = 315526 doveadm(jom@grosjo.net): Info: Get last UID of INBOX = 315526 doveadm(jom@grosjo.net): Info: Query: FLAG=AND doveadm(jom@grosjo.net): Info: Query(1): add term(wilcard) : inbox doveadm(jom@grosjo.net): Info: Query(2): add term(wilcard) : milan doveadm(jom@grosjo.net): Info: Testing if wildcard doveadm(jom@grosjo.net): Info: Query: set GLOBAL (no specified header) doveadm(jom@grosjo.net): Info: Query : ( bcc:inbox OR body:inbox OR cc:inbox OR from:inbox OR message-id:inbox OR subject:inbox OR to:inbox ) AND ( bcc:milan OR body:milan OR cc:milan OR from:milan OR message-id:milan OR subject:milan OR to:milan ) DOVEADM(JOM@GROSJO.NET): INFO: QUERY: 2 RESULTS IN 1 MS // THIS IS WHEN BACKEND HAS FOUND RESULTS AND STOPPED d82b4b0f550d38593644000095331209 847 d82b4b0f550d38593644000095331209 1569 d82b4b0f550d38593644000095331209 2260 d82b4b0f550d38593644000095331209 2575 d82b4b0f550d38593644000095331209 2811 d82b4b0f550d38593644000095331209 2885 d82b4b0f550d38593644000095331209 3038 D82B4B0F550D38593644000095331209 3121 -> LOOPING FOREVER
On 2019-04-21 09:57, Timo Sirainen via dovecot wrote:
On 3 Apr 2019, at 20.30, Joan Moreau via dovecot dovecot@dovecot.org wrote:
doveadm search -u jom@grosjo.net mailbox inbox text milan output
doveadm(jom@grosjo.net): Info: Query : ( bcc:inbox OR body:inbox OR cc:inbox OR from:inbox OR message-id:inbox OR subject:inbox OR to:inbox OR uid:inbox ) AND ( bcc:milan OR body:milan OR cc:milan OR from:milan OR message-id:milan OR subject:milan OR to:milan OR uid:milan )
1 - The query is wrong
That's because fts_backend_xapian_lookup() isn't anywhere close to being correct. Try to copy the logic based on solr_add_definite_query_args().