diff options
author | Robert Newson <rnewson@apache.org> | 2020-07-28 22:18:08 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2020-07-29 11:18:16 +0100 |
commit | 5a4da506cfb2cd78864f4dfe7320b94d8599f7f7 (patch) | |
tree | 7800486e7f1df747a6f6ca06e37cf41e1f1675aa | |
parent | 0c7c77eb59d626505cf6ec4162e1053837bc3593 (diff) | |
download | couchdb-prototype/fdb-layer-ebtree-true-clauses.tar.gz |
Replace the 'true' clauses in visit with more explicit onesprototype/fdb-layer-ebtree-true-clauses
-rw-r--r-- | src/ebtree/src/ebtree.erl | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl index f08e1e9be..228e1df44 100644 --- a/src/ebtree/src/ebtree.erl +++ b/src/ebtree/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), |