diff options
author | Robert Newson <rnewson@apache.org> | 2018-07-31 15:39:40 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2018-07-31 15:39:40 +0100 |
commit | c44cf274e3b4307471edbd7f837642951b199722 (patch) | |
tree | 986dfd45399615d582e86327f470d532728a2810 | |
parent | 0e1d9aaf5927fa99a33c26743bafd69b9c0b4ab9 (diff) | |
download | couchdb-user-partitioned-dbs-3.tar.gz |
Support partitioned flag at db creation timeuser-partitioned-dbs-3
-rw-r--r-- | src/chttpd/src/chttpd_db.erl | 15 | ||||
-rw-r--r-- | src/couch/src/couch_db_updater.erl | 4 | ||||
-rw-r--r-- | src/couch/test/fixtures/test.couch | bin | 16482 -> 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 Binary files differdeleted file mode 100644 index 32c79af32..000000000 --- a/src/couch/test/fixtures/test.couch +++ /dev/null |