summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2018-07-31 15:39:40 +0100
committerRobert Newson <rnewson@apache.org>2018-07-31 15:39:40 +0100
commitc44cf274e3b4307471edbd7f837642951b199722 (patch)
tree986dfd45399615d582e86327f470d532728a2810
parent0e1d9aaf5927fa99a33c26743bafd69b9c0b4ab9 (diff)
downloadcouchdb-user-partitioned-dbs-3.tar.gz
Support partitioned flag at db creation timeuser-partitioned-dbs-3
-rw-r--r--src/chttpd/src/chttpd_db.erl15
-rw-r--r--src/couch/src/couch_db_updater.erl4
-rw-r--r--src/couch/test/fixtures/test.couchbin16482 -> 0 bytes
3 files changed, 17 insertions, 2 deletions
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl
index 776100730..ef0370275 100644
--- a/src/chttpd/src/chttpd_db.erl
+++ b/src/chttpd/src/chttpd_db.erl
@@ -285,11 +285,12 @@ create_db_req(#httpd{}=Req, DbName) ->
Q = chttpd:qs_value(Req, "q", config:get("cluster", "q", "8")),
P = chttpd:qs_value(Req, "placement", config:get("cluster", "placement")),
EngineOpt = parse_engine_opt(Req),
+ PartitionedOpt = parse_partitioned_opt(Req),
Options = [
{n, N},
{q, Q},
{placement, P}
- ] ++ EngineOpt,
+ ] ++ EngineOpt ++ PartitionedOpt,
DocUrl = absolute_uri(Req, "/" ++ couch_util:url_encode(DbName)),
case fabric:create_db(DbName, Options) of
ok ->
@@ -1412,6 +1413,18 @@ parse_engine_opt(Req) ->
end
end.
+
+parse_partitioned_opt(Req) ->
+ case chttpd:qs_value(Req, "partitioned") of
+ undefined ->
+ [];
+ "true" ->
+ [partitioned];
+ _ ->
+ throw({bad_request, <<"`partitioned` parameter can only be set to true.">>})
+ end.
+
+
parse_doc_query({Key, Value}, Args) ->
case {Key, Value} of
{"attachments", "true"} ->
diff --git a/src/couch/src/couch_db_updater.erl b/src/couch/src/couch_db_updater.erl
index d8a769b7f..f6754932a 100644
--- a/src/couch/src/couch_db_updater.erl
+++ b/src/couch/src/couch_db_updater.erl
@@ -27,7 +27,9 @@ init({Engine, DbName, FilePath, Options0}) ->
erlang:put(io_priority, {db_update, DbName}),
update_idle_limit_from_config(),
DefaultSecObj = default_security_object(DbName),
- Options = [{default_security_object, DefaultSecObj} | Options0],
+ Options1 = [{default_security_object, DefaultSecObj} | Options0],
+ Partitioned = lists:member(partitioned, Options0),
+ Options = [{initial_props, [{partitioned, Partitioned}]} | Options1],
try
{ok, EngineState} = couch_db_engine:init(Engine, FilePath, Options),
Db = init_db(DbName, FilePath, EngineState, Options),
diff --git a/src/couch/test/fixtures/test.couch b/src/couch/test/fixtures/test.couch
deleted file mode 100644
index 32c79af32..000000000
--- a/src/couch/test/fixtures/test.couch
+++ /dev/null
Binary files differ