-module(mnesia_test). -export([setup_and_start/0, insert/2, retrieve/1, search/1, search_qlc/1]). -include("/usr/lib/erlang/lib/stdlib-1.16.2/include/qlc.hrl"). -record(data, {key, value}). setup_and_start() -> mnesia:create_schema([node()]), mnesia:start(), mnesia:create_table(data, [{disc_copies, [node()]}, {attributes, record_info(fields, data)}]). insert(Key, Val) -> Record = #data{key = Key, value = Val}, F = fun() -> mnesia:write(Record) end, mnesia:transaction(F). retrieve(Key) -> F = fun() -> mnesia:read({data, Key}) end, {atomic, Data} = mnesia:transaction(F), Data. search_qlc(Val) -> F = fun() -> qlc:eval( qlc:q( [X || X <- mnesia:table(data), X#data.value == Val] )) end, {atomic, Data} = mnesia:transaction(F), Data. search(Val) -> F = fun() -> mnesia:match_object(#data{key = '_', value = Val}) end, {atomic, Data} = mnesia:transaction(F), Data.