You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2021/12/20 17:08:16 UTC
[couchdb] 02/02: Apply partition_query_limit and query_limit to _find
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch enforce_rowlimit_mango
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit d81d59822ffc739a5f9d48ec6e4e1a643cbac785
Author: Robert Newson <rn...@apache.org>
AuthorDate: Mon Dec 20 17:07:37 2021 +0000
Apply partition_query_limit and query_limit to _find
---
src/mango/src/mango_cursor_special.erl | 3 ++-
src/mango/src/mango_cursor_view.erl | 3 ++-
src/mango/src/mango_opts.erl | 10 +++++++++-
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/mango/src/mango_cursor_special.erl b/src/mango/src/mango_cursor_special.erl
index f20edeb..6453e95 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 eb2271b..0142d36 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 04fe5bb..2bf76fa 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,9 @@ 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).