aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_mnesia.erl
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2017-01-18 17:02:03 +0100
committerChristophe Romain <christophe.romain@process-one.net>2017-01-18 17:02:03 +0100
commit3482ee5c75c16196574fc57b81a195ef9d111df0 (patch)
tree203afdb1340b615f64ef03014e8adf89ddf513b3 /src/ejabberd_mnesia.erl
parentImprove check of mnesia schema opearations (diff)
Reset table only if new def change from runtime
Diffstat (limited to 'src/ejabberd_mnesia.erl')
-rw-r--r--src/ejabberd_mnesia.erl10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/ejabberd_mnesia.erl b/src/ejabberd_mnesia.erl
index e38168594..dd2229425 100644
--- a/src/ejabberd_mnesia.erl
+++ b/src/ejabberd_mnesia.erl
@@ -46,7 +46,7 @@ create(Module, Name, TabDef)
{'EXIT', _} ->
mnesia_op(create, [Name, TabDef]);
Attrs ->
- case need_reset(TabDef, Schema) of
+ case need_reset(Name, Schema) of
true -> reset(Name, Schema);
false -> update(Name, Attrs, Schema)
end;
@@ -152,12 +152,12 @@ parse([{Name, Storage, TabDef}|Tail], Acc)
parse([Other|_], _) ->
{error, {invalid, Other}}.
-need_reset(FromDef, ToDef) ->
- ValuesF = [lists:keyfind(Key, 1, FromDef) || Key <- ?NEED_RESET],
- ValuesT = [lists:keyfind(Key, 1, ToDef) || Key <- ?NEED_RESET],
+need_reset(Table, TabDef) ->
+ ValuesF = [mnesia:table_info(Table, Key) || Key <- ?NEED_RESET],
+ ValuesT = [proplists:get_value(Key, TabDef) || Key <- ?NEED_RESET],
lists:foldl(
fun({Val, Val}, Acc) -> Acc;
- ({_, false}, Acc) -> Acc;
+ ({_, undefined}, Acc) -> Acc;
({_, _}, _) -> true
end, false, lists:zip(ValuesF, ValuesT)).