Clean up schema of the "merge_requests" table
This cleans up the schema of merge_requests
as outlined in https://gitlab.com/gitlab-org/gitlab-ce/issues/31825.
Migration Output
Output
== 20171114150259 MergeRequestsAuthorIdForeignKey: migrating ==================
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0002s
-- execute("ALTER TABLE merge_requests\nADD CONSTRAINT fk_e719a85f8a\nFOREIGN KEY (author_id)\nREFERENCES users (id)\nON DELETE SET NULL\nNOT VALID;\n")
-> 0.0141s
-- execute("ALTER TABLE merge_requests VALIDATE CONSTRAINT fk_e719a85f8a;")
-> 0.0037s
== 20171114150259 MergeRequestsAuthorIdForeignKey: migrated (0.1782s) =========
== 20171114160005 MergeRequestsAssigneeIdForeignKey: migrating ================
-- transaction_open?()
-> 0.0001s
-- execute("SET statement_timeout TO 0")
-> 0.0011s
-- execute("ALTER TABLE merge_requests\nADD CONSTRAINT fk_6149611a04\nFOREIGN KEY (assignee_id)\nREFERENCES users (id)\nON DELETE SET NULL\nNOT VALID;\n")
-> 0.0078s
-- execute("ALTER TABLE merge_requests VALIDATE CONSTRAINT fk_6149611a04;")
-> 0.0069s
== 20171114160005 MergeRequestsAssigneeIdForeignKey: migrated (0.0219s) =======
== 20171114160904 MergeRequestsUpdatedByIdForeignKey: migrating ===============
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0003s
-- add_index(:merge_requests, :updated_by_id, {:where=>"updated_by_id IS NOT NULL", :algorithm=>:concurrently})
-> 0.0253s
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0009s
-- execute("ALTER TABLE merge_requests\nADD CONSTRAINT fk_641731faff\nFOREIGN KEY (updated_by_id)\nREFERENCES users (id)\nON DELETE SET NULL\nNOT VALID;\n")
-> 0.0077s
-- execute("ALTER TABLE merge_requests VALIDATE CONSTRAINT fk_641731faff;")
-> 0.0097s
== 20171114160904 MergeRequestsUpdatedByIdForeignKey: migrated (0.0468s) ======
== 20171114161720 MergeRequestsMergeUserIdForeignKey: migrating ===============
-- transaction_open?()
-> 0.0001s
-- execute("SET statement_timeout TO 0")
-> 0.0015s
-- add_index(:merge_requests, :merge_user_id, {:where=>"merge_user_id IS NOT NULL", :algorithm=>:concurrently})
-> 0.0204s
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0007s
-- execute("ALTER TABLE merge_requests\nADD CONSTRAINT fk_ad525e1f87\nFOREIGN KEY (merge_user_id)\nREFERENCES users (id)\nON DELETE SET NULL\nNOT VALID;\n")
-> 0.0037s
-- execute("ALTER TABLE merge_requests VALIDATE CONSTRAINT fk_ad525e1f87;")
-> 0.0062s
== 20171114161720 MergeRequestsMergeUserIdForeignKey: migrated (0.0410s) ======
== 20171114161914 MergeRequestsSourceProjectIdForeignKey: migrating ===========
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0006s
-- execute("ALTER TABLE merge_requests\nADD CONSTRAINT fk_3308fe130c\nFOREIGN KEY (source_project_id)\nREFERENCES projects (id)\nON DELETE SET NULL\nNOT VALID;\n")
-> 0.0049s
-- execute("ALTER TABLE merge_requests VALIDATE CONSTRAINT fk_3308fe130c;")
-> 0.0047s
== 20171114161914 MergeRequestsSourceProjectIdForeignKey: migrated (0.0141s) ==
== 20171114162227 MergeRequestsMilestoneIdForeignKey: migrating ===============
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0002s
-- execute("ALTER TABLE merge_requests\nADD CONSTRAINT fk_6a5165a692\nFOREIGN KEY (milestone_id)\nREFERENCES milestones (id)\nON DELETE SET NULL\nNOT VALID;\n")
-> 0.0054s
-- execute("ALTER TABLE merge_requests VALIDATE CONSTRAINT fk_6a5165a692;")
-> 0.0078s
== 20171114162227 MergeRequestsMilestoneIdForeignKey: migrated (0.0214s) ======
Database Checklist
When adding migrations:
-
Updated db/schema.rb
-
Added a down
method so the migration can be reverted -
Added the output of the migration(s) to the MR body -
Added the execution time of the migration(s) to the MR body -
Made sure the migration won't interfere with a running GitLab cluster, for example by disabling transactions for long running migrations
When adding indexes:
-
Described the need for these indexes in the MR body - These are necessary for a few foreign keys
-
Made sure existing indexes can not be reused instead
When adding foreign keys to existing tables:
-
Included a migration to remove orphaned rows in the source table -
Removed any instances of dependent: ...
that may no longer be necessary
General Checklist
-
Changelog entry added, if necessary - Review
-
Has been reviewed by Backend -
Has been reviewed by Database
-
-
Conform by the merge request performance guides -
Conform by the style guides -
Squashed related commits together
Edited by Sean McGivern