diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2017-03-24 12:27:54 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2017-03-24 12:27:54 +0000 |
commit | 8cc4a39be8d1bf31fe082829be209c6969647ab4 (patch) | |
tree | 18e5bd808828c2388fd42f17560a56ee6208f0ec /app/models/merge_request.rb | |
parent | d561881b13ce6f5346e915efbfc1a38ceb18bb02 (diff) | |
parent | df0603cf0e9b3ae2e2ee6b14135a2d2a885d8965 (diff) | |
download | gitlab-ce-8cc4a39be8d1bf31fe082829be209c6969647ab4.tar.gz |
Merge branch '22145-slow-search' into 'master'
Simplify projects, merge requests search queries
See merge request !10053
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 4759829a15c..5ff83944d8c 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -154,8 +154,10 @@ class MergeRequest < ActiveRecord::Base # # Returns an ActiveRecord::Relation. def self.in_projects(relation) - source = where(source_project_id: relation).select(:id) - target = where(target_project_id: relation).select(:id) + # unscoping unnecessary conditions that'll be applied + # when executing `where("merge_requests.id IN (#{union.to_sql})")` + source = unscoped.where(source_project_id: relation).select(:id) + target = unscoped.where(target_project_id: relation).select(:id) union = Gitlab::SQL::Union.new([source, target]) where("merge_requests.id IN (#{union.to_sql})") |