summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2019-11-04 15:53:58 -0500
committerNick Vatamaniuc <nickva@users.noreply.github.com>2019-11-04 15:58:17 -0500
commit3db0ba7fae66bf4c817da38e9d508e5349a44b69 (patch)
treea9e32ecf59bd3dbfb00fa20061baab15c0d2be1b
parent8d28d851f46629858ee28e155af56f0b858cb721 (diff)
downloadcouchdb-3db0ba7fae66bf4c817da38e9d508e5349a44b69.tar.gz
Ensure we can create partitioned design docs with FDB
Users should be able to replicate their partitioned dbs to the new environment.
-rw-r--r--src/couch_mrview/src/couch_mrview.erl14
-rw-r--r--src/fabric/test/fabric2_doc_crud_tests.erl18
2 files changed, 20 insertions, 12 deletions
diff --git a/src/couch_mrview/src/couch_mrview.erl b/src/couch_mrview/src/couch_mrview.erl
index cf6f27fde..083356fbc 100644
--- a/src/couch_mrview/src/couch_mrview.erl
+++ b/src/couch_mrview/src/couch_mrview.erl
@@ -184,7 +184,7 @@ validate(Db, DDoc) ->
validate(DbName, IsPartitioned, DDoc).
-validate(DbName, IsDbPartitioned, DDoc) ->
+validate(DbName, _IsDbPartitioned, DDoc) ->
ok = validate_ddoc_fields(DDoc#doc.body),
GetName = fun
(#mrview{map_names = [Name | _]}) -> Name;
@@ -211,19 +211,9 @@ validate(DbName, IsDbPartitioned, DDoc) ->
end,
{ok, #mrst{
language = Lang,
- views = Views,
- partitioned = Partitioned
+ views = Views
}} = couch_mrview_util:ddoc_to_mrst(DbName, DDoc),
- case {IsDbPartitioned, Partitioned} of
- {false, true} ->
- throw({invalid_design_doc,
- <<"partitioned option cannot be true in a "
- "non-partitioned database.">>});
- {_, _} ->
- ok
- end,
-
try Views =/= [] andalso couch_query_servers:get_os_process(Lang) of
false ->
ok;
diff --git a/src/fabric/test/fabric2_doc_crud_tests.erl b/src/fabric/test/fabric2_doc_crud_tests.erl
index 255efefdc..a9085be77 100644
--- a/src/fabric/test/fabric2_doc_crud_tests.erl
+++ b/src/fabric/test/fabric2_doc_crud_tests.erl
@@ -33,6 +33,7 @@ doc_crud_test_() ->
fun create_ddoc_requires_admin/1,
fun create_ddoc_requires_validation/1,
fun create_ddoc_requires_compilation/1,
+ fun can_create_a_partitioned_ddoc/1,
fun update_doc_basic/1,
fun update_ddoc_basic/1,
fun update_doc_replicated/1,
@@ -108,6 +109,23 @@ create_ddoc_basic({Db, _}) ->
?assertEqual({ok, NewDoc}, fabric2_db:open_doc(Db, Doc#doc.id)).
+can_create_a_partitioned_ddoc({Db, _}) ->
+ UUID = fabric2_util:uuid(),
+ DDocId = <<"_design/", UUID/binary>>,
+ Doc = #doc{
+ id = DDocId,
+ body = {[
+ {<<"options">>, {[{<<"partitioned">>, true}]}},
+ {<<"views">>, {[
+ {<<"foo">>, {[
+ {<<"map">>, <<"function(doc) {}">>}
+ ]}}
+ ]}}
+ ]}
+ },
+ ?assertMatch({ok, {_, _}}, fabric2_db:update_doc(Db, Doc)).
+
+
create_ddoc_requires_admin({Db, _}) ->
Db2 = fabric2_db:set_user_ctx(Db, #user_ctx{}),
UUID = fabric2_util:uuid(),