diff options
author | Nick Vatamaniuc <vatamane@apache.org> | 2021-07-13 03:18:43 -0400 |
---|---|---|
committer | Nick Vatamaniuc <nickva@users.noreply.github.com> | 2021-07-13 11:37:22 -0400 |
commit | 284546167a0240e272229c9c8f9beecb69681cd9 (patch) | |
tree | 826bd0c4f2880d791d6c516e53bd4e721218602f | |
parent | 74b223ffb0c9627071b057b0c27eb8f0171658c5 (diff) | |
download | couchdb-284546167a0240e272229c9c8f9beecb69681cd9.tar.gz |
Fix "error":"case_clause" using latest=true
This is a port of
https://github.com/apache/couchdb/pull/3424/commits/a8622f0cca40d8f2338ec24b40f14d013a0f69d4
to main
Issue #3424
-rw-r--r-- | src/chttpd/src/chttpd_db.erl | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl index df609bb5e..0c9d0ede8 100644 --- a/src/chttpd/src/chttpd_db.erl +++ b/src/chttpd/src/chttpd_db.erl @@ -1076,7 +1076,7 @@ db_doc_req(#httpd{method = 'DELETE'} = Req, Db, DocId) -> send_updated_doc(Req, Db, DocId, Doc); db_doc_req(#httpd{method = 'GET', mochi_req = MochiReq} = Req, Db, DocId) -> #doc_query_args{ - rev = Rev, + rev = Rev0, open_revs = Revs, options = Options, atts_since = AttsSince @@ -1090,6 +1090,13 @@ db_doc_req(#httpd{method = 'GET', mochi_req = MochiReq} = Req, Db, DocId) -> true -> Options end, + Rev = + case lists:member(latest, Options) of + % couch_doc_open will open the winning rev despite of a rev passed + % https://docs.couchdb.org/en/stable/api/document/common.html?highlight=latest#get--db-docid + true -> nil; + false -> Rev0 + end, Doc = couch_doc_open(Db, DocId, Rev, Options2), send_doc(Req, Doc, Options2); _ -> |