diff options
Diffstat (limited to 'src/couch_views/src/couch_views_reduce.erl')
-rw-r--r-- | src/couch_views/src/couch_views_reduce.erl | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/couch_views/src/couch_views_reduce.erl b/src/couch_views/src/couch_views_reduce.erl index 854b083c2..0ae646014 100644 --- a/src/couch_views/src/couch_views_reduce.erl +++ b/src/couch_views/src/couch_views_reduce.erl @@ -105,7 +105,8 @@ read_reduce_int(Db, Sig, ViewId, Reducer, GroupLevel, Acc0, Opts, callback := UserCallback, user_acc := UserAcc1 } = Acc1, - {ok, maybe_stop(UserCallback(complete, UserAcc1))} + UserAcc2 = maybe_stop(UserCallback(complete, UserAcc1)), + {ok, UserAcc2} catch throw:reduce_transaction_ended -> {ContinueStartKey, Acc} = get(reduce_acc), @@ -139,25 +140,19 @@ args_to_skiplist_opts(#mrargs{} = Args) -> StartKey end, - EndKey1 = case EndKey of - undefined -> - undefined; - EndKey -> - EndKey - end, - + Reverse = Direction == rev, % CouchDB swaps the key meanings based on the direction % of the fold. FoundationDB does not so we have to % swap back here. - {StartKey2, EndKey2} = case Direction == rev of - true -> {EndKey1, StartKey1}; - false -> {StartKey1, EndKey1} + {StartKey2, EndKey2} = case Reverse of + true -> {EndKey, StartKey1}; + false -> {StartKey1, EndKey} end, #{ startkey => StartKey2, endkey => EndKey2, - reverse => Direction == rev, + reverse => Reverse, inclusive_end => InclusiveEnd }. |