Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/labels/transfer_service.rb')
-rw-r--r--app/services/labels/transfer_service.rb35
1 files changed, 25 insertions, 10 deletions
diff --git a/app/services/labels/transfer_service.rb b/app/services/labels/transfer_service.rb
index a05090d6bfb..19d419609a5 100644
--- a/app/services/labels/transfer_service.rb
+++ b/app/services/labels/transfer_service.rb
@@ -50,21 +50,32 @@ module Labels
# rubocop: disable CodeReuse/ActiveRecord
def group_labels_applied_to_issues
- @group_labels_applied_to_issues ||= Label.joins(:issues)
- .where(
- issues: { project_id: project.id },
- labels: { group_id: old_group.self_and_ancestors }
- )
+ @labels_applied_to_issues ||= if use_optimized_group_labels_query?
+ Label.joins(:issues)
+ .joins("INNER JOIN namespaces on namespaces.id = labels.group_id AND namespaces.type = 'Group'" )
+ .where(issues: { project_id: project.id }).reorder(nil)
+ else
+ Label.joins(:issues).where(
+ issues: { project_id: project.id },
+ labels: { group_id: old_group.self_and_ancestors }
+ )
+ end
end
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
def group_labels_applied_to_merge_requests
- @group_labels_applied_to_merge_requests ||= Label.joins(:merge_requests)
- .where(
- merge_requests: { target_project_id: project.id },
- labels: { group_id: old_group.self_and_ancestors }
- )
+ @labels_applied_to_mrs ||= if use_optimized_group_labels_query?
+ Label.joins(:merge_requests)
+ .joins("INNER JOIN namespaces on namespaces.id = labels.group_id AND namespaces.type = 'Group'" )
+ .where(merge_requests: { target_project_id: project.id }).reorder(nil)
+ else
+ Label.joins(:merge_requests)
+ .where(
+ merge_requests: { target_project_id: project.id },
+ labels: { group_id: old_group.self_and_ancestors }
+ )
+ end
end
# rubocop: enable CodeReuse/ActiveRecord
@@ -88,5 +99,9 @@ module Labels
.update_all(label_id: new_label_id)
end
# rubocop: enable CodeReuse/ActiveRecord
+
+ def use_optimized_group_labels_query?
+ Feature.enabled?(:use_optimized_group_labels_query, project.root_namespace, default_enabled: :yaml)
+ end
end
end