diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-03-07 12:56:46 +0100 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-03-11 15:26:32 -0500 |
commit | 4f3fa519c627b7caf45273226ae438181dfbc392 (patch) | |
tree | 9cf5ecd427d262fab71d7f4bc821e61e2277dace /spec | |
parent | c2df121f8eeaf8e0fccab43f5b181f70f3725e58 (diff) | |
download | gitlab-ce-4f3fa519c627b7caf45273226ae438181dfbc392.tar.gz |
Use a UNION in MergeRequest.in_projects
The OR condition for source_project_id/target_project_id leads to a
query plan that performs rather poorly on PostgreSQL due to the use of
sub-queries. Because Rails offers no easy alternative for this
particular problem we're forced to using a UNION for both conditions.
The resulting query performs much faster than just using an OR.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/merge_request_spec.rb | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 59c40922abb..8bf68013fd2 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -80,6 +80,12 @@ describe MergeRequest, models: true do it { is_expected.to respond_to(:merge_when_build_succeeds) } end + describe '.in_projects' do + it 'returns the merge requests for a set of projects' do + expect(described_class.in_projects(Project.all)).to eq([subject]) + end + end + describe '#to_reference' do it 'returns a String reference to the object' do expect(subject.to_reference).to eq "!#{subject.iid}" |