From 9f62c6791381be14000168d098ab867015db6c4b Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Fri, 17 Nov 2017 11:10:14 +0000 Subject: Merge branch 'sh-background-migration-move-mr-diff-id' into 'master' Convert migration to populate latest merge request ID into a background migration See merge request gitlab-org/gitlab-ce!15440 (cherry picked from commit 2dff37762f76b195d6b36d73dab544d0ec5e6c83) 5cecff89 Convert migration to populate latest merge request ID into a background migration --- ..._merge_requests_latest_merge_request_diff_id.rb | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/gitlab/background_migration/populate_merge_requests_latest_merge_request_diff_id.rb (limited to 'lib/gitlab') diff --git a/lib/gitlab/background_migration/populate_merge_requests_latest_merge_request_diff_id.rb b/lib/gitlab/background_migration/populate_merge_requests_latest_merge_request_diff_id.rb new file mode 100644 index 00000000000..7e109e96e73 --- /dev/null +++ b/lib/gitlab/background_migration/populate_merge_requests_latest_merge_request_diff_id.rb @@ -0,0 +1,30 @@ +module Gitlab + module BackgroundMigration + class PopulateMergeRequestsLatestMergeRequestDiffId + BATCH_SIZE = 1_000 + + class MergeRequest < ActiveRecord::Base + self.table_name = 'merge_requests' + + include ::EachBatch + end + + def perform(start_id, stop_id) + update = ' + latest_merge_request_diff_id = ( + SELECT MAX(id) + FROM merge_request_diffs + WHERE merge_requests.id = merge_request_diffs.merge_request_id + )'.squish + + MergeRequest + .where(id: start_id..stop_id) + .where(latest_merge_request_diff_id: nil) + .each_batch(of: BATCH_SIZE) do |relation| + + relation.update_all(update) + end + end + end + end +end -- cgit v1.2.1