mirror of
https://github.com/processone/ejabberd.git
synced 2024-07-14 23:44:18 +02:00
add index migration code
This commit is contained in:
parent
70e1545d3a
commit
3785b3e951
|
@ -479,6 +479,55 @@ update_state_database(_Host, _ServerHost) ->
|
|||
?ERROR_MSG("Problem updating Pubsub state tables:~n~p",
|
||||
[Reason])
|
||||
end;
|
||||
[stateid, items, affiliation, subscriptions] ->
|
||||
?INFO_MSG("upgrade state pubsub table", []),
|
||||
F = fun ({pubsub_state, {JID, Nidx}, Items, Aff, Subs}, Acc) ->
|
||||
NewState = #pubsub_state{stateid = {JID, Nidx},
|
||||
nodeidx = Nidx,
|
||||
items = Items,
|
||||
affiliation = Aff,
|
||||
subscriptions = Subs},
|
||||
[NewState | Acc]
|
||||
end,
|
||||
{atomic, NewRecs} = mnesia:transaction(fun mnesia:foldl/3,
|
||||
[F, [], pubsub_state]),
|
||||
{atomic, ok} = mnesia:delete_table(pubsub_state),
|
||||
{atomic, ok} = mnesia:create_table(pubsub_state,
|
||||
[{disc_copies, [node()]},
|
||||
{attributes, record_info(fields, pubsub_state)}]),
|
||||
FNew = fun () ->
|
||||
lists:foreach(fun mnesia:write/1, NewRecs)
|
||||
end,
|
||||
case mnesia:transaction(FNew) of
|
||||
{atomic, Res1} ->
|
||||
?INFO_MSG("Pubsub state tables updated correctly: ~p", [Res1]);
|
||||
{aborted, Rea1} ->
|
||||
?ERROR_MSG("Problem updating Pubsub state table:~n~p", [Rea1])
|
||||
end,
|
||||
?INFO_MSG("upgrade item pubsub table", []),
|
||||
F = fun ({pubsub_item, {ItemId, Nidx}, C, M, P}, Acc) ->
|
||||
NewItem = #pubsub_item{itemid = {ItemId, Nidx},
|
||||
nodeidx = Nidx,
|
||||
creation = C,
|
||||
modification = M,
|
||||
payload = P},
|
||||
[NewItem | Acc]
|
||||
end,
|
||||
{atomic, NewRecs} = mnesia:transaction(fun mnesia:foldl/3,
|
||||
[F, [], pubsub_item]),
|
||||
{atomic, ok} = mnesia:delete_table(pubsub_item),
|
||||
{atomic, ok} = mnesia:create_table(pubsub_item,
|
||||
[{disc_copies, [node()]},
|
||||
{attributes, record_info(fields, pubsub_item)}]),
|
||||
FNew = fun () ->
|
||||
lists:foreach(fun mnesia:write/1, NewRecs)
|
||||
end,
|
||||
case mnesia:transaction(FNew) of
|
||||
{atomic, Res2} ->
|
||||
?INFO_MSG("Pubsub item tables updated correctly: ~p", [Res2]);
|
||||
{aborted, Rea2} ->
|
||||
?ERROR_MSG("Problem updating Pubsub item table:~n~p", [Rea2])
|
||||
end;
|
||||
_ ->
|
||||
ok
|
||||
end.
|
||||
|
|
Loading…
Reference in New Issue
Block a user