33 lines
856 B
Ruby
33 lines
856 B
Ruby
![]() |
# frozen_string_literal: true
|
||
|
|
||
|
class AddOldestMergeRequestsIndex < ActiveRecord::Migration[6.0]
|
||
|
include Gitlab::Database::SchemaHelpers
|
||
|
include Gitlab::Database::MigrationHelpers
|
||
|
|
||
|
disable_ddl_transaction!
|
||
|
|
||
|
# Set this constant to true if this migration requires downtime.
|
||
|
DOWNTIME = false
|
||
|
|
||
|
INDEX = 'index_on_merge_requests_for_latest_diffs'
|
||
|
|
||
|
def up
|
||
|
return if index_exists_by_name?('merge_requests', INDEX)
|
||
|
|
||
|
execute "CREATE INDEX CONCURRENTLY #{INDEX} ON merge_requests " \
|
||
|
'USING btree (target_project_id) INCLUDE (id, latest_merge_request_diff_id)'
|
||
|
|
||
|
create_comment(
|
||
|
'INDEX',
|
||
|
INDEX,
|
||
|
'Index used to efficiently obtain the oldest merge request for a commit SHA'
|
||
|
)
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
return unless index_exists_by_name?('merge_requests', INDEX)
|
||
|
|
||
|
execute "DROP INDEX CONCURRENTLY #{INDEX}"
|
||
|
end
|
||
|
end
|