From e895b12aeaf31cbbeefa1661a842e52ca1d70a2a Mon Sep 17 00:00:00 2001 From: Badlop Date: Sat, 13 Aug 2011 18:11:26 +0200 Subject: [PATCH] Fix support for odbc + gen_storage + static_modules --- src/gen_storage_migration.erl | 8 +++++--- src/mod_muc/mod_muc.erl | 5 ++++- src/odbc/ejabberd_odbc_sup.erl | 9 +++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/gen_storage_migration.erl b/src/gen_storage_migration.erl index 54afe6ad1..7de85aa74 100644 --- a/src/gen_storage_migration.erl +++ b/src/gen_storage_migration.erl @@ -111,9 +111,12 @@ migrate_mnesia1(HostB, Table, {OldTable, OldAttributes, MigrateFun}) -> end. +migrate_odbc(HostStr, Tables, Migrations) when is_list(HostStr) -> + migrate_odbc(list_to_binary(HostStr), Tables, Migrations); migrate_odbc(Host, Tables, Migrations) -> + HostStr = binary_to_list(Host), try ejabberd_odbc:sql_transaction( - Host, + HostStr, fun() -> lists:foreach( fun(Migration) -> @@ -146,10 +149,9 @@ migrate_odbc1(Host, Tables, {OldTablesColumns, MigrateFun}) -> ignored end. -migrate_odbc2(Host, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun) +migrate_odbc2(HostB, Tables, OldTable, OldTables, OldColumns, OldColumnsAll, OldTablesA, ColumnsT, MigrateFun) when ColumnsT == OldColumnsAll -> ?INFO_MSG("Migrating ODBC table ~p to gen_storage tables ~p", [OldTable, Tables]), - HostB = list_to_binary(Host), %% rename old tables to *_old lists:foreach(fun(OldTable1) -> diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl index 791e5e0d9..d23374b57 100644 --- a/src/mod_muc/mod_muc.erl +++ b/src/mod_muc/mod_muc.erl @@ -1083,4 +1083,7 @@ update_tables(HostB, mnesia) -> opt = Opt, val = Val}) end, Options) - end}]). + end}]); + +update_tables(_HostB, odbc) -> + ok. diff --git a/src/odbc/ejabberd_odbc_sup.erl b/src/odbc/ejabberd_odbc_sup.erl index df0b57bf1..862b28cb7 100644 --- a/src/odbc/ejabberd_odbc_sup.erl +++ b/src/odbc/ejabberd_odbc_sup.erl @@ -100,6 +100,7 @@ init([Host]) -> [?MODULE]} end, lists:seq(1, PoolSize))}}. +%% @spec (Host::string()) -> [pid()] get_pids(Host) -> case ejabberd_config:get_local_option({odbc_server, Host}) of {host, Host1} -> @@ -109,10 +110,18 @@ get_pids(Host) -> [R#sql_pool.pid || R <- Rs] end. +get_random_pid(HostB) when is_binary(HostB) -> + get_random_pid(binary_to_list(HostB)); +get_random_pid(global) -> + get_random_pid("localhost"); get_random_pid(Host) -> Pids = get_pids(ejabberd:normalize_host(Host)), lists:nth(erlang:phash(now(), length(Pids)), Pids). +get_dbtype(HostB) when is_binary(HostB) -> + get_dbtype(binary_to_list(HostB)); +get_dbtype(global) -> + get_dbtype("localhost"); get_dbtype(Host) -> case ejabberd_config:get_local_option({odbc_server, Host}) of {host, Host1} ->