Lines Matching refs:dict_sqlite
112 DICT_SQLITE *dict_sqlite = (DICT_SQLITE *) dict; in dict_sqlite_close() local
115 msg_info("%s: %s", myname, dict_sqlite->parser->name); in dict_sqlite_close()
117 if (sqlite3_close(dict_sqlite->db) != SQLITE_OK) in dict_sqlite_close()
118 msg_fatal("%s: close %s failed", myname, dict_sqlite->parser->name); in dict_sqlite_close()
119 cfg_parser_free(dict_sqlite->parser); in dict_sqlite_close()
120 myfree(dict_sqlite->dbpath); in dict_sqlite_close()
121 myfree(dict_sqlite->query); in dict_sqlite_close()
122 myfree(dict_sqlite->result_format); in dict_sqlite_close()
123 if (dict_sqlite->ctx) in dict_sqlite_close()
124 db_common_free_ctx(dict_sqlite->ctx); in dict_sqlite_close()
135 DICT_SQLITE *dict_sqlite = (DICT_SQLITE *) dict; in dict_sqlite_lookup() local
157 myname, dict_sqlite->parser->name, name); in dict_sqlite_lookup()
174 if ((domain_rc = db_common_check_domain(dict_sqlite->ctx, name)) == 0) { in dict_sqlite_lookup()
177 myname, dict_sqlite->parser->name, name); in dict_sqlite_lookup()
195 if (!db_common_expand(dict_sqlite->ctx, dict_sqlite->query, in dict_sqlite_lookup()
201 myname, dict_sqlite->parser->name, vstring_str(query)); in dict_sqlite_lookup()
203 if (sqlite3_prepare_v2(dict_sqlite->db, vstring_str(query), -1, in dict_sqlite_lookup()
206 myname, dict_sqlite->parser->name, in dict_sqlite_lookup()
207 sqlite3_errmsg(dict_sqlite->db)); in dict_sqlite_lookup()
211 myname, dict_sqlite->parser->name, query_remainder); in dict_sqlite_lookup()
219 if (db_common_expand(dict_sqlite->ctx, dict_sqlite->result_format, in dict_sqlite_lookup()
222 && dict_sqlite->expansion_limit > 0 in dict_sqlite_lookup()
223 && ++expansion > dict_sqlite->expansion_limit) { in dict_sqlite_lookup()
225 myname, dict_sqlite->parser->name, name); in dict_sqlite_lookup()
233 myname, dict_sqlite->parser->name, in dict_sqlite_lookup()
234 vstring_str(query), sqlite3_errmsg(dict_sqlite->db)); in dict_sqlite_lookup()
245 myname, dict_sqlite->parser->name, in dict_sqlite_lookup()
246 vstring_str(query), sqlite3_errmsg(dict_sqlite->db)); in dict_sqlite_lookup()
254 static void sqlite_parse_config(DICT_SQLITE *dict_sqlite, const char *sqlitecf) in sqlite_parse_config() argument
263 dict_sqlite->dbpath = cfg_get_str(dict_sqlite->parser, "dbpath", "", 1, 0); in sqlite_parse_config()
264 dict_sqlite->query = cfg_get_str(dict_sqlite->parser, "query", NULL, 0, 0); in sqlite_parse_config()
265 if (dict_sqlite->query == 0) { in sqlite_parse_config()
267 db_common_sql_build_query(buf, dict_sqlite->parser); in sqlite_parse_config()
268 dict_sqlite->query = vstring_export(buf); in sqlite_parse_config()
270 dict_sqlite->result_format = in sqlite_parse_config()
271 cfg_get_str(dict_sqlite->parser, "result_format", "%s", 1, 0); in sqlite_parse_config()
272 dict_sqlite->expansion_limit = in sqlite_parse_config()
273 cfg_get_int(dict_sqlite->parser, "expansion_limit", 0, 0, 0); in sqlite_parse_config()
278 dict_sqlite->ctx = 0; in sqlite_parse_config()
279 (void) db_common_parse(&dict_sqlite->dict, &dict_sqlite->ctx, in sqlite_parse_config()
280 dict_sqlite->query, 1); in sqlite_parse_config()
281 (void) db_common_parse(0, &dict_sqlite->ctx, dict_sqlite->result_format, 0); in sqlite_parse_config()
282 db_common_parse_domain(dict_sqlite->parser, dict_sqlite->ctx); in sqlite_parse_config()
288 if (db_common_dict_partial(dict_sqlite->ctx)) in sqlite_parse_config()
289 dict_sqlite->dict.flags |= DICT_FLAG_PATTERN; in sqlite_parse_config()
291 dict_sqlite->dict.flags |= DICT_FLAG_FIXED; in sqlite_parse_config()
298 DICT_SQLITE *dict_sqlite; in dict_sqlite_open() local
316 dict_sqlite = (DICT_SQLITE *) dict_alloc(DICT_TYPE_SQLITE, name, in dict_sqlite_open()
318 dict_sqlite->dict.lookup = dict_sqlite_lookup; in dict_sqlite_open()
319 dict_sqlite->dict.close = dict_sqlite_close; in dict_sqlite_open()
320 dict_sqlite->dict.flags = dict_flags; in dict_sqlite_open()
322 dict_sqlite->parser = parser; in dict_sqlite_open()
323 sqlite_parse_config(dict_sqlite, name); in dict_sqlite_open()
325 if (sqlite3_open(dict_sqlite->dbpath, &dict_sqlite->db)) in dict_sqlite_open()
327 DICT_TYPE_SQLITE, name, sqlite3_errmsg(dict_sqlite->db)); in dict_sqlite_open()
329 dict_sqlite->dict.owner = cfg_get_owner(dict_sqlite->parser); in dict_sqlite_open()
331 return (DICT_DEBUG (&dict_sqlite->dict)); in dict_sqlite_open()