You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2018/01/15 22:50:10 UTC
[couchdb] 01/02: In couch_key_tree:stem/4 also update `Seen` set
for a leaf child.
This is an automated email from the ASF dual-hosted git repository.
vatamane pushed a commit to branch optimize-doc-updates-3
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 49265987f047d20e6d57cbcc81c9a373bb236166
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Mon Jan 15 17:24:45 2018 -0500
In couch_key_tree:stem/4 also update `Seen` set for a leaf child.
Moved set update to a separate function since it's common code.
---
src/couch/src/couch_key_tree.erl | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/couch/src/couch_key_tree.erl b/src/couch/src/couch_key_tree.erl
index 24c48d2..c05ebe2 100644
--- a/src/couch/src/couch_key_tree.erl
+++ b/src/couch/src/couch_key_tree.erl
@@ -500,14 +500,11 @@ stem_tree({Depth, Child}, Limit, Seen) ->
end.
-stem_tree(_Depth, {_Key, _Val, []} = Leaf, Limit, Seen) ->
- {Seen, Limit - 1, Leaf, []};
+stem_tree(_Depth, {Key, _Val, []} = Leaf, Limit, Seen) ->
+ {check_key(Key, Seen), Limit - 1, Leaf, []};
stem_tree(Depth, {Key, Val, Children}, Limit, Seen0) ->
- Seen1 = case sets:is_element(Key, Seen0) of
- true -> throw(dupe_keys);
- false -> sets:add_element(Key, Seen0)
- end,
+ Seen1 = check_key(Key, Seen0),
FinalAcc = lists:foldl(fun(Child, Acc) ->
{SeenAcc, LimitPosAcc, ChildAcc, BranchAcc} = Acc,
case stem_tree(Depth + 1, Child, Limit, SeenAcc) of
@@ -537,6 +534,15 @@ stem_tree(Depth, {Key, Val, Children}, Limit, Seen0) ->
end.
+check_key(Key, Seen) ->
+ case sets:is_element(Key, Seen) of
+ true ->
+ throw(dupe_keys);
+ false ->
+ sets:add_element(Key, Seen)
+ end.
+
+
repair_tree(Trees, Limit) ->
% flatten each branch in a tree into a tree path, sort by starting rev #
Paths = lists:sort(lists:map(fun({Pos, Path}) ->
--
To stop receiving notification emails like this one, please contact
"commits@couchdb.apache.org" <co...@couchdb.apache.org>.