Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6480:7596339a9452 HEAD
Use SQL connection pools.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 22 Sep 2007 19:40:06 +0300 |
parents | e66bf9b9e011 |
children | e81e56e67ba1 |
files | src/lib-dict/dict-sql.c |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-dict/dict-sql.c Sat Sep 22 19:39:42 2007 +0300 +++ b/src/lib-dict/dict-sql.c Sat Sep 22 19:40:06 2007 +0300 @@ -5,12 +5,15 @@ #include "istream.h" #include "str.h" #include "sql-api-private.h" +#include "sql-pool.h" #include "dict-private.h" #include "dict-sql.h" #include <unistd.h> #include <fcntl.h> +#define DICT_SQL_MAX_UNUSED_CONNECTIONS 10 + struct sql_dict { struct dict dict; @@ -36,6 +39,8 @@ unsigned int changed:1; }; +static struct sql_pool *dict_sql_pool; + static int sql_dict_read_config(struct sql_dict *dict, const char *path) { struct istream *input; @@ -121,7 +126,8 @@ } t_push(); - dict->db = sql_init(driver->name, dict->connect_string); + dict->db = sql_pool_new(dict_sql_pool, driver->name, + dict->connect_string); t_pop(); return &dict->dict; } @@ -447,6 +453,8 @@ const struct sql_db *const *drivers; unsigned int i, count; + dict_sql_pool = sql_pool_init(DICT_SQL_MAX_UNUSED_CONNECTIONS); + /* @UNSAFE */ drivers = array_get(&sql_drivers, &count); dict_sql_drivers = i_new(struct dict, count + 1); @@ -466,4 +474,5 @@ for (i = 0; dict_sql_drivers[i].name != NULL; i++) dict_driver_unregister(&dict_sql_drivers[i]); i_free(dict_sql_drivers); + sql_pool_deinit(&dict_sql_pool); }