summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-11-24 13:54:05 +0000
committerSimon MacMullen <simon@rabbitmq.com>2010-11-24 13:54:05 +0000
commit0894955120d87386fdeb2e1fc4a38fd7c6198e51 (patch)
tree84e1c046811c1653b1a2261eef7d478073b8da9c
parent51698df1f20b14df26b47df1a6b26a96eefd4049 (diff)
downloadrabbitmq-server-0894955120d87386fdeb2e1fc4a38fd7c6198e51.tar.gz
Dammit.
-rw-r--r--src/rabbit_upgrade_functions.erl38
1 files changed, 5 insertions, 33 deletions
diff --git a/src/rabbit_upgrade_functions.erl b/src/rabbit_upgrade_functions.erl
index f1fbbfa4..5dd4c558 100644
--- a/src/rabbit_upgrade_functions.erl
+++ b/src/rabbit_upgrade_functions.erl
@@ -74,13 +74,12 @@ add_ip_to_listener() ->
[node, protocol, host, ip_address, port]).
user_to_internal_user() ->
- mnesia_by_copy(
+ mnesia(
rabbit_user,
fun({user, Username, PasswordHash, IsAdmin}) ->
{internal_user, Username, PasswordHash, IsAdmin}
end,
- [username, password_hash, is_admin],
- internal_user).
+ [username, password_hash, is_admin], internal_user).
%%--------------------------------------------------------------------
@@ -88,34 +87,7 @@ mnesia(TableName, Fun, FieldList) ->
{atomic, ok} = mnesia:transform_table(TableName, Fun, FieldList),
ok.
-%% The above does not work to change a table's key or record
-%% type. This attempts to do the same, but by copying to a temporary
-%% table and back.
-mnesia_by_copy(TableName, Fun, FieldList, NewRecordName) ->
- TableNameTmp = list_to_atom(atom_to_list(TableName) ++ "_tmp"),
- CopyOne = fun(From, To, K, F) ->
- [Row] = mnesia:read(From, K),
- ok = mnesia:write(To, F(Row), write)
- end,
- CopyAll = fun(From, To, F) ->
- {atomic, _} = mnesia:transaction(
- fun() ->
- [CopyOne(From, To, K, F)
- || K <- mnesia:all_keys(From)]
- end)
- end,
- Create = fun(T) ->
- {atomic, ok} = mnesia:create_table(
- T,
- [{record_name, NewRecordName},
- {attributes, FieldList},
- {disc_copies, [node()]}]),
- ok = mnesia:wait_for_tables([T], infinity)
- end,
- Create(TableNameTmp),
- CopyAll(TableName, TableNameTmp, Fun),
- {atomic, ok} = mnesia:delete_table(TableName),
- Create(TableName),
- CopyAll(TableNameTmp, TableName, fun(X) -> X end),
- {atomic, ok} = mnesia:delete_table(TableNameTmp),
+mnesia(TableName, Fun, FieldList, NewRecordName) ->
+ {atomic, ok} = mnesia:transform_table(TableName, Fun, FieldList,
+ NewRecordName),
ok.