diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2010-11-24 13:54:05 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2010-11-24 13:54:05 +0000 |
commit | 0894955120d87386fdeb2e1fc4a38fd7c6198e51 (patch) | |
tree | 84e1c046811c1653b1a2261eef7d478073b8da9c | |
parent | 51698df1f20b14df26b47df1a6b26a96eefd4049 (diff) | |
download | rabbitmq-server-0894955120d87386fdeb2e1fc4a38fd7c6198e51.tar.gz |
Dammit.
-rw-r--r-- | src/rabbit_upgrade_functions.erl | 38 |
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. |