summaryrefslogtreecommitdiff
path: root/db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb')
-rw-r--r--db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb b/db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb
new file mode 100644
index 00000000000..90c7b2731c8
--- /dev/null
+++ b/db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+class AddPrimaryKeyToMergeRequestContextCommitDiffFiles < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ execute(<<~SQL)
+ DELETE FROM merge_request_context_commit_diff_files
+ WHERE merge_request_context_commit_id IS NULL;
+
+ DELETE FROM merge_request_context_commit_diff_files df1
+ USING merge_request_context_commit_diff_files df2
+ WHERE df1.ctid < df2.ctid
+ AND df1.merge_request_context_commit_id = df2.merge_request_context_commit_id
+ AND df1.relative_order = df2.relative_order;
+
+ ALTER TABLE merge_request_context_commit_diff_files
+ ADD CONSTRAINT merge_request_context_commit_diff_files_pkey PRIMARY KEY (merge_request_context_commit_id, relative_order);
+ SQL
+ end
+
+ def down
+ execute(<<~SQL)
+ ALTER TABLE merge_request_context_commit_diff_files
+ DROP CONSTRAINT merge_request_context_commit_diff_files_pkey,
+ ALTER COLUMN merge_request_context_commit_id DROP NOT NULL
+ SQL
+ end
+end