This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch user-partitioned-dbs-6
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 7f30db99f9a1fc6c212d4256de6e7d6217851321
Author: Robert Newson <[email protected]>
AuthorDate: Wed Sep 12 19:10:50 2018 +0100

    fix local (5986) doc creation
---
 src/chttpd/src/chttpd_db.erl | 10 ++++++++--
 src/couch/src/couch_doc.erl  |  7 -------
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl
index 0bfe040..9dab4b5 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 135effd..2c92a9a 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),

Reply via email to