summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mango/src/mango_cursor_text.erl17
-rw-r--r--src/mango/test/08-text-limit-test.py10
2 files changed, 19 insertions, 8 deletions
diff --git a/src/mango/src/mango_cursor_text.erl b/src/mango/src/mango_cursor_text.erl
index 43ef84e4c..5989f342e 100644
--- a/src/mango/src/mango_cursor_text.erl
+++ b/src/mango/src/mango_cursor_text.erl
@@ -43,7 +43,7 @@
}).
-create(Db, Indexes, Selector, Opts0) ->
+create(Db, Indexes, Selector, Opts) ->
Index = case Indexes of
[Index0] ->
Index0;
@@ -51,7 +51,7 @@ create(Db, Indexes, Selector, Opts0) ->
?MANGO_ERROR(multiple_text_indexes)
end,
- Opts = unpack_bookmark(couch_db:name(Db), Opts0),
+ Bookmark = unpack_bookmark(couch_db:name(Db), Opts),
DreyfusLimit = get_dreyfus_limit(),
Limit = erlang:min(DreyfusLimit, couch_util:get_value(limit, Opts, mango_opts:default_limit())),
@@ -66,7 +66,8 @@ create(Db, Indexes, Selector, Opts0) ->
opts = Opts,
limit = Limit,
skip = Skip,
- fields = Fields
+ fields = Fields,
+ bookmark = Bookmark
}}.
@@ -90,7 +91,8 @@ execute(Cursor, UserFun, UserAcc) ->
skip = Skip,
selector = Selector,
opts = Opts,
- execution_stats = Stats
+ execution_stats = Stats,
+ bookmark = Bookmark
} = Cursor,
Query = mango_selector_text:convert(Selector),
QueryArgs = #index_query_args{
@@ -104,7 +106,7 @@ execute(Cursor, UserFun, UserAcc) ->
dbname = couch_db:name(Db),
ddocid = ddocid(Idx),
idx_name = mango_idx:name(Idx),
- bookmark = get_bookmark(Opts),
+ bookmark = Bookmark,
limit = Limit,
skip = Skip,
query_args = QueryArgs,
@@ -282,7 +284,7 @@ pack_bookmark(Bookmark) ->
unpack_bookmark(DbName, Opts) ->
- NewBM = case lists:keyfind(bookmark, 1, Opts) of
+ case lists:keyfind(bookmark, 1, Opts) of
{_, nil} ->
[];
{_, Bin} ->
@@ -291,8 +293,7 @@ unpack_bookmark(DbName, Opts) ->
catch _:_ ->
?MANGO_ERROR({invalid_bookmark, Bin})
end
- end,
- lists:keystore(bookmark, 1, Opts, {bookmark, NewBM}).
+ end.
ddocid(Idx) ->
diff --git a/src/mango/test/08-text-limit-test.py b/src/mango/test/08-text-limit-test.py
index ae827813d..ef0509ff3 100644
--- a/src/mango/test/08-text-limit-test.py
+++ b/src/mango/test/08-text-limit-test.py
@@ -133,3 +133,13 @@ class LimitTests(mango.LimitDocsTextTests):
assert json["bookmark"] != bm
bm = json["bookmark"]
assert len(seen_docs) == len(limit_docs.DOCS)
+
+ def run_explain_check(self, size):
+ q = {"age": {"$gt": 0}}
+ seen_docs = set()
+ bm = None
+ results1 = self.db.find(q, limit=size, bookmark=bm, return_raw=True)
+ assert results1["bookmark"] != bm
+ bm = results1["bookmark"]
+ results2 = self.db.find(q, limit=size, bookmark=bm, explain=True)
+ assert results2["bookmark"] == bm