summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-07-06 13:32:15 +0100
committerRobert Newson <rnewson@apache.org>2020-07-06 13:32:53 +0100
commit465e7b29fb64673c34f1141480e8f04fb05ee600 (patch)
tree1fc3978a4a8dd088b2b50fef1b2fa47a5cf00566
parentd598fc6212508195589a9d6ba890921100110e70 (diff)
downloadcouchdb-465e7b29fb64673c34f1141480e8f04fb05ee600.tar.gz
extract final reduce function
-rw-r--r--src/ebtree.erl16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/ebtree.erl b/src/ebtree.erl
index ca47a41dc..6730e9b03 100644
--- a/src/ebtree.erl
+++ b/src/ebtree.erl
@@ -188,13 +188,15 @@ reduce(Db, #tree{} = Tree, StartKey, EndKey) ->
end
end,
{MapValues, ReduceValues} = fold(Db, Tree, Fun, {[], []}),
- if
- MapValues /= [] ->
- MapReduction = reduce_values(Tree, MapValues, false),
- reduce_values(Tree, [MapReduction | ReduceValues], true);
- true ->
- reduce_values(Tree, ReduceValues, true)
- end.
+ final_reduce(Tree, MapValues, ReduceValues).
+
+
+final_reduce(#tree{} = Tree, [], ReduceValues) when is_list(ReduceValues) ->
+ reduce_values(Tree, ReduceValues, true);
+
+final_reduce(#tree{} = Tree, MapValues, ReduceValues) when is_list(MapValues), is_list(ReduceValues) ->
+ final_reduce(Tree, [], [reduce_values(Tree, MapValues, false) | ReduceValues]).
+
%% range (inclusive of both ends)