Merge branch 'background-migration-fix' into 'master'
Reduce UPDATEs for background column type changes Closes #42158 See merge request gitlab-org/gitlab-ce!16551
This commit is contained in:
commit
792e9ed7fa
3 changed files with 6 additions and 3 deletions
|
@ -28,6 +28,8 @@ module Gitlab
|
|||
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 @@ module Gitlab
|
|||
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 @@ describe Gitlab::Database::MigrationHelpers do
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue