From ec3acf8619a11e56c9788035338df5a5563fefe2 Mon Sep 17 00:00:00 2001
From: nmilojevic1 <nmilojevic@gitlab.com>
Date: Tue, 12 Nov 2019 17:10:56 +0100
Subject: [PATCH] Use only iis for quering merge request

---
 .../import_export/group_project_object_builder.rb    | 12 ++----------
 lib/gitlab/import_export/relation_factory.rb         |  6 +-----
 .../group_project_object_builder_spec.rb             | 10 +++++-----
 3 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/lib/gitlab/import_export/group_project_object_builder.rb b/lib/gitlab/import_export/group_project_object_builder.rb
index 7044d2206a6..209381fa891 100644
--- a/lib/gitlab/import_export/group_project_object_builder.rb
+++ b/lib/gitlab/import_export/group_project_object_builder.rb
@@ -50,11 +50,11 @@ module Gitlab
         ].compact
       end
 
-      # Returns Arel clause `"{table_name}"."project_id" = {project.id}`
+      # Returns Arel clause `"{table_name}"."project_id" = {project.id}` if project is present
       # or, if group is present:
       # `"{table_name}"."project_id" = {project.id} OR "{table_name}"."group_id" = {group.id}`
       def where_clause_base
-        clause = table[project_column].eq(project.id)
+        clause = table[:project_id].eq(project.id) if project
         clause = clause.or(table[:group_id].eq(group.id)) if group
 
         clause
@@ -108,14 +108,6 @@ module Gitlab
         klass == MergeRequest
       end
 
-      def project_column
-        if @original_klass.reflect_on_association(:project) || label?
-          :project_id
-        elsif klass.reflect_on_association(:target_project)
-          :target_project_id
-        end
-      end
-
       # If an existing group milestone used the IID
       # claim the IID back and set the group milestone to use one available
       # This is necessary to fix situations like the following:
diff --git a/lib/gitlab/import_export/relation_factory.rb b/lib/gitlab/import_export/relation_factory.rb
index 55316b1d384..ae6b3c161ce 100644
--- a/lib/gitlab/import_export/relation_factory.rb
+++ b/lib/gitlab/import_export/relation_factory.rb
@@ -332,16 +332,12 @@ module Gitlab
         # Can't use IDs as validation exists calling `group` or `project` attributes
         finder_hash = parsed_relation_hash.tap do |hash|
           hash['group'] = @project.group if relation_class.attribute_method?('group_id')
-          hash['project'] = @project if reflect_on_project_association?
+          hash['project'] = @project if relation_class.reflect_on_association(:project)
           hash.delete('project_id')
         end
 
         GroupProjectObjectBuilder.build(relation_class, finder_hash)
       end
-
-      def reflect_on_project_association?
-        relation_class.reflect_on_association(:project) || relation_class.reflect_on_association(:target_project)
-      end
     end
   end
 end
diff --git a/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb b/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb
index 0340395d0ea..dff820b4497 100644
--- a/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb
+++ b/spec/lib/gitlab/import_export/group_project_object_builder_spec.rb
@@ -55,23 +55,23 @@ describe Gitlab::ImportExport::GroupProjectObjectBuilder do
       merge_request = create(:merge_request, title: 'MergeRequest', iid: 7, target_project: project, source_project: project)
       expect(described_class.build(MergeRequest,
                                    'title' => 'MergeRequest',
-                                   'project' => project,
                                    'source_project_id' => project.id,
+                                   'target_project_id' => project.id,
                                    'source_branch' => 'SourceBranch',
                                    'iid' => 7,
                                    'target_branch' => 'TargetBranch',
-                                   'author' => project.creator)).to eq(merge_request)
+                                   'author_id' => project.creator.id)).to eq(merge_request)
     end
 
     it 'creates a new merge_request' do
       merge_request = described_class.build(MergeRequest,
                                             'title' => 'MergeRequest',
-                                            'project' => project,
                                             'iid' => 8,
-                                            'source_project' => project,
+                                            'source_project_id' => project.id,
+                                            'target_project_id' => project.id,
                                             'source_branch' => 'SourceBranch',
                                             'target_branch' => 'TargetBranch',
-                                            'author' => project.creator)
+                                            'author_id' => project.creator.id)
       expect(merge_request.persisted?).to be true
     end
   end
-- 
2.30.9