diff options
Diffstat (limited to 'src/mango/src/mango_idx_special.erl')
-rw-r--r-- | src/mango/src/mango_idx_special.erl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mango/src/mango_idx_special.erl b/src/mango/src/mango_idx_special.erl index 12da1cbe5..ac6efc707 100644 --- a/src/mango/src/mango_idx_special.erl +++ b/src/mango/src/mango_idx_special.erl @@ -63,9 +63,11 @@ columns(#idx{def=all_docs}) -> [<<"_id">>]. -is_usable(#idx{def=all_docs}, Selector, _) -> +is_usable(#idx{def=all_docs}, _Selector, []) -> + true; +is_usable(#idx{def=all_docs} = Idx, Selector, SortFields) -> Fields = mango_idx_view:indexable_fields(Selector), - lists:member(<<"_id">>, Fields). + lists:member(<<"_id">>, Fields) and can_use_sort(Idx, SortFields, Selector). start_key([{'$gt', Key, _, _}]) -> @@ -96,3 +98,10 @@ end_key([{_, _, '$lte', Key}]) -> end_key([{'$eq', Key, '$eq', Key}]) -> false = mango_json:special(Key), Key. + + +can_use_sort(_Idx, [], _Selector) -> + true; +can_use_sort(Idx, SortFields, _Selector) -> + Cols = columns(Idx), + lists:prefix(SortFields, Cols). |