From b9657ed1e0c65ce132bf35162fd81fb65ccbff88 Mon Sep 17 00:00:00 2001 From: Jan Provaznik Date: Tue, 10 Sep 2019 11:52:48 +0000 Subject: Add index on group_id column concurrently This fixes previously added migration which caused timeouts on big events table. --- db/migrate/20190826100605_add_group_column_to_events.rb | 14 ++++++++++++-- db/schema.rb | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'db') diff --git a/db/migrate/20190826100605_add_group_column_to_events.rb b/db/migrate/20190826100605_add_group_column_to_events.rb index cd7b2b1d96a..dfc9d8cbdf1 100644 --- a/db/migrate/20190826100605_add_group_column_to_events.rb +++ b/db/migrate/20190826100605_add_group_column_to_events.rb @@ -1,9 +1,19 @@ # 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_index(:events, :group_id) + add_concurrent_foreign_key(:events, :namespaces, column: :group_id, on_delete: :cascade) + end + + def down + remove_column(:events, :group_id) if column_exists?(:events, :group_id) end end diff --git a/db/schema.rb b/db/schema.rb index 6ddfb8bcb39..70f3a42e7f8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -3864,7 +3864,7 @@ ActiveRecord::Schema.define(version: 2019_09_05_223900) do add_foreign_key "epics", "users", column: "assignee_id", name: "fk_dccd3f98fc", on_delete: :nullify add_foreign_key "epics", "users", column: "author_id", name: "fk_3654b61b03", on_delete: :cascade add_foreign_key "epics", "users", column: "closed_by_id", name: "fk_aa5798e761", on_delete: :nullify - add_foreign_key "events", "namespaces", column: "group_id", on_delete: :cascade + add_foreign_key "events", "namespaces", column: "group_id", name: "fk_61fbf6ca48", on_delete: :cascade add_foreign_key "events", "projects", on_delete: :cascade add_foreign_key "events", "users", column: "author_id", name: "fk_edfd187b6f", on_delete: :cascade add_foreign_key "external_pull_requests", "projects", on_delete: :cascade -- cgit v1.2.1