summaryrefslogtreecommitdiff
path: root/db/migrate/20201202155913_add_primary_key_to_merge_request_context_commit_diff_files.rb
blob: 90c7b2731c8b4d02705e2c3985246be252a20303 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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