mirror of
https://github.com/redmine/redmine.git
synced 2025-11-07 13:55:52 +01:00
Don't join all associations by default (#24865).
git-svn-id: http://svn.redmine.org/redmine/trunk@16221 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -66,8 +66,7 @@ class IssuesController < ApplicationController
|
|||||||
@issue_count = @query.issue_count
|
@issue_count = @query.issue_count
|
||||||
@issue_pages = Paginator.new @issue_count, @limit, params['page']
|
@issue_pages = Paginator.new @issue_count, @limit, params['page']
|
||||||
@offset ||= @issue_pages.offset
|
@offset ||= @issue_pages.offset
|
||||||
@issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version],
|
@issues = @query.issues(:order => sort_clause,
|
||||||
:order => sort_clause,
|
|
||||||
:offset => @offset,
|
:offset => @offset,
|
||||||
:limit => @limit)
|
:limit => @limit)
|
||||||
@issue_count_by_group = @query.issue_count_by_group
|
@issue_count_by_group = @query.issue_count_by_group
|
||||||
@@ -402,7 +401,7 @@ class IssuesController < ApplicationController
|
|||||||
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
|
sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria)
|
||||||
sort_update(@query.sortable_columns, 'issues_index_sort')
|
sort_update(@query.sortable_columns, 'issues_index_sort')
|
||||||
limit = 500
|
limit = 500
|
||||||
issue_ids = @query.issue_ids(:order => sort_clause, :limit => (limit + 1), :include => [:assigned_to, :tracker, :priority, :category, :fixed_version])
|
issue_ids = @query.issue_ids(:order => sort_clause, :limit => (limit + 1))
|
||||||
if (idx = issue_ids.index(@issue.id)) && idx < limit
|
if (idx = issue_ids.index(@issue.id)) && idx < limit
|
||||||
if issue_ids.size < 500
|
if issue_ids.size < 500
|
||||||
@issue_position = idx + 1
|
@issue_position = idx + 1
|
||||||
|
|||||||
@@ -273,9 +273,9 @@ class IssueQuery < Query
|
|||||||
limit(options[:limit]).
|
limit(options[:limit]).
|
||||||
offset(options[:offset])
|
offset(options[:offset])
|
||||||
|
|
||||||
|
scope = scope.preload([:tracker, :priority, :author, :assigned_to, :fixed_version, :category] & columns.map(&:name))
|
||||||
|
if has_custom_field_column?
|
||||||
scope = scope.preload(:custom_values)
|
scope = scope.preload(:custom_values)
|
||||||
if has_column?(:author)
|
|
||||||
scope = scope.preload(:author)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
issues = scope.to_a
|
issues = scope.to_a
|
||||||
@@ -513,6 +513,21 @@ class IssueQuery < Query
|
|||||||
if order_options.include?('authors')
|
if order_options.include?('authors')
|
||||||
joins << "LEFT OUTER JOIN #{User.table_name} authors ON authors.id = #{queried_table_name}.author_id"
|
joins << "LEFT OUTER JOIN #{User.table_name} authors ON authors.id = #{queried_table_name}.author_id"
|
||||||
end
|
end
|
||||||
|
if order_options.include?('users')
|
||||||
|
joins << "LEFT OUTER JOIN #{User.table_name} ON #{User.table_name}.id = #{queried_table_name}.assigned_to_id"
|
||||||
|
end
|
||||||
|
if order_options.include?('fixed_version')
|
||||||
|
joins << "LEFT OUTER JOIN #{Version.table_name} ON #{Version.table_name}.id = #{queried_table_name}.fixed_version_id"
|
||||||
|
end
|
||||||
|
if order_options.include?('category')
|
||||||
|
joins << "LEFT OUTER JOIN #{IssueCategory.table_name} ON #{IssueCategory.table_name}.id = #{queried_table_name}.category_id"
|
||||||
|
end
|
||||||
|
if order_options.include?('tracker')
|
||||||
|
joins << "LEFT OUTER JOIN #{Tracker.table_name} ON #{Tracker.table_name}.id = #{queried_table_name}.tracker_id"
|
||||||
|
end
|
||||||
|
if order_options.include?('enumeration')
|
||||||
|
joins << "LEFT OUTER JOIN #{IssuePriority.table_name} ON #{IssuePriority.table_name}.id = #{queried_table_name}.priority_id"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
joins.any? ? joins.join(' ') : nil
|
joins.any? ? joins.join(' ') : nil
|
||||||
|
|||||||
Reference in New Issue
Block a user