summaryrefslogtreecommitdiff
path: root/src/dreyfus/src/dreyfus_util.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/dreyfus/src/dreyfus_util.erl')
-rw-r--r--src/dreyfus/src/dreyfus_util.erl22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/dreyfus/src/dreyfus_util.erl b/src/dreyfus/src/dreyfus_util.erl
index 0a83e87bd..05ecdb621 100644
--- a/src/dreyfus/src/dreyfus_util.erl
+++ b/src/dreyfus/src/dreyfus_util.erl
@@ -19,7 +19,7 @@
-include_lib("mem3/include/mem3.hrl").
-include_lib("couch/include/couch_db.hrl").
--export([get_shards/2, sort/2, upgrade/1, export/1, time/2]).
+-export([get_shards/2, get_ring_opts/2, sort/2, upgrade/1, export/1, time/2]).
-export([in_black_list/1, in_black_list/3, maybe_deny_index/3]).
-export([get_design_docid/1]).
-export([
@@ -59,6 +59,15 @@ use_ushards(#index_query_args{stable=true}) ->
use_ushards(#index_query_args{}) ->
false.
+
+get_ring_opts(#index_query_args{partition = nil}, _Shards) ->
+ [];
+get_ring_opts(#index_query_args{}, Shards) ->
+ Shards1 = lists:map(fun(#shard{} = S) ->
+ S#shard{ref = undefined}
+ end, Shards),
+ [{any, Shards1}].
+
-spec sort(Order :: relevance | [any()], [#sortable{}]) -> [#sortable{}].
sort(Sort, List0) ->
{List1, Stash} = stash_items(List0),
@@ -418,4 +427,15 @@ stash_test() ->
Unstashed = hd(unstash_items(Stashed, Stash)),
?assertEqual(Unstashed#sortable.item, bar).
+
+ring_opts_test() ->
+ Shards = [#shard{name = foo, ref = make_ref()}],
+
+ QArgs1 = #index_query_args{partition = nil},
+ ?assertEqual([], get_ring_opts(QArgs1, Shards)),
+
+ QArgs2 = #index_query_args{partition = <<"x">>},
+ ?assertMatch([{any, [#shard{name = foo, ref = undefined}]}],
+ get_ring_opts(QArgs2, Shards)).
+
-endif.