summaryrefslogtreecommitdiff
path: root/db/migrate
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 01:45:44 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-19 01:45:44 +0000
commit85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch)
tree9160f299afd8c80c038f08e1545be119f5e3f1e1 /db/migrate
parent15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff)
downloadgitlab-ce-85dc423f7090da0a52c73eb66faf22ddb20efff9.tar.gz
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/20190402150158_backport_enterprise_schema.rb2
-rw-r--r--db/migrate/20200610033228_create_terraform_state_versions.rb28
-rw-r--r--db/migrate/20200610040615_add_versioning_enabled_to_terraform_states.rb9
-rw-r--r--db/migrate/20200611013227_add_users_foreign_key_to_terraform_state_versions.rb19
-rw-r--r--db/migrate/20200629134747_add_extra_index_to_label_links.rb26
-rw-r--r--db/migrate/20200710113437_add_container_registry_delete_tags_service_timeout_to_application_settings.rb19
-rw-r--r--db/migrate/20200805071842_add_index_on_end_date_and_namespace_id_to_gitlab_subscriptions.rb3
-rw-r--r--db/migrate/20200811154630_add_gitpod_application_settings.rb13
-rw-r--r--db/migrate/20200811154631_add_gitpod_application_settings_text_limit.rb16
-rw-r--r--db/migrate/20200811154632_add_gitpod_user_preferences.rb9
-rw-r--r--db/migrate/20200812150810_add_verification_state_to_snippet_repository.rb18
-rw-r--r--db/migrate/20200812150811_add_verification_failure_to_snippet_repository.rb19
-rw-r--r--db/migrate/20200812150812_add_verification_failure_index_to_snippet_repository.rb19
-rw-r--r--db/migrate/20200813143356_remove_old_external_diff_migration_index.rb3
-rw-r--r--db/migrate/20200818052219_add_kubernetes_version_to_cluster_providers_aws.rb28
-rw-r--r--db/migrate/20200818092401_add_checksum_to_build_chunk.rb9
-rw-r--r--db/migrate/20200818171229_add_package_max_file_size_to_plan_limits.rb13
-rw-r--r--db/migrate/20200819192143_add_emails_user_id_foreign_key.rb20
-rw-r--r--db/migrate/20200820105408_add_index_to_container_scanning_findings.rb20
-rw-r--r--db/migrate/20200820130839_add_auto_close_incident_to_project_incident_management_settings.rb13
-rw-r--r--db/migrate/20200820204041_create_ci_platform_metrics.rb31
-rw-r--r--db/migrate/20200821034419_add_unique_index_for_generic_packages.rb20
-rw-r--r--db/migrate/20200821194920_create_atlassian_identities.rb39
-rw-r--r--db/migrate/20200824045812_add_generic_package_max_file_size_to_plan_limits.rb9
-rw-r--r--db/migrate/20200824124623_create_issuable_severities.rb22
-rw-r--r--db/migrate/20200825071735_create_merge_request_reviewers.rb22
-rw-r--r--db/migrate/20200825081025_boards_epic_user_preferences.rb23
-rw-r--r--db/migrate/20200825081035_boards_epic_user_preferences_fk_board.rb19
-rw-r--r--db/migrate/20200825081045_boards_epic_user_preferences_fk_user.rb19
-rw-r--r--db/migrate/20200825081055_boards_epic_user_preferences_fk_epic.rb19
-rw-r--r--db/migrate/20200825084819_create_security_findings_table.rb27
-rw-r--r--db/migrate/20200825154237_update_package_file_size_plan_limits_defaults.rb13
-rw-r--r--db/migrate/20200825180050_add_pipeline_artifacts_size_to_root_storage_statistics.rb19
-rw-r--r--db/migrate/20200826073745_add_default_to_ci_pipeline_locked.rb23
-rw-r--r--db/migrate/20200826092324_add_projects_index_on_import_type_creator_id_created_at.rb21
-rw-r--r--db/migrate/20200826212800_add_index_on_merge_request_id_and_rule_type_to_approval_merge_request_rule.rb23
-rw-r--r--db/migrate/20200827005322_add_creator_id_to_packages.rb9
-rw-r--r--db/migrate/20200827060911_add_merge_request_foreign_key_to_merge_request_reviewers.rb22
-rw-r--r--db/migrate/20200827060932_add_user_foreign_key_to_merge_request_reviewers.rb22
-rw-r--r--db/migrate/20200827085101_add_seats_currently_in_use_in_gitlab_subscriptions.rb21
-rw-r--r--db/migrate/20200827102234_add_ci_job_artifact_id_to_pages_metadata.rb9
-rw-r--r--db/migrate/20200827104432_add_foreign_key_to_artifacts_archive_id_in_pages_metadata.rb21
-rw-r--r--db/migrate/20200827114902_create_analytics_instance_statistics_measurements.rb16
-rw-r--r--db/migrate/20200827142811_create_merge_request_diff_details.rb30
-rw-r--r--db/migrate/20200827150057_add_index_expire_at_to_pipeline_artifacts.rb18
-rw-r--r--db/migrate/20200828155134_add_foreign_key_on_scan_id_to_security_scans.rb19
-rw-r--r--db/migrate/20200828155205_add_foreign_key_on_scanner_id_to_vulnerability_scanners.rb19
-rw-r--r--db/migrate/20200830201204_add_index_to_package_creator.rb21
-rw-r--r--db/migrate/20200901203055_add_id_created_at_index_to_packages.rb19
-rw-r--r--db/migrate/20200901214416_change_pypi_python_version_type.rb18
-rw-r--r--db/migrate/20200902135542_update_package_max_file_size_plan_limits.rb45
-rw-r--r--db/migrate/20200903054946_add_elasticsearch_client_timeout.rb12
-rw-r--r--db/migrate/20200903092241_add_index_to_resource_iteration_events_add_events.rb21
-rw-r--r--db/migrate/20200904092131_add_merge_ref_sha_to_merge_requests.rb19
-rw-r--r--db/migrate/20200904131544_create_ci_build_pending_states.rb25
-rw-r--r--db/migrate/20200907021256_create_dast_site_tokens.rb34
-rw-r--r--db/migrate/20200907062101_create_dast_site_validations.rb40
-rw-r--r--db/migrate/20200908033805_add_dast_site_validation_id_to_dast_site.rb33
-rw-r--r--db/migrate/20200908100053_create_authentication_events.rb33
-rw-r--r--db/migrate/20200908183231_add_check_positive_constraint_to_ci_platform_metrics.rb19
-rw-r--r--db/migrate/20200911120132_create_pages_deployments.rb28
-rw-r--r--db/migrate/20200911121027_add_pages_deployment_project_foreign_key.rb19
-rw-r--r--db/migrate/20200911121048_add_pages_deployment_ci_build_foreign_key.rb19
-rw-r--r--db/migrate/20200914091326_change_build_pending_state_enums.rb15
-rw-r--r--db/migrate/20200914104642_modify_merge_request_api_index.rb20
-rw-r--r--db/migrate/20200914105202_remove_old_merge_request_api_index.rb17
-rw-r--r--db/migrate/20200914155135_add_deduplicated_flag_into_security_findings_table.rb9
-rw-r--r--db/migrate/20200914183227_add_index_on_deduplicated_column_of_security_findings.rb18
-rw-r--r--db/migrate/20200914184212_remove_index_on_security_findings_scan_id.rb18
-rw-r--r--db/migrate/20200915152641_add_verification_state_to_terraform_state_version.rb18
-rw-r--r--db/migrate/20200915164448_add_verification_failure_limit_to_terraform_state_version.rb19
-rw-r--r--db/migrate/20200915164844_add_verification_failure_index_to_terraform_state_version.rb25
72 files changed, 1422 insertions, 3 deletions
diff --git a/db/migrate/20190402150158_backport_enterprise_schema.rb b/db/migrate/20190402150158_backport_enterprise_schema.rb
index 912da09af9d..dcf84d762a3 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 Exception.new(message)
+ raise StandardError.new(message)
end
def create_missing_tables
diff --git a/db/migrate/20200610033228_create_terraform_state_versions.rb b/db/migrate/20200610033228_create_terraform_state_versions.rb
new file mode 100644
index 00000000000..10e9faa56ab
--- /dev/null
+++ b/db/migrate/20200610033228_create_terraform_state_versions.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class CreateTerraformStateVersions < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ create_table :terraform_state_versions, if_not_exists: true do |t|
+ t.references :terraform_state, index: false, null: false, foreign_key: { on_delete: :cascade }
+ t.references :created_by_user, foreign_key: false
+ t.timestamps_with_timezone null: false
+ t.integer :version, null: false
+ t.integer :file_store, limit: 2, null: false
+ t.text :file, null: false
+
+ t.index [:terraform_state_id, :version], unique: true, name: 'index_terraform_state_versions_on_state_id_and_version'
+ end
+
+ add_text_limit :terraform_state_versions, :file, 255
+ end
+
+ def down
+ drop_table :terraform_state_versions
+ end
+end
diff --git a/db/migrate/20200610040615_add_versioning_enabled_to_terraform_states.rb b/db/migrate/20200610040615_add_versioning_enabled_to_terraform_states.rb
new file mode 100644
index 00000000000..51a9fd3908b
--- /dev/null
+++ b/db/migrate/20200610040615_add_versioning_enabled_to_terraform_states.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddVersioningEnabledToTerraformStates < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :terraform_states, :versioning_enabled, :boolean, null: false, default: false
+ end
+end
diff --git a/db/migrate/20200611013227_add_users_foreign_key_to_terraform_state_versions.rb b/db/migrate/20200611013227_add_users_foreign_key_to_terraform_state_versions.rb
new file mode 100644
index 00000000000..b599622c776
--- /dev/null
+++ b/db/migrate/20200611013227_add_users_foreign_key_to_terraform_state_versions.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddUsersForeignKeyToTerraformStateVersions < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :terraform_state_versions, :users, column: :created_by_user_id, on_delete: :nullify
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key_if_exists :terraform_state_versions, :users, column: :created_by_user_id
+ end
+ end
+end
diff --git a/db/migrate/20200629134747_add_extra_index_to_label_links.rb b/db/migrate/20200629134747_add_extra_index_to_label_links.rb
new file mode 100644
index 00000000000..e2066a1db42
--- /dev/null
+++ b/db/migrate/20200629134747_add_extra_index_to_label_links.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class AddExtraIndexToLabelLinks < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_COVERING_ALL_COLUMNS = 'index_on_label_links_all_columns'
+ INDEX_TO_REPLACE = 'index_label_links_on_label_id'
+ NEW_INDEX = 'index_label_links_on_label_id_and_target_type'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :label_links, [:target_id, :label_id, :target_type], name: INDEX_COVERING_ALL_COLUMNS
+
+ add_concurrent_index :label_links, [:label_id, :target_type], name: NEW_INDEX
+ remove_concurrent_index_by_name(:label_links, INDEX_TO_REPLACE)
+ end
+
+ def down
+ remove_concurrent_index_by_name(:label_links, INDEX_COVERING_ALL_COLUMNS)
+
+ add_concurrent_index(:label_links, :label_id, name: INDEX_TO_REPLACE)
+ remove_concurrent_index_by_name(:label_links, NEW_INDEX)
+ end
+end
diff --git a/db/migrate/20200710113437_add_container_registry_delete_tags_service_timeout_to_application_settings.rb b/db/migrate/20200710113437_add_container_registry_delete_tags_service_timeout_to_application_settings.rb
new file mode 100644
index 00000000000..d3865db2e18
--- /dev/null
+++ b/db/migrate/20200710113437_add_container_registry_delete_tags_service_timeout_to_application_settings.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddContainerRegistryDeleteTagsServiceTimeoutToApplicationSettings < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def up
+ add_column(
+ :application_settings,
+ :container_registry_delete_tags_service_timeout,
+ :integer,
+ default: 250,
+ null: false
+ )
+ end
+
+ def down
+ remove_column(:application_settings, :container_registry_delete_tags_service_timeout)
+ end
+end
diff --git a/db/migrate/20200805071842_add_index_on_end_date_and_namespace_id_to_gitlab_subscriptions.rb b/db/migrate/20200805071842_add_index_on_end_date_and_namespace_id_to_gitlab_subscriptions.rb
index 17b92b6b8a8..266b0a50318 100644
--- a/db/migrate/20200805071842_add_index_on_end_date_and_namespace_id_to_gitlab_subscriptions.rb
+++ b/db/migrate/20200805071842_add_index_on_end_date_and_namespace_id_to_gitlab_subscriptions.rb
@@ -12,6 +12,7 @@ class AddIndexOnEndDateAndNamespaceIdToGitlabSubscriptions < ActiveRecord::Migra
end
def down
- remove_concurrent_index :gitlab_subscriptions, [:end_date, :namespace_id]
+ remove_concurrent_index :gitlab_subscriptions, [:end_date, :namespace_id],
+ name: 'index_gitlab_subscriptions_on_end_date_and_namespace_id'
end
end
diff --git a/db/migrate/20200811154630_add_gitpod_application_settings.rb b/db/migrate/20200811154630_add_gitpod_application_settings.rb
new file mode 100644
index 00000000000..e4211d25d0b
--- /dev/null
+++ b/db/migrate/20200811154630_add_gitpod_application_settings.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddGitpodApplicationSettings < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ # rubocop:disable Migration/AddLimitToTextColumns
+ # limit is added in 20200727154631_add_gitpod_application_settings_text_limit
+ def change
+ add_column :application_settings, :gitpod_enabled, :boolean, default: false, null: false
+ add_column :application_settings, :gitpod_url, :text, default: 'https://gitpod.io/', null: true
+ end
+ # rubocop:enable Migration/AddLimitToTextColumns
+end
diff --git a/db/migrate/20200811154631_add_gitpod_application_settings_text_limit.rb b/db/migrate/20200811154631_add_gitpod_application_settings_text_limit.rb
new file mode 100644
index 00000000000..1f43b5d88d5
--- /dev/null
+++ b/db/migrate/20200811154631_add_gitpod_application_settings_text_limit.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class AddGitpodApplicationSettingsTextLimit < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_text_limit :application_settings, :gitpod_url, 255
+ end
+
+ def down
+ remove_text_limit :application_settings, :gitpod_url
+ end
+end
diff --git a/db/migrate/20200811154632_add_gitpod_user_preferences.rb b/db/migrate/20200811154632_add_gitpod_user_preferences.rb
new file mode 100644
index 00000000000..0392c80d39c
--- /dev/null
+++ b/db/migrate/20200811154632_add_gitpod_user_preferences.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddGitpodUserPreferences < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :user_preferences, :gitpod_enabled, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20200812150810_add_verification_state_to_snippet_repository.rb b/db/migrate/20200812150810_add_verification_state_to_snippet_repository.rb
new file mode 100644
index 00000000000..3fdf0b4adf4
--- /dev/null
+++ b/db/migrate/20200812150810_add_verification_state_to_snippet_repository.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddVerificationStateToSnippetRepository < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ change_table(:snippet_repositories) do |t|
+ t.integer :verification_retry_count, limit: 2
+ t.column :verification_retry_at, :datetime_with_timezone
+ t.column :verified_at, :datetime_with_timezone
+ t.binary :verification_checksum, using: 'verification_checksum::bytea'
+
+ # rubocop:disable Migration/AddLimitToTextColumns
+ t.text :verification_failure
+ # rubocop:enable Migration/AddLimitToTextColumns
+ end
+ end
+end
diff --git a/db/migrate/20200812150811_add_verification_failure_to_snippet_repository.rb b/db/migrate/20200812150811_add_verification_failure_to_snippet_repository.rb
new file mode 100644
index 00000000000..64cd094acf0
--- /dev/null
+++ b/db/migrate/20200812150811_add_verification_failure_to_snippet_repository.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddVerificationFailureToSnippetRepository < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ CONSTRAINT_NAME = 'snippet_repositories_verification_failure_text_limit'
+
+ def up
+ add_text_limit :snippet_repositories, :verification_failure, 255, constraint_name: CONSTRAINT_NAME
+ end
+
+ def down
+ remove_check_constraint(:snippet_repositories, CONSTRAINT_NAME)
+ end
+end
diff --git a/db/migrate/20200812150812_add_verification_failure_index_to_snippet_repository.rb b/db/migrate/20200812150812_add_verification_failure_index_to_snippet_repository.rb
new file mode 100644
index 00000000000..3c1d2dc988d
--- /dev/null
+++ b/db/migrate/20200812150812_add_verification_failure_index_to_snippet_repository.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddVerificationFailureIndexToSnippetRepository < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :snippet_repositories, :verification_failure, where: "(verification_failure IS NOT NULL)", name: 'snippet_repositories_verification_failure_partial'
+ add_concurrent_index :snippet_repositories, :verification_checksum, where: "(verification_checksum IS NOT NULL)", name: 'snippet_repositories_verification_checksum_partial'
+ end
+
+ def down
+ remove_concurrent_index_by_name :snippet_repositories, 'snippet_repositories_verification_failure_partial'
+ remove_concurrent_index_by_name :snippet_repositories, 'snippet_repositories_verification_checksum_partial'
+ end
+end
diff --git a/db/migrate/20200813143356_remove_old_external_diff_migration_index.rb b/db/migrate/20200813143356_remove_old_external_diff_migration_index.rb
index 9b466f8734f..a3730247f10 100644
--- a/db/migrate/20200813143356_remove_old_external_diff_migration_index.rb
+++ b/db/migrate/20200813143356_remove_old_external_diff_migration_index.rb
@@ -18,7 +18,8 @@ class RemoveOldExternalDiffMigrationIndex < ActiveRecord::Migration[6.0]
add_concurrent_index(
:merge_request_diffs,
[:merge_request_id, :id],
- where: { stored_externally: [nil, false] }
+ where: 'NOT stored_externally OR stored_externally IS NULL',
+ name: 'index_merge_request_diffs_on_merge_request_id_and_id_partial'
)
end
end
diff --git a/db/migrate/20200818052219_add_kubernetes_version_to_cluster_providers_aws.rb b/db/migrate/20200818052219_add_kubernetes_version_to_cluster_providers_aws.rb
new file mode 100644
index 00000000000..fa3d5210e91
--- /dev/null
+++ b/db/migrate/20200818052219_add_kubernetes_version_to_cluster_providers_aws.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+# See https://docs.gitlab.com/ee/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddKubernetesVersionToClusterProvidersAws < ActiveRecord::Migration[6.0]
+ # Uncomment the following include if you require helper functions:
+ include Gitlab::Database::MigrationHelpers
+
+ # Set this constant to true if this migration requires downtime.
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless column_exists?(:cluster_providers_aws, :kubernetes_version)
+ add_column :cluster_providers_aws, :kubernetes_version, :text, null: false, default: '1.14'
+ end
+
+ add_text_limit :cluster_providers_aws, :kubernetes_version, 30
+ end
+
+ def down
+ if column_exists?(:cluster_providers_aws, :kubernetes_version)
+ remove_column :cluster_providers_aws, :kubernetes_version
+ end
+ end
+end
diff --git a/db/migrate/20200818092401_add_checksum_to_build_chunk.rb b/db/migrate/20200818092401_add_checksum_to_build_chunk.rb
new file mode 100644
index 00000000000..c1c968571a2
--- /dev/null
+++ b/db/migrate/20200818092401_add_checksum_to_build_chunk.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddChecksumToBuildChunk < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :ci_build_trace_chunks, :checksum, :binary
+ end
+end
diff --git a/db/migrate/20200818171229_add_package_max_file_size_to_plan_limits.rb b/db/migrate/20200818171229_add_package_max_file_size_to_plan_limits.rb
new file mode 100644
index 00000000000..5343da6ed5e
--- /dev/null
+++ b/db/migrate/20200818171229_add_package_max_file_size_to_plan_limits.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddPackageMaxFileSizeToPlanLimits < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column(:plan_limits, :conan_max_file_size, :bigint, default: 50.megabytes, null: false)
+ add_column(:plan_limits, :maven_max_file_size, :bigint, default: 50.megabytes, null: false)
+ add_column(:plan_limits, :npm_max_file_size, :bigint, default: 50.megabytes, null: false)
+ add_column(:plan_limits, :nuget_max_file_size, :bigint, default: 50.megabytes, null: false)
+ add_column(:plan_limits, :pypi_max_file_size, :bigint, default: 50.megabytes, null: false)
+ end
+end
diff --git a/db/migrate/20200819192143_add_emails_user_id_foreign_key.rb b/db/migrate/20200819192143_add_emails_user_id_foreign_key.rb
new file mode 100644
index 00000000000..7f00aa6341b
--- /dev/null
+++ b/db/migrate/20200819192143_add_emails_user_id_foreign_key.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddEmailsUserIdForeignKey < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ CONSTRAINT_NAME = 'fk_emails_user_id'
+
+ def up
+ with_lock_retries do
+ add_foreign_key :emails, :users, on_delete: :cascade, validate: false, name: CONSTRAINT_NAME
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key_if_exists :emails, column: :user_id, name: CONSTRAINT_NAME
+ end
+ end
+end
diff --git a/db/migrate/20200820105408_add_index_to_container_scanning_findings.rb b/db/migrate/20200820105408_add_index_to_container_scanning_findings.rb
new file mode 100644
index 00000000000..834e11e3d6e
--- /dev/null
+++ b/db/migrate/20200820105408_add_index_to_container_scanning_findings.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddIndexToContainerScanningFindings < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'idx_container_scanning_findings'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:vulnerability_occurrences, :id,
+ where: "report_type = 2",
+ name: INDEX_NAME)
+ end
+
+ def down
+ remove_concurrent_index_by_name(:project_registry, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20200820130839_add_auto_close_incident_to_project_incident_management_settings.rb b/db/migrate/20200820130839_add_auto_close_incident_to_project_incident_management_settings.rb
new file mode 100644
index 00000000000..01aafa6d988
--- /dev/null
+++ b/db/migrate/20200820130839_add_auto_close_incident_to_project_incident_management_settings.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class AddAutoCloseIncidentToProjectIncidentManagementSettings < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def up
+ add_column :project_incident_management_settings, :auto_close_incident, :boolean, default: true, null: false
+ end
+
+ def down
+ remove_column :project_incident_management_settings, :auto_close_incident
+ end
+end
diff --git a/db/migrate/20200820204041_create_ci_platform_metrics.rb b/db/migrate/20200820204041_create_ci_platform_metrics.rb
new file mode 100644
index 00000000000..27a5a3dc8eb
--- /dev/null
+++ b/db/migrate/20200820204041_create_ci_platform_metrics.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+class CreateCiPlatformMetrics < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ CI_VARIABLES_KEY_INDEX_NAME = "index_ci_variables_on_key"
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:ci_platform_metrics)
+ create_table :ci_platform_metrics do |t|
+ t.datetime_with_timezone :recorded_at, null: false
+ t.text :platform_target, null: false
+ t.integer :count, null: false
+ end
+ end
+
+ add_text_limit :ci_platform_metrics, :platform_target, 255
+ add_concurrent_index :ci_variables, :key, name: CI_VARIABLES_KEY_INDEX_NAME
+ end
+
+ def down
+ if table_exists?(:ci_platform_metrics)
+ drop_table :ci_platform_metrics
+ end
+
+ remove_concurrent_index :ci_variables, :key, name: CI_VARIABLES_KEY_INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200821034419_add_unique_index_for_generic_packages.rb b/db/migrate/20200821034419_add_unique_index_for_generic_packages.rb
new file mode 100644
index 00000000000..f0e4749bbb5
--- /dev/null
+++ b/db/migrate/20200821034419_add_unique_index_for_generic_packages.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+class AddUniqueIndexForGenericPackages < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ INDEX_NAME = 'index_packages_on_project_id_name_version_unique_when_generic'
+ PACKAGE_TYPE_GENERIC = 7
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :packages_packages, [:project_id, :name, :version], unique: true, where: "package_type = #{PACKAGE_TYPE_GENERIC}", name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name(:packages_packages, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20200821194920_create_atlassian_identities.rb b/db/migrate/20200821194920_create_atlassian_identities.rb
new file mode 100644
index 00000000000..1aab9ed6381
--- /dev/null
+++ b/db/migrate/20200821194920_create_atlassian_identities.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class CreateAtlassianIdentities < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:atlassian_identities)
+ with_lock_retries do
+ create_table :atlassian_identities, id: false do |t|
+ t.references :user, index: false, foreign_key: { on_delete: :cascade }, null: false, primary_key: true
+ t.timestamps_with_timezone
+ t.datetime_with_timezone :expires_at
+ t.text :extern_uid, null: false, index: { unique: true }
+ t.binary :encrypted_token
+ t.binary :encrypted_token_iv
+ t.binary :encrypted_refresh_token
+ t.binary :encrypted_refresh_token_iv
+ end
+ end
+ end
+
+ add_text_limit :atlassian_identities, :extern_uid, 255
+
+ add_check_constraint :atlassian_identities, 'octet_length(encrypted_token) <= 2048', 'atlassian_identities_token_length_constraint'
+ add_check_constraint :atlassian_identities, 'octet_length(encrypted_token_iv) <= 12', 'atlassian_identities_token_iv_length_constraint'
+ add_check_constraint :atlassian_identities, 'octet_length(encrypted_refresh_token) <= 512', 'atlassian_identities_refresh_token_length_constraint'
+ add_check_constraint :atlassian_identities, 'octet_length(encrypted_refresh_token_iv) <= 12', 'atlassian_identities_refresh_token_iv_length_constraint'
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :atlassian_identities
+ end
+ end
+end
diff --git a/db/migrate/20200824045812_add_generic_package_max_file_size_to_plan_limits.rb b/db/migrate/20200824045812_add_generic_package_max_file_size_to_plan_limits.rb
new file mode 100644
index 00000000000..eea4f8de7bf
--- /dev/null
+++ b/db/migrate/20200824045812_add_generic_package_max_file_size_to_plan_limits.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddGenericPackageMaxFileSizeToPlanLimits < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column(:plan_limits, :generic_packages_max_file_size, :bigint, default: 5.gigabytes, null: false)
+ end
+end
diff --git a/db/migrate/20200824124623_create_issuable_severities.rb b/db/migrate/20200824124623_create_issuable_severities.rb
new file mode 100644
index 00000000000..674a54fc16d
--- /dev/null
+++ b/db/migrate/20200824124623_create_issuable_severities.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class CreateIssuableSeverities < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ create_table :issuable_severities do |t|
+ t.references :issue, index: { unique: true }, null: false, foreign_key: { on_delete: :cascade }
+ t.integer :severity, null: false, default: 0, limit: 2 # 0 - will stand for unknown
+ end
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :issuable_severities
+ end
+ end
+end
diff --git a/db/migrate/20200825071735_create_merge_request_reviewers.rb b/db/migrate/20200825071735_create_merge_request_reviewers.rb
new file mode 100644
index 00000000000..45451476bb0
--- /dev/null
+++ b/db/migrate/20200825071735_create_merge_request_reviewers.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class CreateMergeRequestReviewers < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ create_table :merge_request_reviewers do |t|
+ t.bigint :user_id, null: false
+ t.bigint :merge_request_id, null: false
+ t.datetime_with_timezone :created_at, null: false
+ end
+
+ add_index :merge_request_reviewers, [:merge_request_id, :user_id], unique: true
+ add_index :merge_request_reviewers, :user_id
+ end
+
+ def down
+ drop_table :merge_request_reviewers
+ end
+end
diff --git a/db/migrate/20200825081025_boards_epic_user_preferences.rb b/db/migrate/20200825081025_boards_epic_user_preferences.rb
new file mode 100644
index 00000000000..fc7454a6a9a
--- /dev/null
+++ b/db/migrate/20200825081025_boards_epic_user_preferences.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class BoardsEpicUserPreferences < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def up
+ create_table :boards_epic_user_preferences do |t|
+ t.bigint :board_id, null: false
+ t.bigint :user_id, null: false
+ t.bigint :epic_id, null: false
+ t.boolean :collapsed, default: false, null: false
+ end
+
+ add_index :boards_epic_user_preferences, :board_id
+ add_index :boards_epic_user_preferences, :user_id
+ add_index :boards_epic_user_preferences, :epic_id
+ add_index :boards_epic_user_preferences, [:board_id, :user_id, :epic_id], unique: true, name: 'index_boards_epic_user_preferences_on_board_user_epic_unique'
+ end
+
+ def down
+ drop_table :boards_epic_user_preferences
+ end
+end
diff --git a/db/migrate/20200825081035_boards_epic_user_preferences_fk_board.rb b/db/migrate/20200825081035_boards_epic_user_preferences_fk_board.rb
new file mode 100644
index 00000000000..eb52cadaecf
--- /dev/null
+++ b/db/migrate/20200825081035_boards_epic_user_preferences_fk_board.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class BoardsEpicUserPreferencesFkBoard < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :boards_epic_user_preferences, :boards, column: :board_id, on_delete: :cascade # rubocop: disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :boards_epic_user_preferences, column: :board_id
+ end
+ end
+end
diff --git a/db/migrate/20200825081045_boards_epic_user_preferences_fk_user.rb b/db/migrate/20200825081045_boards_epic_user_preferences_fk_user.rb
new file mode 100644
index 00000000000..98d0a5b64f6
--- /dev/null
+++ b/db/migrate/20200825081045_boards_epic_user_preferences_fk_user.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class BoardsEpicUserPreferencesFkUser < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :boards_epic_user_preferences, :users, column: :user_id, on_delete: :cascade # rubocop: disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :boards_epic_user_preferences, column: :user_id
+ end
+ end
+end
diff --git a/db/migrate/20200825081055_boards_epic_user_preferences_fk_epic.rb b/db/migrate/20200825081055_boards_epic_user_preferences_fk_epic.rb
new file mode 100644
index 00000000000..46498f186c4
--- /dev/null
+++ b/db/migrate/20200825081055_boards_epic_user_preferences_fk_epic.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class BoardsEpicUserPreferencesFkEpic < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :boards_epic_user_preferences, :epics, column: :epic_id, on_delete: :cascade # rubocop: disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :boards_epic_user_preferences, column: :epic_id
+ end
+ end
+end
diff --git a/db/migrate/20200825084819_create_security_findings_table.rb b/db/migrate/20200825084819_create_security_findings_table.rb
new file mode 100644
index 00000000000..d44b4671e2f
--- /dev/null
+++ b/db/migrate/20200825084819_create_security_findings_table.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class CreateSecurityFindingsTable < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:security_findings)
+ create_table :security_findings do |t|
+ t.references :scan, null: false
+ t.references :scanner, null: false
+ t.integer :severity, limit: 2, index: true, null: false
+ t.integer :confidence, limit: 2, index: true, null: false
+ t.text :project_fingerprint, index: true, null: false
+ end
+ end
+
+ add_text_limit :security_findings, :project_fingerprint, 40
+ end
+
+ def down
+ drop_table :security_findings
+ end
+end
diff --git a/db/migrate/20200825154237_update_package_file_size_plan_limits_defaults.rb b/db/migrate/20200825154237_update_package_file_size_plan_limits_defaults.rb
new file mode 100644
index 00000000000..b71e2a86f4a
--- /dev/null
+++ b/db/migrate/20200825154237_update_package_file_size_plan_limits_defaults.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class UpdatePackageFileSizePlanLimitsDefaults < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ change_column_default(:plan_limits, :maven_max_file_size, from: 50.megabytes, to: 3.gigabytes)
+ change_column_default(:plan_limits, :conan_max_file_size, from: 50.megabytes, to: 3.gigabytes)
+ change_column_default(:plan_limits, :nuget_max_file_size, from: 50.megabytes, to: 500.megabytes)
+ change_column_default(:plan_limits, :npm_max_file_size, from: 50.megabytes, to: 500.megabytes)
+ change_column_default(:plan_limits, :pypi_max_file_size, from: 50.megabytes, to: 3.gigabytes)
+ end
+end
diff --git a/db/migrate/20200825180050_add_pipeline_artifacts_size_to_root_storage_statistics.rb b/db/migrate/20200825180050_add_pipeline_artifacts_size_to_root_storage_statistics.rb
new file mode 100644
index 00000000000..069480c6887
--- /dev/null
+++ b/db/migrate/20200825180050_add_pipeline_artifacts_size_to_root_storage_statistics.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddPipelineArtifactsSizeToRootStorageStatistics < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_column :namespace_root_storage_statistics, :pipeline_artifacts_size, :bigint, default: 0, null: false
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :namespace_root_storage_statistics, :pipeline_artifacts_size, :bigint, default: 0, null: false
+ end
+ end
+end
diff --git a/db/migrate/20200826073745_add_default_to_ci_pipeline_locked.rb b/db/migrate/20200826073745_add_default_to_ci_pipeline_locked.rb
new file mode 100644
index 00000000000..e73963043d5
--- /dev/null
+++ b/db/migrate/20200826073745_add_default_to_ci_pipeline_locked.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class AddDefaultToCiPipelineLocked < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ # Set this constant to true if this migration requires downtime.
+ DOWNTIME = false
+
+ ARTIFACTS_LOCKED = 1
+ UNLOCKED = 0
+
+ def up
+ with_lock_retries do
+ change_column_default :ci_pipelines, :locked, ARTIFACTS_LOCKED
+ end
+ end
+
+ def down
+ with_lock_retries do
+ change_column_default :ci_pipelines, :locked, UNLOCKED
+ end
+ end
+end
diff --git a/db/migrate/20200826092324_add_projects_index_on_import_type_creator_id_created_at.rb b/db/migrate/20200826092324_add_projects_index_on_import_type_creator_id_created_at.rb
new file mode 100644
index 00000000000..94d2e5cb4ab
--- /dev/null
+++ b/db/migrate/20200826092324_add_projects_index_on_import_type_creator_id_created_at.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AddProjectsIndexOnImportTypeCreatorIdCreatedAt < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_imported_projects_on_import_type_creator_id_created_at'.freeze
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :projects,
+ [:import_type, :creator_id, :created_at],
+ where: 'import_type IS NOT NULL',
+ name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :projects, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200826212800_add_index_on_merge_request_id_and_rule_type_to_approval_merge_request_rule.rb b/db/migrate/20200826212800_add_index_on_merge_request_id_and_rule_type_to_approval_merge_request_rule.rb
new file mode 100644
index 00000000000..a40e09648ef
--- /dev/null
+++ b/db/migrate/20200826212800_add_index_on_merge_request_id_and_rule_type_to_approval_merge_request_rule.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class AddIndexOnMergeRequestIdAndRuleTypeToApprovalMergeRequestRule < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = "approval_mr_rule_index_merge_request_id"
+
+ def up
+ add_concurrent_index(
+ :approval_merge_request_rules,
+ :merge_request_id,
+ name: INDEX_NAME
+ )
+ end
+
+ def down
+ remove_concurrent_index_by_name :approval_merge_request_rules, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200827005322_add_creator_id_to_packages.rb b/db/migrate/20200827005322_add_creator_id_to_packages.rb
new file mode 100644
index 00000000000..ecd73ff8785
--- /dev/null
+++ b/db/migrate/20200827005322_add_creator_id_to_packages.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddCreatorIdToPackages < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column(:packages_packages, :creator_id, :integer)
+ end
+end
diff --git a/db/migrate/20200827060911_add_merge_request_foreign_key_to_merge_request_reviewers.rb b/db/migrate/20200827060911_add_merge_request_foreign_key_to_merge_request_reviewers.rb
new file mode 100644
index 00000000000..dc3356375fd
--- /dev/null
+++ b/db/migrate/20200827060911_add_merge_request_foreign_key_to_merge_request_reviewers.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# See https://docs.gitlab.com/ee/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddMergeRequestForeignKeyToMergeRequestReviewers < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :merge_request_reviewers, :merge_requests, column: :merge_request_id, on_delete: :cascade # rubocop:disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :merge_request_reviewers, column: :merge_request_id
+ end
+ end
+end
diff --git a/db/migrate/20200827060932_add_user_foreign_key_to_merge_request_reviewers.rb b/db/migrate/20200827060932_add_user_foreign_key_to_merge_request_reviewers.rb
new file mode 100644
index 00000000000..d6c6985a668
--- /dev/null
+++ b/db/migrate/20200827060932_add_user_foreign_key_to_merge_request_reviewers.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# See https://docs.gitlab.com/ee/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddUserForeignKeyToMergeRequestReviewers < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :merge_request_reviewers, :users, column: :user_id, on_delete: :cascade # rubocop:disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :merge_request_reviewers, column: :user_id
+ end
+ end
+end
diff --git a/db/migrate/20200827085101_add_seats_currently_in_use_in_gitlab_subscriptions.rb b/db/migrate/20200827085101_add_seats_currently_in_use_in_gitlab_subscriptions.rb
new file mode 100644
index 00000000000..83f2d573b6d
--- /dev/null
+++ b/db/migrate/20200827085101_add_seats_currently_in_use_in_gitlab_subscriptions.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AddSeatsCurrentlyInUseInGitlabSubscriptions < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_column :gitlab_subscriptions, :seats_in_use, :integer, default: 0, null: false
+ add_column :gitlab_subscriptions, :seats_owed, :integer, default: 0, null: false
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :gitlab_subscriptions, :seats_in_use
+ remove_column :gitlab_subscriptions, :seats_owed
+ end
+ end
+end
diff --git a/db/migrate/20200827102234_add_ci_job_artifact_id_to_pages_metadata.rb b/db/migrate/20200827102234_add_ci_job_artifact_id_to_pages_metadata.rb
new file mode 100644
index 00000000000..4109c512f14
--- /dev/null
+++ b/db/migrate/20200827102234_add_ci_job_artifact_id_to_pages_metadata.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddCiJobArtifactIdToPagesMetadata < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column(:project_pages_metadata, :artifacts_archive_id, :bigint)
+ end
+end
diff --git a/db/migrate/20200827104432_add_foreign_key_to_artifacts_archive_id_in_pages_metadata.rb b/db/migrate/20200827104432_add_foreign_key_to_artifacts_archive_id_in_pages_metadata.rb
new file mode 100644
index 00000000000..90451ad597a
--- /dev/null
+++ b/db/migrate/20200827104432_add_foreign_key_to_artifacts_archive_id_in_pages_metadata.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AddForeignKeyToArtifactsArchiveIdInPagesMetadata < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ INDEX_NAME = "index_project_pages_metadata_on_artifacts_archive_id"
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index(:project_pages_metadata, :artifacts_archive_id, name: INDEX_NAME)
+ add_concurrent_foreign_key(:project_pages_metadata, :ci_job_artifacts, column: :artifacts_archive_id, on_delete: :nullify)
+ end
+
+ def down
+ remove_foreign_key_if_exists(:project_pages_metadata, :ci_job_artifacts, column: :artifacts_archive_id)
+ remove_concurrent_index_by_name(:project_pages_metadata, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20200827114902_create_analytics_instance_statistics_measurements.rb b/db/migrate/20200827114902_create_analytics_instance_statistics_measurements.rb
new file mode 100644
index 00000000000..f8584d4b9f6
--- /dev/null
+++ b/db/migrate/20200827114902_create_analytics_instance_statistics_measurements.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class CreateAnalyticsInstanceStatisticsMeasurements < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+ UNIQUE_INDEX_NAME = 'index_on_instance_statistics_recorded_at_and_identifier'
+
+ def change
+ create_table :analytics_instance_statistics_measurements do |t|
+ t.bigint :count, null: false
+ t.datetime_with_timezone :recorded_at, null: false
+ t.integer :identifier, limit: 2, null: false
+ end
+
+ add_index :analytics_instance_statistics_measurements, [:identifier, :recorded_at], unique: true, name: UNIQUE_INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200827142811_create_merge_request_diff_details.rb b/db/migrate/20200827142811_create_merge_request_diff_details.rb
new file mode 100644
index 00000000000..29b070bc675
--- /dev/null
+++ b/db/migrate/20200827142811_create_merge_request_diff_details.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+class CreateMergeRequestDiffDetails < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:merge_request_diff_details)
+ with_lock_retries do
+ create_table :merge_request_diff_details, id: false do |t|
+ t.references :merge_request_diff, primary_key: true, null: false, foreign_key: { on_delete: :cascade }
+ t.datetime_with_timezone :verification_retry_at
+ t.datetime_with_timezone :verified_at
+ t.integer :verification_retry_count, limit: 2
+ t.binary :verification_checksum, using: 'verification_checksum::bytea'
+ t.text :verification_failure
+ end
+ end
+ end
+
+ add_text_limit :merge_request_diff_details, :verification_failure, 255
+ end
+
+ def down
+ drop_table :merge_request_diff_details
+ end
+end
diff --git a/db/migrate/20200827150057_add_index_expire_at_to_pipeline_artifacts.rb b/db/migrate/20200827150057_add_index_expire_at_to_pipeline_artifacts.rb
new file mode 100644
index 00000000000..0a1943aa58b
--- /dev/null
+++ b/db/migrate/20200827150057_add_index_expire_at_to_pipeline_artifacts.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddIndexExpireAtToPipelineArtifacts < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_ci_pipeline_artifacts_on_expire_at'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :ci_pipeline_artifacts, :expire_at, name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name(:ci_pipeline_artifacts, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20200828155134_add_foreign_key_on_scan_id_to_security_scans.rb b/db/migrate/20200828155134_add_foreign_key_on_scan_id_to_security_scans.rb
new file mode 100644
index 00000000000..612bd79a282
--- /dev/null
+++ b/db/migrate/20200828155134_add_foreign_key_on_scan_id_to_security_scans.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddForeignKeyOnScanIdToSecurityScans < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :security_findings, :security_scans, column: :scan_id, on_delete: :cascade # rubocop:disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :security_findings, column: :scan_id
+ end
+ end
+end
diff --git a/db/migrate/20200828155205_add_foreign_key_on_scanner_id_to_vulnerability_scanners.rb b/db/migrate/20200828155205_add_foreign_key_on_scanner_id_to_vulnerability_scanners.rb
new file mode 100644
index 00000000000..eb3e878c8be
--- /dev/null
+++ b/db/migrate/20200828155205_add_foreign_key_on_scanner_id_to_vulnerability_scanners.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddForeignKeyOnScannerIdToVulnerabilityScanners < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :security_findings, :vulnerability_scanners, column: :scanner_id, on_delete: :cascade # rubocop:disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :security_findings, column: :scanner_id
+ end
+ end
+end
diff --git a/db/migrate/20200830201204_add_index_to_package_creator.rb b/db/migrate/20200830201204_add_index_to_package_creator.rb
new file mode 100644
index 00000000000..fbc8bbade94
--- /dev/null
+++ b/db/migrate/20200830201204_add_index_to_package_creator.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AddIndexToPackageCreator < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_packages_packages_on_creator_id'
+
+ def up
+ add_concurrent_index :packages_packages, :creator_id, name: INDEX_NAME
+ add_concurrent_foreign_key(:packages_packages, :users, column: :creator_id, on_delete: :nullify)
+ end
+
+ def down
+ remove_foreign_key_if_exists(:packages_packages, :users, column: :creator_id)
+ remove_concurrent_index_by_name(:packages_packages, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20200901203055_add_id_created_at_index_to_packages.rb b/db/migrate/20200901203055_add_id_created_at_index_to_packages.rb
new file mode 100644
index 00000000000..d92309e3fef
--- /dev/null
+++ b/db/migrate/20200901203055_add_id_created_at_index_to_packages.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddIdCreatedAtIndexToPackages < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_packages_packages_on_id_and_created_at'
+
+ def up
+ add_concurrent_index :packages_packages, [:id, :created_at], name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name(:packages_packages, INDEX_NAME)
+ end
+end
diff --git a/db/migrate/20200901214416_change_pypi_python_version_type.rb b/db/migrate/20200901214416_change_pypi_python_version_type.rb
new file mode 100644
index 00000000000..b670b2129c2
--- /dev/null
+++ b/db/migrate/20200901214416_change_pypi_python_version_type.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class ChangePypiPythonVersionType < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ change_column_type_concurrently :packages_pypi_metadata, :required_python, :text, batch_column_name: :package_id # rubocop:disable Migration/AddLimitToTextColumns
+ end
+
+ def down
+ cleanup_concurrent_column_type_change(:packages_pypi_metadata, :required_python)
+ change_column_null :packages_pypi_metadata, :required_python, false
+ end
+end
diff --git a/db/migrate/20200902135542_update_package_max_file_size_plan_limits.rb b/db/migrate/20200902135542_update_package_max_file_size_plan_limits.rb
new file mode 100644
index 00000000000..0ba8f12f89e
--- /dev/null
+++ b/db/migrate/20200902135542_update_package_max_file_size_plan_limits.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+class UpdatePackageMaxFileSizePlanLimits < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ # this is intended to be a no-op for GitLab.com
+ # 5GB is the value for these columns as of 2020-09-02
+ if Gitlab.com?
+ update_all_plan_limits('conan_max_file_size', 5.gigabytes)
+ update_all_plan_limits('maven_max_file_size', 5.gigabytes)
+ update_all_plan_limits('npm_max_file_size', 5.gigabytes)
+ update_all_plan_limits('nuget_max_file_size', 5.gigabytes)
+ update_all_plan_limits('pypi_max_file_size', 5.gigabytes)
+ else
+ update_all_plan_limits('conan_max_file_size', 3.gigabytes)
+ update_all_plan_limits('maven_max_file_size', 3.gigabytes)
+ update_all_plan_limits('npm_max_file_size', 500.megabytes)
+ update_all_plan_limits('nuget_max_file_size', 500.megabytes)
+ update_all_plan_limits('pypi_max_file_size', 3.gigabytes)
+ end
+ end
+
+ def down
+ update_all_plan_limits('conan_max_file_size', 50.megabytes)
+ update_all_plan_limits('maven_max_file_size', 50.megabytes)
+ update_all_plan_limits('npm_max_file_size', 50.megabytes)
+ update_all_plan_limits('nuget_max_file_size', 50.megabytes)
+ update_all_plan_limits('pypi_max_file_size', 50.megabytes)
+ end
+
+ private
+
+ def update_all_plan_limits(limit_name, limit_value)
+ limit_name_quoted = quote_column_name(limit_name)
+ limit_value_quoted = quote(limit_value)
+
+ execute <<~SQL
+ UPDATE plan_limits
+ SET #{limit_name_quoted} = #{limit_value_quoted};
+ SQL
+ end
+end
diff --git a/db/migrate/20200903054946_add_elasticsearch_client_timeout.rb b/db/migrate/20200903054946_add_elasticsearch_client_timeout.rb
new file mode 100644
index 00000000000..93e70461641
--- /dev/null
+++ b/db/migrate/20200903054946_add_elasticsearch_client_timeout.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+# See https://docs.gitlab.com/ee/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddElasticsearchClientTimeout < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :application_settings, :elasticsearch_client_request_timeout, :integer, null: false, default: 0
+ end
+end
diff --git a/db/migrate/20200903092241_add_index_to_resource_iteration_events_add_events.rb b/db/migrate/20200903092241_add_index_to_resource_iteration_events_add_events.rb
new file mode 100644
index 00000000000..be530f1f9b5
--- /dev/null
+++ b/db/migrate/20200903092241_add_index_to_resource_iteration_events_add_events.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class AddIndexToResourceIterationEventsAddEvents < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ INDEX_NAME = 'index_resource_iteration_events_on_iteration_id_and_add_action'
+ ADD_ACTION = '1'
+
+ def up
+ # Index add iteration events
+ add_concurrent_index :resource_iteration_events, :iteration_id, where: "action = #{ADD_ACTION}", name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index :resource_iteration_events, :iteration_id, name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200904092131_add_merge_ref_sha_to_merge_requests.rb b/db/migrate/20200904092131_add_merge_ref_sha_to_merge_requests.rb
new file mode 100644
index 00000000000..a490bc8fe07
--- /dev/null
+++ b/db/migrate/20200904092131_add_merge_ref_sha_to_merge_requests.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddMergeRefShaToMergeRequests < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_column :merge_requests, :merge_ref_sha, :binary
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_column :merge_requests, :merge_ref_sha
+ end
+ end
+end
diff --git a/db/migrate/20200904131544_create_ci_build_pending_states.rb b/db/migrate/20200904131544_create_ci_build_pending_states.rb
new file mode 100644
index 00000000000..2c21ce3ce32
--- /dev/null
+++ b/db/migrate/20200904131544_create_ci_build_pending_states.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class CreateCiBuildPendingStates < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ create_table :ci_build_pending_states do |t|
+ t.timestamps_with_timezone
+ t.references :build, index: { unique: true }, null: false, foreign_key: { to_table: :ci_builds, on_delete: :cascade }, type: :bigint
+ t.integer :state
+ t.integer :failure_reason
+ t.binary :trace_checksum
+ end
+ end
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :ci_build_pending_states
+ end
+ end
+end
diff --git a/db/migrate/20200907021256_create_dast_site_tokens.rb b/db/migrate/20200907021256_create_dast_site_tokens.rb
new file mode 100644
index 00000000000..a8e221aef69
--- /dev/null
+++ b/db/migrate/20200907021256_create_dast_site_tokens.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+class CreateDastSiteTokens < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:dast_site_tokens)
+ with_lock_retries do
+ create_table :dast_site_tokens do |t|
+ t.references :project, foreign_key: { on_delete: :cascade }, null: false, index: true
+
+ t.timestamps_with_timezone null: false
+ t.datetime_with_timezone :expired_at
+
+ t.text :token, null: false, unique: true
+ t.text :url, null: false
+ end
+ end
+ end
+
+ add_text_limit :dast_site_tokens, :token, 255
+ add_text_limit :dast_site_tokens, :url, 255
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :dast_site_tokens
+ end
+ end
+end
diff --git a/db/migrate/20200907062101_create_dast_site_validations.rb b/db/migrate/20200907062101_create_dast_site_validations.rb
new file mode 100644
index 00000000000..5ff2084d693
--- /dev/null
+++ b/db/migrate/20200907062101_create_dast_site_validations.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+class CreateDastSiteValidations < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:dast_site_validations)
+ with_lock_retries do
+ create_table :dast_site_validations do |t|
+ t.references :dast_site_token, foreign_key: { on_delete: :cascade }, null: false, index: true
+
+ t.timestamps_with_timezone null: false
+ t.datetime_with_timezone :validation_started_at
+ t.datetime_with_timezone :validation_passed_at
+ t.datetime_with_timezone :validation_failed_at
+ t.datetime_with_timezone :validation_last_retried_at
+
+ t.integer :validation_strategy, null: false, limit: 2
+
+ t.text :url_base, null: false
+ t.text :url_path, null: false
+ end
+ end
+ end
+
+ add_concurrent_index :dast_site_validations, :url_base
+ add_text_limit :dast_site_validations, :url_base, 255
+ add_text_limit :dast_site_validations, :url_path, 255
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :dast_site_validations
+ end
+ end
+end
diff --git a/db/migrate/20200908033805_add_dast_site_validation_id_to_dast_site.rb b/db/migrate/20200908033805_add_dast_site_validation_id_to_dast_site.rb
new file mode 100644
index 00000000000..3ac86fb1d9e
--- /dev/null
+++ b/db/migrate/20200908033805_add_dast_site_validation_id_to_dast_site.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+class AddDastSiteValidationIdToDastSite < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ TABLE_NAME = :dast_sites
+ RELATION_NAME = :dast_site_validations
+ FK_NAME = :dast_site_validation_id
+ INDEX_NAME = "index_dast_sites_on_#{FK_NAME}"
+
+ disable_ddl_transaction!
+
+ def up
+ unless column_exists?(TABLE_NAME, FK_NAME)
+ with_lock_retries do
+ add_column TABLE_NAME, FK_NAME, :bigint
+ end
+ end
+
+ add_concurrent_index TABLE_NAME, FK_NAME, name: INDEX_NAME
+ add_concurrent_foreign_key TABLE_NAME, RELATION_NAME, column: FK_NAME, on_delete: :nullify
+ end
+
+ def down
+ remove_foreign_key_if_exists TABLE_NAME, RELATION_NAME
+ remove_concurrent_index_by_name TABLE_NAME, INDEX_NAME
+
+ with_lock_retries do
+ remove_column TABLE_NAME, FK_NAME
+ end
+ end
+end
diff --git a/db/migrate/20200908100053_create_authentication_events.rb b/db/migrate/20200908100053_create_authentication_events.rb
new file mode 100644
index 00000000000..2ea9f4e24af
--- /dev/null
+++ b/db/migrate/20200908100053_create_authentication_events.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+class CreateAuthenticationEvents < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ unless table_exists?(:authentication_events)
+ with_lock_retries do
+ create_table :authentication_events do |t|
+ t.datetime_with_timezone :created_at, null: false
+ t.references :user, foreign_key: { on_delete: :nullify }, index: true
+ t.integer :result, limit: 2, null: false
+ t.inet :ip_address
+ t.text :provider, null: false, index: true
+ t.text :user_name, null: false
+ end
+ end
+ end
+
+ add_text_limit :authentication_events, :provider, 64
+ add_text_limit :authentication_events, :user_name, 255
+ end
+
+ def down
+ with_lock_retries do
+ drop_table :authentication_events
+ end
+ end
+end
diff --git a/db/migrate/20200908183231_add_check_positive_constraint_to_ci_platform_metrics.rb b/db/migrate/20200908183231_add_check_positive_constraint_to_ci_platform_metrics.rb
new file mode 100644
index 00000000000..8593e03b5d8
--- /dev/null
+++ b/db/migrate/20200908183231_add_check_positive_constraint_to_ci_platform_metrics.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddCheckPositiveConstraintToCiPlatformMetrics < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ CONSTRAINT_NAME = 'ci_platform_metrics_check_count_positive'
+
+ def up
+ add_check_constraint :ci_platform_metrics, 'count > 0', CONSTRAINT_NAME
+ end
+
+ def down
+ remove_check_constraint :ci_platform_metrics, CONSTRAINT_NAME
+ end
+end
diff --git a/db/migrate/20200911120132_create_pages_deployments.rb b/db/migrate/20200911120132_create_pages_deployments.rb
new file mode 100644
index 00000000000..25327a76900
--- /dev/null
+++ b/db/migrate/20200911120132_create_pages_deployments.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class CreatePagesDeployments < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ create_table :pages_deployments, if_not_exists: true do |t|
+ t.timestamps_with_timezone
+
+ t.bigint :project_id, index: true, null: false
+ t.bigint :ci_build_id, index: true
+
+ t.integer :file_store, null: false, limit: 2
+ t.integer :size, null: false
+ t.text :file, null: false
+ end
+
+ add_text_limit :pages_deployments, :file, 255
+ end
+
+ def down
+ drop_table :pages_deployments
+ end
+end
diff --git a/db/migrate/20200911121027_add_pages_deployment_project_foreign_key.rb b/db/migrate/20200911121027_add_pages_deployment_project_foreign_key.rb
new file mode 100644
index 00000000000..70418881c4f
--- /dev/null
+++ b/db/migrate/20200911121027_add_pages_deployment_project_foreign_key.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddPagesDeploymentProjectForeignKey < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :pages_deployments, :projects, column: :project_id, on_delete: :cascade # rubocop:disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :pages_deployments, column: :project_id
+ end
+ end
+end
diff --git a/db/migrate/20200911121048_add_pages_deployment_ci_build_foreign_key.rb b/db/migrate/20200911121048_add_pages_deployment_ci_build_foreign_key.rb
new file mode 100644
index 00000000000..ece721d88d5
--- /dev/null
+++ b/db/migrate/20200911121048_add_pages_deployment_ci_build_foreign_key.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddPagesDeploymentCiBuildForeignKey < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def up
+ with_lock_retries do
+ add_foreign_key :pages_deployments, :ci_builds, column: :ci_build_id, on_delete: :nullify # rubocop:disable Migration/AddConcurrentForeignKey
+ end
+ end
+
+ def down
+ with_lock_retries do
+ remove_foreign_key :pages_deployments, column: :ci_build_id
+ end
+ end
+end
diff --git a/db/migrate/20200914091326_change_build_pending_state_enums.rb b/db/migrate/20200914091326_change_build_pending_state_enums.rb
new file mode 100644
index 00000000000..dadb15e8844
--- /dev/null
+++ b/db/migrate/20200914091326_change_build_pending_state_enums.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ChangeBuildPendingStateEnums < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def up
+ change_column :ci_build_pending_states, :state, :integer, limit: 2
+ change_column :ci_build_pending_states, :failure_reason, :integer, limit: 2
+ end
+
+ def down
+ change_column :ci_build_pending_states, :state, :integer
+ change_column :ci_build_pending_states, :failure_reason, :integer
+ end
+end
diff --git a/db/migrate/20200914104642_modify_merge_request_api_index.rb b/db/migrate/20200914104642_modify_merge_request_api_index.rb
new file mode 100644
index 00000000000..c21404a10c2
--- /dev/null
+++ b/db/migrate/20200914104642_modify_merge_request_api_index.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+# See https://docs.gitlab.com/ee/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class ModifyMergeRequestApiIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :merge_requests, [:target_project_id, :created_at, :id], name: :index_merge_requests_on_target_project_id_and_created_at_and_id
+ end
+
+ def down
+ remove_concurrent_index :merge_requests, [:target_project_id, :created_at, :id], name: :index_merge_requests_on_target_project_id_and_created_at_and_id
+ end
+end
diff --git a/db/migrate/20200914105202_remove_old_merge_request_api_index.rb b/db/migrate/20200914105202_remove_old_merge_request_api_index.rb
new file mode 100644
index 00000000000..826833dbfb2
--- /dev/null
+++ b/db/migrate/20200914105202_remove_old_merge_request_api_index.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class RemoveOldMergeRequestApiIndex < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ remove_concurrent_index :merge_requests, [:target_project_id, :created_at], name: :index_merge_requests_target_project_id_created_at
+ end
+
+ def down
+ add_concurrent_index :merge_requests, [:target_project_id, :created_at], name: :index_merge_requests_target_project_id_created_at
+ end
+end
diff --git a/db/migrate/20200914155135_add_deduplicated_flag_into_security_findings_table.rb b/db/migrate/20200914155135_add_deduplicated_flag_into_security_findings_table.rb
new file mode 100644
index 00000000000..f403c2d9a07
--- /dev/null
+++ b/db/migrate/20200914155135_add_deduplicated_flag_into_security_findings_table.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class AddDeduplicatedFlagIntoSecurityFindingsTable < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ add_column :security_findings, :deduplicated, :boolean, default: false, null: false
+ end
+end
diff --git a/db/migrate/20200914183227_add_index_on_deduplicated_column_of_security_findings.rb b/db/migrate/20200914183227_add_index_on_deduplicated_column_of_security_findings.rb
new file mode 100644
index 00000000000..1d0f656df4d
--- /dev/null
+++ b/db/migrate/20200914183227_add_index_on_deduplicated_column_of_security_findings.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddIndexOnDeduplicatedColumnOfSecurityFindings < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_security_findings_on_scan_id_and_deduplicated'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :security_findings, [:scan_id, :deduplicated], name: INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :security_findings, INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200914184212_remove_index_on_security_findings_scan_id.rb b/db/migrate/20200914184212_remove_index_on_security_findings_scan_id.rb
new file mode 100644
index 00000000000..342dba537d5
--- /dev/null
+++ b/db/migrate/20200914184212_remove_index_on_security_findings_scan_id.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class RemoveIndexOnSecurityFindingsScanId < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_security_findings_on_scan_id'
+
+ disable_ddl_transaction!
+
+ def up
+ remove_concurrent_index_by_name :security_findings, INDEX_NAME
+ end
+
+ def down
+ add_concurrent_index :security_findings, :scan_id, name: INDEX_NAME
+ end
+end
diff --git a/db/migrate/20200915152641_add_verification_state_to_terraform_state_version.rb b/db/migrate/20200915152641_add_verification_state_to_terraform_state_version.rb
new file mode 100644
index 00000000000..9cc9a702397
--- /dev/null
+++ b/db/migrate/20200915152641_add_verification_state_to_terraform_state_version.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class AddVerificationStateToTerraformStateVersion < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ def change
+ change_table(:terraform_state_versions) do |t|
+ t.integer :verification_retry_count, limit: 2
+ t.column :verification_retry_at, :datetime_with_timezone
+ t.column :verified_at, :datetime_with_timezone
+ t.binary :verification_checksum, using: 'verification_checksum::bytea'
+
+ # rubocop:disable Migration/AddLimitToTextColumns
+ t.text :verification_failure
+ # rubocop:enable Migration/AddLimitToTextColumns
+ end
+ end
+end
diff --git a/db/migrate/20200915164448_add_verification_failure_limit_to_terraform_state_version.rb b/db/migrate/20200915164448_add_verification_failure_limit_to_terraform_state_version.rb
new file mode 100644
index 00000000000..810057a5f54
--- /dev/null
+++ b/db/migrate/20200915164448_add_verification_failure_limit_to_terraform_state_version.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class AddVerificationFailureLimitToTerraformStateVersion < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ CONSTRAINT_NAME = 'tf_state_versions_verification_failure_text_limit'
+
+ def up
+ add_text_limit :terraform_state_versions, :verification_failure, 255, constraint_name: CONSTRAINT_NAME
+ end
+
+ def down
+ remove_check_constraint(:terraform_state_versions, CONSTRAINT_NAME)
+ end
+end
diff --git a/db/migrate/20200915164844_add_verification_failure_index_to_terraform_state_version.rb b/db/migrate/20200915164844_add_verification_failure_index_to_terraform_state_version.rb
new file mode 100644
index 00000000000..423484e74bb
--- /dev/null
+++ b/db/migrate/20200915164844_add_verification_failure_index_to_terraform_state_version.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class AddVerificationFailureIndexToTerraformStateVersion < ActiveRecord::Migration[6.0]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ FAILURE_INDEX_NAME = 'terraform_state_versions_verification_failure_partial'
+ CHECKSUM_INDEX_NAME = 'terraform_state_versions_verification_checksum_partial'
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_index :terraform_state_versions, :verification_failure,
+ where: "(verification_failure IS NOT NULL)",
+ name: FAILURE_INDEX_NAME
+ add_concurrent_index :terraform_state_versions, :verification_checksum,
+ where: "(verification_checksum IS NOT NULL)",
+ name: CHECKSUM_INDEX_NAME
+ end
+
+ def down
+ remove_concurrent_index_by_name :terraform_state_versions, FAILURE_INDEX_NAME
+ remove_concurrent_index_by_name :terraform_state_versions, CHECKSUM_INDEX_NAME
+ end
+end