diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2019-09-09 18:16:32 +0200 |
---|---|---|
committer | Jan Provaznik <jprovaznik@gitlab.com> | 2019-09-09 19:34:54 +0200 |
commit | 6c3bd1b1210fb8fb9cced223a93c115885877547 (patch) | |
tree | b55d44bdf129992d2d90a40f53ecfa636a832a34 | |
parent | 55f05e6edcff2f71ae4785e72feb43eddce45e9d (diff) | |
download | gitlab-ce-fix-events-migration.tar.gz |
Add index on group_id column concurrentlyfix-events-migration
This fixes previously added migration which caused timeouts on
big events table.
-rw-r--r-- | db/migrate/20190826100605_add_group_column_to_events.rb | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/db/migrate/20190826100605_add_group_column_to_events.rb b/db/migrate/20190826100605_add_group_column_to_events.rb index cd7b2b1d96a..a940764bc9f 100644 --- a/db/migrate/20190826100605_add_group_column_to_events.rb +++ b/db/migrate/20190826100605_add_group_column_to_events.rb @@ -1,9 +1,21 @@ # frozen_string_literal: true class AddGroupColumnToEvents < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + DOWNTIME = false - def change - add_reference :events, :group, index: true, foreign_key: { to_table: :namespaces, on_delete: :cascade } + disable_ddl_transaction! + + def up + add_column(:events, :group_id, :bigint) unless column_exists?(:events, :group_id) + add_concurrent_foreign_key(:events, :namespaces, column: :group_id, on_delete: :cascade) + add_concurrent_index(:events, :group_id) + end + + def down + remove_foreign_key_without_error(:events, column: :group_id) + remove_concurrent_index(:events, :group_id) if index_exists?(:events, :group_id) + remove_column(:events, :group_id) if column_exists?(:events, :group_id) end end |