Lines Matching refs:dict_pgsql
172 DICT_PGSQL *dict_pgsql = (DICT_PGSQL *) dict; in dict_pgsql_quote() local
173 HOST *active_host = dict_pgsql->active_host; in dict_pgsql_quote()
255 DICT_PGSQL *dict_pgsql; in dict_pgsql_lookup() local
266 dict_pgsql = (DICT_PGSQL *) dict; in dict_pgsql_lookup()
288 myname, dict_pgsql->parser->name, name); in dict_pgsql_lookup()
308 if ((domain_rc = db_common_check_domain(dict_pgsql->ctx, name)) == 0) { in dict_pgsql_lookup()
324 if (!db_common_expand(dict_pgsql->ctx, dict_pgsql->query, in dict_pgsql_lookup()
329 if ((query_res = plpgsql_query(dict_pgsql, name, query, in dict_pgsql_lookup()
330 dict_pgsql->dbname, in dict_pgsql_lookup()
331 dict_pgsql->encoding, in dict_pgsql_lookup()
332 dict_pgsql->username, in dict_pgsql_lookup()
333 dict_pgsql->password)) == 0) { in dict_pgsql_lookup()
349 if (db_common_expand(dict_pgsql->ctx, dict_pgsql->result_format, in dict_pgsql_lookup()
351 && dict_pgsql->expansion_limit > 0 in dict_pgsql_lookup()
352 && ++expansion > dict_pgsql->expansion_limit) { in dict_pgsql_lookup()
354 myname, dict_pgsql->parser->name, name); in dict_pgsql_lookup()
467 static PGSQL_RES *plpgsql_query(DICT_PGSQL *dict_pgsql, in plpgsql_query() argument
475 PLPGSQL *PLDB = dict_pgsql->pldb; in plpgsql_query()
486 dict_pgsql->active_host = host; in plpgsql_query()
489 db_common_expand(dict_pgsql->ctx, dict_pgsql->query, in plpgsql_query()
491 dict_pgsql->active_host = 0; in plpgsql_query()
628 static void pgsql_parse_config(DICT_PGSQL *dict_pgsql, const char *pgsqlcf) in pgsql_parse_config() argument
631 CFG_PARSER *p = dict_pgsql->parser; in pgsql_parse_config()
636 dict_pgsql->username = cfg_get_str(p, "user", "", 0, 0); in pgsql_parse_config()
637 dict_pgsql->password = cfg_get_str(p, "password", "", 0, 0); in pgsql_parse_config()
638 dict_pgsql->dbname = cfg_get_str(p, "dbname", "", 1, 0); in pgsql_parse_config()
639 dict_pgsql->encoding = cfg_get_str(p, "encoding", "UTF8", 1, 0); in pgsql_parse_config()
640 dict_pgsql->result_format = cfg_get_str(p, "result_format", "%s", 1, 0); in pgsql_parse_config()
646 dict_pgsql->expansion_limit = cfg_get_int(dict_pgsql->parser, in pgsql_parse_config()
649 if ((dict_pgsql->query = cfg_get_str(p, "query", 0, 0, 0)) == 0) { in pgsql_parse_config()
662 dict_pgsql->query = vstring_export(query); in pgsql_parse_config()
668 dict_pgsql->ctx = 0; in pgsql_parse_config()
669 (void) db_common_parse(&dict_pgsql->dict, &dict_pgsql->ctx, in pgsql_parse_config()
670 dict_pgsql->query, 1); in pgsql_parse_config()
671 (void) db_common_parse(0, &dict_pgsql->ctx, dict_pgsql->result_format, 0); in pgsql_parse_config()
672 db_common_parse_domain(p, dict_pgsql->ctx); in pgsql_parse_config()
678 if (db_common_dict_partial(dict_pgsql->ctx)) in pgsql_parse_config()
679 dict_pgsql->dict.flags |= DICT_FLAG_PATTERN; in pgsql_parse_config()
681 dict_pgsql->dict.flags |= DICT_FLAG_FIXED; in pgsql_parse_config()
682 if (dict_pgsql->dict.flags & DICT_FLAG_FOLD_FIX) in pgsql_parse_config()
683 dict_pgsql->dict.fold_buf = vstring_alloc(10); in pgsql_parse_config()
687 dict_pgsql->hosts = argv_split(hosts, CHARS_COMMA_SP); in pgsql_parse_config()
688 if (dict_pgsql->hosts->argc == 0) { in pgsql_parse_config()
689 argv_add(dict_pgsql->hosts, "localhost", ARGV_END); in pgsql_parse_config()
690 argv_terminate(dict_pgsql->hosts); in pgsql_parse_config()
693 myname, pgsqlcf, dict_pgsql->hosts->argv[0]); in pgsql_parse_config()
702 DICT_PGSQL *dict_pgsql; in dict_pgsql_open() local
720 dict_pgsql = (DICT_PGSQL *) dict_alloc(DICT_TYPE_PGSQL, name, in dict_pgsql_open()
722 dict_pgsql->dict.lookup = dict_pgsql_lookup; in dict_pgsql_open()
723 dict_pgsql->dict.close = dict_pgsql_close; in dict_pgsql_open()
724 dict_pgsql->dict.flags = dict_flags; in dict_pgsql_open()
725 dict_pgsql->parser = parser; in dict_pgsql_open()
726 pgsql_parse_config(dict_pgsql, name); in dict_pgsql_open()
727 dict_pgsql->active_host = 0; in dict_pgsql_open()
728 dict_pgsql->pldb = plpgsql_init(dict_pgsql->hosts); in dict_pgsql_open()
729 if (dict_pgsql->pldb == NULL) in dict_pgsql_open()
731 dict_pgsql->dict.owner = cfg_get_owner(dict_pgsql->parser); in dict_pgsql_open()
732 return (DICT_DEBUG (&dict_pgsql->dict)); in dict_pgsql_open()
804 DICT_PGSQL *dict_pgsql = (DICT_PGSQL *) dict; in dict_pgsql_close() local
806 plpgsql_dealloc(dict_pgsql->pldb); in dict_pgsql_close()
807 cfg_parser_free(dict_pgsql->parser); in dict_pgsql_close()
808 myfree(dict_pgsql->username); in dict_pgsql_close()
809 myfree(dict_pgsql->password); in dict_pgsql_close()
810 myfree(dict_pgsql->dbname); in dict_pgsql_close()
811 myfree(dict_pgsql->encoding); in dict_pgsql_close()
812 myfree(dict_pgsql->query); in dict_pgsql_close()
813 myfree(dict_pgsql->result_format); in dict_pgsql_close()
814 if (dict_pgsql->hosts) in dict_pgsql_close()
815 argv_free(dict_pgsql->hosts); in dict_pgsql_close()
816 if (dict_pgsql->ctx) in dict_pgsql_close()
817 db_common_free_ctx(dict_pgsql->ctx); in dict_pgsql_close()