Avoid N queries when displaying the issue list with custom fields.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12223 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2013-10-15 16:38:17 +00:00
parent 758cc2f2e6
commit 3172359f97
2 changed files with 12 additions and 3 deletions

View File

@ -323,7 +323,7 @@ class IssueQuery < Query
def issues(options={})
order_option = [group_by_sort_order, options[:order]].flatten.reject(&:blank?)
issues = Issue.visible.
scope = Issue.visible.
joins(:status, :project).
where(statement).
includes(([:status, :project] + (options[:include] || [])).uniq).
@ -331,8 +331,13 @@ class IssueQuery < Query
order(order_option).
joins(joins_for_order_statement(order_option.join(','))).
limit(options[:limit]).
offset(options[:offset]).
all
offset(options[:offset])
if has_custom_field_column?
scope = scope.preload(:custom_values)
end
issues = scope.all
if has_column?(:spent_hours)
Issue.load_visible_spent_hours(issues)

View File

@ -449,6 +449,10 @@ class Query < ActiveRecord::Base
column_names && column_names.include?(column.is_a?(QueryColumn) ? column.name : column)
end
def has_custom_field_column?
columns.any? {|column| column.is_a? QueryCustomFieldColumn}
end
def has_default_columns?
column_names.nil? || column_names.empty?
end