diff options
author | Garren Smith <garren.smith@gmail.com> | 2018-10-19 11:13:11 +0200 |
---|---|---|
committer | garren smith <garren.smith@gmail.com> | 2018-10-23 15:22:28 +0200 |
commit | d02d6140afa0b2eca42b9d20bf2d15f6058e9be9 (patch) | |
tree | cf71d1df957d5e2f6c8b71bf873c4cb26907a7e8 | |
parent | 01a7165d42901ab4f99ea3d81c50cb9d485aa4d4 (diff) | |
download | couchdb-d02d6140afa0b2eca42b9d20bf2d15f6058e9be9.tar.gz |
expose is_system_db_name
Expose is_system_db_name as a way to verify if a binary string is the
name of a system database.
-rw-r--r-- | src/couch/src/couch_db.erl | 13 | ||||
-rw-r--r-- | src/couch/src/couch_doc.erl | 2 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl index 4d76ceedc..57e395179 100644 --- a/src/couch/src/couch_db.erl +++ b/src/couch/src/couch_db.erl @@ -56,6 +56,7 @@ is_db/1, is_system_db/1, is_clustered/1, + is_system_db_name/1, set_revs_limit/2, set_purge_infos_limit/2, @@ -1729,15 +1730,15 @@ validate_dbname_int(DbName, Normalized) when is_binary(DbName) -> match -> ok; nomatch -> - case is_systemdb(Normalized) of + case is_system_db_name(Normalized) of true -> ok; false -> {error, {illegal_database_name, DbName}} end end. -is_systemdb(DbName) when is_list(DbName) -> - is_systemdb(?l2b(DbName)); -is_systemdb(DbName) when is_binary(DbName) -> +is_system_db_name(DbName) when is_list(DbName) -> + is_system_db_name(?l2b(DbName)); +is_system_db_name(DbName) when is_binary(DbName) -> Normalized = normalize_dbname(DbName), Suffix = filename:basename(Normalized), case {filename:dirname(Normalized), lists:member(Suffix, ?SYSTEM_DATABASES)} of @@ -1860,7 +1861,7 @@ dbname_suffix_test_() -> [{test_name({Expected, Db}), ?_assertEqual(Expected, dbname_suffix(Db))} || {Expected, Db} <- WithExpected]. -is_systemdb_test_() -> +is_system_db_name_test_() -> Cases = lists:append([ generate_cases_with_shards("long/co$mplex-/path+/" ++ ?b2l(Db)) || Db <- ?SYSTEM_DATABASES] @@ -1869,7 +1870,7 @@ is_systemdb_test_() -> WithExpected = [{?l2b(filename:basename(filename:rootname(Arg))), Db} || {Arg, Db} <- Cases], [{test_name({Expected, Db}) ++ " in ?SYSTEM_DATABASES", - ?_assert(is_systemdb(Db))} || {Expected, Db} <- WithExpected]. + ?_assert(is_system_db_name(Db))} || {Expected, Db} <- WithExpected]. should_pass_validate_dbname(DbName) -> {test_name(DbName), ?_assertEqual(ok, validate_dbname(DbName))}. diff --git a/src/couch/src/couch_doc.erl b/src/couch/src/couch_doc.erl index f960ec5c2..e5ad9e9f1 100644 --- a/src/couch/src/couch_doc.erl +++ b/src/couch/src/couch_doc.erl @@ -200,7 +200,7 @@ parse_revs(_) -> validate_docid(DocId, DbName) -> case DbName =:= ?l2b(config:get("mem3", "shards_db", "_dbs")) andalso - lists:member(DocId, ?SYSTEM_DATABASES) of + couch_db:is_system_db_name(DocId) of true -> ok; false -> |