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-09-09 09:44:59 -0500
commit01b4c7cb5dd81650019f99ee4d776c29ae110d2d (patch)
tree365df70ffc6cd6a19d1fc00d4658e7189865819c
parent80d646c5afade2983c1bdce0121de33fc95ff4b7 (diff)
downloadcouchdb-01b4c7cb5dd81650019f99ee4d776c29ae110d2d.tar.gz
Handle empty reduce batches
-rw-r--r--src/ebtree.erl9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ebtree.erl b/src/ebtree.erl
index 566cf2a55..cd08e753e 100644
--- a/src/ebtree.erl
+++ b/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}]),