# HG changeset patch # Parent 11afa8d88efcd664053bec7adcffd60da5de71b1 # User Toshi MARUYAMA [mq]: issue_query.v3.diff diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -359,6 +359,17 @@ class IssueQuery < Query raise StatementInvalid.new(e.message) end + def version_ids(options={}) + Version.visible. + where(project_statement). + where(options[:conditions]). + includes(:project). + references(:project). + pluck(:id) + rescue ::ActiveRecord::StatementInvalid => e + raise StatementInvalid.new(e.message) + end + def sql_for_updated_by_field(field, operator, value) neg = (operator == '!' ? 'NOT' : '') subquery = "SELECT 1 FROM #{Journal.table_name}" + @@ -426,16 +437,14 @@ class IssueQuery < Query def sql_for_fixed_version_status_field(field, operator, value) where = sql_for_field(field, operator, value, Version.table_name, "status") - version_ids = versions(:conditions => [where]).map(&:id) - + version_ids = version_ids(:conditions => [where]) nl = operator == "!" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" end def sql_for_fixed_version_due_date_field(field, operator, value) where = sql_for_field(field, operator, value, Version.table_name, "effective_date") - version_ids = versions(:conditions => [where]).map(&:id) - + version_ids = version_ids(:conditions => [where]) nl = operator == "!*" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" end