Lines Matching refs:dict_mysql

196     DICT_MYSQL *dict_mysql = (DICT_MYSQL *) dict;  in dict_mysql_quote()  local
211 if (dict_mysql->active_host) in dict_mysql_quote()
212 mysql_real_escape_string(dict_mysql->active_host->db, in dict_mysql_quote()
226 DICT_MYSQL *dict_mysql = (DICT_MYSQL *) dict; in dict_mysql_lookup() local
249 myname, dict_mysql->parser->name, name); in dict_mysql_lookup()
269 if ((domain_rc = db_common_check_domain(dict_mysql->ctx, name)) == 0) { in dict_mysql_lookup()
299 if (!db_common_expand(dict_mysql->ctx, dict_mysql->query, in dict_mysql_lookup()
304 if (plmysql_query(dict_mysql, name, query, &query_res) == 0) { in dict_mysql_lookup()
322 if (db_common_expand(dict_mysql->ctx, dict_mysql->result_format, in dict_mysql_lookup()
324 && dict_mysql->expansion_limit > 0 in dict_mysql_lookup()
325 && ++expansion > dict_mysql->expansion_limit) { in dict_mysql_lookup()
327 myname, dict_mysql->parser->name, name); in dict_mysql_lookup()
382 static HOST *dict_mysql_get_active(DICT_MYSQL *dict_mysql) in dict_mysql_get_active() argument
385 PLMYSQL *PLDB = dict_mysql->pldb; in dict_mysql_get_active()
411 plmysql_connect_single(dict_mysql, host); in dict_mysql_get_active()
437 static int plmysql_query(DICT_MYSQL *dict_mysql, in plmysql_query() argument
457 while ((host = dict_mysql_get_active(dict_mysql)) != NULL) { in plmysql_query()
465 dict_mysql->active_host = host; in plmysql_query()
468 db_common_expand(dict_mysql->ctx, dict_mysql->query, in plmysql_query()
470 dict_mysql->active_host = 0; in plmysql_query()
482 dict_mysql->dict.type, dict_mysql->dict.name, in plmysql_query()
505 dict_mysql->dict.type, in plmysql_query()
506 dict_mysql->dict.name); in plmysql_query()
518 dict_mysql->dict.type, in plmysql_query()
519 dict_mysql->dict.name, in plmysql_query()
529 dict_mysql->dict.type, in plmysql_query()
530 dict_mysql->dict.name, in plmysql_query()
538 if (first_result == 0 && dict_mysql->require_result_set) { in plmysql_query()
542 dict_mysql->dict.type, in plmysql_query()
543 dict_mysql->dict.name); in plmysql_query()
561 dict_mysql->dict.type, dict_mysql->dict.name, in plmysql_query()
578 static void plmysql_connect_single(DICT_MYSQL *dict_mysql, HOST *host) in plmysql_connect_single() argument
582 if (dict_mysql->option_file) in plmysql_connect_single()
583 mysql_options(host->db, MYSQL_READ_DEFAULT_FILE, dict_mysql->option_file); in plmysql_connect_single()
584 if (dict_mysql->option_group && dict_mysql->option_group[0]) in plmysql_connect_single()
585 mysql_options(host->db, MYSQL_READ_DEFAULT_GROUP, dict_mysql->option_group); in plmysql_connect_single()
587 if (dict_mysql->tls_key_file || dict_mysql->tls_cert_file || in plmysql_connect_single()
588 dict_mysql->tls_CAfile || dict_mysql->tls_CApath || dict_mysql->tls_ciphers) in plmysql_connect_single()
590 dict_mysql->tls_key_file, dict_mysql->tls_cert_file, in plmysql_connect_single()
591 dict_mysql->tls_CAfile, dict_mysql->tls_CApath, in plmysql_connect_single()
592 dict_mysql->tls_ciphers); in plmysql_connect_single()
594 if (dict_mysql->tls_verify_cert != -1) in plmysql_connect_single()
596 &dict_mysql->tls_verify_cert); in plmysql_connect_single()
601 dict_mysql->username, in plmysql_connect_single()
602 dict_mysql->password, in plmysql_connect_single()
603 dict_mysql->dbname, in plmysql_connect_single()
641 static void mysql_parse_config(DICT_MYSQL *dict_mysql, const char *mysqlcf) in mysql_parse_config() argument
644 CFG_PARSER *p = dict_mysql->parser; in mysql_parse_config()
648 dict_mysql->username = cfg_get_str(p, "user", "", 0, 0); in mysql_parse_config()
649 dict_mysql->password = cfg_get_str(p, "password", "", 0, 0); in mysql_parse_config()
650 dict_mysql->dbname = cfg_get_str(p, "dbname", "", 1, 0); in mysql_parse_config()
651 dict_mysql->result_format = cfg_get_str(p, "result_format", "%s", 1, 0); in mysql_parse_config()
652 dict_mysql->option_file = cfg_get_str(p, "option_file", NULL, 0, 0); in mysql_parse_config()
653 dict_mysql->option_group = cfg_get_str(p, "option_group", "client", 0, 0); in mysql_parse_config()
655 dict_mysql->tls_key_file = cfg_get_str(p, "tls_key_file", NULL, 0, 0); in mysql_parse_config()
656 dict_mysql->tls_cert_file = cfg_get_str(p, "tls_cert_file", NULL, 0, 0); in mysql_parse_config()
657 dict_mysql->tls_CAfile = cfg_get_str(p, "tls_CAfile", NULL, 0, 0); in mysql_parse_config()
658 dict_mysql->tls_CApath = cfg_get_str(p, "tls_CApath", NULL, 0, 0); in mysql_parse_config()
659 dict_mysql->tls_ciphers = cfg_get_str(p, "tls_ciphers", NULL, 0, 0); in mysql_parse_config()
661 dict_mysql->tls_verify_cert = cfg_get_bool(p, "tls_verify_cert", -1); in mysql_parse_config()
664 dict_mysql->require_result_set = cfg_get_bool(p, "require_result_set", 1); in mysql_parse_config()
670 dict_mysql->expansion_limit = cfg_get_int(dict_mysql->parser, in mysql_parse_config()
673 if ((dict_mysql->query = cfg_get_str(p, "query", NULL, 0, 0)) == 0) { in mysql_parse_config()
681 dict_mysql->query = vstring_export(buf); in mysql_parse_config()
687 dict_mysql->ctx = 0; in mysql_parse_config()
688 (void) db_common_parse(&dict_mysql->dict, &dict_mysql->ctx, in mysql_parse_config()
689 dict_mysql->query, 1); in mysql_parse_config()
690 (void) db_common_parse(0, &dict_mysql->ctx, dict_mysql->result_format, 0); in mysql_parse_config()
691 db_common_parse_domain(p, dict_mysql->ctx); in mysql_parse_config()
697 if (db_common_dict_partial(dict_mysql->ctx)) in mysql_parse_config()
698 dict_mysql->dict.flags |= DICT_FLAG_PATTERN; in mysql_parse_config()
700 dict_mysql->dict.flags |= DICT_FLAG_FIXED; in mysql_parse_config()
701 if (dict_mysql->dict.flags & DICT_FLAG_FOLD_FIX) in mysql_parse_config()
702 dict_mysql->dict.fold_buf = vstring_alloc(10); in mysql_parse_config()
706 dict_mysql->hosts = argv_split(hosts, CHARS_COMMA_SP); in mysql_parse_config()
707 if (dict_mysql->hosts->argc == 0) { in mysql_parse_config()
708 argv_add(dict_mysql->hosts, "localhost", ARGV_END); in mysql_parse_config()
709 argv_terminate(dict_mysql->hosts); in mysql_parse_config()
712 myname, mysqlcf, dict_mysql->hosts->argv[0]); in mysql_parse_config()
721 DICT_MYSQL *dict_mysql; in dict_mysql_open() local
739 dict_mysql = (DICT_MYSQL *) dict_alloc(DICT_TYPE_MYSQL, name, in dict_mysql_open()
741 dict_mysql->dict.lookup = dict_mysql_lookup; in dict_mysql_open()
742 dict_mysql->dict.close = dict_mysql_close; in dict_mysql_open()
743 dict_mysql->dict.flags = dict_flags; in dict_mysql_open()
744 dict_mysql->parser = parser; in dict_mysql_open()
745 mysql_parse_config(dict_mysql, name); in dict_mysql_open()
747 dict_mysql->active_host = 0; in dict_mysql_open()
749 dict_mysql->pldb = plmysql_init(dict_mysql->hosts); in dict_mysql_open()
750 if (dict_mysql->pldb == NULL) in dict_mysql_open()
752 dict_mysql->dict.owner = cfg_get_owner(dict_mysql->parser); in dict_mysql_open()
753 return (DICT_DEBUG (&dict_mysql->dict)); in dict_mysql_open()
824 DICT_MYSQL *dict_mysql = (DICT_MYSQL *) dict; in dict_mysql_close() local
826 plmysql_dealloc(dict_mysql->pldb); in dict_mysql_close()
827 cfg_parser_free(dict_mysql->parser); in dict_mysql_close()
828 myfree(dict_mysql->username); in dict_mysql_close()
829 myfree(dict_mysql->password); in dict_mysql_close()
830 myfree(dict_mysql->dbname); in dict_mysql_close()
831 myfree(dict_mysql->query); in dict_mysql_close()
832 myfree(dict_mysql->result_format); in dict_mysql_close()
833 if (dict_mysql->option_file) in dict_mysql_close()
834 myfree(dict_mysql->option_file); in dict_mysql_close()
835 if (dict_mysql->option_group) in dict_mysql_close()
836 myfree(dict_mysql->option_group); in dict_mysql_close()
838 if (dict_mysql->tls_key_file) in dict_mysql_close()
839 myfree(dict_mysql->tls_key_file); in dict_mysql_close()
840 if (dict_mysql->tls_cert_file) in dict_mysql_close()
841 myfree(dict_mysql->tls_cert_file); in dict_mysql_close()
842 if (dict_mysql->tls_CAfile) in dict_mysql_close()
843 myfree(dict_mysql->tls_CAfile); in dict_mysql_close()
844 if (dict_mysql->tls_CApath) in dict_mysql_close()
845 myfree(dict_mysql->tls_CApath); in dict_mysql_close()
846 if (dict_mysql->tls_ciphers) in dict_mysql_close()
847 myfree(dict_mysql->tls_ciphers); in dict_mysql_close()
849 if (dict_mysql->hosts) in dict_mysql_close()
850 argv_free(dict_mysql->hosts); in dict_mysql_close()
851 if (dict_mysql->ctx) in dict_mysql_close()
852 db_common_free_ctx(dict_mysql->ctx); in dict_mysql_close()