summaryrefslogtreecommitdiff
path: root/db/post_migrate/20220309084954_remove_leftover_external_pull_request_deletions.rb
blob: ea9fd6b28c2b70316aa922901a7bf3fd90eb3c1e (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
# frozen_string_literal: true

class RemoveLeftoverExternalPullRequestDeletions < Gitlab::Database::Migration[1.0]
  disable_ddl_transaction!

  def up
    # Delete all pending record deletions in the public.external_pull_requests until
    # there are no more rows left.
    loop do
      result = execute <<~SQL
      DELETE FROM "loose_foreign_keys_deleted_records"
      WHERE
      ("loose_foreign_keys_deleted_records"."partition", "loose_foreign_keys_deleted_records"."id") IN (
        SELECT "loose_foreign_keys_deleted_records"."partition", "loose_foreign_keys_deleted_records"."id"
        FROM "loose_foreign_keys_deleted_records"
        WHERE
        "loose_foreign_keys_deleted_records"."fully_qualified_table_name" = 'public.external_pull_requests' AND
        "loose_foreign_keys_deleted_records"."status" = 1
        LIMIT 100
      )
      SQL

      break if result.cmd_tuples == 0
    end
  end

  def down
    # no-op
  end
end