summaryrefslogtreecommitdiff
path: root/app/services/labels
diff options
context:
space:
mode:
authorJan Provaznik <jprovaznik@gitlab.com>2018-04-19 08:17:12 +0000
committerSean McGivern <sean@mcgivern.me.uk>2018-04-19 08:17:12 +0000
commit470b3cb5a1009f63265efbd1a049ae7677b6c5c4 (patch)
tree58a4a70f4330bfb1ef7e2008488d4123ba040106 /app/services/labels
parent0517e1d8538c57a4c298695a053368c497b86a87 (diff)
downloadgitlab-ce-470b3cb5a1009f63265efbd1a049ae7677b6c5c4.tar.gz
Fix label links update on project transfer
Diffstat (limited to 'app/services/labels')
-rw-r--r--app/services/labels/transfer_service.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/app/services/labels/transfer_service.rb b/app/services/labels/transfer_service.rb
index 775efed48eb..9b7486cf53b 100644
--- a/app/services/labels/transfer_service.rb
+++ b/app/services/labels/transfer_service.rb
@@ -64,9 +64,14 @@ module Labels
end
def update_label_links(labels, old_label_id:, new_label_id:)
- LabelLink.joins(:label)
- .merge(labels)
- .where(label_id: old_label_id)
+ # use 'labels' relation to get label_link ids only of issues/MRs
+ # in the project being transferred.
+ # IDs are fetched in a separate query because MySQL doesn't
+ # allow referring of 'label_links' table in UPDATE query:
+ # https://gitlab.com/gitlab-org/gitlab-ce/-/jobs/62435068
+ link_ids = labels.pluck('label_links.id')
+
+ LabelLink.where(id: link_ids, label_id: old_label_id)
.update_all(label_id: new_label_id)
end