summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-07-30 19:01:00 +0100
committerGitHub <noreply@github.com>2020-07-30 19:01:00 +0100
commit41d946b5e08f59339033ceccbcea607edd35479a (patch)
tree3b3be8862a49469c055e8b7e8cb92991a9514905
parent6ff2f41bb3800b1eb69ccf36c0c314a739d64723 (diff)
parentf8fdf9721e2ac932022065bc075301641568d67c (diff)
downloadcouchdb-41d946b5e08f59339033ceccbcea607edd35479a.tar.gz
Merge pull request #3046 from apache/prototype/fdb-layer-ebtree-group-reduce-fix
Call collate for group equality
-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),