summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Holley <willholley@gmail.com>2017-11-03 14:08:50 +0000
committerGitHub <noreply@github.com>2017-11-03 14:08:50 +0000
commit436b402721b26575e989f04db61c9edbcfb168f5 (patch)
tree7cd676e28cea9db2f905a7468e38c52530665cf2
parent01658a0cc889cffce0ca73b1d06525d708398af8 (diff)
downloadcouchdb-436b402721b26575e989f04db61c9edbcfb168f5.tar.gz
Fix user-specified ddoc name in Mango (#961)
When creating a Mango index, we allow the user to specify a design document name. This can be of the form "_design/foo" or just "foo", with the expectation that Mango would automatically add the "_design" prefix. This fixes a bug whereby if the user specified "_design/foo", Mango was prefixing this again, creating a design document called "_design/_design/foo".
-rw-r--r--src/mango/src/mango_idx.erl11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mango/src/mango_idx.erl b/src/mango/src/mango_idx.erl
index 4dd2e180d..8e19ebff8 100644
--- a/src/mango/src/mango_idx.erl
+++ b/src/mango/src/mango_idx.erl
@@ -333,7 +333,7 @@ get_idx_type(Opts) ->
get_idx_ddoc(Idx, Opts) ->
case proplists:get_value(ddoc, Opts) of
- <<"_design/", _Rest>> = Name ->
+ <<"_design/", _Rest/binary>> = Name ->
Name;
Name when is_binary(Name) ->
<<"_design/", Name/binary>>;
@@ -437,4 +437,13 @@ get_partial_filter_selector_with_legacy_default_selector_test() ->
Idx = index(<<"selector">>, []),
?assertEqual(undefined, get_partial_filter_selector(Idx)).
+
+get_idx_ddoc_name_only_test() ->
+ Opts = [{ddoc, <<"foo">>}],
+ ?assertEqual(<<"_design/foo">>, get_idx_ddoc({}, Opts)).
+
+get_idx_ddoc_design_slash_name_test() ->
+ Opts = [{ddoc, <<"_design/foo">>}],
+ ?assertEqual(<<"_design/foo">>, get_idx_ddoc({}, Opts)).
+
-endif.