Commit 1e1c075d authored by Yorick Peterse's avatar Yorick Peterse

Reset primary keys after swapping events tables

This is required as otherwise newly created events will start with the
wrong ID.
parent 5cc140b2
...@@ -7,6 +7,10 @@ class SwapEventMigrationTables < ActiveRecord::Migration ...@@ -7,6 +7,10 @@ class SwapEventMigrationTables < ActiveRecord::Migration
# Set this constant to true if this migration requires downtime. # Set this constant to true if this migration requires downtime.
DOWNTIME = false DOWNTIME = false
class Event < ActiveRecord::Base
self.table_name = 'events'
end
def up def up
rename_tables rename_tables
end end
...@@ -19,5 +23,25 @@ class SwapEventMigrationTables < ActiveRecord::Migration ...@@ -19,5 +23,25 @@ class SwapEventMigrationTables < ActiveRecord::Migration
rename_table :events, :events_old rename_table :events, :events_old
rename_table :events_for_migration, :events rename_table :events_for_migration, :events
rename_table :events_old, :events_for_migration 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
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment