summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul J. Davis <paul.joseph.davis@gmail.com>2020-08-05 13:19:52 -0500
committerPaul J. Davis <paul.joseph.davis@gmail.com>2020-08-05 15:08:42 -0500
commita32bc83084e8b927931fe23fb234f5c9fa3f8dbd (patch)
treec0a2bc9641b2b946dc0b22e3775c2320ad0ffe8e
parentf9259195529a144def25e3d3ba86ac26a76d4b51 (diff)
downloadcouchdb-a32bc83084e8b927931fe23fb234f5c9fa3f8dbd.tar.gz
Handle empty reduce batches
-rw-r--r--src/ebtree/src/ebtree.erl9
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}]),