mirror of
https://github.com/redmine/redmine.git
synced 2026-01-26 17:30:00 +01:00
Merged r24289 from trunk to 6.1-stable (#43651).
git-svn-id: https://svn.redmine.org/redmine/branches/6.1-stable@24311 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -109,13 +109,20 @@ module Redmine
|
||||
clauses << "(#{CustomValue.table_name}.custom_field_id IN (#{fields.map(&:id).join(',')}) AND (#{visibility}))"
|
||||
end
|
||||
visibility = clauses.join(' OR ')
|
||||
r |= fetch_ranks_and_ids(
|
||||
search_scope(user, projects, options).
|
||||
joins(:custom_values).
|
||||
where(visibility).
|
||||
where(search_tokens_condition(["#{CustomValue.table_name}.value"], tokens, options[:all_words])),
|
||||
options[:limit]
|
||||
)
|
||||
scope =
|
||||
search_scope(user, projects, options)
|
||||
.joins(:custom_values)
|
||||
.where(visibility)
|
||||
.where(search_tokens_condition(["#{CustomValue.table_name}.value"], tokens, options[:all_words]))
|
||||
|
||||
if self == Issue && Redmine::Database.mysql? && ActiveRecord::Base.connection.supports_optimizer_hints?
|
||||
# Force the join order to evaluate issues before custom_values.
|
||||
# This avoids inefficient query plans where custom_values are scanned
|
||||
# without an issue_id filter, which can be extremely slow on large datasets.
|
||||
scope = scope.optimizer_hints("JOIN_ORDER(#{Issue.table_name}, #{CustomValue.table_name})")
|
||||
end
|
||||
|
||||
r |= fetch_ranks_and_ids(scope, options[:limit])
|
||||
queries += 1
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user