Welcome to mirror list, hosted at ThFree Co, Russian Federation.

20230924095357_swap_columns_for_ci_project_monthly_usages_shared_runners_duration.rb « post_migrate « db - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0e9ab8aecb83d7aaaf984a3ef141c7590cc4b31e (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 SwapColumnsForCiProjectMonthlyUsagesSharedRunnersDuration < Gitlab::Database::Migration[2.1]
  disable_ddl_transaction!

  TABLE_NAME = :ci_project_monthly_usages
  OLD_COLUMN_NAME = :shared_runners_duration
  NEW_COLUMN_NAME = :shared_runners_duration_convert_to_bigint
  TEMP_COLUMN_NAME = :temp_shared_runners_duration

  def up
    swap
  end

  def down
    swap
  end

  private

  def swap
    with_lock_retries(raise_on_exhaustion: true) do
      execute "LOCK TABLE #{TABLE_NAME} IN ACCESS EXCLUSIVE MODE"

      execute "ALTER TABLE #{TABLE_NAME} RENAME COLUMN #{OLD_COLUMN_NAME} TO #{TEMP_COLUMN_NAME}"
      execute "ALTER TABLE #{TABLE_NAME} RENAME COLUMN #{NEW_COLUMN_NAME} TO #{OLD_COLUMN_NAME}"
      execute "ALTER TABLE #{TABLE_NAME} RENAME COLUMN #{TEMP_COLUMN_NAME} TO #{NEW_COLUMN_NAME}"
    end
  end
end