diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2018-04-19 08:17:12 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-04-19 08:17:12 +0000 |
commit | 470b3cb5a1009f63265efbd1a049ae7677b6c5c4 (patch) | |
tree | 58a4a70f4330bfb1ef7e2008488d4123ba040106 /app/services/labels | |
parent | 0517e1d8538c57a4c298695a053368c497b86a87 (diff) | |
download | gitlab-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.rb | 11 |
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 |