diff options
author | Robert Newson <rnewson@apache.org> | 2020-07-06 13:32:15 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2020-07-06 13:32:53 +0100 |
commit | 465e7b29fb64673c34f1141480e8f04fb05ee600 (patch) | |
tree | 1fc3978a4a8dd088b2b50fef1b2fa47a5cf00566 | |
parent | d598fc6212508195589a9d6ba890921100110e70 (diff) | |
download | couchdb-465e7b29fb64673c34f1141480e8f04fb05ee600.tar.gz |
extract final reduce function
-rw-r--r-- | src/ebtree.erl | 16 |
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) |