summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2021-07-13 03:18:43 -0400
committerNick Vatamaniuc <nickva@users.noreply.github.com>2021-07-13 11:37:22 -0400
commit284546167a0240e272229c9c8f9beecb69681cd9 (patch)
tree826bd0c4f2880d791d6c516e53bd4e721218602f
parent74b223ffb0c9627071b057b0c27eb8f0171658c5 (diff)
downloadcouchdb-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.erl9
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);
_ ->