Attrs ->
case need_reset(TabDef, Schema) of
true -> reset(Name, Schema);
- false -> update(Name, Schema)
+ false -> update(Name, Attrs, Schema)
end;
OldAttrs ->
Fun = case lists:member({transform,1}, Module:module_info(exports)) of
ejabberd_mnesia:create(?MODULE, Name, TabDef).
update(Name, TabDef) ->
+ {attributes, Attrs} = lists:keyfind(attributes, 1, TabDef),
+ update(Name, Attrs, TabDef).
+update(Name, Attrs, TabDef) ->
Storage = mnesia:table_info(Name, storage_type),
NewStorage = lists:foldl(
fun({Key, _}, Acc) ->
true ->
{atomic, ok}
end,
- Indexes = mnesia:table_info(Name, index),
+ CurIndexes = [lists:nth(N-1, Attrs) || N<-mnesia:table_info(Name, index)],
NewIndexes = proplists:get_value(index, TabDef, []),
[mnesia:del_table_index(Name, Attr)
- || Attr <- Indexes--NewIndexes],
+ || Attr <- CurIndexes--NewIndexes],
R2 = [mnesia:add_table_index(Name, Attr)
- || Attr <- NewIndexes--Indexes],
+ || Attr <- NewIndexes--CurIndexes],
lists:foldl(
fun({atomic, ok}, Acc) -> Acc;
(Error, _Acc) -> Error