sql_drivers_init() now registers all the drivers.
/* Load built-in SQL drivers (if any) */
sql_drivers_init();
- sql_drivers_register_all();
/* Initialize databases so their configuration files can be readable
only by root. Also load all modules here. */
{
/* Load built-in SQL drivers (if any) */
sql_drivers_init();
- sql_drivers_register_all();
#ifdef HAVE_CDB
dict_driver_register(&dict_driver_cdb);
#endif
{
/* Load built-in SQL drivers (if any) */
sql_drivers_init();
- sql_drivers_register_all();
#ifdef HAVE_CDB
dict_driver_register(&dict_driver_cdb);
#endif
$(AM_V_GEN)rm -f $@; \
echo '/* this file automatically generated by Makefile */' >$@; \
echo '#include "lib.h"' >>$@; \
- echo '#include "sql-api.h"' >>$@
+ echo '#include "sql-api-private.h"' >>$@
+ $(AM_V_at)echo 'void sql_drivers_init_all(void) {' >>$@
if ! SQL_PLUGINS
$(AM_V_at)for i in $(sql_drivers) null; do \
if [ "$${i}" != "null" ]; then \
- echo "extern struct sql_db driver_$${i}_db;" >>$@ ; \
+ echo "driver_$${i}_init();" >>$@ ; \
fi; \
done
endif
- $(AM_V_at)echo 'void sql_drivers_register_all(void) {' >>$@
+ $(AM_V_at)echo '}' >>$@
+ $(AM_V_at)echo 'void sql_drivers_deinit_all(void) {' >>$@
if ! SQL_PLUGINS
$(AM_V_at)for i in $(sql_drivers) null; do \
if [ "$${i}" != "null" ]; then \
- echo "sql_driver_register(&driver_$${i}_db);" >>$@ ; \
+ echo "driver_$${i}_deinit();" >>$@ ; \
fi; \
done
endif
const char *driver_cassandra_version = DOVECOT_ABI_VERSION;
-void driver_cassandra_init(void);
-void driver_cassandra_deinit(void);
-
void driver_cassandra_init(void)
{
sql_driver_register(&driver_cassandra_db);
const char *driver_mysql_version = DOVECOT_ABI_VERSION;
-void driver_mysql_init(void);
-void driver_mysql_deinit(void);
-
void driver_mysql_init(void)
{
sql_driver_register(&driver_mysql_db);
const char *driver_pgsql_version = DOVECOT_ABI_VERSION;
-void driver_pgsql_init(void);
-void driver_pgsql_deinit(void);
-
void driver_pgsql_init(void)
{
sql_driver_register(&driver_pgsql_db);
const char *driver_sqlite_version = DOVECOT_ABI_VERSION;
-void driver_sqlite_init(void);
-void driver_sqlite_deinit(void);
-
void driver_sqlite_init(void)
{
sql_driver_register(&driver_sqlite_db);
sql_query_finished_event(struct sql_db *db, struct event *event, const char *query,
bool success, int *duration_r);
struct event_passthrough *sql_transaction_finished_event(struct sql_transaction_context *ctx);
+
+void sql_drivers_init_without_drivers(void);
+void sql_drivers_deinit_without_drivers(void);
+
+void sql_drivers_init_all(void);
+void sql_drivers_deinit_all(void);
+
+void driver_cassandra_init(void);
+void driver_cassandra_deinit(void);
+void driver_mysql_init(void);
+void driver_mysql_deinit(void);
+void driver_pgsql_init(void);
+void driver_pgsql_deinit(void);
+void driver_sqlite_init(void);
+void driver_sqlite_deinit(void);
+
#endif
struct sql_db_module_register sql_db_module_register = { 0 };
ARRAY_TYPE(sql_drivers) sql_drivers;
-void sql_drivers_init(void)
+void sql_drivers_init_without_drivers(void)
{
i_array_init(&sql_drivers, 8);
}
-void sql_drivers_deinit(void)
+void sql_drivers_deinit_without_drivers(void)
{
array_free(&sql_drivers);
}
+void sql_drivers_init(void)
+{
+ sql_drivers_init_without_drivers();
+ sql_drivers_init_all();
+}
+
+void sql_drivers_deinit(void)
+{
+ sql_drivers_deinit_all();
+ sql_drivers_deinit_without_drivers();
+}
+
static const struct sql_db *sql_driver_lookup(const char *name)
{
const struct sql_db *const *drivers;
void sql_drivers_init(void);
void sql_drivers_deinit(void);
-/* register all built-in SQL drivers */
-void sql_drivers_register_all(void);
-
void sql_driver_register(const struct sql_db *driver);
void sql_driver_unregister(const struct sql_db *driver);
#include "lib.h"
#include "sql-api-private.h"
#include "test-common.h"
-#include "sql-api.h"
+#include "sql-api-private.h"
void driver_sqlite_init(void);
void driver_sqlite_deinit(void);
struct sql_db *sql = NULL;
const char *error = NULL;
- sql_drivers_init();
+ sql_drivers_init_without_drivers();
driver_sqlite_init();
test_assert(sql_init_full(&set, &sql, &error) == 0 &&
sql_unref(&sql);
driver_sqlite_deinit();
- sql_drivers_deinit();
+ sql_drivers_deinit_without_drivers();
test_end();
}
#include "lib.h"
#include "test-common.h"
-#include "sql-api.h"
+#include "sql-api-private.h"
#include "driver-test.h"
static struct sql_db *setup_sql(void)
struct sql_db *sql = NULL;
const char *error = NULL;
- sql_drivers_init();
+ sql_drivers_init_without_drivers();
sql_driver_test_register();
test_assert(sql_init_full(&set, &sql, &error) == 0 &&
sql_unref(&sql);
sql_driver_test_unregister();
- sql_drivers_deinit();
+ sql_drivers_deinit_without_drivers();
}
#define setup_result_1(sql) \