summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Sun <tony.sun@cloudant.com>2017-06-21 08:55:56 -0700
committerTony Sun <tony.sun@cloudant.com>2017-06-21 08:55:56 -0700
commit90db262d00ee9066f94ac842fe6a043adbb1eeaf (patch)
tree757d4dbe697274a31daaf76611b993dff07a0af0
parentf1a1d7f1c855d1196317c837e775d4b05d3ba9d0 (diff)
parent4e5e84ecc20808df056163f6a147c154cdf75ee3 (diff)
downloadcouchdb-90db262d00ee9066f94ac842fe6a043adbb1eeaf.tar.gz
Merge branch '3358-use-efficient-set'
COUCHDB-3358
-rw-r--r--src/mango/src/mango_native_proc.erl16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/mango/src/mango_native_proc.erl b/src/mango/src/mango_native_proc.erl
index 6d0fb2400..ba17c4867 100644
--- a/src/mango/src/mango_native_proc.erl
+++ b/src/mango/src/mango_native_proc.erl
@@ -175,7 +175,7 @@ get_text_entries0(IdxProps, Doc) ->
Fields = if not DefaultEnabled -> Fields0; true ->
add_default_text_field(Fields0)
end,
- FieldNames = get_field_names(Fields, []),
+ FieldNames = get_field_names(Fields),
Converted = convert_text_fields(Fields),
FieldNames ++ Converted.
@@ -257,15 +257,11 @@ add_default_text_field([_ | Rest], Acc) ->
%% index of all field names
-get_field_names([], FAcc) ->
- FAcc;
-get_field_names([{Name, _Type, _Value} | Rest], FAcc) ->
- case lists:member([<<"$fieldnames">>, Name, []], FAcc) of
- true ->
- get_field_names(Rest, FAcc);
- false ->
- get_field_names(Rest, [[<<"$fieldnames">>, Name, []] | FAcc])
- end.
+get_field_names(Fields) ->
+ FieldNameSet = lists:foldl(fun({Name, _, _}, Set) ->
+ gb_sets:add([<<"$fieldnames">>, Name, []], Set)
+ end, gb_sets:new(), Fields),
+ gb_sets:to_list(FieldNameSet).
convert_text_fields([]) ->