From a25718ef0094b25ac9e44339c240c37371f764e7 Mon Sep 17 00:00:00 2001 From: Garren Smith Date: Thu, 16 Jan 2020 10:14:45 +0200 Subject: fixes from review --- src/couch_views/src/couch_views_fdb.erl | 2 +- src/couch_views/src/couch_views_reduce.erl | 19 +++++++------------ src/couch_views/src/couch_views_reduce_fdb.erl | 2 +- src/couch_views/src/couch_views_reducer.erl | 6 ++++-- src/fabric/src/fabric2_fdb.erl | 3 +-- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/couch_views/src/couch_views_fdb.erl b/src/couch_views/src/couch_views_fdb.erl index 8aa58cd8c..54f9345eb 100644 --- a/src/couch_views/src/couch_views_fdb.erl +++ b/src/couch_views/src/couch_views_fdb.erl @@ -187,7 +187,7 @@ write_doc(TxDb, Sig, Views, Doc) -> update_reduce_idx(TxDb, Sig, ViewId, ViewReduceFuns, DocId, ExistingKeys, - ViewReduceResult) -> + ViewReduceResult) -> lists:foreach(fun({ViewReduceFun, ReduceResult}) -> {_, ReduceFun} = ViewReduceFun, ReduceId = couch_views_util:reduce_id(ViewId, ReduceFun), 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 }. diff --git a/src/couch_views/src/couch_views_reduce_fdb.erl b/src/couch_views/src/couch_views_reduce_fdb.erl index 4e521ddd3..fef1f7e5e 100644 --- a/src/couch_views/src/couch_views_reduce_fdb.erl +++ b/src/couch_views/src/couch_views_reduce_fdb.erl @@ -294,7 +294,7 @@ get_group_level_endkey(TxDb, GroupLevel, Level, StartKey, Reverse, wait_and_get_key(Future); get_group_level_endkey(_TxDb, _GroupLevel, _Level, Key, _Reverse, - _ReduceIdxPrefix) -> + _ReduceIdxPrefix) -> Key. diff --git a/src/couch_views/src/couch_views_reducer.erl b/src/couch_views/src/couch_views_reducer.erl index 353108f7b..17394a5fd 100644 --- a/src/couch_views/src/couch_views_reducer.erl +++ b/src/couch_views/src/couch_views_reducer.erl @@ -40,9 +40,11 @@ -define(BUILTIN_STATS, <<"_stats", _/binary>>). -define(BUILTIN_COUNT_DISTINCT, <<"_approx_count_distinct", _/binary>>). +-define(HYPER_PRECISION, 11). + start_value(<<"_approx_count_distinct">>) -> - hyper:new(11); + hyper:new(?HYPER_PRECISION); start_value(_) -> 0. @@ -105,7 +107,7 @@ reduce(?BUILTIN_COUNT_DISTINCT, Results) -> true -> maps:get(Key, Acc); false -> - hyper:new(11) + hyper:new(?HYPER_PRECISION) end, Acc#{Key => hyper:insert(EK, Filter)} end, #{}, Results), diff --git a/src/fabric/src/fabric2_fdb.erl b/src/fabric/src/fabric2_fdb.erl index 6faf9cb0b..5e67427d0 100644 --- a/src/fabric/src/fabric2_fdb.erl +++ b/src/fabric/src/fabric2_fdb.erl @@ -1303,8 +1303,7 @@ get_fold_opts(RangePrefix, Options) -> <>; SK2 -> SK3 = if AddTuple == false -> SK2; true -> {SK2} end, - Out = erlfdb_tuple:pack(SK3, RangePrefix), - Out + erlfdb_tuple:pack(SK3, RangePrefix) end, EndKey2 = case EndKey1 of -- cgit v1.2.1