diff options
Diffstat (limited to 'lib/gitlab/pagination/offset_pagination.rb')
-rw-r--r-- | lib/gitlab/pagination/offset_pagination.rb | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/gitlab/pagination/offset_pagination.rb b/lib/gitlab/pagination/offset_pagination.rb index 11a5ef4e518..8796dd4d7ec 100644 --- a/lib/gitlab/pagination/offset_pagination.rb +++ b/lib/gitlab/pagination/offset_pagination.rb @@ -19,7 +19,13 @@ module Gitlab private def paginate_with_limit_optimization(relation) - pagination_data = relation.page(params[:page]).per(params[:per_page]) + # do not paginate relation if it is already paginated + pagination_data = if relation.respond_to?(:current_page) && relation.current_page == params[:page] && relation.limit_value == params[:per_page] + relation + else + relation.page(params[:page]).per(params[:per_page]) + end + return pagination_data unless pagination_data.is_a?(ActiveRecord::Relation) return pagination_data unless Feature.enabled?(:api_kaminari_count_with_limit) |