summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2020-01-16 10:14:45 +0200
committerGarren Smith <garren.smith@gmail.com>2020-01-16 10:14:45 +0200
commita25718ef0094b25ac9e44339c240c37371f764e7 (patch)
tree5da180c1eef31b68ae544300c2e700fcb48a5d4b
parent973ba9d8f6d574818f8e7d5fa3893fea2d3d2150 (diff)
downloadcouchdb-prototype/builtin-reduce.tar.gz
fixes from reviewprototype/builtin-reduce
-rw-r--r--src/couch_views/src/couch_views_fdb.erl2
-rw-r--r--src/couch_views/src/couch_views_reduce.erl19
-rw-r--r--src/couch_views/src/couch_views_reduce_fdb.erl2
-rw-r--r--src/couch_views/src/couch_views_reducer.erl6
-rw-r--r--src/fabric/src/fabric2_fdb.erl3
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) ->
<<RangePrefix/binary, 16#00>>;
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