Read about our upcoming Code of Conduct on this issue

Commit 183b11d0 authored by Douwe Maan's avatar Douwe Maan
Browse files

Merge branch 'background-migration-fix' into 'master'

Reduce UPDATEs for background column type changes

Closes #42158

See merge request gitlab-org/gitlab-ce!16551
......@@ -28,6 +28,8 @@ def perform(table, copy_from, copy_to, start_id, end_id)
UPDATE #{quoted_table}
SET #{quoted_copy_to} = #{quoted_copy_from}
WHERE id BETWEEN #{start_id} AND #{end_id}
AND #{quoted_copy_from} IS NOT NULL
AND #{quoted_copy_to} IS NULL
SQL
end
......
......@@ -525,8 +525,9 @@ def change_column_type_using_background_migration(
install_rename_triggers(table, column, temp_column)
# Schedule the jobs that will copy the data from the old column to the
# new one.
relation.each_batch(of: batch_size) do |batch, index|
# new one. Rows with NULL values in our source column are skipped since
# the target column is already NULL at this point.
relation.where.not(column => nil).each_batch(of: batch_size) do |batch, index|
start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
max_index = index
......
......@@ -1038,7 +1038,7 @@
end
describe '#change_column_type_using_background_migration' do
let!(:issue) { create(:issue) }
let!(:issue) { create(:issue, :closed, closed_at: Time.zone.now) }
let(:issue_model) do
Class.new(ActiveRecord::Base) do
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment