fts-storage.c revision 3415e311f91f9cee6da644139be11b0848e9c704
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen/* Copyright (c) 2006-2013 Dovecot authors, see the included COPYING file */
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen#define INDEXER_HANDSHAKE "VERSION\tindexer\t1\t0\n"
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct fts_backend_update_context *update_ctx;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct fts_backend_update_context *sync_update_ctx;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen union mailbox_transaction_module_context module_ctx;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstatic MODULE_CONTEXT_DEFINE_INIT(fts_storage_module,
2e1e493b248dec0127b1eabeea5a8bc330378fcdTimo Sirainenstatic MODULE_CONTEXT_DEFINE_INIT(fts_mail_module, &mail_module_register);
2e1e493b248dec0127b1eabeea5a8bc330378fcdTimo Sirainenstatic MODULE_CONTEXT_DEFINE_INIT(fts_mailbox_list_module,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstatic int fts_mailbox_get_last_cached_seq(struct mailbox *box, uint32_t *seq_r)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct fts_mailbox_list *flist = FTS_LIST_CONTEXT(box->list);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen if (fts_backend_get_last_uid(flist->backend, box, &last_uid) < 0)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen mailbox_get_seq_range(box, 1, last_uid, &seq1, &seq2);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenfts_mailbox_get_status(struct mailbox *box, enum mailbox_status_items items,
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen if (fbox->module_ctx.super.get_status(box, items, status_r) < 0)
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen if (fts_mailbox_get_last_cached_seq(box, &seq) < 0)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen /* use whichever is smaller */
case SEARCH_OR:
case SEARCH_SUB:
case SEARCH_INTHREAD:
return TRUE;
case SEARCH_BODY:
case SEARCH_TEXT:
return TRUE;
return FALSE;
static struct mail_search_context *
return ctx;
fctx->t = t;
return ctx;
int ret;
if (ret == 0)
return FALSE;
if (ret > 0)
if (ret < 0) {
return TRUE;
return FALSE;
return FALSE;
unsigned int idx;
return FALSE;
return FALSE;
return TRUE;
idx = 0;
return TRUE;
int ret = 0;
return ret;
const char **value_r)
int ret = 0;
return ret;
} else T_BEGIN {
} T_END;
static struct mailbox_transaction_context *
struct mailbox_transaction_context *t;
return ret;
(void)fts_transaction_end(t);
unsigned int max_recent_msgs;
int fd;
max_recent_msgs = 0;
bool autoindex;
int ret;
if (ret < 0)
if (autoindex)
bool optimize;
int ret = 0;
MAILBOX_SYNC_FLAG_OPTIMIZE)) != 0;
if (optimize) {
return ret;