aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2011-08-13 18:11:26 +0200
committerBadlop <badlop@process-one.net>2011-08-16 19:29:38 +0200
commite895b12aeaf31cbbeefa1661a842e52ca1d70a2a (patch)
treee0593bc819cb517a674088193e117e661e4832de
parentProvide stacktrace in log report when module start fails (diff)
Fix support for odbc + gen_storage + static_modules
-rw-r--r--src/gen_storage_migration.erl8
-rw-r--r--src/mod_muc/mod_muc.erl5
-rw-r--r--src/odbc/ejabberd_odbc_sup.erl9
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} ->