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:
Go MAEDA
2026-01-14 04:27:35 +00:00
parent 9f615d1df7
commit 71de111e4f

View File

@@ -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