Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/plugins/fts/fts-api-private.h @ 9292:96b764649cbb HEAD
fts: Fixed crashing with Squat.
A better solution would be for Squat to use existing mailboxes' Squat
indexes, but for now this isn't done.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 07 Aug 2009 15:12:04 -0400 |
parents | ffb37c392166 |
children |
rev | line source |
---|---|
6410
e4eb71ae8e96
Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents:
5405
diff
changeset
|
1 #ifndef FTS_API_PRIVATE_H |
e4eb71ae8e96
Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents:
5405
diff
changeset
|
2 #define FTS_API_PRIVATE_H |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "fts-api.h" |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 struct fts_backend_vfuncs { |
4709
d2693511dd33
Let FTS backend init function take a struct mailbox instead of path.
Timo Sirainen <tss@iki.fi>
parents:
4618
diff
changeset
|
7 struct fts_backend *(*init)(struct mailbox *box); |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 void (*deinit)(struct fts_backend *backend); |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 |
4712
70ca205ce6f1
Added fts_backend_get_last_uid() which is first used to check if
Timo Sirainen <tss@iki.fi>
parents:
4709
diff
changeset
|
10 int (*get_last_uid)(struct fts_backend *backend, uint32_t *last_uid_r); |
8495
ffb37c392166
Finished making full text search indexes work fast with virtual mailboxes.
Timo Sirainen <tss@iki.fi>
parents:
8006
diff
changeset
|
11 int (*get_all_last_uids)(struct fts_backend *backend, pool_t pool, |
ffb37c392166
Finished making full text search indexes work fast with virtual mailboxes.
Timo Sirainen <tss@iki.fi>
parents:
8006
diff
changeset
|
12 ARRAY_TYPE(fts_backend_uid_map) *last_uids); |
4712
70ca205ce6f1
Added fts_backend_get_last_uid() which is first used to check if
Timo Sirainen <tss@iki.fi>
parents:
4709
diff
changeset
|
13 |
6898
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
14 int (*build_init)(struct fts_backend *backend, uint32_t *last_uid_r, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
15 struct fts_backend_build_context **ctx_r); |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 int (*build_more)(struct fts_backend_build_context *ctx, uint32_t uid, |
5341
acd4ed841b01
Separate headers and body in building and searching. Added support for
Timo Sirainen <tss@iki.fi>
parents:
4942
diff
changeset
|
17 const unsigned char *data, size_t size, bool headers); |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 int (*build_deinit)(struct fts_backend_build_context *ctx); |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 |
4714 | 20 void (*expunge)(struct fts_backend *backend, struct mail *mail); |
4854
09b9b1e8f73d
Added fts_backend_expunge_finish() virtual backend function.
Timo Sirainen <tss@iki.fi>
parents:
4714
diff
changeset
|
21 void (*expunge_finish)(struct fts_backend *backend, |
09b9b1e8f73d
Added fts_backend_expunge_finish() virtual backend function.
Timo Sirainen <tss@iki.fi>
parents:
4714
diff
changeset
|
22 struct mailbox *box, bool committed); |
4714 | 23 |
4877
63d3b76e44fe
Added lock/unlock backend operations.
Timo Sirainen <tss@iki.fi>
parents:
4854
diff
changeset
|
24 int (*lock)(struct fts_backend *backend); |
63d3b76e44fe
Added lock/unlock backend operations.
Timo Sirainen <tss@iki.fi>
parents:
4854
diff
changeset
|
25 void (*unlock)(struct fts_backend *backend); |
63d3b76e44fe
Added lock/unlock backend operations.
Timo Sirainen <tss@iki.fi>
parents:
4854
diff
changeset
|
26 |
6898
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
27 int (*lookup)(struct fts_backend *backend, const char *key, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
28 enum fts_lookup_flags flags, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
29 ARRAY_TYPE(seq_range) *definite_uids, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
30 ARRAY_TYPE(seq_range) *maybe_uids); |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
31 int (*filter)(struct fts_backend *backend, const char *key, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
32 enum fts_lookup_flags flags, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
33 ARRAY_TYPE(seq_range) *definite_uids, |
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
34 ARRAY_TYPE(seq_range) *maybe_uids); |
8004
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
35 |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
36 int (*lookup2)(struct fts_backend_lookup_context *ctx, |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
37 ARRAY_TYPE(seq_range) *definite_uids, |
8006
0a3b5ddb0869
Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents:
8004
diff
changeset
|
38 ARRAY_TYPE(seq_range) *maybe_uids, |
0a3b5ddb0869
Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents:
8004
diff
changeset
|
39 ARRAY_TYPE(fts_score_map) *scores); |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 }; |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 |
4942
b382b21409b5
Added support for X-BODY-FAST and X-TEXT-FAST SEARCH arguments. FTS plugin
Timo Sirainen <tss@iki.fi>
parents:
4877
diff
changeset
|
42 enum fts_backend_flags { |
6898
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
43 /* If set, the backend is used for TEXT and BODY search |
4942
b382b21409b5
Added support for X-BODY-FAST and X-TEXT-FAST SEARCH arguments. FTS plugin
Timo Sirainen <tss@iki.fi>
parents:
4877
diff
changeset
|
44 optimizations. Otherwise only TEXT_FAST and BODY_FAST are |
b382b21409b5
Added support for X-BODY-FAST and X-TEXT-FAST SEARCH arguments. FTS plugin
Timo Sirainen <tss@iki.fi>
parents:
4877
diff
changeset
|
45 optimized. */ |
9292
96b764649cbb
fts: Fixed crashing with Squat.
Timo Sirainen <tss@iki.fi>
parents:
8495
diff
changeset
|
46 FTS_BACKEND_FLAG_SUBSTRING_LOOKUPS = 0x01, |
96b764649cbb
fts: Fixed crashing with Squat.
Timo Sirainen <tss@iki.fi>
parents:
8495
diff
changeset
|
47 /* Backend supports virtual mailbox lookups. */ |
96b764649cbb
fts: Fixed crashing with Squat.
Timo Sirainen <tss@iki.fi>
parents:
8495
diff
changeset
|
48 FTS_BACKEND_FLAG_VIRTUAL_LOOKUPS = 0x02 |
4942
b382b21409b5
Added support for X-BODY-FAST and X-TEXT-FAST SEARCH arguments. FTS plugin
Timo Sirainen <tss@iki.fi>
parents:
4877
diff
changeset
|
49 }; |
b382b21409b5
Added support for X-BODY-FAST and X-TEXT-FAST SEARCH arguments. FTS plugin
Timo Sirainen <tss@iki.fi>
parents:
4877
diff
changeset
|
50 |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 struct fts_backend { |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 const char *name; |
4942
b382b21409b5
Added support for X-BODY-FAST and X-TEXT-FAST SEARCH arguments. FTS plugin
Timo Sirainen <tss@iki.fi>
parents:
4877
diff
changeset
|
53 enum fts_backend_flags flags; |
4618 | 54 |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 struct fts_backend_vfuncs v; |
7238
983c6ea05de0
Compile fix with some compilers
Timo Sirainen <tss@iki.fi>
parents:
7207
diff
changeset
|
56 struct mailbox *box; |
5405
22d04968449a
Don't crash if another search is started while we're still building the
Timo Sirainen <tss@iki.fi>
parents:
5341
diff
changeset
|
57 |
6898
e739cffd05ef
FTS API changes and Squat rewrite. Squat is still missing expunge handling.
Timo Sirainen <tss@iki.fi>
parents:
6410
diff
changeset
|
58 unsigned int locked:1; |
5405
22d04968449a
Don't crash if another search is started while we're still building the
Timo Sirainen <tss@iki.fi>
parents:
5341
diff
changeset
|
59 unsigned int building:1; |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 }; |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 struct fts_backend_build_context { |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 struct fts_backend *backend; |
4618 | 64 |
65 unsigned int failed:1; | |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 }; |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 |
8004
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
68 struct fts_backend_lookup_field { |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
69 const char *key; |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
70 enum fts_lookup_flags flags; |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
71 }; |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
72 |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
73 struct fts_backend_lookup_context { |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
74 struct fts_backend *backend; |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
75 pool_t pool; |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
76 |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
77 ARRAY_DEFINE(fields, struct fts_backend_lookup_field); |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
78 }; |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
79 |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
80 void fts_backend_register(const struct fts_backend *backend); |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
81 void fts_backend_unregister(const char *name); |
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
82 |
8004
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
83 void fts_filter_uids(ARRAY_TYPE(seq_range) *definite_dest, |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
84 const ARRAY_TYPE(seq_range) *definite_filter, |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
85 ARRAY_TYPE(seq_range) *maybe_dest, |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
86 const ARRAY_TYPE(seq_range) *maybe_filter); |
6418d4c0ff16
fts: Added a new lookup API where the backend can look up all the fields
Timo Sirainen <tss@iki.fi>
parents:
7238
diff
changeset
|
87 |
4609
48a16f1254b5
Added full text search plugin framework. Still missing support for handling
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
88 #endif |