diff options
author | Nick Vatamaniuc <vatamane@apache.org> | 2019-08-29 16:22:49 -0400 |
---|---|---|
committer | Nick Vatamaniuc <nickva@users.noreply.github.com> | 2019-08-29 17:32:08 -0400 |
commit | dc1b4b8f1850a5aca77e40aee69202a0d22c287f (patch) | |
tree | d8f0535912582f05ca23dc877046aff83279f50a | |
parent | 5aed0fddfbc9b197757e573a28dfc7ebada3aafd (diff) | |
download | couchdb-dc1b4b8f1850a5aca77e40aee69202a0d22c287f.tar.gz |
Fix starkey_docid, endkey_docid and inclusive_end=false for _all_docs
-rw-r--r-- | src/chttpd/src/chttpd_db.erl | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl index dbb92fa84..42cbb7df8 100644 --- a/src/chttpd/src/chttpd_db.erl +++ b/src/chttpd/src/chttpd_db.erl @@ -838,15 +838,7 @@ all_docs_view(Req, Db, Keys, OP) -> }, case Args1#mrargs.keys of undefined -> - Options = [ - {user_ctx, Req#httpd.user_ctx}, - {dir, Args1#mrargs.direction}, - {start_key, Args1#mrargs.start_key}, - {end_key, Args1#mrargs.end_key}, - {limit, Args1#mrargs.limit}, - {skip, Args1#mrargs.skip}, - {update_seq, Args1#mrargs.update_seq} - ], + Options = all_docs_view_opts(Args1, Req), Acc = {iter, Db, Args1, VAcc0}, {ok, {iter, _, _, Resp}} = fabric2_db:fold_docs(Db, fun view_cb/2, Acc, Options), @@ -919,6 +911,29 @@ all_docs_view(Req, Db, Keys, OP) -> end. +all_docs_view_opts(Args, Req) -> + StartKey = case Args#mrargs.start_key of + undefined -> Args#mrargs.start_key_docid; + SKey -> SKey + end, + EndKey = case Args#mrargs.end_key of + undefined -> Args#mrargs.end_key_docid; + EKey -> EKey + end, + EndKeyOpts = case {EndKey, Args#mrargs.inclusive_end} of + {<<_/binary>>, false} -> [{end_key_gt, EndKey}]; + {_, _} -> [{end_key, EndKey}] + end, + [ + {user_ctx, Req#httpd.user_ctx}, + {dir, Args#mrargs.direction}, + {start_key, StartKey}, + {limit, Args#mrargs.limit}, + {skip, Args#mrargs.skip}, + {update_seq, Args#mrargs.update_seq} + ] ++ EndKeyOpts. + + apply_args_to_keylist(Args, Keys0) -> Keys1 = case Args#mrargs.direction of fwd -> Keys0; |