Add a new column before creating rename triggers
MySQL doesn't allow us to create a trigger for a column that doesn't exist yet. Failing with this error: ``` Mysql2::Error: Unknown column 'build_events' in 'NEW': CREATE TRIGGER trigger_6a80c097c862_insert BEFORE INSERT ON `services` FOR EACH ROW SET NEW.`build_events` = NEW.`job_events` ``` Creating the new column before creating the trigger avoids this.
This commit is contained in:
parent
e3fa527519
commit
49fb31db41
|
|
@ -278,6 +278,16 @@ module Gitlab
|
|||
raise 'rename_column_concurrently can not be run inside a transaction'
|
||||
end
|
||||
|
||||
old_col = column_for(table, old)
|
||||
new_type = type || old_col.type
|
||||
|
||||
add_column(table, new, new_type,
|
||||
limit: old_col.limit,
|
||||
default: old_col.default,
|
||||
null: old_col.null,
|
||||
precision: old_col.precision,
|
||||
scale: old_col.scale)
|
||||
|
||||
trigger_name = rename_trigger_name(table, old, new)
|
||||
quoted_table = quote_table_name(table)
|
||||
quoted_old = quote_column_name(old)
|
||||
|
|
@ -291,16 +301,6 @@ module Gitlab
|
|||
quoted_old, quoted_new)
|
||||
end
|
||||
|
||||
old_col = column_for(table, old)
|
||||
new_type = type || old_col.type
|
||||
|
||||
add_column(table, new, new_type,
|
||||
limit: old_col.limit,
|
||||
default: old_col.default,
|
||||
null: old_col.null,
|
||||
precision: old_col.precision,
|
||||
scale: old_col.scale)
|
||||
|
||||
update_column_in_batches(table, new, Arel::Table.new(table)[old])
|
||||
|
||||
copy_indexes(table, old, new)
|
||||
|
|
|
|||
Loading…
Reference in New Issue