Return fields provided by user only
When the user specifies Fields with his or her selector, filter out
fields that are not in the Fields list.
BugzId: 43810
diff --git a/src/mango_cursor_text.erl b/src/mango_cursor_text.erl
index 847b04c..9f2beeb 100644
--- a/src/mango_cursor_text.erl
+++ b/src/mango_cursor_text.erl
@@ -35,7 +35,8 @@
limit,
skip,
user_fun,
- user_acc
+ user_acc,
+ fields
}).
@@ -53,7 +54,6 @@
Limit = erlang:min(DreyfusLimit, couch_util:get_value(limit, Opts, 50)),
Skip = couch_util:get_value(skip, Opts, 0),
Fields = couch_util:get_value(fields, Opts, all_fields),
-
{ok, #cursor{
db = Db,
index = Index,
@@ -101,7 +101,8 @@
skip = Skip,
query_args = QueryArgs,
user_fun = UserFun,
- user_acc = UserAcc
+ user_acc = UserAcc,
+ fields = Cursor#cursor.fields
},
try
execute(CAcc)
@@ -184,11 +185,12 @@
apply_user_fun(CAcc, Doc) ->
+ FinalDoc = mango_fields:extract(Doc, CAcc#cacc.fields),
#cacc{
user_fun = UserFun,
user_acc = UserAcc
} = CAcc,
- case UserFun({row, Doc}, UserAcc) of
+ case UserFun({row, FinalDoc}, UserAcc) of
{ok, NewUserAcc} ->
CAcc#cacc{user_acc = NewUserAcc};
{stop, NewUserAcc} ->