summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2021-12-20 17:07:37 +0000
committerRobert Newson <rnewson@apache.org>2021-12-23 15:00:38 +0000
commit0de7b755ab0d722feb0ae8e498509243937e1782 (patch)
tree4181a2e21783faaafa314a609e729946e2b8cb71
parent349ae89b5484bb1f2e8ed4773905b1ad3122d812 (diff)
downloadcouchdb-0de7b755ab0d722feb0ae8e498509243937e1782.tar.gz
Apply partition_query_limit and query_limit to _find
-rw-r--r--src/mango/src/mango_cursor_special.erl3
-rw-r--r--src/mango/src/mango_cursor_view.erl3
-rw-r--r--src/mango/src/mango_opts.erl9
3 files changed, 12 insertions, 3 deletions
diff --git a/src/mango/src/mango_cursor_special.erl b/src/mango/src/mango_cursor_special.erl
index f20edebd1..6453e9539 100644
--- a/src/mango/src/mango_cursor_special.erl
+++ b/src/mango/src/mango_cursor_special.erl
@@ -36,7 +36,8 @@ create(Db, Indexes, Selector, Opts) ->
Composited = mango_cursor_view:composite_indexes(Indexes, FieldRanges),
{Index, IndexRanges} = mango_cursor_view:choose_best_index(Db, Composited),
- Limit = couch_util:get_value(limit, Opts, mango_opts:default_limit()),
+ MRLimit = mango_opts:mr_limit(couch_db:is_partitioned(Db)),
+ Limit = erlang:min(MRLimit, couch_util:get_value(limit, Opts, mango_opts:default_limit())),
Skip = couch_util:get_value(skip, Opts, 0),
Fields = couch_util:get_value(fields, Opts, all_fields),
Bookmark = couch_util:get_value(bookmark, Opts),
diff --git a/src/mango/src/mango_cursor_view.erl b/src/mango/src/mango_cursor_view.erl
index eb2271b01..0142d36c1 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -40,7 +40,8 @@ create(Db, Indexes, Selector, Opts) ->
Composited = composite_indexes(Indexes, FieldRanges),
{Index, IndexRanges} = choose_best_index(Db, Composited),
- Limit = couch_util:get_value(limit, Opts, mango_opts:default_limit()),
+ MRLimit = mango_opts:mr_limit(couch_db:is_partitioned(Db)),
+ Limit = erlang:min(MRLimit, couch_util:get_value(limit, Opts, mango_opts:default_limit())),
Skip = couch_util:get_value(skip, Opts, 0),
Fields = couch_util:get_value(fields, Opts, all_fields),
Bookmark = couch_util:get_value(bookmark, Opts),
diff --git a/src/mango/src/mango_opts.erl b/src/mango/src/mango_opts.erl
index 04fe5bbf8..82c844a99 100644
--- a/src/mango/src/mango_opts.erl
+++ b/src/mango/src/mango_opts.erl
@@ -36,10 +36,12 @@
validate_bulk_delete/1,
validate_partitioned/1,
- default_limit/0
+ default_limit/0,
+ mr_limit/1
]).
-include("mango.hrl").
+-include_lib("couch_mrview/include/couch_mrview.hrl").
validate_idx_create({Props}) ->
Opts = [
@@ -356,3 +358,8 @@ validate_opt(Name, [{validator, Fun} | Rest], Value) ->
default_limit() ->
config:get_integer("mango", "default_limit", 25).
+
+mr_limit(true) ->
+ config:get_integer("query_server_config", "partition_query_limit", ?MAX_VIEW_LIMIT);
+mr_limit(false) ->
+ config:get_integer("query_server_config", "query_limit", ?MAX_VIEW_LIMIT).