diff options
author | Robert Newson <rnewson@apache.org> | 2020-07-17 13:08:04 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2020-07-20 08:51:20 +0100 |
commit | ffc07e92e13149f33777f28025555b9158b977db (patch) | |
tree | 3012c514e99018d6c7a3ad184edfc967971d25de | |
parent | a24e76f6704840d5196d39d95255550667232ce0 (diff) | |
download | couchdb-ffc07e92e13149f33777f28025555b9158b977db.tar.gz |
don't export reduce funs, they're just for tests now
-rw-r--r-- | src/ebtree.erl | 83 |
1 files changed, 38 insertions, 45 deletions
diff --git a/src/ebtree.erl b/src/ebtree.erl index b1db6c2a5..6aaaad246 100644 --- a/src/ebtree.erl +++ b/src/ebtree.erl @@ -17,13 +17,6 @@ validate_tree/2 ]). -%% built-in reduce functions --export([ - reduce_sum/2, - reduce_count/2, - reduce_stats/2 -]). - -record(node, { id, level = 0, @@ -728,44 +721,6 @@ reduce_noop(_KVs, _Rereduce) -> []. -reduce_sum(KVs, false) -> - {_, Vs} = lists:unzip(KVs), - lists:sum(Vs); - -reduce_sum(Rs, true) -> - lists:sum(Rs). - - -reduce_count(KVs, false) -> - length(KVs); - -reduce_count(Rs, true) -> - lists:sum(Rs). - - -reduce_stats(KVs, false) -> - {_, Vs} = lists:unzip(KVs), - { - lists:sum(Vs), - lists:min(Vs), - lists:max(Vs), - length(Vs), - lists:sum([V * V || V <- Vs]) - }; - -reduce_stats(Rs, true) -> - lists:foldl( - fun({Sum, Min, Max, Count, SumSqr}, - {SumAcc, MinAcc, MaxAcc, CountAcc, SumSqrAcc}) -> - { - Sum + SumAcc, - erlang:min(Min, MinAcc), - erlang:max(Max, MaxAcc), - Count + CountAcc, - SumSqr + SumSqrAcc - } end, hd(Rs), tl(Rs)). - - reduce_node(#tree{} = Tree, #node{level = 0} = Node) -> reduce_values(Tree, Node#node.members, false); @@ -905,6 +860,44 @@ print_node(#node{} = Node) -> -ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). +reduce_sum(KVs, false) -> + {_, Vs} = lists:unzip(KVs), + lists:sum(Vs); + +reduce_sum(Rs, true) -> + lists:sum(Rs). + + +reduce_count(KVs, false) -> + length(KVs); + +reduce_count(Rs, true) -> + lists:sum(Rs). + + +reduce_stats(KVs, false) -> + {_, Vs} = lists:unzip(KVs), + { + lists:sum(Vs), + lists:min(Vs), + lists:max(Vs), + length(Vs), + lists:sum([V * V || V <- Vs]) + }; + +reduce_stats(Rs, true) -> + lists:foldl( + fun({Sum, Min, Max, Count, SumSqr}, + {SumAcc, MinAcc, MaxAcc, CountAcc, SumSqrAcc}) -> + { + Sum + SumAcc, + erlang:min(Min, MinAcc), + erlang:max(Max, MaxAcc), + Count + CountAcc, + SumSqr + SumSqrAcc + } end, hd(Rs), tl(Rs)). + + collation_fun_test_() -> Tree = #tree{collate_fun = fun collate_raw/2}, [ |