Commit 792e9ed7 authored by Douwe Maan's avatar Douwe Maan

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

Reduce UPDATEs for background column type changes

Closes #42158

See merge request gitlab-org/gitlab-ce!16551
parents 7b0872c7 0054d383
...@@ -28,6 +28,8 @@ module Gitlab ...@@ -28,6 +28,8 @@ module Gitlab
UPDATE #{quoted_table} UPDATE #{quoted_table}
SET #{quoted_copy_to} = #{quoted_copy_from} SET #{quoted_copy_to} = #{quoted_copy_from}
WHERE id BETWEEN #{start_id} AND #{end_id} WHERE id BETWEEN #{start_id} AND #{end_id}
AND #{quoted_copy_from} IS NOT NULL
AND #{quoted_copy_to} IS NULL
SQL SQL
end end
......
...@@ -525,8 +525,9 @@ module Gitlab ...@@ -525,8 +525,9 @@ module Gitlab
install_rename_triggers(table, column, temp_column) install_rename_triggers(table, column, temp_column)
# Schedule the jobs that will copy the data from the old column to the # Schedule the jobs that will copy the data from the old column to the
# new one. # new one. Rows with NULL values in our source column are skipped since
relation.each_batch(of: batch_size) do |batch, index| # 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 start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
max_index = index max_index = index
......
...@@ -1038,7 +1038,7 @@ describe Gitlab::Database::MigrationHelpers do ...@@ -1038,7 +1038,7 @@ describe Gitlab::Database::MigrationHelpers do
end end
describe '#change_column_type_using_background_migration' do 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 let(:issue_model) do
Class.new(ActiveRecord::Base) 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