summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2018-09-12 19:10:50 +0100
committerRobert Newson <rnewson@apache.org>2018-09-13 21:10:20 +0100
commit44a65272bd540aba8f94c3cb4e108b68391e6ea1 (patch)
tree8b51de7e208771039cae04d4c572eaac46030392
parent400632ea943b71da0a7864732e0918f7e9c891fb (diff)
downloadcouchdb-44a65272bd540aba8f94c3cb4e108b68391e6ea1.tar.gz
fix local (5986) doc creation
-rw-r--r--src/chttpd/src/chttpd_db.erl10
-rw-r--r--src/couch/src/couch_doc.erl7
2 files changed, 8 insertions, 9 deletions
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl
index 0bfe0404e..9dab4b5bd 100644
--- a/src/chttpd/src/chttpd_db.erl
+++ b/src/chttpd/src/chttpd_db.erl
@@ -470,17 +470,19 @@ db_req(#httpd{method='POST',path_parts=[_,<<"_bulk_docs">>], user_ctx=Ctx}=Req,
_ ->
Options = [{user_ctx,Ctx}, {w,W}]
end,
+ DbName = couch_db:name(Db),
+ VOpts = [{partitioned, mem3:is_partitioned(DbName)}],
case couch_util:get_value(<<"new_edits">>, JsonProps, true) of
true ->
Docs = lists:map(
fun(JsonObj) ->
- DbName = couch_db:name(Db),
Doc = couch_doc:from_json_obj_validate(JsonObj, DbName),
validate_attachment_names(Doc),
Id = case Doc#doc.id of
<<>> -> couch_uuids:new();
Id0 -> Id0
end,
+ couch_doc:validate_docid(Id, DbName, VOpts),
Doc#doc{id=Id}
end,
DocsArray),
@@ -506,7 +508,11 @@ db_req(#httpd{method='POST',path_parts=[_,<<"_bulk_docs">>], user_ctx=Ctx}=Req,
send_json(Req, 417, ErrorsJson)
end;
false ->
- Docs = [couch_doc:from_json_obj_validate(JsonObj) || JsonObj <- DocsArray],
+ Docs = [begin
+ couch_doc:from_json_obj_validate(JsonObj)
+ end
+ || JsonObj <- DocsArray],
+ [couch_doc:validate_docid(D#doc.id, DbName, VOpts) || D <- Docs],
[validate_attachment_names(D) || D <- Docs],
case fabric:update_docs(Db, Docs, [replicated_changes|Options]) of
{ok, Errors} ->
diff --git a/src/couch/src/couch_doc.erl b/src/couch/src/couch_doc.erl
index 135effddf..2c92a9a06 100644
--- a/src/couch/src/couch_doc.erl
+++ b/src/couch/src/couch_doc.erl
@@ -133,13 +133,6 @@ from_json_obj_validate(EJson) ->
from_json_obj_validate(EJson, DbName) ->
MaxSize = config:get_integer("couchdb", "max_document_size", 4294967296),
Doc = from_json_obj(EJson, DbName),
- case is_binary(DbName) andalso mem3:is_partitioned(DbName) of
- true ->
- Options = [{partitioned, true}],
- couch_doc:validate_docid(Doc#doc.id, DbName, Options);
- false ->
- ok
- end,
case couch_ejson_size:encoded_size(Doc#doc.body) =< MaxSize of
true ->
validate_attachment_sizes(Doc#doc.atts),