summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-07-28 22:18:08 +0100
committerPaul J. Davis <paul.joseph.davis@gmail.com>2020-09-09 09:44:58 -0500
commit79dd25eb5cf7a27bea5e2752055b2160e01f36e2 (patch)
tree5ce3b184d4b7987c7c28a773286f72d3fab5cff0
parentfd8e88136e2661d0b7a249b3a481650cf7c4e707 (diff)
downloadcouchdb-79dd25eb5cf7a27bea5e2752055b2160e01f36e2.tar.gz
Replace the 'true' clauses in visit with more explicit ones
-rw-r--r--src/ebtree.erl15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/ebtree.erl b/src/ebtree.erl
index f08e1e9be..228e1df44 100644
--- a/src/ebtree.erl
+++ b/src/ebtree.erl
@@ -241,15 +241,16 @@ full_reduce(Db, #tree{} = Tree) ->
reduce(Db, #tree{} = Tree, StartKey, EndKey) ->
Fun = fun
({visit, Key, Value}, {MapAcc, ReduceAcc}) ->
+ BeforeStart = less_than(Tree, Key, StartKey),
AfterEnd = greater_than(Tree, Key, EndKey),
InRange = greater_than_or_equal(Tree, Key, StartKey) andalso less_than_or_equal(Tree, Key, EndKey),
if
+ BeforeStart ->
+ {ok, {MapAcc, ReduceAcc}};
AfterEnd ->
{stop, {MapAcc, ReduceAcc}};
InRange ->
- {ok, {[{Key, Value} | MapAcc], ReduceAcc}};
- true ->
- {ok, {MapAcc, ReduceAcc}}
+ {ok, {[{Key, Value} | MapAcc], ReduceAcc}}
end;
({traverse, FirstKey, LastKey, Reduction}, {MapAcc, ReduceAcc}) ->
BeforeStart = less_than(Tree, LastKey, StartKey),
@@ -322,6 +323,10 @@ group_reduce(Db, #tree{} = Tree, StartKey, EndKey, GroupKeyFun, UserAccFun, User
KeyGroup = GroupKeyFun(Key),
SameGroup = CurrentGroup =:= KeyGroup,
if
+ Dir == fwd andalso BeforeStart ->
+ {ok, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}};
+ Dir == rev andalso AfterEnd ->
+ {ok, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}};
Dir == fwd andalso AfterEnd ->
{stop, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}};
Dir == rev andalso BeforeStart ->
@@ -333,9 +338,7 @@ group_reduce(Db, #tree{} = Tree, StartKey, EndKey, GroupKeyFun, UserAccFun, User
InRange ->
%% implicit end of current group and start of a new one
GroupValue = do_reduce(Tree, MapAcc, ReduceAcc),
- {ok, {KeyGroup, UserAccFun({CurrentGroup, GroupValue}, UserAcc), [{Key, Value}], []}};
- true ->
- {ok, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}}
+ {ok, {KeyGroup, UserAccFun({CurrentGroup, GroupValue}, UserAcc), [{Key, Value}], []}}
end;
({traverse, FirstKey, LastKey, Reduction}, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}) ->
BeforeStart = less_than(Tree, LastKey, StartKey),