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);
 }