提交 49fb31db 编写于 作者: B Bob Van Landuyt

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.
上级 e3fa5275
......@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册