From 49fb31db416cb73899cf5211de8f5817c00adc0b Mon Sep 17 00:00:00 2001
From: Bob Van Landuyt <bob@gitlab.com>
Date: Thu, 11 May 2017 16:25:15 +0200
Subject: [PATCH] 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.
---
 lib/gitlab/database/migration_helpers.rb | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/lib/gitlab/database/migration_helpers.rb b/lib/gitlab/database/migration_helpers.rb
index 298b1a1f4e6..f04a907004c 100644
--- a/lib/gitlab/database/migration_helpers.rb
+++ b/lib/gitlab/database/migration_helpers.rb
@@ -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)
-- 
2.30.9