diff options
author | Paul J. Davis <paul.joseph.davis@gmail.com> | 2020-08-05 13:19:52 -0500 |
---|---|---|
committer | Paul J. Davis <paul.joseph.davis@gmail.com> | 2020-08-05 15:08:42 -0500 |
commit | a32bc83084e8b927931fe23fb234f5c9fa3f8dbd (patch) | |
tree | c0a2bc9641b2b946dc0b22e3775c2320ad0ffe8e | |
parent | f9259195529a144def25e3d3ba86ac26a76d4b51 (diff) | |
download | couchdb-a32bc83084e8b927931fe23fb234f5c9fa3f8dbd.tar.gz |
Handle empty reduce batches
-rw-r--r-- | src/ebtree/src/ebtree.erl | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl index 566cf2a55..cd08e753e 100644 --- a/src/ebtree/src/ebtree.erl +++ b/src/ebtree/src/ebtree.erl @@ -283,6 +283,9 @@ reduce(Db, #tree{} = Tree, StartKey, EndKey, Options) -> do_reduce(Tree, MapValues, ReduceValues). +do_reduce(#tree{} = Tree, [], []) -> + reduce_values(Tree, [], false); + do_reduce(#tree{} = Tree, [], ReduceValues) when is_list(ReduceValues) -> reduce_values(Tree, ReduceValues, true); @@ -1131,6 +1134,12 @@ range_after_delete_test() -> ?assertEqual(50, reverse_range(Db, Tree, 1, 100, fun(E, A) -> length(E) + A end, 0)). +full_reduce_empty_test() -> + Db = erlfdb_util:get_test_db([empty]), + Tree = open(Db, <<1,2,3>>, 4, [{reduce_fun, fun reduce_sum/2}]), + ?assertEqual(0, full_reduce(Db, Tree)). + + full_reduce_test_() -> Db = erlfdb_util:get_test_db([empty]), Tree = open(Db, <<1,2,3>>, 4, [{reduce_fun, fun reduce_sum/2}]), |