summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-07-29 21:15:01 +0100
committerRobert Newson <rnewson@apache.org>2020-07-29 21:15:01 +0100
commitf8fdf9721e2ac932022065bc075301641568d67c (patch)
tree57f73cae27463df6487524a60236ccf14e8da008
parent46cff24e68524caccf0a96ba02ace9b6b9767663 (diff)
downloadcouchdb-prototype/fdb-layer-ebtree-group-reduce-fix.tar.gz
Call collate for group equalityprototype/fdb-layer-ebtree-group-reduce-fix
-rw-r--r--src/ebtree/src/ebtree.erl6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index ceb78fbf5..bae0ff310 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -339,7 +339,7 @@ group_reduce(Db, #tree{} = Tree, StartKey, EndKey, GroupKeyFun, UserAccFun, User
collate(Tree, Key, StartKey, if InclusiveStart -> [gt, eq]; true -> [gt] end) andalso
collate(Tree, Key, EndKey, if InclusiveEnd -> [lt, eq]; true -> [lt] end),
KeyGroup = GroupKeyFun(Key),
- SameGroup = CurrentGroup =:= KeyGroup,
+ SameGroup = collate(Tree, CurrentGroup, KeyGroup, [eq]),
if
Dir == fwd andalso BeforeStart ->
{ok, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}};
@@ -361,7 +361,9 @@ group_reduce(Db, #tree{} = Tree, StartKey, EndKey, GroupKeyFun, UserAccFun, User
({traverse, FirstKey, LastKey, Reduction}, {CurrentGroup, UserAcc, MapAcc, ReduceAcc}) ->
BeforeStart = collate(Tree, LastKey, StartKey, if InclusiveStart -> [lt]; true -> [lt, eq] end),
AfterEnd = collate(Tree, FirstKey, EndKey, if InclusiveEnd -> [gt]; true -> [gt, eq] end),
- Whole = CurrentGroup =:= GroupKeyFun(FirstKey) andalso CurrentGroup =:= GroupKeyFun(LastKey),
+ Whole =
+ collate(Tree, CurrentGroup, GroupKeyFun(FirstKey), [eq]) andalso
+ collate(Tree, CurrentGroup, GroupKeyFun(LastKey), [eq]),
FirstInRange =
collate(Tree, FirstKey, StartKey, if InclusiveStart -> [gt, eq]; true -> [gt] end) andalso
collate(Tree, FirstKey, EndKey, if InclusiveEnd -> [lt, eq]; true -> [lt] end),