diff options
Diffstat (limited to 'src/p1_mnesia.erl')
-rw-r--r-- | src/p1_mnesia.erl | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/p1_mnesia.erl b/src/p1_mnesia.erl index 6d9018640..97acfc352 100644 --- a/src/p1_mnesia.erl +++ b/src/p1_mnesia.erl @@ -4,16 +4,19 @@ %% Erlang Public License along with this software. If not, it can be %% retrieved via the world wide web at http://www.erlang.org/. %% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. %% +%% %% The Initial Developer of the Original Code is ProcessOne. %% Portions created by ProcessOne are Copyright 2006-2013, ProcessOne %% All Rights Reserved.'' -module(p1_mnesia). + -author('mickael.remond@process-one.net'). -export([count_records/2]). @@ -23,21 +26,21 @@ %% The count has been written to use the fewest possible memory by %% getting the record by small increment and by using continuation. -define(BATCHSIZE, 100). + count_records(Tab, MatchExpression) -> - %% the result contains list of [] for each match: We do not need - %% actual values as we only count the data. - case mnesia:select(Tab, [{MatchExpression, [], [[]]}], ?BATCHSIZE, read) of - {Result,Cont} -> - Count = length(Result), - count_records_cont(Cont, Count); - '$end_of_table' -> - 0 + case mnesia:select(Tab, [{MatchExpression, [], [[]]}], + ?BATCHSIZE, read) + of + {Result, Cont} -> + Count = length(Result), + count_records_cont(Cont, Count); + '$end_of_table' -> 0 end. + count_records_cont(Cont, Count) -> case mnesia:select(Cont) of - {Result,Cont} -> - NewCount = Count + length(Result), - count_records_cont(Cont, NewCount); - '$end_of_table' -> - Count + {Result, Cont} -> + NewCount = Count + length(Result), + count_records_cont(Cont, NewCount); + '$end_of_table' -> Count end. |