diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2017-09-11 14:05:13 +0200 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2017-09-11 15:52:30 +0200 |
commit | 1e1c075d30e263abc13c13eb6d996b4c7ba2905a (patch) | |
tree | b94f553d157e0d573ad4b174d3ff5dc9f5da2d08 /db/migrate | |
parent | 5cc140b202a0fc9bf2056b481c977bbcf9255919 (diff) | |
download | gitlab-ce-1e1c075d30e263abc13c13eb6d996b4c7ba2905a.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.
Diffstat (limited to 'db/migrate')
-rw-r--r-- | db/migrate/20170830131015_swap_event_migration_tables.rb | 24 |
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 |