diff options
author | Felipe Artur <fcardozo@gitlab.com> | 2019-05-06 22:45:17 +0300 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2019-05-06 22:45:17 +0300 |
commit | c40bad741f963f0b3bf3868d485e419dbbf7b37c (patch) | |
tree | e41ea99f73a250154b8923eb2cca0ca1ce57ad61 /db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb | |
parent | adc83d25a7ebf636941f72881a8828e6ebb5ad64 (diff) |
Fix issuables state_id nil when importing projects from GitHub
Issues and merge requests imported from GitHub are having state_id
set to null. This fixes the GitHub project importer and schedule
migrations to fix state_id.
Diffstat (limited to 'db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb')
-rw-r--r-- | db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb b/db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb new file mode 100644 index 00000000000..8e9838e1afb --- /dev/null +++ b/db/migrate/20190506135337_add_temporary_indexes_to_state_id.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +# This migration adds temporary indexes to state_id column of issues +# and merge_requests tables. It will be used only to peform the scheduling +# for populating state_id in a post migrate and will be removed after it. +# Check: ScheduleSyncIssuablesStateIdWhereNil. + +class AddTemporaryIndexesToStateId < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + %w(issues merge_requests).each do |table| + add_concurrent_index( + table, + 'id', + name: index_name_for(table), + where: "state_id IS NULL" + ) + end + end + + def down + remove_concurrent_index_by_name(:issues, index_name_for("issues")) + remove_concurrent_index_by_name(:merge_requests, index_name_for("merge_requests")) + end + + def index_name_for(table) + "idx_on_#{table}_where_state_id_is_null" + end +end |