summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2017-09-11 14:05:13 +0200
committerYorick Peterse <yorickpeterse@gmail.com>2017-09-11 15:52:30 +0200
commit1e1c075d30e263abc13c13eb6d996b4c7ba2905a (patch)
treeb94f553d157e0d573ad4b174d3ff5dc9f5da2d08
parent5cc140b202a0fc9bf2056b481c977bbcf9255919 (diff)
downloadgitlab-ce-reset-events-primary-key-mysql.tar.gz
Reset primary keys after swapping events tablesreset-events-primary-key-mysql
This is required as otherwise newly created events will start with the wrong ID.
-rw-r--r--db/migrate/20170830131015_swap_event_migration_tables.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/db/migrate/20170830131015_swap_event_migration_tables.rb b/db/migrate/20170830131015_swap_event_migration_tables.rb
index 5128d1b2fe7..a256de4a8af 100644
--- a/db/migrate/20170830131015_swap_event_migration_tables.rb
+++ b/db/migrate/20170830131015_swap_event_migration_tables.rb
@@ -7,6 +7,10 @@ class SwapEventMigrationTables < ActiveRecord::Migration
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
+ class Event < ActiveRecord::Base
+ self.table_name = 'events'
+ end
+
def up
rename_tables
end
@@ -19,5 +23,25 @@ class SwapEventMigrationTables < ActiveRecord::Migration
rename_table :events, :events_old
rename_table :events_for_migration, :events
rename_table :events_old, :events_for_migration
+
+ # Once swapped we need to reset the primary key of the new "events" table to
+ # make sure that data created starts with the right value. This isn't
+ # necessary for events_for_migration since we replicate existing primary key
+ # values to it.
+ if Gitlab::Database.postgresql?
+ reset_primary_key_for_postgresql
+ else
+ reset_primary_key_for_mysql
+ end
+ end
+
+ def reset_primary_key_for_postgresql
+ reset_pk_sequence!(Event.table_name)
+ end
+
+ def reset_primary_key_for_mysql
+ amount = Event.pluck('COALESCE(MAX(id), 1)').first
+
+ execute "ALTER TABLE #{Event.table_name} AUTO_INCREMENT = #{amount}"
end
end