File 0712-Polish-mnesia-user-guide.patch of Package erlang
From ec312d2dfe5f09650425f942e5e022eda80a1420 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20W=C4=85sowski?= <michal@erlang.org>
Date: Mon, 16 Dec 2024 17:15:20 +0100
Subject: [PATCH] Polish mnesia user guide
---
lib/mnesia/doc/guides/mnesia_app_a.md | 76 ++++----
lib/mnesia/doc/guides/mnesia_app_b.md | 242 +++++++++++++-------------
lib/mnesia/doc/guides/mnesia_app_c.md | 113 ++++++------
lib/mnesia/doc/guides/mnesia_chap2.md | 127 +++++++-------
lib/mnesia/doc/guides/mnesia_chap3.md | 20 +--
lib/mnesia/doc/guides/mnesia_chap4.md | 4 +-
lib/mnesia/doc/guides/mnesia_chap5.md | 91 +++++-----
lib/mnesia/doc/guides/mnesia_chap7.md | 34 ++--
lib/mnesia/doc/src/bup.erl | 98 +++++------
lib/mnesia/doc/src/company.erl | 186 ++++++++++----------
lib/mnesia/doc/src/company_o.erl | 48 ++---
lib/mnesia/doc/src/company_o.hrl | 17 +-
lib/mnesia/src/mnesia.erl | 2 +-
13 files changed, 532 insertions(+), 526 deletions(-)
diff --git a/lib/mnesia/doc/src/bup.erl b/lib/mnesia/doc/src/bup.erl
index 9815dc1795..40c88bb0e6 100644
--- a/lib/mnesia/doc/src/bup.erl
+++ b/lib/mnesia/doc/src/bup.erl
@@ -25,8 +25,8 @@
]).
-export([
- count/1,
- display/1
+ count/1,
+ display/1
]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40,9 +40,7 @@ change_node_name(Mod, From, To, Source, Target) ->
(Node) -> Node
end,
Convert =
- fun({schema, db_nodes, Nodes}, Acc) ->
- {[{schema, db_nodes, lists:map(Switch,Nodes)}], Acc};
- ({schema, version, Version}, Acc) ->
+ fun({schema, version, Version}, Acc) ->
{[{schema, version, Version}], Acc};
({schema, cookie, Cookie}, Acc) ->
{[{schema, cookie, Cookie}], Acc};
@@ -84,21 +82,21 @@ test() ->
test(Nodes)->
AllNodes = (Nodes -- [node()]) ++ [node()],
- case length(AllNodes) of
+ case length(AllNodes) of
Length when Length > 1 ->
- OldBup = "old.BUP",
- NewBup = "new.BUP",
+ OldBup = "old.BUP",
+ NewBup = "new.BUP",
Res = (catch test2(AllNodes, OldBup, NewBup)),
- case Res of
+ case Res of
{'EXIT', Reason} ->
- file:delete(OldBup),
- file:delete(NewBup),
- {error, Reason};
+ file:delete(OldBup),
+ file:delete(NewBup),
+ {error, Reason};
ok ->
- ok = count(NewBup),
- file:delete(OldBup),
- file:delete(NewBup),
- ok
+ ok = count(NewBup),
+ file:delete(OldBup),
+ file:delete(NewBup),
+ ok
end;
_ ->
{error,{"Must run on at least one other node",AllNodes}}
@@ -159,15 +157,15 @@ count(BupFile) ->
Mod = mnesia:system_info(backup_module),
State = #state{counter_tab = CounterTab, size_tab = SizeTab},
case mnesia:traverse_backup(BupFile, Mod, dummy, read_only, fun incr/2, State) of
- {ok, State2} ->
- Res = display(State2),
- ets:delete(CounterTab),
- ets:delete(SizeTab),
- Res;
- {error, Reason} ->
- ets:delete(CounterTab),
- ets:delete(SizeTab),
- {error, Reason}
+ {ok, State2} ->
+ Res = display(State2),
+ ets:delete(CounterTab),
+ ets:delete(SizeTab),
+ Res;
+ {error, Reason} ->
+ ets:delete(CounterTab),
+ ets:delete(SizeTab),
+ {error, Reason}
end.
incr(Rec, State) ->
@@ -184,20 +182,20 @@ incr(Rec, State) ->
incr_counter(T, Counter) ->
case catch ets:update_counter(T, Counter, 1) of
- {'EXIT', _} ->
- ets:insert(T, {Counter, 1});
- _ ->
- ignore
+ {'EXIT', _} ->
+ ets:insert(T, {Counter, 1});
+ _ ->
+ ignore
end.
max_size(T, Tab, Key, Size) ->
case catch ets:lookup_element(T, Tab, 2) of
- {'EXIT', _} ->
- ets:insert(T, {Tab, Size, Key});
- OldSize when OldSize < Size ->
- ets:insert(T, {Tab, Size, Key});
- _ ->
- ignore
+ {'EXIT', _} ->
+ ets:insert(T, {Tab, Size, Key});
+ OldSize when OldSize < Size ->
+ ets:insert(T, {Tab, Size, Key});
+ _ ->
+ ignore
end.
%% Displays the statistics found in the ets table
@@ -205,20 +203,20 @@ display(State) ->
CounterTab = State#state.counter_tab,
Tabs = [T || {{_, T}, _} <- match_tab(CounterTab, schema)],
io:format("~w tables with totally: ~w records, ~w keys, ~w bytes~n",
- [length(Tabs),
- State#state.n_records,
- ets:info(CounterTab, size),
- State#state.acc_size]),
+ [length(Tabs),
+ State#state.n_records,
+ ets:info(CounterTab, size),
+ State#state.acc_size]),
display(State, lists:sort(Tabs)).
display(State, [Tab | Tabs]) ->
Counters = match_tab(State#state.counter_tab, Tab),
io:format("~-10w records in table ~w~n", [length(Counters), Tab]),
Fun = fun({_Oid, Val}) when Val < 5 ->
- ignore;
- ({Oid, Val}) ->
- io:format("~-10w *** records with key ~w~n", [Val, Oid])
- end,
+ ignore;
+ ({Oid, Val}) ->
+ io:format("~-10w *** records with key ~w~n", [Val, Oid])
+ end,
lists:foreach(Fun, Counters),
display_size(State#state.size_tab, Tab),
display(State, Tabs);
@@ -230,11 +228,11 @@ match_tab(T, Tab) ->
display_size(T, Tab) ->
case catch ets:lookup(T, Tab) of
- [] ->
- ignore;
- [{_, Size, Key}] when Size > 1000 ->
- io:format("~-10w --- bytes occupied by largest record ~w~n",
- [Size, {Tab, Key}]);
- [{_, _, _}] ->
- ignore
+ [] ->
+ ignore;
+ [{_, Size, Key}] when Size > 1000 ->
+ io:format("~-10w --- bytes occupied by largest record ~w~n",
+ [Size, {Tab, Key}]);
+ [{_, _, _}] ->
+ ignore
end.
diff --git a/lib/mnesia/doc/src/company.erl b/lib/mnesia/doc/src/company.erl
index fc04aa77bf..af298d23c5 100644
--- a/lib/mnesia/doc/src/company.erl
+++ b/lib/mnesia/doc/src/company.erl
@@ -46,7 +46,7 @@ init() ->
{attributes, record_info(fields, in_proj)}]).
%0
-
+
%1
insert_emp(Emp, DeptId, ProjNames) ->
@@ -64,24 +64,24 @@ mk_projs(Ename, [ProjName|Tail]) ->
mnesia:write(#in_proj{emp = Ename, proj_name = ProjName}),
mk_projs(Ename, Tail);
mk_projs(_, []) -> ok.
-
+
%1
%2
females() ->
F = fun() ->
- Q = qlc:q([E#employee.name || E <- mnesia:table(employee),
- E#employee.sex == female]),
- qlc:e(Q)
- end,
+ Q = qlc:q([E#employee.name || E <- mnesia:table(employee),
+ E#employee.sex == female]),
+ qlc:e(Q)
+ end,
mnesia:transaction(F).
%2
%20
all_females() ->
F = fun() ->
- Female = #employee{sex = female, name = '$1', _ = '_'},
- mnesia:select(employee, [{Female, [], ['$1']}])
+ Female = #employee{sex = female, name = '$1', _ = '_'},
+ mnesia:select(employee, [{Female, [], ['$1']}])
end,
mnesia:transaction(F).
%20
@@ -91,17 +91,17 @@ g() -> l.
%3
female_bosses() ->
H1 = qlc:q( [{Atdep#at_dep.dept_id,E} ||
- E <- mnesia:table(employee),
- E#employee.sex == female,
- Atdep <- mnesia:table(at_dep),
- Atdep#at_dep.emp == E#employee.emp_no]
+ E <- mnesia:table(employee),
+ E#employee.sex == female,
+ Atdep <- mnesia:table(at_dep),
+ Atdep#at_dep.emp == E#employee.emp_no]
),
H2 = qlc:q( [{Mgr#manager.emp,E} ||
- {AtdepDeptId, E} <- H1,
- Mgr <- mnesia:table(manager),
- AtdepDeptId == Mgr#manager.dept]
- ),
+ {AtdepDeptId, E} <- H1,
+ Mgr <- mnesia:table(manager),
+ AtdepDeptId == Mgr#manager.dept]
+ ),
Q = qlc:q( [{E#employee.name, Boss#employee.name} ||
{MgrEmp,E} <- H2,
@@ -116,7 +116,7 @@ raise_females(Amount) ->
F = fun() ->
Q = qlc:q([E || E <- mnesia:table(employee),
E#employee.sex == female]),
- Fs = qlc:e(Q),
+ Fs = qlc:e(Q),
over_write(Fs, Amount)
end,
mnesia:transaction(F).
@@ -153,16 +153,16 @@ bad_raise(Eno, Raise) ->
end,
mnesia:transaction(F).
%6
-
+
%9
get_emps(Salary, Dep) ->
- Q = qlc:q(
+ Q = qlc:q(
[E || E <- mnesia:table(employee),
At <- mnesia:table(at_dep),
E#employee.salary > Salary,
E#employee.emp_no == At#at_dep.emp,
At#at_dep.dept_id == Dep]
- ),
+ ),
F = fun() -> qlc:e(Q) end,
mnesia:transaction(F).
%9
@@ -177,7 +177,7 @@ get_emps2(Salary, Dep) ->
filter_deps(High, Alldeps, Dep)
end,
mnesia:transaction(F).
-
+
filter([E|Tail], Salary) ->
if
@@ -212,7 +212,7 @@ search_deps(_Name, _Tail, _Dep) ->
%10
-
+
%11
bench1() ->
Me = #employee{emp_no= 104732,
@@ -236,33 +236,33 @@ dotimes(I, F) ->
F(), dotimes(I-1, F).
%11
-
-
-
-
+
+
+
+
%12
dist_init() ->
mnesia:create_table(employee,
- [{ram_copies, [a@gin, b@skeppet]},
- {attributes, record_info(fields,
- employee)}]),
+ [{ram_copies, [a@gin, b@skeppet]},
+ {attributes, record_info(fields,
+ employee)}]),
mnesia:create_table(dept,
- [{ram_copies, [a@gin, b@skeppet]},
- {attributes, record_info(fields, dept)}]),
+ [{ram_copies, [a@gin, b@skeppet]},
+ {attributes, record_info(fields, dept)}]),
mnesia:create_table(project,
- [{ram_copies, [a@gin, b@skeppet]},
- {attributes, record_info(fields, project)}]),
- mnesia:create_table(manager, [{type, bag},
+ [{ram_copies, [a@gin, b@skeppet]},
+ {attributes, record_info(fields, project)}]),
+ mnesia:create_table(manager, [{type, bag},
{ram_copies, [a@gin, b@skeppet]},
{attributes, record_info(fields,
- manager)}]),
+ manager)}]),
mnesia:create_table(at_dep,
- [{ram_copies, [a@gin, b@skeppet]},
- {attributes, record_info(fields, at_dep)}]),
+ [{ram_copies, [a@gin, b@skeppet]},
+ {attributes, record_info(fields, at_dep)}]),
mnesia:create_table(in_proj,
- [{type, bag},
+ [{type, bag},
{ram_copies, [a@gin, b@skeppet]},
{attributes, record_info(fields, in_proj)}]).
%12
@@ -271,8 +271,8 @@ dist_init() ->
remove_proj(ProjName) ->
F = fun() ->
Ip = qlc:e(qlc:q([X || X <- mnesia:table(in_proj),
- X#in_proj.proj_name == ProjName]
- )),
+ X#in_proj.proj_name == ProjName]
+ )),
mnesia:delete({project, ProjName}),
del_in_projs(Ip)
end,
@@ -284,7 +284,7 @@ del_in_projs([Ip|Tail]) ->
del_in_projs([]) ->
done.
%13
-
+
%14
sync() ->
case mnesia:wait_for_tables(tabs(), 10000) of
@@ -314,69 +314,69 @@ panic(X) -> exit({panic, X}).
fill_tables() ->
- Emps =
+ Emps =
[
- {employee, 104465, "Johnson Torbjorn", 1, male, 99184, {242,038}},
- {employee, 107912, "Carlsson Tuula", 2, female,94556, {242,056}},
- {employee, 114872, "Dacker Bjarne", 3, male, 99415, {221,035}},
- {employee, 104531, "Nilsson Hans", 3, male, 99495, {222,026}},
- {employee, 104659, "Tornkvist Torbjorn", 2, male, 99514, {222,022}},
- {employee, 104732, "Wikstrom Claes", 2, male, 99586, {221,015}},
- {employee, 117716, "Fedoriw Anna", 1, female,99143, {221,031}},
- {employee, 115018, "Mattsson Hakan", 3, male, 99251, {203,348}}
+ {employee, 104465, "Johnson Torbjorn", 1, male, 99184, {242,038}},
+ {employee, 107912, "Carlsson Tuula", 2, female,94556, {242,056}},
+ {employee, 114872, "Dacker Bjarne", 3, male, 99415, {221,035}},
+ {employee, 104531, "Nilsson Hans", 3, male, 99495, {222,026}},
+ {employee, 104659, "Tornkvist Torbjorn", 2, male, 99514, {222,022}},
+ {employee, 104732, "Wikstrom Claes", 2, male, 99586, {221,015}},
+ {employee, 117716, "Fedoriw Anna", 1, female,99143, {221,031}},
+ {employee, 115018, "Mattsson Hakan", 3, male, 99251, {203,348}}
],
Dept = [
- {dept, 'B/SF', "Open Telecom Platform"},
- {dept, 'B/SFP', "OTP - Product Development"},
- {dept, 'B/SFR', "Computer Science Laboratory"}
- ],
+ {dept, 'B/SF', "Open Telecom Platform"},
+ {dept, 'B/SFP', "OTP - Product Development"},
+ {dept, 'B/SFR', "Computer Science Laboratory"}
+ ],
Projects = [
- {project, erlang, 1},
- {project, otp, 2},
- {project, beam, 3},
- {project, mnesia, 5},
- {project, wolf, 6},
- {project, documentation, 7},
- {project, www, 8}
- ],
+ {project, erlang, 1},
+ {project, otp, 2},
+ {project, beam, 3},
+ {project, mnesia, 5},
+ {project, wolf, 6},
+ {project, documentation, 7},
+ {project, www, 8}
+ ],
Manager = [
- {manager, 104465, 'B/SF'},
- {manager, 104465, 'B/SFP'},
- {manager, 114872, 'B/SFR'}
- ],
+ {manager, 104465, 'B/SF'},
+ {manager, 104465, 'B/SFP'},
+ {manager, 114872, 'B/SFR'}
+ ],
At_dep = [
- {at_dep, 104465, 'B/SF'},
- {at_dep, 107912, 'B/SF'},
- {at_dep, 114872, 'B/SFR'},
- {at_dep, 104531, 'B/SFR'},
- {at_dep, 104659, 'B/SFR'},
- {at_dep, 104732, 'B/SFR'},
- {at_dep, 117716, 'B/SFP'},
- {at_dep, 115018, 'B/SFP'}
- ],
+ {at_dep, 104465, 'B/SF'},
+ {at_dep, 107912, 'B/SF'},
+ {at_dep, 114872, 'B/SFR'},
+ {at_dep, 104531, 'B/SFR'},
+ {at_dep, 104659, 'B/SFR'},
+ {at_dep, 104732, 'B/SFR'},
+ {at_dep, 117716, 'B/SFP'},
+ {at_dep, 115018, 'B/SFP'}
+ ],
In_proj = [
- {in_proj, 104465, otp},
- {in_proj, 107912, otp},
- {in_proj, 114872, otp},
- {in_proj, 104531, otp},
- {in_proj, 104531, mnesia},
- {in_proj, 104545, wolf},
- {in_proj, 104659, otp},
- {in_proj, 104659, wolf},
- {in_proj, 104732, otp},
- {in_proj, 104732, mnesia},
- {in_proj, 104732, erlang},
- {in_proj, 117716, otp},
- {in_proj, 117716, documentation},
- {in_proj, 115018, otp},
- {in_proj, 115018, mnesia}
- ],
-
+ {in_proj, 104465, otp},
+ {in_proj, 107912, otp},
+ {in_proj, 114872, otp},
+ {in_proj, 104531, otp},
+ {in_proj, 104531, mnesia},
+ {in_proj, 104545, wolf},
+ {in_proj, 104659, otp},
+ {in_proj, 104659, wolf},
+ {in_proj, 104732, otp},
+ {in_proj, 104732, mnesia},
+ {in_proj, 104732, erlang},
+ {in_proj, 117716, otp},
+ {in_proj, 117716, documentation},
+ {in_proj, 115018, otp},
+ {in_proj, 115018, mnesia}
+ ],
+
[mnesia:dirty_write(W) || W <- Emps],
[mnesia:dirty_write(W) || W <- Dept],
[mnesia:dirty_write(W) || W <- Projects],
@@ -384,5 +384,5 @@ fill_tables() ->
[mnesia:dirty_write(W) || W <- Manager],
[mnesia:dirty_write(W) || W <- At_dep],
[mnesia:dirty_write(W) || W <- In_proj],
-
+
ok.
diff --git a/lib/mnesia/doc/src/company_o.erl b/lib/mnesia/doc/src/company_o.erl
index b4b3638596..37cbe10b11 100644
--- a/lib/mnesia/doc/src/company_o.erl
+++ b/lib/mnesia/doc/src/company_o.erl
@@ -44,50 +44,50 @@ init() ->
[{attributes, record_info(fields, project)}]).
%0
-
+
%1
insert_emp(Emp, DeptId, ProjNames) ->
Fun = fun() ->
- mnesia:write(Emp#employee{dept = DeptId,
- projects = ProjNames})
+ mnesia:write(Emp#employee{dept = DeptId,
+ projects = ProjNames})
end,
mnesia:transaction(Fun).
%1
-
+
%2
females() ->
F = fun() ->
- Q = qlc:q([E#employee.name || E <- mnesia:table(employee),
- E#employee.sex == female]),
- qlc:e(Q)
- end,
+ Q = qlc:q([E#employee.name || E <- mnesia:table(employee),
+ E#employee.sex == female]),
+ qlc:e(Q)
+ end,
mnesia:transaction(F).
%2
%3
female_bosses() ->
- F = fun() -> qlc:e(qlc:q(
- [{E#employee.name, Boss#employee.name} ||
- E <- mnesia:table(employee),
- Boss <- mnesia:table(employee),
- Boss#employee.emp_no == E#employee.manager,
- E#employee.sex == female]
- ))
+ F = fun() -> qlc:e(qlc:q(
+ [{E#employee.name, Boss#employee.name} ||
+ E <- mnesia:table(employee),
+ Boss <- mnesia:table(employee),
+ Boss#employee.emp_no == E#employee.manager,
+ E#employee.sex == female]
+ ))
end,
mnesia:transaction(F).
-
+
%4
raise_females(Amount) ->
F = fun() ->
- Q = qlc:q([E || E <- mnesia:table(employee),
+ Q = qlc:q([E || E <- mnesia:table(employee),
E#employee.sex == female]),
- Fs = qlc:e(Q),
+ Fs = qlc:e(Q),
over_write(Fs, Amount)
end,
mnesia:transaction(F).
@@ -124,14 +124,14 @@ bad_raise(Eno, Raise) ->
end,
mnesia:transaction(F).
%6
-
+
%9
get_emps(Salary, Dep) ->
- Q = qlc:q(
+ Q = qlc:q(
[E || E <- mnesia:table(employee),
E#employee.salary > Salary,
E#employee.dept == Dep]
- ),
+ ),
F = fun() -> qlc:e(Q) end,
transaction(F).
%9
@@ -142,10 +142,10 @@ get_emps2(Salary, Dep) ->
Epat = Epat0#employee{dept = Dep},
F = fun() ->
All = mnesia:match_object(Epat),
- [E || E <-All, E#employee.salary > Salary ]
- end,
+ [E || E <-All, E#employee.salary > Salary ]
+ end,
mnesia:transaction(F).
-
+
%10
diff --git a/lib/mnesia/doc/src/company_o.hrl b/lib/mnesia/doc/src/company_o.hrl
index bd1cc506f0..f1c15b004f 100644
--- a/lib/mnesia/doc/src/company_o.hrl
+++ b/lib/mnesia/doc/src/company_o.hrl
@@ -19,15 +19,14 @@
%0
-record(employee, {emp_no,
- name,
- salary,
- sex,
- phone,
- room_no,
- dept,
- projects,
- manager}).
-
+ name,
+ salary,
+ sex,
+ phone,
+ room_no,
+ dept,
+ projects,
+ manager}).
-record(dept, {id,
name}).
diff --git a/lib/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl
index 0788e57a94..6d41a89fa6 100644
--- a/lib/mnesia/src/mnesia.erl
+++ b/lib/mnesia/src/mnesia.erl
@@ -3366,7 +3366,7 @@ mini_info() ->
Running = system_info(running_db_nodes),
io:format("running db nodes = ~w~n", [Running]),
All = mnesia_lib:all_nodes(),
- io:format("stopped db nodes = ~w ~n", [All -- Running]).
+ io:format("stopped db nodes = ~w~n", [All -- Running]).
display_system_info(Held, Queued, TmInfo, Uncertain) ->
mini_info(),
--
2.43.0