summaryrefslogtreecommitdiff
path: root/db/migrate
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/20190402150158_backport_enterprise_schema.rb2
-rw-r--r--db/migrate/20190801060809_delete_kubernetes_services.rb5
-rw-r--r--db/migrate/20191120115530_encrypt_plaintext_attributes_on_application_settings.rb16
-rw-r--r--db/migrate/20201008013434_generate_ci_jwt_signing_key.rb2
-rw-r--r--db/migrate/20210215172449_remove_artifact_expiry_temp_index.rb18
-rw-r--r--db/migrate/20210311120153_initialize_conversion_of_events_id_to_bigint.rb2
-rw-r--r--db/migrate/20210311120154_initialize_conversion_of_push_event_payloads_event_id_to_bigint.rb2
-rw-r--r--db/migrate/20210316171009_create_packages_helm_file_metadata.rb20
-rw-r--r--db/migrate/20210317123054_add_throttle_package_registry_columns.rb14
-rw-r--r--db/migrate/20210319071214_add_helm_max_file_size_to_plan_limits.rb9
-rw-r--r--db/migrate/20210323125809_create_status_check_responses_table.rb19
-rw-r--r--db/migrate/20210323130831_add_merge_request_foreign_key_to_status_check_responses.rb17
-rw-r--r--db/migrate/20210323131543_add_external_approval_rule_foreign_key_to_status_check_responses.rb17
-rw-r--r--db/migrate/20210407111027_add_whats_new_application_setting.rb7
-rw-r--r--db/migrate/20210407140539_add_verification_state_and_started_at_to_terraform_state_version_table.rb10
-rw-r--r--db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb33
-rw-r--r--db/migrate/20210412172030_add_configured_at_to_security_orchestration_policy.rb9
-rw-r--r--db/migrate/20210413155324_add_pause_seconds_to_batched_background_migrations.rb7
-rw-r--r--db/migrate/20210414045322_add_pause_seconds_to_batched_background_migration_jobs.rb7
-rw-r--r--db/migrate/20210414100914_add_bulk_import_exports_table.rb25
-rw-r--r--db/migrate/20210414130017_add_foreign_key_to_bulk_import_exports_on_project.rb17
-rw-r--r--db/migrate/20210414130526_add_foreign_key_to_bulk_import_exports_on_group.rb17
-rw-r--r--db/migrate/20210414131807_add_bulk_import_exports_table_indexes.rb29
-rw-r--r--db/migrate/20210414133310_add_bulk_import_export_uploads_table.rb19
-rw-r--r--db/migrate/20210415100159_initialize_conversion_of_ci_build_needs_to_bigint.rb17
-rw-r--r--db/migrate/20210415172516_create_vulnerability_finding_evidence_requests.rb28
-rw-r--r--db/migrate/20210416172516_create_vulnerability_finding_evidence_responses.rb27
-rw-r--r--db/migrate/20210419090412_remove_debian_group_architectures_distribution_id_index.rb19
-rw-r--r--db/migrate/20210419090542_remove_debian_project_architectures_distribution_id_index.rb19
-rw-r--r--db/migrate/20210419203017_add_remote_import_url_to_import_export_upload.rb8
-rw-r--r--db/migrate/20210419203018_add_remote_text_limit_to_import_url_in_import_export_upload.rb15
-rw-r--r--db/migrate/20210419224834_update_issues_iteration_foreign_key.rb23
-rw-r--r--db/migrate/20210420012444_change_web_hook_events_default.rb15
-rw-r--r--db/migrate/20210420012909_index_cluster_agent_tokens_on_last_used_at.rb20
-rw-r--r--db/migrate/20210420120734_initialize_conversion_of_ci_job_artifacts_to_bigint.rb22
-rw-r--r--db/migrate/20210420173030_add_verification_indexes_to_terraform_state_versions.rb26
-rw-r--r--db/migrate/20210420210642_recreate_index_for_project_deployments_with_environment_id_and_date_at.rb23
-rw-r--r--db/migrate/20210420221106_update_merge_requests_iteration_foreign_key.rb23
-rw-r--r--db/migrate/20210421021510_add_deactivate_dormant_users_to_application_settings.rb7
-rw-r--r--db/migrate/20210421022010_add_index_for_dormant_users.rb19
-rw-r--r--db/migrate/20210421081724_add_codeowners_devops_adoption_snapshot.rb8
-rw-r--r--db/migrate/20210421190157_remove_elastic_task_null_constraint_from_elastic_reindexing_subtasks.rb19
-rw-r--r--db/migrate/20210422022825_initialize_conversion_of_ci_sources_pipelines_source_job_id_to_bigint.rb18
-rw-r--r--db/migrate/20210422142647_add_project_id_next_run_at_index_to_container_expiration_policies.rb17
-rw-r--r--db/migrate/20210422181809_add_project_to_timelogs.rb19
-rw-r--r--db/migrate/20210422195929_create_elastic_reindexing_slices.rb44
-rw-r--r--db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb18
-rw-r--r--db/migrate/20210423054537_add_dast_site_profile_id_fk_to_dast_site_profiles_pipelines.rb19
-rw-r--r--db/migrate/20210423054846_add_ci_pipeline_id_fk_to_dast_site_profiles_pipelines.rb19
-rw-r--r--db/migrate/20210423155059_add_runner_registration_to_plan_limits.rb8
-rw-r--r--db/migrate/20210423164702_insert_runner_registration_plan_limits.rb26
-rw-r--r--db/migrate/20210423171304_re_order_fk_source_project_id_in_merge_requests.rb24
-rw-r--r--db/migrate/20210424115725_swap_partitioned_web_hook_logs.rb15
-rw-r--r--db/migrate/20210424163400_add_project_id_fk_to_timelogs.rb22
-rw-r--r--db/migrate/20210426094524_initialize_conversion_of_ci_builds_to_bigint.rb17
-rw-r--r--db/migrate/20210427045604_initialize_conversion_of_ci_build_trace_chunks_to_bigint.rb16
-rw-r--r--db/migrate/20210427062807_add_index_to_batched_migration_jobs_status.rb17
-rw-r--r--db/migrate/20210427084924_initialize_conversion_of_ci_builds_runner_session_to_bigint.rb16
-rw-r--r--db/migrate/20210427094931_add_execution_order_index_to_batched_background_migration_jobs.rb17
-rw-r--r--db/migrate/20210427125400_add_spamcheck_api_key_to_application_setting.rb13
-rw-r--r--db/migrate/20210427194958_add_description_roll_over_to_iterations_cadences.rb19
-rw-r--r--db/migrate/20210427200840_add_text_limit_to_iterations_cadences_description.rb15
-rw-r--r--db/migrate/20210428151144_update_invalid_web_hooks.rb24
-rw-r--r--db/migrate/20210428151238_validate_foreign_key_on_group_hooks.rb15
-rw-r--r--db/migrate/20210429024843_add_escalation_policies.rb25
-rw-r--r--db/migrate/20210429032320_add_escalation_rules.rb19
-rw-r--r--db/migrate/20210429131525_create_user_credit_card_validations.rb22
-rw-r--r--db/migrate/20210429181325_add_failure_tracking_to_web_hooks.rb11
-rw-r--r--db/migrate/20210429192653_add_generic_package_duplicate_settings_to_namespace_package_settings.rb11
-rw-r--r--db/migrate/20210429193106_add_text_limit_to_namespace_package_settings_generic_duplicate_exception_regex.rb15
-rw-r--r--db/migrate/20210430034712_add_alert_manager_token_to_clusters_integration_prometheus.rb10
-rw-r--r--db/migrate/20210430100947_add_elasticsearch_username_password_to_application_settings.rb13
-rw-r--r--db/migrate/20210430122951_add_snapshot_namespace_id.rb7
-rw-r--r--db/migrate/20210430124212_add_display_namespace_id_to_segments.rb7
-rw-r--r--db/migrate/20210430124630_add_devops_adoption_indexes.rb32
-rw-r--r--db/migrate/20210430154631_add_slice_multiplier_and_max_slices_to_elastic_reindexing_task.rb18
-rw-r--r--db/migrate/20210503105022_create_project_value_streams.rb27
-rw-r--r--db/migrate/20210503105845_add_project_value_stream_id_to_project_stages.rb30
-rw-r--r--db/migrate/20210503131747_add_web_hook_calls_to_plan_limits.rb7
-rw-r--r--db/migrate/20210504085144_add_index_on_web_hook_project_id_recent_failures.rb17
-rw-r--r--db/migrate/20210504135823_add_floc_application_settings.rb7
-rw-r--r--db/migrate/20210504153354_create_clusters_integration_elasticstack.rb15
-rw-r--r--db/migrate/20210504164429_create_partial_indexes_for_pending_and_running_builds.rb20
-rw-r--r--db/migrate/20210505124816_add_text_limit_to_elasticsearch_username.rb15
-rw-r--r--db/migrate/20210507191949_add_remove_on_issue_close_to_labels.rb17
-rw-r--r--db/migrate/20210510191551_add_body_to_findings_evidences_request.rb10
-rw-r--r--db/migrate/20210510191552_add_limit_to_findings_evidences_request_body.rb17
-rw-r--r--db/migrate/20210511104929_add_epic_board_recent_visits_table.rb24
-rw-r--r--db/migrate/20210511104930_add_index_to_epic_board_recent_visits.rb20
-rw-r--r--db/migrate/20210512183309_add_body_to_findings_evidences_response.rb10
-rw-r--r--db/migrate/20210512183310_add_limit_to_findings_evidences_response_body.rb17
-rw-r--r--db/migrate/20210513093418_add_draft_column_to_merge_requests.rb17
92 files changed, 1527 insertions, 12 deletions
diff --git a/db/migrate/20190402150158_backport_enterprise_schema.rb b/db/migrate/20190402150158_backport_enterprise_schema.rb
index c4fbb4b2ab9..ba5f700a877 100644
--- a/db/migrate/20190402150158_backport_enterprise_schema.rb
+++ b/db/migrate/20190402150158_backport_enterprise_schema.rb
@@ -914,7 +914,7 @@ class BackportEnterpriseSchema < ActiveRecord::Migration[5.0]
MSG
end
- raise StandardError.new(message)
+ raise StandardError, message
end
def create_missing_tables
diff --git a/db/migrate/20190801060809_delete_kubernetes_services.rb b/db/migrate/20190801060809_delete_kubernetes_services.rb
index 018976584d4..88717293817 100644
--- a/db/migrate/20190801060809_delete_kubernetes_services.rb
+++ b/db/migrate/20190801060809_delete_kubernetes_services.rb
@@ -3,6 +3,11 @@
class DeleteKubernetesServices < ActiveRecord::Migration[5.2]
DOWNTIME = false
+ class Service < ActiveRecord::Base
+ self.table_name = 'services'
+ self.inheritance_column = :_type_disabled
+ end
+
def up
Service.where(type: "KubernetesService").delete_all
end
diff --git a/db/migrate/20191120115530_encrypt_plaintext_attributes_on_application_settings.rb b/db/migrate/20191120115530_encrypt_plaintext_attributes_on_application_settings.rb
index e6b9a40ad4f..3ae5e3265e8 100644
--- a/db/migrate/20191120115530_encrypt_plaintext_attributes_on_application_settings.rb
+++ b/db/migrate/20191120115530_encrypt_plaintext_attributes_on_application_settings.rb
@@ -17,21 +17,21 @@ class EncryptPlaintextAttributesOnApplicationSettings < ActiveRecord::Migration[
class ApplicationSetting < ActiveRecord::Base
self.table_name = 'application_settings'
- def self.encryption_options_base_truncated_aes_256_gcm
+ def self.encryption_options_base_32_aes_256_gcm
{
mode: :per_attribute_iv,
- key: Gitlab::Application.secrets.db_key_base[0..31],
+ key: Gitlab::Utils.ensure_utf8_size(Rails.application.secrets.db_key_base, bytes: 32.bytes),
algorithm: 'aes-256-gcm',
encode: true
}
end
- attr_encrypted :akismet_api_key, encryption_options_base_truncated_aes_256_gcm
- attr_encrypted :elasticsearch_aws_secret_access_key, encryption_options_base_truncated_aes_256_gcm
- attr_encrypted :recaptcha_private_key, encryption_options_base_truncated_aes_256_gcm
- attr_encrypted :recaptcha_site_key, encryption_options_base_truncated_aes_256_gcm
- attr_encrypted :slack_app_secret, encryption_options_base_truncated_aes_256_gcm
- attr_encrypted :slack_app_verification_token, encryption_options_base_truncated_aes_256_gcm
+ attr_encrypted :akismet_api_key, encryption_options_base_32_aes_256_gcm
+ attr_encrypted :elasticsearch_aws_secret_access_key, encryption_options_base_32_aes_256_gcm
+ attr_encrypted :recaptcha_private_key, encryption_options_base_32_aes_256_gcm
+ attr_encrypted :recaptcha_site_key, encryption_options_base_32_aes_256_gcm
+ attr_encrypted :slack_app_secret, encryption_options_base_32_aes_256_gcm
+ attr_encrypted :slack_app_verification_token, encryption_options_base_32_aes_256_gcm
def akismet_api_key
decrypt(:akismet_api_key, self[:encrypted_akismet_api_key]) || self[:akismet_api_key]
diff --git a/db/migrate/20201008013434_generate_ci_jwt_signing_key.rb b/db/migrate/20201008013434_generate_ci_jwt_signing_key.rb
index 7983a56f439..5d7b6349fe6 100644
--- a/db/migrate/20201008013434_generate_ci_jwt_signing_key.rb
+++ b/db/migrate/20201008013434_generate_ci_jwt_signing_key.rb
@@ -8,7 +8,7 @@ class GenerateCiJwtSigningKey < ActiveRecord::Migration[6.0]
attr_encrypted :ci_jwt_signing_key, {
mode: :per_attribute_iv,
- key: Rails.application.secrets.db_key_base[0..31],
+ key: Gitlab::Utils.ensure_utf8_size(Rails.application.secrets.db_key_base, bytes: 32.bytes),
algorithm: 'aes-256-gcm',
encode: true
}
diff --git a/db/migrate/20210215172449_remove_artifact_expiry_temp_index.rb b/db/migrate/20210215172449_remove_artifact_expiry_temp_index.rb
new file mode 100644
index 00000000000..1e6619731a2
--- /dev/null
+++ b/db/migrate/20210215172449_remove_artifact_expiry_temp_index.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class RemoveArtifactExpiryTempIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'expired_artifacts_temp_index'
+ INDEX_CONDITION = "expire_at IS NULL AND date(created_at AT TIME ZONE 'UTC') < '2020-06-22'::date"
+
+ def up
+ remove_concurrent_index_by_name :ci_job_artifacts, INDEX_NAME
+ end
+
+ def down
+ add_concurrent_index(:ci_job_artifacts, %i(id created_at), where: INDEX_CONDITION, name: INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20210311120153_initialize_conversion_of_events_id_to_bigint.rb b/db/migrate/20210311120153_initialize_conversion_of_events_id_to_bigint.rb
index 72536d24fe1..f5ff0816047 100644
--- a/db/migrate/20210311120153_initialize_conversion_of_events_id_to_bigint.rb
+++ b/db/migrate/20210311120153_initialize_conversion_of_events_id_to_bigint.rb
@@ -14,7 +14,7 @@ class InitializeConversionOfEventsIdToBigint < ActiveRecord::Migration[6.0]
def down
trigger_name = rename_trigger_name(:events, :id, :id_convert_to_bigint)
- remove_rename_triggers_for_postgresql :events, trigger_name
+ remove_rename_triggers :events, trigger_name
remove_column :events, :id_convert_to_bigint
end
diff --git a/db/migrate/20210311120154_initialize_conversion_of_push_event_payloads_event_id_to_bigint.rb b/db/migrate/20210311120154_initialize_conversion_of_push_event_payloads_event_id_to_bigint.rb
index 9ce3b59e2dd..651c9ed993d 100644
--- a/db/migrate/20210311120154_initialize_conversion_of_push_event_payloads_event_id_to_bigint.rb
+++ b/db/migrate/20210311120154_initialize_conversion_of_push_event_payloads_event_id_to_bigint.rb
@@ -14,7 +14,7 @@ class InitializeConversionOfPushEventPayloadsEventIdToBigint < ActiveRecord::Mig
def down
trigger_name = rename_trigger_name(:push_event_payloads, :event_id, :event_id_convert_to_bigint)
- remove_rename_triggers_for_postgresql :push_event_payloads, trigger_name
+ remove_rename_triggers :push_event_payloads, trigger_name
remove_column :push_event_payloads, :event_id_convert_to_bigint
end
diff --git a/db/migrate/20210316171009_create_packages_helm_file_metadata.rb b/db/migrate/20210316171009_create_packages_helm_file_metadata.rb
new file mode 100644
index 00000000000..f5a9c5f1146
--- /dev/null
+++ b/db/migrate/20210316171009_create_packages_helm_file_metadata.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class CreatePackagesHelmFileMetadata < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def change
+ create_table_with_constraints :packages_helm_file_metadata, id: false do |t|
+ t.timestamps_with_timezone
+ t.references :package_file, primary_key: true, index: false, default: nil, null: false, foreign_key: { to_table: :packages_package_files, on_delete: :cascade }, type: :bigint
+ t.text :channel, null: false
+ t.jsonb :metadata
+
+ t.text_limit :channel, 63
+
+ t.index :channel
+ end
+ end
+end
diff --git a/db/migrate/20210317123054_add_throttle_package_registry_columns.rb b/db/migrate/20210317123054_add_throttle_package_registry_columns.rb
new file mode 100644
index 00000000000..0bb731306c0
--- /dev/null
+++ b/db/migrate/20210317123054_add_throttle_package_registry_columns.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class AddThrottlePackageRegistryColumns < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :application_settings, :throttle_unauthenticated_packages_api_requests_per_period, :integer, default: 800, null: false
+ add_column :application_settings, :throttle_unauthenticated_packages_api_period_in_seconds, :integer, default: 15, null: false
+ add_column :application_settings, :throttle_authenticated_packages_api_requests_per_period, :integer, default: 1000, null: false
+ add_column :application_settings, :throttle_authenticated_packages_api_period_in_seconds, :integer, default: 15, null: false
+ add_column :application_settings, :throttle_unauthenticated_packages_api_enabled, :boolean, default: false, null: false
+ add_column :application_settings, :throttle_authenticated_packages_api_enabled, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20210319071214_add_helm_max_file_size_to_plan_limits.rb b/db/migrate/20210319071214_add_helm_max_file_size_to_plan_limits.rb
new file mode 100644
index 00000000000..9a4789b5c1a
--- /dev/null
+++ b/db/migrate/20210319071214_add_helm_max_file_size_to_plan_limits.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddHelmMaxFileSizeToPlanLimits < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :plan_limits, :helm_max_file_size, :bigint, default: 5.megabyte, null: false
+ end
+end
diff --git a/db/migrate/20210323125809_create_status_check_responses_table.rb b/db/migrate/20210323125809_create_status_check_responses_table.rb
new file mode 100644
index 00000000000..3fa7ff7165c
--- /dev/null
+++ b/db/migrate/20210323125809_create_status_check_responses_table.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class CreateStatusCheckResponsesTable < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ create_table :status_check_responses do |t|
+ t.bigint :merge_request_id, null: false
+ t.bigint :external_approval_rule_id, null: false
+ end
+
+ add_index :status_check_responses, :merge_request_id
+ add_index :status_check_responses, :external_approval_rule_id
+ end
+
+ def down
+ drop_table :status_check_responses
+ end
+end
diff --git a/db/migrate/20210323130831_add_merge_request_foreign_key_to_status_check_responses.rb b/db/migrate/20210323130831_add_merge_request_foreign_key_to_status_check_responses.rb
new file mode 100644
index 00000000000..cee0b9a231e
--- /dev/null
+++ b/db/migrate/20210323130831_add_merge_request_foreign_key_to_status_check_responses.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddMergeRequestForeignKeyToStatusCheckResponses < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :status_check_responses, :merge_requests, column: :merge_request_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :status_check_responses, column: :merge_request_id
+ end
+ end
+end
diff --git a/db/migrate/20210323131543_add_external_approval_rule_foreign_key_to_status_check_responses.rb b/db/migrate/20210323131543_add_external_approval_rule_foreign_key_to_status_check_responses.rb
new file mode 100644
index 00000000000..ab28c20dbb1
--- /dev/null
+++ b/db/migrate/20210323131543_add_external_approval_rule_foreign_key_to_status_check_responses.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddExternalApprovalRuleForeignKeyToStatusCheckResponses < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :status_check_responses, :external_approval_rules, column: :external_approval_rule_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :status_check_responses, column: :external_approval_rule_id
+ end
+ end
+end
diff --git a/db/migrate/20210407111027_add_whats_new_application_setting.rb b/db/migrate/20210407111027_add_whats_new_application_setting.rb
new file mode 100644
index 00000000000..450c26e2199
--- /dev/null
+++ b/db/migrate/20210407111027_add_whats_new_application_setting.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddWhatsNewApplicationSetting < ActiveRecord::Migration[6.0]
+ def change
+ add_column :application_settings, :whats_new_variant, :integer, limit: 2, default: 0
+ end
+end
diff --git a/db/migrate/20210407140539_add_verification_state_and_started_at_to_terraform_state_version_table.rb b/db/migrate/20210407140539_add_verification_state_and_started_at_to_terraform_state_version_table.rb
new file mode 100644
index 00000000000..987be4ab1f0
--- /dev/null
+++ b/db/migrate/20210407140539_add_verification_state_and_started_at_to_terraform_state_version_table.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class AddVerificationStateAndStartedAtToTerraformStateVersionTable < ActiveRecord::Migration[6.0]
+ def change
+ change_table(:terraform_state_versions) do |t|
+ t.column :verification_started_at, :datetime_with_timezone
+ t.integer :verification_state, default: 0, limit: 2, null: false
+ end
+ end
+end
diff --git a/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb b/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb
new file mode 100644
index 00000000000..c7035400cba
--- /dev/null
+++ b/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+class CreateSecurityOrchestrationPolicyRuleSchedule < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_PREFIX = 'index_sop_schedules_'
+
+ disable_ddl_transaction!
+
+ def up
+ table_comment = { owner: 'group::container security', description: 'Schedules used to store relationship between project and security policy repository' }
+
+ create_table_with_constraints :security_orchestration_policy_rule_schedules, comment: table_comment.to_json do |t|
+ t.timestamps_with_timezone
+ t.datetime_with_timezone :next_run_at, null: true
+
+ t.references :security_orchestration_policy_configuration, null: false, foreign_key: { to_table: :security_orchestration_policy_configurations, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_sop_configuration_id' }
+ t.references :user, null: false, foreign_key: { on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_user_id' }
+
+ t.integer :policy_index, null: false
+ t.text :cron, null: false
+
+ t.text_limit :cron, 255
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :security_orchestration_policy_rule_schedules
+ end
+ end
+end
diff --git a/db/migrate/20210412172030_add_configured_at_to_security_orchestration_policy.rb b/db/migrate/20210412172030_add_configured_at_to_security_orchestration_policy.rb
new file mode 100644
index 00000000000..8e21e0f5182
--- /dev/null
+++ b/db/migrate/20210412172030_add_configured_at_to_security_orchestration_policy.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddConfiguredAtToSecurityOrchestrationPolicy < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :security_orchestration_policy_configurations, :configured_at, :datetime_with_timezone, null: true
+ end
+end
diff --git a/db/migrate/20210413155324_add_pause_seconds_to_batched_background_migrations.rb b/db/migrate/20210413155324_add_pause_seconds_to_batched_background_migrations.rb
new file mode 100644
index 00000000000..ca73c85963e
--- /dev/null
+++ b/db/migrate/20210413155324_add_pause_seconds_to_batched_background_migrations.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddPauseSecondsToBatchedBackgroundMigrations < ActiveRecord::Migration[6.0]
+ def change
+ add_column :batched_background_migrations, :pause_ms, :integer, null: false, default: 100
+ end
+end
diff --git a/db/migrate/20210414045322_add_pause_seconds_to_batched_background_migration_jobs.rb b/db/migrate/20210414045322_add_pause_seconds_to_batched_background_migration_jobs.rb
new file mode 100644
index 00000000000..d232f9c0305
--- /dev/null
+++ b/db/migrate/20210414045322_add_pause_seconds_to_batched_background_migration_jobs.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddPauseSecondsToBatchedBackgroundMigrationJobs < ActiveRecord::Migration[6.0]
+ def change
+ add_column :batched_background_migration_jobs, :pause_ms, :integer, null: false, default: 100
+ end
+end
diff --git a/db/migrate/20210414100914_add_bulk_import_exports_table.rb b/db/migrate/20210414100914_add_bulk_import_exports_table.rb
new file mode 100644
index 00000000000..14a7421c1e4
--- /dev/null
+++ b/db/migrate/20210414100914_add_bulk_import_exports_table.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class AddBulkImportExportsTable < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ create_table_with_constraints :bulk_import_exports do |t|
+ t.bigint :group_id
+ t.bigint :project_id
+ t.timestamps_with_timezone null: false
+ t.integer :status, limit: 2, null: false, default: 0
+ t.text :relation, null: false
+ t.text :jid, unique: true
+ t.text :error
+
+ t.text_limit :relation, 255
+ t.text_limit :jid, 255
+ t.text_limit :error, 255
+ end
+ end
+
+ def down
+ drop_table :bulk_import_exports
+ end
+end
diff --git a/db/migrate/20210414130017_add_foreign_key_to_bulk_import_exports_on_project.rb b/db/migrate/20210414130017_add_foreign_key_to_bulk_import_exports_on_project.rb
new file mode 100644
index 00000000000..2f7d3713302
--- /dev/null
+++ b/db/migrate/20210414130017_add_foreign_key_to_bulk_import_exports_on_project.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddForeignKeyToBulkImportExportsOnProject < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :bulk_import_exports, :projects, column: :project_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :bulk_import_exports, column: :project_id
+ end
+ end
+end
diff --git a/db/migrate/20210414130526_add_foreign_key_to_bulk_import_exports_on_group.rb b/db/migrate/20210414130526_add_foreign_key_to_bulk_import_exports_on_group.rb
new file mode 100644
index 00000000000..b7172c6987e
--- /dev/null
+++ b/db/migrate/20210414130526_add_foreign_key_to_bulk_import_exports_on_group.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddForeignKeyToBulkImportExportsOnGroup < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :bulk_import_exports, :namespaces, column: :group_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :bulk_import_exports, column: :group_id
+ end
+ end
+end
diff --git a/db/migrate/20210414131807_add_bulk_import_exports_table_indexes.rb b/db/migrate/20210414131807_add_bulk_import_exports_table_indexes.rb
new file mode 100644
index 00000000000..1cbd1cadf5e
--- /dev/null
+++ b/db/migrate/20210414131807_add_bulk_import_exports_table_indexes.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class AddBulkImportExportsTableIndexes < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ GROUP_INDEX_NAME = 'partial_index_bulk_import_exports_on_group_id_and_relation'
+ PROJECT_INDEX_NAME = 'partial_index_bulk_import_exports_on_project_id_and_relation'
+
+ def up
+ add_concurrent_index :bulk_import_exports,
+ [:group_id, :relation],
+ unique: true,
+ where: 'group_id IS NOT NULL',
+ name: GROUP_INDEX_NAME
+
+ add_concurrent_index :bulk_import_exports,
+ [:project_id, :relation],
+ unique: true,
+ where: 'project_id IS NOT NULL',
+ name: PROJECT_INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name(:bulk_import_exports, GROUP_INDEX_NAME)
+ remove_concurrent_index_by_name(:bulk_import_exports, PROJECT_INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20210414133310_add_bulk_import_export_uploads_table.rb b/db/migrate/20210414133310_add_bulk_import_export_uploads_table.rb
new file mode 100644
index 00000000000..d20e57848e9
--- /dev/null
+++ b/db/migrate/20210414133310_add_bulk_import_export_uploads_table.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddBulkImportExportUploadsTable < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ create_table_with_constraints :bulk_import_export_uploads do |t|
+ t.references :export, index: true, null: false, foreign_key: { to_table: :bulk_import_exports, on_delete: :cascade }
+ t.datetime_with_timezone :updated_at, null: false
+ t.text :export_file
+
+ t.text_limit :export_file, 255
+ end
+ end
+
+ def down
+ drop_table :bulk_import_export_uploads
+ end
+end
diff --git a/db/migrate/20210415100159_initialize_conversion_of_ci_build_needs_to_bigint.rb b/db/migrate/20210415100159_initialize_conversion_of_ci_build_needs_to_bigint.rb
new file mode 100644
index 00000000000..068dceda272
--- /dev/null
+++ b/db/migrate/20210415100159_initialize_conversion_of_ci_build_needs_to_bigint.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class InitializeConversionOfCiBuildNeedsToBigint < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ initialize_conversion_of_integer_to_bigint :ci_build_needs, :build_id
+ end
+
+ def down
+ trigger_name = rename_trigger_name(:ci_build_needs, :build_id, :build_id_convert_to_bigint)
+
+ remove_rename_triggers :ci_build_needs, trigger_name
+
+ remove_column :ci_build_needs, :build_id_convert_to_bigint
+ end
+end
diff --git a/db/migrate/20210415172516_create_vulnerability_finding_evidence_requests.rb b/db/migrate/20210415172516_create_vulnerability_finding_evidence_requests.rb
new file mode 100644
index 00000000000..2fe33ff23ba
--- /dev/null
+++ b/db/migrate/20210415172516_create_vulnerability_finding_evidence_requests.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class CreateVulnerabilityFindingEvidenceRequests < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ create_table_with_constraints :vulnerability_finding_evidence_requests do |t|
+ t.timestamps_with_timezone null: false
+
+ t.references :vulnerability_finding_evidence, index: { name: 'finding_evidence_requests_on_finding_evidence_id' }, null: false, foreign_key: { on_delete: :cascade }
+ t.text :method
+ t.text :url
+
+ t.text_limit :method, 32
+ t.text_limit :url, 2048
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :vulnerability_finding_evidence_requests
+ end
+ end
+end
diff --git a/db/migrate/20210416172516_create_vulnerability_finding_evidence_responses.rb b/db/migrate/20210416172516_create_vulnerability_finding_evidence_responses.rb
new file mode 100644
index 00000000000..c9740a48117
--- /dev/null
+++ b/db/migrate/20210416172516_create_vulnerability_finding_evidence_responses.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class CreateVulnerabilityFindingEvidenceResponses < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ create_table_with_constraints :vulnerability_finding_evidence_responses do |t|
+ t.timestamps_with_timezone null: false
+
+ t.references :vulnerability_finding_evidence, index: { name: 'finding_evidence_responses_on_finding_evidences_id' }, null: false, foreign_key: { on_delete: :cascade }
+ t.integer :status_code
+ t.text :reason_phrase
+
+ t.text_limit :reason_phrase, 2048
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :vulnerability_finding_evidence_responses
+ end
+ end
+end
diff --git a/db/migrate/20210419090412_remove_debian_group_architectures_distribution_id_index.rb b/db/migrate/20210419090412_remove_debian_group_architectures_distribution_id_index.rb
new file mode 100644
index 00000000000..1df56742480
--- /dev/null
+++ b/db/migrate/20210419090412_remove_debian_group_architectures_distribution_id_index.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class RemoveDebianGroupArchitecturesDistributionIdIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ INDEX_NAME = 'idx_pkgs_deb_grp_architectures_on_distribution_id'
+
+ disable_ddl_transaction!
+
+ def up
+ remove_concurrent_index :packages_debian_group_architectures, :distribution_id, name: INDEX_NAME
+ end
+
+ def down
+ add_concurrent_index :packages_debian_group_architectures, :distribution_id, name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210419090542_remove_debian_project_architectures_distribution_id_index.rb b/db/migrate/20210419090542_remove_debian_project_architectures_distribution_id_index.rb
new file mode 100644
index 00000000000..1f918bd4dec
--- /dev/null
+++ b/db/migrate/20210419090542_remove_debian_project_architectures_distribution_id_index.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class RemoveDebianProjectArchitecturesDistributionIdIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ INDEX_NAME = 'idx_pkgs_deb_proj_architectures_on_distribution_id'
+
+ disable_ddl_transaction!
+
+ def up
+ remove_concurrent_index :packages_debian_project_architectures, :distribution_id, name: INDEX_NAME
+ end
+
+ def down
+ add_concurrent_index :packages_debian_project_architectures, :distribution_id, name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210419203017_add_remote_import_url_to_import_export_upload.rb b/db/migrate/20210419203017_add_remote_import_url_to_import_export_upload.rb
new file mode 100644
index 00000000000..00c5329406e
--- /dev/null
+++ b/db/migrate/20210419203017_add_remote_import_url_to_import_export_upload.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class AddRemoteImportUrlToImportExportUpload < ActiveRecord::Migration[6.0]
+ # limit is added in 20210419203018_add_remote_text_limit_to_import_url_in_import_export_upload.rb
+ def change
+ add_column :import_export_uploads, :remote_import_url, :text # rubocop:disable Migration/AddLimitToTextColumns
+ end
+end
diff --git a/db/migrate/20210419203018_add_remote_text_limit_to_import_url_in_import_export_upload.rb b/db/migrate/20210419203018_add_remote_text_limit_to_import_url_in_import_export_upload.rb
new file mode 100644
index 00000000000..81b4e76b8d9
--- /dev/null
+++ b/db/migrate/20210419203018_add_remote_text_limit_to_import_url_in_import_export_upload.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class AddRemoteTextLimitToImportUrlInImportExportUpload < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :import_export_uploads, :remote_import_url, 512
+ end
+
+ def down
+ remove_text_limit :import_export_uploads, :remote_import_url
+ end
+end
diff --git a/db/migrate/20210419224834_update_issues_iteration_foreign_key.rb b/db/migrate/20210419224834_update_issues_iteration_foreign_key.rb
new file mode 100644
index 00000000000..d071ac8d1d4
--- /dev/null
+++ b/db/migrate/20210419224834_update_issues_iteration_foreign_key.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class UpdateIssuesIterationForeignKey < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ with_lock_retries do
+ remove_foreign_key_if_exists(:issues, column: :sprint_id)
+ end
+
+ add_concurrent_foreign_key(:issues, :sprints, column: :sprint_id, on_delete: :nullify)
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key_if_exists(:issues, column: :sprint_id)
+ end
+
+ add_concurrent_foreign_key(:issues, :sprints, column: :sprint_id, on_delete: :cascade)
+ end
+end
diff --git a/db/migrate/20210420012444_change_web_hook_events_default.rb b/db/migrate/20210420012444_change_web_hook_events_default.rb
new file mode 100644
index 00000000000..b5a63a5a2a8
--- /dev/null
+++ b/db/migrate/20210420012444_change_web_hook_events_default.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ChangeWebHookEventsDefault < ActiveRecord::Migration[6.0]
+ def up
+ change_column_default :web_hooks, :push_events, true
+ change_column_default :web_hooks, :issues_events, false
+ change_column_default :web_hooks, :merge_requests_events, false
+ change_column_default :web_hooks, :tag_push_events, false
+ end
+
+ # This is a NOP because this migration is supposed to restore the
+ # intended schema, not revert it.
+ def down
+ end
+end
diff --git a/db/migrate/20210420012909_index_cluster_agent_tokens_on_last_used_at.rb b/db/migrate/20210420012909_index_cluster_agent_tokens_on_last_used_at.rb
new file mode 100644
index 00000000000..c1715d8ac29
--- /dev/null
+++ b/db/migrate/20210420012909_index_cluster_agent_tokens_on_last_used_at.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class IndexClusterAgentTokensOnLastUsedAt < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ OLD_INDEX = 'index_cluster_agent_tokens_on_agent_id'
+ NEW_INDEX = 'index_cluster_agent_tokens_on_agent_id_and_last_used_at'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :cluster_agent_tokens, 'agent_id, last_used_at DESC NULLS LAST', name: NEW_INDEX
+ remove_concurrent_index_by_name :cluster_agent_tokens, OLD_INDEX
+ end
+
+ def down
+ add_concurrent_index :cluster_agent_tokens, :agent_id, name: OLD_INDEX
+ remove_concurrent_index_by_name :cluster_agent_tokens, NEW_INDEX
+ end
+end
diff --git a/db/migrate/20210420120734_initialize_conversion_of_ci_job_artifacts_to_bigint.rb b/db/migrate/20210420120734_initialize_conversion_of_ci_job_artifacts_to_bigint.rb
new file mode 100644
index 00000000000..cc8f0686841
--- /dev/null
+++ b/db/migrate/20210420120734_initialize_conversion_of_ci_job_artifacts_to_bigint.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class InitializeConversionOfCiJobArtifactsToBigint < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ TABLE = :ci_job_artifacts
+ COLUMNS = %i(id job_id)
+ TARGET_COLUMNS = COLUMNS.map { |col| "#{col}_convert_to_bigint" }
+
+ def up
+ initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+
+ def down
+ trigger_name = rename_trigger_name(TABLE, COLUMNS, TARGET_COLUMNS)
+ remove_rename_triggers TABLE, trigger_name
+
+ TARGET_COLUMNS.each do |column|
+ remove_column TABLE, column
+ end
+ end
+end
diff --git a/db/migrate/20210420173030_add_verification_indexes_to_terraform_state_versions.rb b/db/migrate/20210420173030_add_verification_indexes_to_terraform_state_versions.rb
new file mode 100644
index 00000000000..2c0d0bee39d
--- /dev/null
+++ b/db/migrate/20210420173030_add_verification_indexes_to_terraform_state_versions.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class AddVerificationIndexesToTerraformStateVersions < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ VERIFICATION_STATE_INDEX_NAME = "index_terraform_state_versions_on_verification_state"
+ PENDING_VERIFICATION_INDEX_NAME = "index_terraform_state_versions_pending_verification"
+ FAILED_VERIFICATION_INDEX_NAME = "index_terraform_state_versions_failed_verification"
+ NEEDS_VERIFICATION_INDEX_NAME = "index_terraform_state_versions_needs_verification"
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :terraform_state_versions, :verification_state, name: VERIFICATION_STATE_INDEX_NAME
+ add_concurrent_index :terraform_state_versions, :verified_at, where: "(verification_state = 0)", order: { verified_at: 'ASC NULLS FIRST' }, name: PENDING_VERIFICATION_INDEX_NAME
+ add_concurrent_index :terraform_state_versions, :verification_retry_at, where: "(verification_state = 3)", order: { verification_retry_at: 'ASC NULLS FIRST' }, name: FAILED_VERIFICATION_INDEX_NAME
+ add_concurrent_index :terraform_state_versions, :verification_state, where: "(verification_state = 0 OR verification_state = 3)", name: NEEDS_VERIFICATION_INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :terraform_state_versions, VERIFICATION_STATE_INDEX_NAME
+ remove_concurrent_index_by_name :terraform_state_versions, PENDING_VERIFICATION_INDEX_NAME
+ remove_concurrent_index_by_name :terraform_state_versions, FAILED_VERIFICATION_INDEX_NAME
+ remove_concurrent_index_by_name :terraform_state_versions, NEEDS_VERIFICATION_INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210420210642_recreate_index_for_project_deployments_with_environment_id_and_date_at.rb b/db/migrate/20210420210642_recreate_index_for_project_deployments_with_environment_id_and_date_at.rb
new file mode 100644
index 00000000000..2674d9e50c8
--- /dev/null
+++ b/db/migrate/20210420210642_recreate_index_for_project_deployments_with_environment_id_and_date_at.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+# This migration recreates the index that introduced in 20210326035553_add_index_for_project_deployments_with_environment_id_and_updated_at.rb.
+class RecreateIndexForProjectDeploymentsWithEnvironmentIdAndDateAt < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ OLD_INDEX_NAME = 'index_deployments_on_project_and_environment_and_updated_at'
+ NEW_INDEX_NAME = 'index_deployments_on_project_and_environment_and_updated_at_id'
+
+ def up
+ add_concurrent_index :deployments, [:project_id, :environment_id, :updated_at, :id], name: NEW_INDEX_NAME
+ remove_concurrent_index_by_name :deployments, OLD_INDEX_NAME
+ end
+
+ def down
+ add_concurrent_index :deployments, [:project_id, :environment_id, :updated_at], name: OLD_INDEX_NAME
+ remove_concurrent_index_by_name :deployments, NEW_INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210420221106_update_merge_requests_iteration_foreign_key.rb b/db/migrate/20210420221106_update_merge_requests_iteration_foreign_key.rb
new file mode 100644
index 00000000000..64786f0b20c
--- /dev/null
+++ b/db/migrate/20210420221106_update_merge_requests_iteration_foreign_key.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class UpdateMergeRequestsIterationForeignKey < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ with_lock_retries do
+ remove_foreign_key_if_exists(:merge_requests, column: :sprint_id)
+ end
+
+ add_concurrent_foreign_key(:merge_requests, :sprints, column: :sprint_id, on_delete: :nullify)
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key_if_exists(:merge_requests, column: :sprint_id)
+ end
+
+ add_concurrent_foreign_key(:merge_requests, :sprints, column: :sprint_id, on_delete: :cascade)
+ end
+end
diff --git a/db/migrate/20210421021510_add_deactivate_dormant_users_to_application_settings.rb b/db/migrate/20210421021510_add_deactivate_dormant_users_to_application_settings.rb
new file mode 100644
index 00000000000..74d197cd3b8
--- /dev/null
+++ b/db/migrate/20210421021510_add_deactivate_dormant_users_to_application_settings.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddDeactivateDormantUsersToApplicationSettings < ActiveRecord::Migration[6.0]
+ def change
+ add_column :application_settings, :deactivate_dormant_users, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20210421022010_add_index_for_dormant_users.rb b/db/migrate/20210421022010_add_index_for_dormant_users.rb
new file mode 100644
index 00000000000..48eff184ca0
--- /dev/null
+++ b/db/migrate/20210421022010_add_index_for_dormant_users.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddIndexForDormantUsers < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ INDEX_NAME = 'index_users_on_id_and_last_activity_on_for_non_internal_active'
+
+ disable_ddl_transaction!
+
+ def up
+ index_condition = "state = 'active' AND (users.user_type IS NULL OR users.user_type IN (NULL, 6, 4))"
+
+ add_concurrent_index :users, [:id, :last_activity_on], where: index_condition, name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :users, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210421081724_add_codeowners_devops_adoption_snapshot.rb b/db/migrate/20210421081724_add_codeowners_devops_adoption_snapshot.rb
new file mode 100644
index 00000000000..3d65abc5608
--- /dev/null
+++ b/db/migrate/20210421081724_add_codeowners_devops_adoption_snapshot.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class AddCodeownersDevopsAdoptionSnapshot < ActiveRecord::Migration[6.0]
+ def change
+ add_column :analytics_devops_adoption_snapshots, :total_projects_count, :integer
+ add_column :analytics_devops_adoption_snapshots, :code_owners_used_count, :integer
+ end
+end
diff --git a/db/migrate/20210421190157_remove_elastic_task_null_constraint_from_elastic_reindexing_subtasks.rb b/db/migrate/20210421190157_remove_elastic_task_null_constraint_from_elastic_reindexing_subtasks.rb
new file mode 100644
index 00000000000..301e75aa093
--- /dev/null
+++ b/db/migrate/20210421190157_remove_elastic_task_null_constraint_from_elastic_reindexing_subtasks.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class RemoveElasticTaskNullConstraintFromElasticReindexingSubtasks < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+ ELASTIC_TASK = 'elastic_task'
+
+ disable_ddl_transaction!
+
+ def up
+ remove_not_null_constraint :elastic_reindexing_subtasks, :elastic_task
+ change_column_null(:elastic_reindexing_subtasks, :elastic_task, true)
+ end
+
+ def down
+ # there may be elastic_task values which are null so we fill them with a dummy value
+ change_column_null(:elastic_reindexing_subtasks, :elastic_task, false, ELASTIC_TASK)
+ add_not_null_constraint :elastic_reindexing_subtasks, :elastic_task, validate: false
+ end
+end
diff --git a/db/migrate/20210422022825_initialize_conversion_of_ci_sources_pipelines_source_job_id_to_bigint.rb b/db/migrate/20210422022825_initialize_conversion_of_ci_sources_pipelines_source_job_id_to_bigint.rb
new file mode 100644
index 00000000000..ea716afe84b
--- /dev/null
+++ b/db/migrate/20210422022825_initialize_conversion_of_ci_sources_pipelines_source_job_id_to_bigint.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class InitializeConversionOfCiSourcesPipelinesSourceJobIdToBigint < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ # Foreign key that references ci_builds.id
+ initialize_conversion_of_integer_to_bigint :ci_sources_pipelines, :source_job_id
+ end
+
+ def down
+ trigger_name = rename_trigger_name(:ci_sources_pipelines, :source_job_id, :source_job_id_convert_to_bigint)
+
+ remove_rename_triggers :ci_sources_pipelines, trigger_name
+
+ remove_column :ci_sources_pipelines, :source_job_id_convert_to_bigint
+ end
+end
diff --git a/db/migrate/20210422142647_add_project_id_next_run_at_index_to_container_expiration_policies.rb b/db/migrate/20210422142647_add_project_id_next_run_at_index_to_container_expiration_policies.rb
new file mode 100644
index 00000000000..bd38b5660b4
--- /dev/null
+++ b/db/migrate/20210422142647_add_project_id_next_run_at_index_to_container_expiration_policies.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddProjectIdNextRunAtIndexToContainerExpirationPolicies < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'idx_container_exp_policies_on_project_id_next_run_at'
+
+ def up
+ add_concurrent_index :container_expiration_policies, [:project_id, :next_run_at], name: INDEX_NAME, where: 'enabled = true'
+ end
+
+ def down
+ remove_concurrent_index :container_expiration_policies, [:project_id, :next_run_at], name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210422181809_add_project_to_timelogs.rb b/db/migrate/20210422181809_add_project_to_timelogs.rb
new file mode 100644
index 00000000000..1f98e440d15
--- /dev/null
+++ b/db/migrate/20210422181809_add_project_to_timelogs.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddProjectToTimelogs < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_column :timelogs, :project_id, :integer
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :timelogs, :project_id
+ end
+ end
+end
diff --git a/db/migrate/20210422195929_create_elastic_reindexing_slices.rb b/db/migrate/20210422195929_create_elastic_reindexing_slices.rb
new file mode 100644
index 00000000000..a535402186c
--- /dev/null
+++ b/db/migrate/20210422195929_create_elastic_reindexing_slices.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+class CreateElasticReindexingSlices < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ class ReindexingSubtask < ActiveRecord::Base
+ self.table_name = 'elastic_reindexing_subtasks'
+ end
+
+ class ReindexingSlice < ActiveRecord::Base
+ self.table_name = 'elastic_reindexing_slices'
+ end
+
+ def up
+ unless table_exists?(:elastic_reindexing_slices)
+ create_table_with_constraints :elastic_reindexing_slices do |t|
+ t.timestamps_with_timezone null: false
+ t.references :elastic_reindexing_subtask, foreign_key: { on_delete: :cascade }, null: false, index: { name: 'idx_elastic_reindexing_slices_on_elastic_reindexing_subtask_id' }
+ t.integer :elastic_slice, null: false, limit: 2, default: 0
+ t.integer :elastic_max_slice, null: false, limit: 2, default: 0
+ t.integer :retry_attempt, null: false, limit: 2, default: 0
+ t.text :elastic_task
+
+ t.text_limit :elastic_task, 255
+ end
+ end
+
+ ReindexingSubtask.find_each do |subtask|
+ next if ReindexingSlice.where(elastic_reindexing_subtask_id: subtask.id).exists?
+
+ ReindexingSlice.create(
+ elastic_reindexing_subtask_id: subtask.id,
+ elastic_task: subtask.elastic_task,
+ retry_attempt: 0
+ )
+ end
+ end
+
+ def down
+ drop_table :elastic_reindexing_slices
+ end
+end
diff --git a/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb b/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb
new file mode 100644
index 00000000000..bbdb4f02ab4
--- /dev/null
+++ b/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class CreateDastSiteProfilesPipelines < ActiveRecord::Migration[6.0]
+ def up
+ table_comment = { owner: 'group::dynamic analysis', description: 'Join table between DAST Site Profiles and CI Pipelines' }
+
+ create_table :dast_site_profiles_pipelines, primary_key: [:dast_site_profile_id, :ci_pipeline_id], comment: table_comment.to_json do |t|
+ t.bigint :dast_site_profile_id, null: false
+ t.bigint :ci_pipeline_id, null: false
+
+ t.index :ci_pipeline_id, unique: true, name: :index_dast_site_profiles_pipelines_on_ci_pipeline_id
+ end
+ end
+
+ def down
+ drop_table :dast_site_profiles_pipelines
+ end
+end
diff --git a/db/migrate/20210423054537_add_dast_site_profile_id_fk_to_dast_site_profiles_pipelines.rb b/db/migrate/20210423054537_add_dast_site_profile_id_fk_to_dast_site_profiles_pipelines.rb
new file mode 100644
index 00000000000..eb3a5168609
--- /dev/null
+++ b/db/migrate/20210423054537_add_dast_site_profile_id_fk_to_dast_site_profiles_pipelines.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddDastSiteProfileIdFkToDastSiteProfilesPipelines < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :dast_site_profiles_pipelines, :dast_site_profiles, column: :dast_site_profile_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :dast_site_profiles_pipelines, column: :dast_site_profile_id
+ end
+ end
+end
diff --git a/db/migrate/20210423054846_add_ci_pipeline_id_fk_to_dast_site_profiles_pipelines.rb b/db/migrate/20210423054846_add_ci_pipeline_id_fk_to_dast_site_profiles_pipelines.rb
new file mode 100644
index 00000000000..ed2a7ff859c
--- /dev/null
+++ b/db/migrate/20210423054846_add_ci_pipeline_id_fk_to_dast_site_profiles_pipelines.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddCiPipelineIdFkToDastSiteProfilesPipelines < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :dast_site_profiles_pipelines, :ci_pipelines, column: :ci_pipeline_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :dast_site_profiles_pipelines, column: :ci_pipeline_id
+ end
+ end
+end
diff --git a/db/migrate/20210423155059_add_runner_registration_to_plan_limits.rb b/db/migrate/20210423155059_add_runner_registration_to_plan_limits.rb
new file mode 100644
index 00000000000..5382e596d8c
--- /dev/null
+++ b/db/migrate/20210423155059_add_runner_registration_to_plan_limits.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class AddRunnerRegistrationToPlanLimits < ActiveRecord::Migration[6.0]
+ def change
+ add_column(:plan_limits, :ci_registered_group_runners, :integer, default: 1000, null: false)
+ add_column(:plan_limits, :ci_registered_project_runners, :integer, default: 1000, null: false)
+ end
+end
diff --git a/db/migrate/20210423164702_insert_runner_registration_plan_limits.rb b/db/migrate/20210423164702_insert_runner_registration_plan_limits.rb
new file mode 100644
index 00000000000..36d13dfa120
--- /dev/null
+++ b/db/migrate/20210423164702_insert_runner_registration_plan_limits.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class InsertRunnerRegistrationPlanLimits < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ create_or_update_plan_limit('ci_registered_group_runners', 'free', 50)
+ create_or_update_plan_limit('ci_registered_group_runners', 'bronze', 1000)
+ create_or_update_plan_limit('ci_registered_group_runners', 'silver', 1000)
+ create_or_update_plan_limit('ci_registered_group_runners', 'gold', 1000)
+
+ create_or_update_plan_limit('ci_registered_project_runners', 'free', 50)
+ create_or_update_plan_limit('ci_registered_project_runners', 'bronze', 1000)
+ create_or_update_plan_limit('ci_registered_project_runners', 'silver', 1000)
+ create_or_update_plan_limit('ci_registered_project_runners', 'gold', 1000)
+ end
+
+ def down
+ %w[group project].each do |scope|
+ create_or_update_plan_limit("ci_registered_#{scope}_runners", 'free', 1000)
+ create_or_update_plan_limit("ci_registered_#{scope}_runners", 'bronze', 1000)
+ create_or_update_plan_limit("ci_registered_#{scope}_runners", 'silver', 1000)
+ create_or_update_plan_limit("ci_registered_#{scope}_runners", 'gold', 1000)
+ end
+ end
+end
diff --git a/db/migrate/20210423171304_re_order_fk_source_project_id_in_merge_requests.rb b/db/migrate/20210423171304_re_order_fk_source_project_id_in_merge_requests.rb
new file mode 100644
index 00000000000..ee9e444c792
--- /dev/null
+++ b/db/migrate/20210423171304_re_order_fk_source_project_id_in_merge_requests.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class ReOrderFkSourceProjectIdInMergeRequests < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ OLD_SOURCE_PROJECT_FK = 'fk_3308fe130c'
+ NEW_SOURCE_PROJECT_FK = 'fk_source_project'
+
+ def up
+ add_concurrent_foreign_key :merge_requests, :projects, column: :source_project_id, on_delete: :nullify, name: NEW_SOURCE_PROJECT_FK
+
+ remove_foreign_key_if_exists :merge_requests, column: :source_project_id, name: OLD_SOURCE_PROJECT_FK
+ end
+
+ def down
+ add_concurrent_foreign_key :merge_requests, :projects, column: :source_project_id, on_delete: :nullify
+
+ remove_foreign_key_if_exists :merge_requests, column: :source_project_id, name: NEW_SOURCE_PROJECT_FK
+ end
+end
diff --git a/db/migrate/20210424115725_swap_partitioned_web_hook_logs.rb b/db/migrate/20210424115725_swap_partitioned_web_hook_logs.rb
new file mode 100644
index 00000000000..47b2f81cfae
--- /dev/null
+++ b/db/migrate/20210424115725_swap_partitioned_web_hook_logs.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class SwapPartitionedWebHookLogs < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::PartitioningMigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ replace_with_partitioned_table :web_hook_logs
+ end
+
+ def down
+ rollback_replace_with_partitioned_table :web_hook_logs
+ end
+end
diff --git a/db/migrate/20210424163400_add_project_id_fk_to_timelogs.rb b/db/migrate/20210424163400_add_project_id_fk_to_timelogs.rb
new file mode 100644
index 00000000000..69542e7627d
--- /dev/null
+++ b/db/migrate/20210424163400_add_project_id_fk_to_timelogs.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class AddProjectIdFkToTimelogs < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_timelogs_on_project_id_and_spent_at'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :timelogs, [:project_id, :spent_at], name: INDEX_NAME
+ add_concurrent_foreign_key :timelogs, :projects, column: :project_id, on_delete: :cascade
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key_if_exists :timelogs, column: :project_id
+ end
+ remove_concurrent_index_by_name :timelogs, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210426094524_initialize_conversion_of_ci_builds_to_bigint.rb b/db/migrate/20210426094524_initialize_conversion_of_ci_builds_to_bigint.rb
new file mode 100644
index 00000000000..e2f82557387
--- /dev/null
+++ b/db/migrate/20210426094524_initialize_conversion_of_ci_builds_to_bigint.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class InitializeConversionOfCiBuildsToBigint < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ TABLE = :ci_builds
+ COLUMNS = %i(id stage_id)
+ TARGET_COLUMNS = COLUMNS.map { |col| "#{col}_convert_to_bigint" }
+
+ def up
+ initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+
+ def down
+ revert_initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+end
diff --git a/db/migrate/20210427045604_initialize_conversion_of_ci_build_trace_chunks_to_bigint.rb b/db/migrate/20210427045604_initialize_conversion_of_ci_build_trace_chunks_to_bigint.rb
new file mode 100644
index 00000000000..ec3bb0b7e45
--- /dev/null
+++ b/db/migrate/20210427045604_initialize_conversion_of_ci_build_trace_chunks_to_bigint.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class InitializeConversionOfCiBuildTraceChunksToBigint < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ TABLE = :ci_build_trace_chunks
+ COLUMNS = %i(build_id)
+
+ def up
+ initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+
+ def down
+ revert_initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+end
diff --git a/db/migrate/20210427062807_add_index_to_batched_migration_jobs_status.rb b/db/migrate/20210427062807_add_index_to_batched_migration_jobs_status.rb
new file mode 100644
index 00000000000..c429094762e
--- /dev/null
+++ b/db/migrate/20210427062807_add_index_to_batched_migration_jobs_status.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexToBatchedMigrationJobsStatus < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_batched_jobs_on_batched_migration_id_and_status'
+
+ def up
+ add_concurrent_index :batched_background_migration_jobs, [:batched_background_migration_id, :status], name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :batched_background_migration_jobs, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210427084924_initialize_conversion_of_ci_builds_runner_session_to_bigint.rb b/db/migrate/20210427084924_initialize_conversion_of_ci_builds_runner_session_to_bigint.rb
new file mode 100644
index 00000000000..ffa653604df
--- /dev/null
+++ b/db/migrate/20210427084924_initialize_conversion_of_ci_builds_runner_session_to_bigint.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class InitializeConversionOfCiBuildsRunnerSessionToBigint < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ TABLE = :ci_builds_runner_session
+ COLUMNS = %i(build_id)
+
+ def up
+ initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+
+ def down
+ revert_initialize_conversion_of_integer_to_bigint(TABLE, COLUMNS)
+ end
+end
diff --git a/db/migrate/20210427094931_add_execution_order_index_to_batched_background_migration_jobs.rb b/db/migrate/20210427094931_add_execution_order_index_to_batched_background_migration_jobs.rb
new file mode 100644
index 00000000000..3622dddd27f
--- /dev/null
+++ b/db/migrate/20210427094931_add_execution_order_index_to_batched_background_migration_jobs.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddExecutionOrderIndexToBatchedBackgroundMigrationJobs < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_migration_jobs_on_migration_id_and_finished_at'
+
+ def up
+ add_concurrent_index :batched_background_migration_jobs, %i(batched_background_migration_id finished_at), name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :batched_background_migration_jobs, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210427125400_add_spamcheck_api_key_to_application_setting.rb b/db/migrate/20210427125400_add_spamcheck_api_key_to_application_setting.rb
new file mode 100644
index 00000000000..9f411a61e5c
--- /dev/null
+++ b/db/migrate/20210427125400_add_spamcheck_api_key_to_application_setting.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddSpamcheckApiKeyToApplicationSetting < ActiveRecord::Migration[6.0]
+ def up
+ add_column :application_settings, :encrypted_spam_check_api_key, :binary
+ add_column :application_settings, :encrypted_spam_check_api_key_iv, :binary
+ end
+
+ def down
+ remove_column :application_settings, :encrypted_spam_check_api_key
+ remove_column :application_settings, :encrypted_spam_check_api_key_iv
+ end
+end
diff --git a/db/migrate/20210427194958_add_description_roll_over_to_iterations_cadences.rb b/db/migrate/20210427194958_add_description_roll_over_to_iterations_cadences.rb
new file mode 100644
index 00000000000..fbae2a14d2d
--- /dev/null
+++ b/db/migrate/20210427194958_add_description_roll_over_to_iterations_cadences.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddDescriptionRollOverToIterationsCadences < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ with_lock_retries do
+ add_column :iterations_cadences, :roll_over, :boolean, null: false, default: false
+ add_column :iterations_cadences, :description, :text # rubocop:disable Migration/AddLimitToTextColumns
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :iterations_cadences, :roll_over
+ remove_column :iterations_cadences, :description
+ end
+ end
+end
diff --git a/db/migrate/20210427200840_add_text_limit_to_iterations_cadences_description.rb b/db/migrate/20210427200840_add_text_limit_to_iterations_cadences_description.rb
new file mode 100644
index 00000000000..a146f295de3
--- /dev/null
+++ b/db/migrate/20210427200840_add_text_limit_to_iterations_cadences_description.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class AddTextLimitToIterationsCadencesDescription < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :iterations_cadences, :description, 5000
+ end
+
+ def down
+ remove_text_limit :iterations_cadences, :description
+ end
+end
diff --git a/db/migrate/20210428151144_update_invalid_web_hooks.rb b/db/migrate/20210428151144_update_invalid_web_hooks.rb
new file mode 100644
index 00000000000..4f45e7aaa9b
--- /dev/null
+++ b/db/migrate/20210428151144_update_invalid_web_hooks.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class UpdateInvalidWebHooks < ActiveRecord::Migration[6.0]
+ disable_ddl_transaction!
+
+ class WebHook < ActiveRecord::Base
+ include EachBatch
+
+ self.table_name = 'web_hooks'
+ end
+
+ def up
+ WebHook.each_batch(of: 10_000, column: :id) do |relation|
+ relation.where(type: 'ProjectHook')
+ .where.not(project_id: nil)
+ .where.not(group_id: nil)
+ .update_all(group_id: nil)
+ end
+ end
+
+ def down
+ # no-op
+ end
+end
diff --git a/db/migrate/20210428151238_validate_foreign_key_on_group_hooks.rb b/db/migrate/20210428151238_validate_foreign_key_on_group_hooks.rb
new file mode 100644
index 00000000000..e7020665b25
--- /dev/null
+++ b/db/migrate/20210428151238_validate_foreign_key_on_group_hooks.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ValidateForeignKeyOnGroupHooks < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ CONSTRAINT_NAME = 'fk_rails_d35697648e'
+
+ def up
+ validate_foreign_key :web_hooks, :group_id, name: CONSTRAINT_NAME
+ end
+
+ def down
+ # no-op
+ end
+end
diff --git a/db/migrate/20210429024843_add_escalation_policies.rb b/db/migrate/20210429024843_add_escalation_policies.rb
new file mode 100644
index 00000000000..63bd558acfb
--- /dev/null
+++ b/db/migrate/20210429024843_add_escalation_policies.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class AddEscalationPolicies < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ UNIQUE_INDEX_NAME = 'index_on_project_id_escalation_policy_name_unique'
+
+ def up
+ create_table_with_constraints :incident_management_escalation_policies do |t|
+ t.references :project, index: false, null: false, foreign_key: { on_delete: :cascade }
+ t.text :name, null: false
+ t.text :description, null: true
+
+ t.text_limit :name, 72
+ t.text_limit :description, 160
+ t.index [:project_id, :name], unique: true, name: UNIQUE_INDEX_NAME
+ end
+ end
+
+ def down
+ drop_table :incident_management_escalation_policies
+ end
+end
diff --git a/db/migrate/20210429032320_add_escalation_rules.rb b/db/migrate/20210429032320_add_escalation_rules.rb
new file mode 100644
index 00000000000..2297f7511a6
--- /dev/null
+++ b/db/migrate/20210429032320_add_escalation_rules.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddEscalationRules < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ RULE_SCHEDULE_INDEX_NAME = 'index_on_oncall_schedule_escalation_rule'
+ UNIQUENESS_INDEX_NAME = 'index_on_policy_schedule_status_elapsed_time_escalation_rules'
+
+ def change
+ create_table :incident_management_escalation_rules do |t|
+ t.belongs_to :policy, index: false, null: false, foreign_key: { on_delete: :cascade, to_table: :incident_management_escalation_policies }
+ t.belongs_to :oncall_schedule, index: { name: RULE_SCHEDULE_INDEX_NAME }, null: false, foreign_key: { on_delete: :cascade, to_table: :incident_management_oncall_schedules }
+ t.integer :status, null: false, limit: 2
+ t.integer :elapsed_time_seconds, null: false, limit: 4
+
+ t.index [:policy_id, :oncall_schedule_id, :status, :elapsed_time_seconds], unique: true, name: UNIQUENESS_INDEX_NAME
+ end
+ end
+end
diff --git a/db/migrate/20210429131525_create_user_credit_card_validations.rb b/db/migrate/20210429131525_create_user_credit_card_validations.rb
new file mode 100644
index 00000000000..8548274b29a
--- /dev/null
+++ b/db/migrate/20210429131525_create_user_credit_card_validations.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class CreateUserCreditCardValidations < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ with_lock_retries do
+ create_table :user_credit_card_validations, id: false do |t|
+ t.references :user, foreign_key: { on_delete: :cascade }, index: false, primary_key: true, default: nil
+ t.datetime_with_timezone :credit_card_validated_at, null: false
+ end
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :user_credit_card_validations
+ end
+ end
+end
diff --git a/db/migrate/20210429181325_add_failure_tracking_to_web_hooks.rb b/db/migrate/20210429181325_add_failure_tracking_to_web_hooks.rb
new file mode 100644
index 00000000000..4a34c2dd307
--- /dev/null
+++ b/db/migrate/20210429181325_add_failure_tracking_to_web_hooks.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class AddFailureTrackingToWebHooks < ActiveRecord::Migration[6.0]
+ def change
+ change_table(:web_hooks, bulk: true) do |t|
+ t.integer :recent_failures, null: false, limit: 2, default: 0
+ t.integer :backoff_count, null: false, limit: 2, default: 0
+ t.column :disabled_until, :timestamptz
+ end
+ end
+end
diff --git a/db/migrate/20210429192653_add_generic_package_duplicate_settings_to_namespace_package_settings.rb b/db/migrate/20210429192653_add_generic_package_duplicate_settings_to_namespace_package_settings.rb
new file mode 100644
index 00000000000..8c328eb52fc
--- /dev/null
+++ b/db/migrate/20210429192653_add_generic_package_duplicate_settings_to_namespace_package_settings.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class AddGenericPackageDuplicateSettingsToNamespacePackageSettings < ActiveRecord::Migration[6.0]
+ # rubocop:disable Migration/AddLimitToTextColumns
+ # limit is added in 20210429193106_add_text_limit_to_namespace_package_settings_generic_duplicate_exception_regex
+ def change
+ add_column :namespace_package_settings, :generic_duplicates_allowed, :boolean, null: false, default: true
+ add_column :namespace_package_settings, :generic_duplicate_exception_regex, :text, null: false, default: ''
+ end
+ # rubocop:enable Migration/AddLimitToTextColumns
+end
diff --git a/db/migrate/20210429193106_add_text_limit_to_namespace_package_settings_generic_duplicate_exception_regex.rb b/db/migrate/20210429193106_add_text_limit_to_namespace_package_settings_generic_duplicate_exception_regex.rb
new file mode 100644
index 00000000000..5d02ad3e2f5
--- /dev/null
+++ b/db/migrate/20210429193106_add_text_limit_to_namespace_package_settings_generic_duplicate_exception_regex.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class AddTextLimitToNamespacePackageSettingsGenericDuplicateExceptionRegex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :namespace_package_settings, :generic_duplicate_exception_regex, 255
+ end
+
+ def down
+ remove_text_limit :namespace_package_settings, :generic_duplicate_exception_regex
+ end
+end
diff --git a/db/migrate/20210430034712_add_alert_manager_token_to_clusters_integration_prometheus.rb b/db/migrate/20210430034712_add_alert_manager_token_to_clusters_integration_prometheus.rb
new file mode 100644
index 00000000000..48ab860a63b
--- /dev/null
+++ b/db/migrate/20210430034712_add_alert_manager_token_to_clusters_integration_prometheus.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class AddAlertManagerTokenToClustersIntegrationPrometheus < ActiveRecord::Migration[6.0]
+ def change
+ change_table :clusters_integration_prometheus do |t|
+ t.text :encrypted_alert_manager_token
+ t.text :encrypted_alert_manager_token_iv
+ end
+ end
+end
diff --git a/db/migrate/20210430100947_add_elasticsearch_username_password_to_application_settings.rb b/db/migrate/20210430100947_add_elasticsearch_username_password_to_application_settings.rb
new file mode 100644
index 00000000000..446ac93c75b
--- /dev/null
+++ b/db/migrate/20210430100947_add_elasticsearch_username_password_to_application_settings.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddElasticsearchUsernamePasswordToApplicationSettings < ActiveRecord::Migration[6.0]
+ def change
+ # rubocop:disable Migration/AddLimitToTextColumns
+ # limit is added in 20210505124816_add_text_limit_to_elasticsearch_username
+ add_column :application_settings, :elasticsearch_username, :text
+ # rubocop:enable Migration/AddLimitToTextColumns
+
+ add_column :application_settings, :encrypted_elasticsearch_password, :binary
+ add_column :application_settings, :encrypted_elasticsearch_password_iv, :binary
+ end
+end
diff --git a/db/migrate/20210430122951_add_snapshot_namespace_id.rb b/db/migrate/20210430122951_add_snapshot_namespace_id.rb
new file mode 100644
index 00000000000..9017bcdde53
--- /dev/null
+++ b/db/migrate/20210430122951_add_snapshot_namespace_id.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddSnapshotNamespaceId < ActiveRecord::Migration[6.0]
+ def change
+ add_column :analytics_devops_adoption_snapshots, :namespace_id, :integer
+ end
+end
diff --git a/db/migrate/20210430124212_add_display_namespace_id_to_segments.rb b/db/migrate/20210430124212_add_display_namespace_id_to_segments.rb
new file mode 100644
index 00000000000..43be5c719fb
--- /dev/null
+++ b/db/migrate/20210430124212_add_display_namespace_id_to_segments.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddDisplayNamespaceIdToSegments < ActiveRecord::Migration[6.0]
+ def change
+ add_column :analytics_devops_adoption_segments, :display_namespace_id, :integer
+ end
+end
diff --git a/db/migrate/20210430124630_add_devops_adoption_indexes.rb b/db/migrate/20210430124630_add_devops_adoption_indexes.rb
new file mode 100644
index 00000000000..4531e6b5e4c
--- /dev/null
+++ b/db/migrate/20210430124630_add_devops_adoption_indexes.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+class AddDevopsAdoptionIndexes < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ SEGMENTS_INDEX_NAME = 'idx_devops_adoption_segments_namespaces_pair'
+ SNAPSHOT_END_TIME_INDEX_NAME = 'idx_devops_adoption_segments_namespace_end_time'
+ SNAPSHOT_RECORDED_AT_INDEX_NAME = 'idx_devops_adoption_segments_namespace_recorded_at'
+
+ def up
+ add_concurrent_index :analytics_devops_adoption_snapshots, [:namespace_id, :end_time],
+ name: SNAPSHOT_END_TIME_INDEX_NAME
+ add_concurrent_index :analytics_devops_adoption_snapshots, [:namespace_id, :recorded_at],
+ name: SNAPSHOT_RECORDED_AT_INDEX_NAME
+ add_concurrent_index :analytics_devops_adoption_segments, [:display_namespace_id, :namespace_id],
+ unique: true, name: SEGMENTS_INDEX_NAME
+
+ add_concurrent_foreign_key :analytics_devops_adoption_snapshots, :namespaces, column: :namespace_id
+ add_concurrent_foreign_key :analytics_devops_adoption_segments, :namespaces, column: :display_namespace_id
+ end
+
+ def down
+ remove_foreign_key :analytics_devops_adoption_segments, :namespaces, column: :display_namespace_id
+ remove_foreign_key :analytics_devops_adoption_snapshots, :namespaces, column: :namespace_id
+
+ remove_concurrent_index_by_name :analytics_devops_adoption_segments, SEGMENTS_INDEX_NAME
+ remove_concurrent_index_by_name :analytics_devops_adoption_snapshots, SNAPSHOT_RECORDED_AT_INDEX_NAME
+ remove_concurrent_index_by_name :analytics_devops_adoption_snapshots, SNAPSHOT_END_TIME_INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210430154631_add_slice_multiplier_and_max_slices_to_elastic_reindexing_task.rb b/db/migrate/20210430154631_add_slice_multiplier_and_max_slices_to_elastic_reindexing_task.rb
new file mode 100644
index 00000000000..be022c1b973
--- /dev/null
+++ b/db/migrate/20210430154631_add_slice_multiplier_and_max_slices_to_elastic_reindexing_task.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+class AddSliceMultiplierAndMaxSlicesToElasticReindexingTask < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DEFAULT_MAX_TOTAL_SLICES_RUNNING = 60
+ DEFAULT_SLICE_MULTIPLIER = 2
+
+ def change
+ add_column :elastic_reindexing_tasks, :max_slices_running, :integer,
+ limit: 2,
+ default: DEFAULT_MAX_TOTAL_SLICES_RUNNING,
+ null: false
+ add_column :elastic_reindexing_tasks, :slice_multiplier, :integer,
+ limit: 2,
+ default: DEFAULT_SLICE_MULTIPLIER,
+ null: false
+ end
+end
diff --git a/db/migrate/20210503105022_create_project_value_streams.rb b/db/migrate/20210503105022_create_project_value_streams.rb
new file mode 100644
index 00000000000..775ab03ad4b
--- /dev/null
+++ b/db/migrate/20210503105022_create_project_value_streams.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class CreateProjectValueStreams < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ INDEX_NAME = 'index_analytics_ca_project_value_streams_on_project_id_and_name'
+
+ def up
+ create_table_with_constraints :analytics_cycle_analytics_project_value_streams do |t|
+ t.timestamps_with_timezone
+ t.references(:project,
+ null: false,
+ index: false,
+ foreign_key: { to_table: :projects, on_delete: :cascade }
+ )
+ t.text :name, null: false
+ t.index [:project_id, :name], unique: true, name: INDEX_NAME
+ t.text_limit :name, 100
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :analytics_cycle_analytics_project_value_streams
+ end
+ end
+end
diff --git a/db/migrate/20210503105845_add_project_value_stream_id_to_project_stages.rb b/db/migrate/20210503105845_add_project_value_stream_id_to_project_stages.rb
new file mode 100644
index 00000000000..d888ab4943c
--- /dev/null
+++ b/db/migrate/20210503105845_add_project_value_stream_id_to_project_stages.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+class AddProjectValueStreamIdToProjectStages < ActiveRecord::Migration[6.0]
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_analytics_ca_project_stages_on_value_stream_id'
+
+ class ProjectValueStream < ActiveRecord::Base
+ self.table_name = 'analytics_cycle_analytics_project_stages'
+
+ include EachBatch
+ end
+
+ def up
+ ProjectValueStream.reset_column_information
+ # The table was never used, there is no user-facing code that modifies the table, it should be empty.
+ # Since there is no functionality present that depends on this data, it's safe to delete the rows.
+ ProjectValueStream.each_batch(of: 100) do |relation|
+ relation.delete_all
+ end
+
+ transaction do
+ add_reference :analytics_cycle_analytics_project_stages, :project_value_stream, null: false, index: { name: INDEX_NAME }, foreign_key: { on_delete: :cascade, to_table: :analytics_cycle_analytics_project_value_streams }, type: :bigint # rubocop: disable Migration/AddReference, Rails/NotNullColumn
+ end
+ end
+
+ def down
+ remove_reference :analytics_cycle_analytics_project_stages, :project_value_stream
+ end
+end
diff --git a/db/migrate/20210503131747_add_web_hook_calls_to_plan_limits.rb b/db/migrate/20210503131747_add_web_hook_calls_to_plan_limits.rb
new file mode 100644
index 00000000000..cb23c9391ea
--- /dev/null
+++ b/db/migrate/20210503131747_add_web_hook_calls_to_plan_limits.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddWebHookCallsToPlanLimits < ActiveRecord::Migration[6.0]
+ def change
+ add_column :plan_limits, :web_hook_calls, :integer, null: false, default: 0
+ end
+end
diff --git a/db/migrate/20210504085144_add_index_on_web_hook_project_id_recent_failures.rb b/db/migrate/20210504085144_add_index_on_web_hook_project_id_recent_failures.rb
new file mode 100644
index 00000000000..898a0ccd1c5
--- /dev/null
+++ b/db/migrate/20210504085144_add_index_on_web_hook_project_id_recent_failures.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexOnWebHookProjectIdRecentFailures < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ INDEX_NAME = 'index_web_hooks_on_project_id_recent_failures'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:web_hooks, [:project_id, :recent_failures], name: INDEX_NAME)
+ end
+
+ def down
+ remove_concurrent_index_by_name(:web_hooks, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20210504135823_add_floc_application_settings.rb b/db/migrate/20210504135823_add_floc_application_settings.rb
new file mode 100644
index 00000000000..a5e3aad6b8c
--- /dev/null
+++ b/db/migrate/20210504135823_add_floc_application_settings.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddFlocApplicationSettings < ActiveRecord::Migration[6.0]
+ def change
+ add_column :application_settings, :floc_enabled, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20210504153354_create_clusters_integration_elasticstack.rb b/db/migrate/20210504153354_create_clusters_integration_elasticstack.rb
new file mode 100644
index 00000000000..5868325e701
--- /dev/null
+++ b/db/migrate/20210504153354_create_clusters_integration_elasticstack.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class CreateClustersIntegrationElasticstack < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def change
+ create_table_with_constraints :clusters_integration_elasticstack, id: false do |t|
+ t.timestamps_with_timezone null: false
+ t.references :cluster, primary_key: true, default: nil, index: false, foreign_key: { on_delete: :cascade }
+ t.boolean :enabled, null: false, default: false
+ t.text :chart_version
+ t.text_limit :chart_version, 10
+ end
+ end
+end
diff --git a/db/migrate/20210504164429_create_partial_indexes_for_pending_and_running_builds.rb b/db/migrate/20210504164429_create_partial_indexes_for_pending_and_running_builds.rb
new file mode 100644
index 00000000000..af403faa278
--- /dev/null
+++ b/db/migrate/20210504164429_create_partial_indexes_for_pending_and_running_builds.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class CreatePartialIndexesForPendingAndRunningBuilds < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ INDEX_PENDING = 'index_ci_builds_runner_id_pending'
+ INDEX_RUNNING = 'index_ci_builds_runner_id_running'
+
+ def up
+ add_concurrent_index :ci_builds, :runner_id, where: "status = 'pending' AND type = 'Ci::Build'", name: INDEX_PENDING
+ add_concurrent_index :ci_builds, :runner_id, where: "status = 'running' AND type = 'Ci::Build'", name: INDEX_RUNNING
+ end
+
+ def down
+ remove_concurrent_index_by_name :ci_builds, INDEX_PENDING
+ remove_concurrent_index_by_name :ci_builds, INDEX_RUNNING
+ end
+end
diff --git a/db/migrate/20210505124816_add_text_limit_to_elasticsearch_username.rb b/db/migrate/20210505124816_add_text_limit_to_elasticsearch_username.rb
new file mode 100644
index 00000000000..324b9193efb
--- /dev/null
+++ b/db/migrate/20210505124816_add_text_limit_to_elasticsearch_username.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class AddTextLimitToElasticsearchUsername < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :application_settings, :elasticsearch_username, 255
+ end
+
+ def down
+ remove_text_limit :application_settings, :elasticsearch_username
+ end
+end
diff --git a/db/migrate/20210507191949_add_remove_on_issue_close_to_labels.rb b/db/migrate/20210507191949_add_remove_on_issue_close_to_labels.rb
new file mode 100644
index 00000000000..107388fe533
--- /dev/null
+++ b/db/migrate/20210507191949_add_remove_on_issue_close_to_labels.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddRemoveOnIssueCloseToLabels < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ with_lock_retries do
+ add_column :labels, :remove_on_close, :boolean, null: false, default: false
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :labels, :remove_on_close, :boolean
+ end
+ end
+end
diff --git a/db/migrate/20210510191551_add_body_to_findings_evidences_request.rb b/db/migrate/20210510191551_add_body_to_findings_evidences_request.rb
new file mode 100644
index 00000000000..9b0054dbd22
--- /dev/null
+++ b/db/migrate/20210510191551_add_body_to_findings_evidences_request.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class AddBodyToFindingsEvidencesRequest < ActiveRecord::Migration[6.0]
+ # rubocop:disable Migration/AddLimitToTextColumns
+ # limit is added in 20210510191552_add_limit_to_findings_evidences_request_body.rb
+ def change
+ add_column :vulnerability_finding_evidence_requests, :body, :text
+ end
+ # rubocop:enable Migration/AddLimitToTextColumns
+end
diff --git a/db/migrate/20210510191552_add_limit_to_findings_evidences_request_body.rb b/db/migrate/20210510191552_add_limit_to_findings_evidences_request_body.rb
new file mode 100644
index 00000000000..84c8acdb10d
--- /dev/null
+++ b/db/migrate/20210510191552_add_limit_to_findings_evidences_request_body.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddLimitToFindingsEvidencesRequestBody < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :vulnerability_finding_evidence_requests, :body, 2048
+ end
+
+ def down
+ remove_text_limit :vulnerability_finding_evidence_requests, :body
+ end
+end
diff --git a/db/migrate/20210511104929_add_epic_board_recent_visits_table.rb b/db/migrate/20210511104929_add_epic_board_recent_visits_table.rb
new file mode 100644
index 00000000000..9822276f9c4
--- /dev/null
+++ b/db/migrate/20210511104929_add_epic_board_recent_visits_table.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+class AddEpicBoardRecentVisitsTable < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ with_lock_retries do
+ unless table_exists?(:boards_epic_board_recent_visits)
+ create_table :boards_epic_board_recent_visits do |t|
+ t.references :user, index: true, null: false, foreign_key: { on_delete: :cascade }
+ t.references :epic_board, index: true, foreign_key: { to_table: :boards_epic_boards, on_delete: :cascade }, null: false
+ t.references :group, index: true, foreign_key: { to_table: :namespaces, on_delete: :cascade }, null: false
+ t.timestamps_with_timezone null: false
+ end
+ end
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :boards_epic_board_recent_visits
+ end
+ end
+end
diff --git a/db/migrate/20210511104930_add_index_to_epic_board_recent_visits.rb b/db/migrate/20210511104930_add_index_to_epic_board_recent_visits.rb
new file mode 100644
index 00000000000..1341886c50c
--- /dev/null
+++ b/db/migrate/20210511104930_add_index_to_epic_board_recent_visits.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddIndexToEpicBoardRecentVisits < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ INDEX_NAME = 'index_epic_board_recent_visits_on_user_group_and_board'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :boards_epic_board_recent_visits,
+ [:user_id, :group_id, :epic_board_id],
+ name: INDEX_NAME,
+ unique: true
+ end
+
+ def down
+ remove_concurrent_index_by_name :boards_epic_board_recent_visits, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20210512183309_add_body_to_findings_evidences_response.rb b/db/migrate/20210512183309_add_body_to_findings_evidences_response.rb
new file mode 100644
index 00000000000..6884d339b9c
--- /dev/null
+++ b/db/migrate/20210512183309_add_body_to_findings_evidences_response.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+class AddBodyToFindingsEvidencesResponse < ActiveRecord::Migration[6.0]
+ # rubocop:disable Migration/AddLimitToTextColumns
+ # limit is added in 20210512183310_add_limit_to_findings_evidences_response_body.rb
+ def change
+ add_column :vulnerability_finding_evidence_responses, :body, :text
+ end
+ # rubocop:enable Migration/AddLimitToTextColumns
+end
diff --git a/db/migrate/20210512183310_add_limit_to_findings_evidences_response_body.rb b/db/migrate/20210512183310_add_limit_to_findings_evidences_response_body.rb
new file mode 100644
index 00000000000..bdd15163809
--- /dev/null
+++ b/db/migrate/20210512183310_add_limit_to_findings_evidences_response_body.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddLimitToFindingsEvidencesResponseBody < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :vulnerability_finding_evidence_responses, :body, 2048
+ end
+
+ def down
+ remove_text_limit :vulnerability_finding_evidence_responses, :body
+ end
+end
diff --git a/db/migrate/20210513093418_add_draft_column_to_merge_requests.rb b/db/migrate/20210513093418_add_draft_column_to_merge_requests.rb
new file mode 100644
index 00000000000..67e2cc0eea0
--- /dev/null
+++ b/db/migrate/20210513093418_add_draft_column_to_merge_requests.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddDraftColumnToMergeRequests < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ def up
+ with_lock_retries do
+ add_column :merge_requests, :draft, :boolean, default: false, null: false
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :merge_requests, :draft
+ end
+ end
+end