diff options
author | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2021-01-20 13:34:23 -0600 |
commit | 6438df3a1e0fb944485cebf07976160184697d72 (patch) | |
tree | 00b09bfd170e77ae9391b1a2f5a93ef6839f2597 /db | |
parent | 42bcd54d971da7ef2854b896a7b34f4ef8601067 (diff) | |
download | gitlab-ce-6438df3a1e0fb944485cebf07976160184697d72.tar.gz |
Add latest changes from gitlab-org/gitlab@13-8-stable-eev13.8.0-rc42
Diffstat (limited to 'db')
117 files changed, 1743 insertions, 83 deletions
diff --git a/db/fixtures/development/03_project.rb b/db/fixtures/development/03_project.rb index 596c5e81a2e..e879db84e68 100644 --- a/db/fixtures/development/03_project.rb +++ b/db/fixtures/development/03_project.rb @@ -113,6 +113,7 @@ class Gitlab::Seeder::Projects group.save! group.add_owner(User.first) + group.create_namespace_settings end project_path.gsub!(".git", "") diff --git a/db/migrate/20190108192941_remove_partial_index_from_ci_builds_artifacts_file.rb b/db/migrate/20190108192941_remove_partial_index_from_ci_builds_artifacts_file.rb index 073faf721ae..86de78b831b 100644 --- a/db/migrate/20190108192941_remove_partial_index_from_ci_builds_artifacts_file.rb +++ b/db/migrate/20190108192941_remove_partial_index_from_ci_builds_artifacts_file.rb @@ -4,7 +4,7 @@ class RemovePartialIndexFromCiBuildsArtifactsFile < ActiveRecord::Migration[5.0] include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'partial_index_ci_builds_on_id_with_legacy_artifacts'.freeze + INDEX_NAME = 'partial_index_ci_builds_on_id_with_legacy_artifacts' disable_ddl_transaction! diff --git a/db/migrate/20190402150158_backport_enterprise_schema.rb b/db/migrate/20190402150158_backport_enterprise_schema.rb index dcf84d762a3..c4fbb4b2ab9 100644 --- a/db/migrate/20190402150158_backport_enterprise_schema.rb +++ b/db/migrate/20190402150158_backport_enterprise_schema.rb @@ -198,9 +198,9 @@ class BackportEnterpriseSchema < ActiveRecord::Migration[5.0] # rubocop:enable Migration/DropTable end - def add_column_with_default_if_not_exists(table, name, *args) + def add_column_with_default_if_not_exists(table, name, type, **args) unless column_exists?(table, name) - add_column_with_default(table, name, *args) # rubocop:disable Migration/AddColumnWithDefault + add_column_with_default(table, name, type, **args) # rubocop:disable Migration/AddColumnWithDefault end end @@ -226,10 +226,10 @@ class BackportEnterpriseSchema < ActiveRecord::Migration[5.0] end end - def create_table_if_not_exists(name, *args, &block) + def create_table_if_not_exists(name, **args, &block) return if table_exists?(name) - create_table(name, *args, &block) + create_table(name, **args, &block) end def add_concurrent_foreign_key(source, target, column:, on_delete: nil, name: nil) diff --git a/db/migrate/20190709220143_add_index_to_issues_relative_position.rb b/db/migrate/20190709220143_add_index_to_issues_relative_position.rb index effab33ce4f..ec11c6d768f 100644 --- a/db/migrate/20190709220143_add_index_to_issues_relative_position.rb +++ b/db/migrate/20190709220143_add_index_to_issues_relative_position.rb @@ -8,7 +8,7 @@ class AddIndexToIssuesRelativePosition < ActiveRecord::Migration[5.1] disable_ddl_transaction! - INDEX_NAME = 'index_issues_on_project_id_and_state_and_rel_position_and_id'.freeze + INDEX_NAME = 'index_issues_on_project_id_and_state_and_rel_position_and_id' def up add_concurrent_index :issues, [:project_id, :state, :relative_position, :id], order: { id: :desc }, name: INDEX_NAME diff --git a/db/migrate/20190716144222_create_analytics_cycle_analytics_project_stages.rb b/db/migrate/20190716144222_create_analytics_cycle_analytics_project_stages.rb index c03191013dc..5723f6db0a3 100644 --- a/db/migrate/20190716144222_create_analytics_cycle_analytics_project_stages.rb +++ b/db/migrate/20190716144222_create_analytics_cycle_analytics_project_stages.rb @@ -11,19 +11,20 @@ class CreateAnalyticsCycleAnalyticsProjectStages < ActiveRecord::Migration[5.2] t.integer :relative_position t.integer :start_event_identifier, null: false t.integer :end_event_identifier, null: false - t.references(:project, { + + t.references(:project, null: false, foreign_key: { to_table: :projects, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_project_id' } - }) - t.references(:start_event_label, { + ) + t.references(:start_event_label, foreign_key: { to_table: :labels, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_start_event_label_id' } - }) - t.references(:end_event_label, { + ) + t.references(:end_event_label, foreign_key: { to_table: :labels, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_end_event_label_id' } - }) + ) t.boolean :hidden, default: false, null: false t.boolean :custom, default: true, null: false t.string :name, null: false, limit: 255 # rubocop:disable Migration/PreventStrings diff --git a/db/migrate/20190729062536_create_analytics_cycle_analytics_group_stages.rb b/db/migrate/20190729062536_create_analytics_cycle_analytics_group_stages.rb index 4753a7684e7..d438ece9951 100644 --- a/db/migrate/20190729062536_create_analytics_cycle_analytics_group_stages.rb +++ b/db/migrate/20190729062536_create_analytics_cycle_analytics_group_stages.rb @@ -11,19 +11,20 @@ class CreateAnalyticsCycleAnalyticsGroupStages < ActiveRecord::Migration[5.2] t.integer :relative_position t.integer :start_event_identifier, null: false t.integer :end_event_identifier, null: false - t.references(:group, { + + t.references(:group, null: false, foreign_key: { to_table: :namespaces, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_group_id' } - }) - t.references(:start_event_label, { + ) + t.references(:start_event_label, foreign_key: { to_table: :labels, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_start_event_label_id' } - }) - t.references(:end_event_label, { + ) + t.references(:end_event_label, foreign_key: { to_table: :labels, on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_end_event_label_id' } - }) + ) t.boolean :hidden, default: false, null: false t.boolean :custom, default: true, null: false t.string :name, null: false, limit: 255 # rubocop:disable Migration/PreventStrings diff --git a/db/migrate/20190910125852_create_analytics_language_trend_repository_languages.rb b/db/migrate/20190910125852_create_analytics_language_trend_repository_languages.rb index 07da4c20d55..1fc9034655c 100644 --- a/db/migrate/20190910125852_create_analytics_language_trend_repository_languages.rb +++ b/db/migrate/20190910125852_create_analytics_language_trend_repository_languages.rb @@ -7,16 +7,15 @@ class CreateAnalyticsLanguageTrendRepositoryLanguages < ActiveRecord::Migration[ def change create_table :analytics_language_trend_repository_languages, id: false do |t| t.integer :file_count, null: false, default: 0 - t.references :programming_language, { + + t.references :programming_language, null: false, foreign_key: { on_delete: :cascade }, index: false - } - t.references :project, { + t.references :project, null: false, foreign_key: { on_delete: :cascade }, index: { name: INDEX_PREFIX + 'on_project_id' } - } t.integer :loc, null: false, default: 0 t.integer :bytes, null: false, default: 0 # Storing percentage (with 2 decimal places), on 2 bytes. diff --git a/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb b/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb index b88a1f01d79..01272dfad44 100644 --- a/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb +++ b/db/migrate/20191118182722_add_index_to_environments_on_project_id_state_environment_type.rb @@ -4,8 +4,8 @@ class AddIndexToEnvironmentsOnProjectIdStateEnvironmentType < ActiveRecord::Migr include Gitlab::Database::MigrationHelpers DOWNTIME = false - OLD_INDEX_NAME = 'index_environments_on_project_id_and_state'.freeze - NEW_INDEX_NAME = 'index_environments_on_project_id_state_environment_type'.freeze + OLD_INDEX_NAME = 'index_environments_on_project_id_and_state' + NEW_INDEX_NAME = 'index_environments_on_project_id_state_environment_type' disable_ddl_transaction! diff --git a/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb b/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb index 4511a2a0e49..4a34b9e791e 100644 --- a/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb +++ b/db/migrate/20191121161018_add_project_id_name_version_package_type_index_to_packages_packages.rb @@ -4,7 +4,7 @@ class AddProjectIdNameVersionPackageTypeIndexToPackagesPackages < ActiveRecord:: include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'idx_packages_packages_on_project_id_name_version_package_type'.freeze + INDEX_NAME = 'idx_packages_packages_on_project_id_name_version_package_type' disable_ddl_transaction! diff --git a/db/migrate/20191129144631_add_index_to_resource_group_id.rb b/db/migrate/20191129144631_add_index_to_resource_group_id.rb index 0e5a84f094d..01d56f417b5 100644 --- a/db/migrate/20191129144631_add_index_to_resource_group_id.rb +++ b/db/migrate/20191129144631_add_index_to_resource_group_id.rb @@ -4,7 +4,7 @@ class AddIndexToResourceGroupId < ActiveRecord::Migration[5.2] include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'index_for_resource_group'.freeze + INDEX_NAME = 'index_for_resource_group' disable_ddl_transaction! diff --git a/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb b/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb index 5dacc3c0c66..ea92f9cfd32 100644 --- a/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb +++ b/db/migrate/20191214175727_add_indexes_to_deployments_on_project_id_and_ref.rb @@ -4,7 +4,7 @@ class AddIndexesToDeploymentsOnProjectIdAndRef < ActiveRecord::Migration[5.2] include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'partial_index_deployments_for_project_id_and_tag'.freeze + INDEX_NAME = 'partial_index_deployments_for_project_id_and_tag' disable_ddl_transaction! diff --git a/db/migrate/20200115135234_add_group_index_and_fk_to_import_failures.rb b/db/migrate/20200115135234_add_group_index_and_fk_to_import_failures.rb index ae0d6d31c42..c7f2354440b 100644 --- a/db/migrate/20200115135234_add_group_index_and_fk_to_import_failures.rb +++ b/db/migrate/20200115135234_add_group_index_and_fk_to_import_failures.rb @@ -4,7 +4,7 @@ class AddGroupIndexAndFkToImportFailures < ActiveRecord::Migration[5.2] include Gitlab::Database::MigrationHelpers DOWNTIME = false - GROUP_INDEX = 'index_import_failures_on_group_id_not_null'.freeze + GROUP_INDEX = 'index_import_failures_on_group_id_not_null' disable_ddl_transaction! diff --git a/db/migrate/20200117112554_update_project_index_to_import_failures.rb b/db/migrate/20200117112554_update_project_index_to_import_failures.rb index 1e8347aad44..888a9bec778 100644 --- a/db/migrate/20200117112554_update_project_index_to_import_failures.rb +++ b/db/migrate/20200117112554_update_project_index_to_import_failures.rb @@ -5,8 +5,8 @@ class UpdateProjectIndexToImportFailures < ActiveRecord::Migration[5.2] # Set this constant to true if this migration requires downtime. DOWNTIME = false - PROJECT_INDEX_OLD = 'index_import_failures_on_project_id'.freeze - PROJECT_INDEX_NEW = 'index_import_failures_on_project_id_not_null'.freeze + PROJECT_INDEX_OLD = 'index_import_failures_on_project_id' + PROJECT_INDEX_NEW = 'index_import_failures_on_project_id_not_null' disable_ddl_transaction! diff --git a/db/migrate/20200221144534_drop_activate_prometheus_services_background_jobs.rb b/db/migrate/20200221144534_drop_activate_prometheus_services_background_jobs.rb index 13b041d8f95..4ec514f7fca 100644 --- a/db/migrate/20200221144534_drop_activate_prometheus_services_background_jobs.rb +++ b/db/migrate/20200221144534_drop_activate_prometheus_services_background_jobs.rb @@ -2,8 +2,8 @@ class DropActivatePrometheusServicesBackgroundJobs < ActiveRecord::Migration[6.0] DOWNTIME = false - DROPPED_JOB_CLASS = 'ActivatePrometheusServicesForSharedClusterApplications'.freeze - QUEUE = 'background_migration'.freeze + DROPPED_JOB_CLASS = 'ActivatePrometheusServicesForSharedClusterApplications' + QUEUE = 'background_migration' def up sidekiq_queues.each do |queue| diff --git a/db/migrate/20200528054112_add_index_to_package_name.rb b/db/migrate/20200528054112_add_index_to_package_name.rb index 4629c32ab3d..fa12088741d 100644 --- a/db/migrate/20200528054112_add_index_to_package_name.rb +++ b/db/migrate/20200528054112_add_index_to_package_name.rb @@ -7,7 +7,7 @@ class AddIndexToPackageName < ActiveRecord::Migration[6.0] disable_ddl_transaction! - INDEX_NAME = 'package_name_index'.freeze + INDEX_NAME = 'package_name_index' def up add_concurrent_index(:packages_packages, :name, name: INDEX_NAME) diff --git a/db/migrate/20200624142107_create_analytics_cycle_analytics_group_value_streams.rb b/db/migrate/20200624142107_create_analytics_cycle_analytics_group_value_streams.rb index 24afe463684..4b3f5222399 100644 --- a/db/migrate/20200624142107_create_analytics_cycle_analytics_group_value_streams.rb +++ b/db/migrate/20200624142107_create_analytics_cycle_analytics_group_value_streams.rb @@ -13,11 +13,11 @@ class CreateAnalyticsCycleAnalyticsGroupValueStreams < ActiveRecord::Migration[6 with_lock_retries do create_table :analytics_cycle_analytics_group_value_streams do |t| t.timestamps_with_timezone - t.references(:group, { + t.references(:group, null: false, index: false, foreign_key: { to_table: :namespaces, on_delete: :cascade } - }) + ) t.text :name, null: false t.index [:group_id, :name], unique: true, name: INDEX_NAME 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 index 94d2e5cb4ab..5938d3c8d3a 100644 --- 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 @@ -4,7 +4,7 @@ class AddProjectsIndexOnImportTypeCreatorIdCreatedAt < ActiveRecord::Migration[6 include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'index_imported_projects_on_import_type_creator_id_created_at'.freeze + INDEX_NAME = 'index_imported_projects_on_import_type_creator_id_created_at' disable_ddl_transaction! diff --git a/db/migrate/20201005092709_remove_compliance_frameworks_group_id_fk.rb b/db/migrate/20201005092709_remove_compliance_frameworks_group_id_fk.rb index 88c019c849e..dcbe48c03f9 100644 --- a/db/migrate/20201005092709_remove_compliance_frameworks_group_id_fk.rb +++ b/db/migrate/20201005092709_remove_compliance_frameworks_group_id_fk.rb @@ -4,7 +4,7 @@ class RemoveComplianceFrameworksGroupIdFk < ActiveRecord::Migration[6.0] include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'index_compliance_management_frameworks_on_group_id_and_name'.freeze + INDEX_NAME = 'index_compliance_management_frameworks_on_group_id_and_name' class TmpComplianceFramework < ActiveRecord::Base self.table_name = 'compliance_management_frameworks' diff --git a/db/migrate/20201014205300_drop_backfill_jira_tracker_deployment_type_jobs.rb b/db/migrate/20201014205300_drop_backfill_jira_tracker_deployment_type_jobs.rb index ea45e82dcc4..c26636444af 100644 --- a/db/migrate/20201014205300_drop_backfill_jira_tracker_deployment_type_jobs.rb +++ b/db/migrate/20201014205300_drop_backfill_jira_tracker_deployment_type_jobs.rb @@ -2,8 +2,8 @@ class DropBackfillJiraTrackerDeploymentTypeJobs < ActiveRecord::Migration[6.0] DOWNTIME = false - DROPPED_JOB_CLASS = 'BackfillJiraTrackerDeploymentType'.freeze - QUEUE = 'background_migration'.freeze + DROPPED_JOB_CLASS = 'BackfillJiraTrackerDeploymentType' + QUEUE = 'background_migration' def up sidekiq_queues.each do |queue| diff --git a/db/migrate/20201112215132_swap_partitioned_audit_events.rb b/db/migrate/20201112215132_swap_partitioned_audit_events.rb new file mode 100644 index 00000000000..8360dbd4aa5 --- /dev/null +++ b/db/migrate/20201112215132_swap_partitioned_audit_events.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class SwapPartitionedAuditEvents < ActiveRecord::Migration[6.0] + include Gitlab::Database::PartitioningMigrationHelpers + + DOWNTIME = false + + def up + replace_with_partitioned_table :audit_events + end + + def down + rollback_replace_with_partitioned_table :audit_events + end +end diff --git a/db/migrate/20201204105300_create_packages_debian_file_metadata.rb b/db/migrate/20201204105300_create_packages_debian_file_metadata.rb new file mode 100644 index 00000000000..2bba1b6f38e --- /dev/null +++ b/db/migrate/20201204105300_create_packages_debian_file_metadata.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class CreatePackagesDebianFileMetadata < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + unless table_exists?(:packages_debian_file_metadata) + create_table :packages_debian_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.integer :file_type, limit: 2, null: false + t.text :component + t.text :architecture + t.jsonb :fields + end + end + + add_text_limit :packages_debian_file_metadata, :component, 255 + add_text_limit :packages_debian_file_metadata, :architecture, 255 + end + + def down + drop_table :packages_debian_file_metadata + end +end diff --git a/db/migrate/20201204110700_create_packages_debian_project_distributions.rb b/db/migrate/20201204110700_create_packages_debian_project_distributions.rb new file mode 100644 index 00000000000..5fe45c6236f --- /dev/null +++ b/db/migrate/20201204110700_create_packages_debian_project_distributions.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +class CreatePackagesDebianProjectDistributions < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + UNIQUE_CODENAME = 'uniq_pkgs_debian_project_distributions_project_id_and_codename' + UNIQUE_SUITE = 'uniq_pkgs_debian_project_distributions_project_id_and_suite' + + disable_ddl_transaction! + + def up + with_lock_retries do + unless table_exists?(:packages_debian_project_distributions) + create_table :packages_debian_project_distributions do |t| + t.timestamps_with_timezone + t.references :project, foreign_key: { to_table: :projects, on_delete: :restrict }, null: false + t.references :creator, foreign_key: { to_table: :users, on_delete: :nullify } + t.integer :valid_time_duration_seconds + t.integer :file_store, limit: 2, default: 1, null: false + t.boolean :automatic, default: true, null: false + t.boolean :automatic_upgrades, default: false, null: false + t.text :codename, null: false + t.text :suite + t.text :origin + t.text :label + t.text :version + t.text :description + t.text :encrypted_signing_keys + t.text :encrypted_signing_keys_iv + t.text :file + t.text :file_signature + + t.index %w(project_id codename), + name: UNIQUE_CODENAME, + unique: true, + using: :btree + t.index %w(project_id suite), + name: UNIQUE_SUITE, + unique: true, + using: :btree + end + end + end + + add_text_limit :packages_debian_project_distributions, :codename, 255 + add_text_limit :packages_debian_project_distributions, :suite, 255 + add_text_limit :packages_debian_project_distributions, :origin, 255 + add_text_limit :packages_debian_project_distributions, :label, 255 + add_text_limit :packages_debian_project_distributions, :version, 255 + add_text_limit :packages_debian_project_distributions, :description, 255 + add_text_limit :packages_debian_project_distributions, :encrypted_signing_keys, 2048 + add_text_limit :packages_debian_project_distributions, :encrypted_signing_keys_iv, 255 + add_text_limit :packages_debian_project_distributions, :file, 255 + add_text_limit :packages_debian_project_distributions, :file_signature, 4096 + end + + def down + drop_table :packages_debian_project_distributions + end +end diff --git a/db/migrate/20201204110800_create_packages_debian_group_distributions.rb b/db/migrate/20201204110800_create_packages_debian_group_distributions.rb new file mode 100644 index 00000000000..9ad9a59b3e9 --- /dev/null +++ b/db/migrate/20201204110800_create_packages_debian_group_distributions.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +class CreatePackagesDebianGroupDistributions < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + UNIQUE_CODENAME = 'uniq_pkgs_debian_group_distributions_group_id_and_codename' + UNIQUE_SUITE = 'uniq_pkgs_debian_group_distributions_group_id_and_suite' + + disable_ddl_transaction! + + def up + with_lock_retries do + unless table_exists?(:packages_debian_group_distributions) + create_table :packages_debian_group_distributions do |t| + t.timestamps_with_timezone + t.references :group, foreign_key: { to_table: :namespaces, on_delete: :restrict }, null: false + t.references :creator, foreign_key: { to_table: :users, on_delete: :nullify } + t.integer :valid_time_duration_seconds + t.integer :file_store, limit: 2, default: 1, null: false + t.boolean :automatic, default: true, null: false + t.boolean :automatic_upgrades, default: false, null: false + t.text :codename, null: false + t.text :suite + t.text :origin + t.text :label + t.text :version + t.text :description + t.text :encrypted_signing_keys + t.text :encrypted_signing_keys_iv + t.text :file + t.text :file_signature + + t.index %w(group_id codename), + name: UNIQUE_CODENAME, + unique: true, + using: :btree + t.index %w(group_id suite), + name: UNIQUE_SUITE, + unique: true, + using: :btree + end + end + end + + add_text_limit :packages_debian_group_distributions, :codename, 255 + add_text_limit :packages_debian_group_distributions, :suite, 255 + add_text_limit :packages_debian_group_distributions, :origin, 255 + add_text_limit :packages_debian_group_distributions, :label, 255 + add_text_limit :packages_debian_group_distributions, :version, 255 + add_text_limit :packages_debian_group_distributions, :description, 255 + add_text_limit :packages_debian_group_distributions, :encrypted_signing_keys, 2048 + add_text_limit :packages_debian_group_distributions, :encrypted_signing_keys_iv, 255 + add_text_limit :packages_debian_group_distributions, :file, 255 + add_text_limit :packages_debian_group_distributions, :file_signature, 4096 + end + + def down + drop_table :packages_debian_group_distributions + end +end diff --git a/db/migrate/20201204111000_create_packages_debian_project_architectures.rb b/db/migrate/20201204111000_create_packages_debian_project_architectures.rb new file mode 100644 index 00000000000..f684a413873 --- /dev/null +++ b/db/migrate/20201204111000_create_packages_debian_project_architectures.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class CreatePackagesDebianProjectArchitectures < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + INDEX_NAME = 'idx_pkgs_deb_proj_architectures_on_distribution_id' + UNIQUE_NAME = 'uniq_pkgs_deb_proj_architectures_on_distribution_id_and_name' + + disable_ddl_transaction! + + def up + with_lock_retries do + unless table_exists?(:packages_debian_project_architectures) + create_table :packages_debian_project_architectures do |t| + t.timestamps_with_timezone + t.references :distribution, + foreign_key: { to_table: :packages_debian_project_distributions, on_delete: :cascade }, + null: false, + index: { name: INDEX_NAME } + t.text :name, null: false + + t.index %w(distribution_id name), + name: UNIQUE_NAME, + unique: true, + using: :btree + end + end + end + + add_text_limit :packages_debian_project_architectures, :name, 255 + end + + def down + drop_table :packages_debian_project_architectures + end +end diff --git a/db/migrate/20201204111100_create_packages_debian_group_architectures.rb b/db/migrate/20201204111100_create_packages_debian_group_architectures.rb new file mode 100644 index 00000000000..8a001414c45 --- /dev/null +++ b/db/migrate/20201204111100_create_packages_debian_group_architectures.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class CreatePackagesDebianGroupArchitectures < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + INDEX_NAME = 'idx_pkgs_deb_grp_architectures_on_distribution_id' + UNIQUE_NAME = 'uniq_pkgs_deb_grp_architectures_on_distribution_id_and_name' + + disable_ddl_transaction! + + def up + with_lock_retries do + unless table_exists?(:packages_debian_group_architectures) + create_table :packages_debian_group_architectures do |t| + t.timestamps_with_timezone + t.references :distribution, + foreign_key: { to_table: :packages_debian_group_distributions, on_delete: :cascade }, + null: false, + index: { name: INDEX_NAME } + t.text :name, null: false + + t.index %w(distribution_id name), + name: UNIQUE_NAME, + unique: true, + using: :btree + end + end + end + + add_text_limit :packages_debian_group_architectures, :name, 255 + end + + def down + drop_table :packages_debian_group_architectures + end +end diff --git a/db/migrate/20201204193952_keep_latest_artifact_project_level.rb b/db/migrate/20201204193952_keep_latest_artifact_project_level.rb new file mode 100644 index 00000000000..3fc9fad1dc6 --- /dev/null +++ b/db/migrate/20201204193952_keep_latest_artifact_project_level.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class KeepLatestArtifactProjectLevel < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + add_column :project_ci_cd_settings, :keep_latest_artifact, :boolean, default: true, null: false + end + end + + def down + with_lock_retries do + remove_column :project_ci_cd_settings, :keep_latest_artifact + end + end +end diff --git a/db/migrate/20201208210209_create_incident_management_oncall_shifts.rb b/db/migrate/20201208210209_create_incident_management_oncall_shifts.rb new file mode 100644 index 00000000000..49cb32ffee0 --- /dev/null +++ b/db/migrate/20201208210209_create_incident_management_oncall_shifts.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class CreateIncidentManagementOncallShifts < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + unless table_exists?(:incident_management_oncall_shifts) + with_lock_retries do + create_table :incident_management_oncall_shifts do |t| + t.references :rotation, null: false, foreign_key: { to_table: :incident_management_oncall_rotations, on_delete: :cascade } + t.references :participant, null: false, foreign_key: { to_table: :incident_management_oncall_participants, on_delete: :cascade } + t.datetime_with_timezone :starts_at, null: false + t.datetime_with_timezone :ends_at, null: false + end + + execute <<~SQL + ALTER TABLE incident_management_oncall_shifts + ADD CONSTRAINT inc_mgmnt_no_overlapping_oncall_shifts + EXCLUDE USING gist + ( rotation_id WITH =, + tstzrange(starts_at, ends_at, '[)') WITH && + ) + SQL + end + end + end + + def down + with_lock_retries do + drop_table :incident_management_oncall_shifts + end + end +end diff --git a/db/migrate/20201209163958_add_code_challenge_to_oauth_access_grants.rb b/db/migrate/20201209163958_add_code_challenge_to_oauth_access_grants.rb new file mode 100644 index 00000000000..48292cce55b --- /dev/null +++ b/db/migrate/20201209163958_add_code_challenge_to_oauth_access_grants.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class AddCodeChallengeToOauthAccessGrants < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_column(:oauth_access_grants, :code_challenge, :text, null: true) unless column_exists?(:oauth_access_grants, :code_challenge) + # If `code_challenge_method` is 'plain' the length is at most 128 characters as per the spec + # https://tools.ietf.org/html/rfc7636#section-4.1 + # Otherwise the max length of base64(SHA256(code_verifier)) is 44 characters + add_text_limit(:oauth_access_grants, :code_challenge, 128, constraint_name: 'oauth_access_grants_code_challenge') + + add_column(:oauth_access_grants, :code_challenge_method, :text, null: true) unless column_exists?(:oauth_access_grants, :code_challenge_method) + # Values are either 'plain' or 'S256' + add_text_limit(:oauth_access_grants, :code_challenge_method, 5, constraint_name: 'oauth_access_grants_code_challenge_method') + end + + def down + remove_column(:oauth_access_grants, :code_challenge) + remove_column(:oauth_access_grants, :code_challenge_method) + end +end diff --git a/db/migrate/20201209193551_add_version_sha_cache_to_composer_metadata.rb b/db/migrate/20201209193551_add_version_sha_cache_to_composer_metadata.rb new file mode 100644 index 00000000000..62d0cdae8bc --- /dev/null +++ b/db/migrate/20201209193551_add_version_sha_cache_to_composer_metadata.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddVersionShaCacheToComposerMetadata < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + add_column :packages_composer_metadata, :version_cache_sha, :binary, null: true + end + end + + def down + with_lock_retries do + remove_column :packages_composer_metadata, :version_cache_sha, :binary + end + end +end diff --git a/db/migrate/20201214000000_change_mr_allow_maintainer_to_push_default.rb b/db/migrate/20201214000000_change_mr_allow_maintainer_to_push_default.rb new file mode 100644 index 00000000000..0d97d54f3e4 --- /dev/null +++ b/db/migrate/20201214000000_change_mr_allow_maintainer_to_push_default.rb @@ -0,0 +1,17 @@ +class ChangeMrAllowMaintainerToPushDefault < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + change_column_default :merge_requests, :allow_maintainer_to_push, from: nil, to: true + end + end + + def down + with_lock_retries do + change_column_default :merge_requests, :allow_maintainer_to_push, from: true, to: nil + end + end +end diff --git a/db/migrate/20201214032220_add_has_external_wiki_trigger.rb b/db/migrate/20201214032220_add_has_external_wiki_trigger.rb new file mode 100644 index 00000000000..f6e066b75da --- /dev/null +++ b/db/migrate/20201214032220_add_has_external_wiki_trigger.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class AddHasExternalWikiTrigger < ActiveRecord::Migration[6.0] + include Gitlab::Database::SchemaHelpers + + DOWNTIME = false + FUNCTION_NAME = 'set_has_external_wiki'.freeze + TRIGGER_ON_INSERT_NAME = 'trigger_has_external_wiki_on_insert'.freeze + TRIGGER_ON_UPDATE_NAME = 'trigger_has_external_wiki_on_update'.freeze + TRIGGER_ON_DELETE_NAME = 'trigger_has_external_wiki_on_delete'.freeze + + def up + create_trigger_function(FUNCTION_NAME, replace: true) do + <<~SQL + UPDATE projects SET has_external_wiki = COALESCE(NEW.active, FALSE) + WHERE projects.id = COALESCE(NEW.project_id, OLD.project_id); + RETURN NULL; + SQL + end + + execute(<<~SQL) + CREATE TRIGGER #{TRIGGER_ON_INSERT_NAME} + AFTER INSERT ON services + FOR EACH ROW + WHEN (NEW.active = TRUE AND NEW.type = 'ExternalWikiService' AND NEW.project_id IS NOT NULL) + EXECUTE FUNCTION #{FUNCTION_NAME}(); + SQL + + execute(<<~SQL) + CREATE TRIGGER #{TRIGGER_ON_UPDATE_NAME} + AFTER UPDATE ON services + FOR EACH ROW + WHEN (NEW.type = 'ExternalWikiService' AND OLD.active != NEW.active AND NEW.project_id IS NOT NULL) + EXECUTE FUNCTION #{FUNCTION_NAME}(); + SQL + + execute(<<~SQL) + CREATE TRIGGER #{TRIGGER_ON_DELETE_NAME} + AFTER DELETE ON services + FOR EACH ROW + WHEN (OLD.type = 'ExternalWikiService' AND OLD.project_id IS NOT NULL) + EXECUTE FUNCTION #{FUNCTION_NAME}(); + SQL + end + + def down + drop_trigger(:services, TRIGGER_ON_INSERT_NAME) + drop_trigger(:services, TRIGGER_ON_UPDATE_NAME) + drop_trigger(:services, TRIGGER_ON_DELETE_NAME) + drop_function(FUNCTION_NAME) + end +end diff --git a/db/migrate/20201214111858_add_container_registry_cleanup_tags_service_max_list_size_to_application_settings.rb b/db/migrate/20201214111858_add_container_registry_cleanup_tags_service_max_list_size_to_application_settings.rb new file mode 100644 index 00000000000..312220914c1 --- /dev/null +++ b/db/migrate/20201214111858_add_container_registry_cleanup_tags_service_max_list_size_to_application_settings.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddContainerRegistryCleanupTagsServiceMaxListSizeToApplicationSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column(:application_settings, :container_registry_cleanup_tags_service_max_list_size, :integer, default: 200, null: false) + end +end diff --git a/db/migrate/20201214112752_add_app_settings_container_reg_cleanup_tags_service_max_list_size_constraint.rb b/db/migrate/20201214112752_add_app_settings_container_reg_cleanup_tags_service_max_list_size_constraint.rb new file mode 100644 index 00000000000..935dd641b4c --- /dev/null +++ b/db/migrate/20201214112752_add_app_settings_container_reg_cleanup_tags_service_max_list_size_constraint.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddAppSettingsContainerRegCleanupTagsServiceMaxListSizeConstraint < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + CONSTRAINT_NAME = 'app_settings_container_reg_cleanup_tags_max_list_size_positive' + + disable_ddl_transaction! + + def up + add_check_constraint :application_settings, 'container_registry_cleanup_tags_service_max_list_size >= 0', CONSTRAINT_NAME + end + + def down + remove_check_constraint :application_settings, CONSTRAINT_NAME + end +end diff --git a/db/migrate/20201214184020_add_epic_board_list.rb b/db/migrate/20201214184020_add_epic_board_list.rb new file mode 100644 index 00000000000..9c4e3280754 --- /dev/null +++ b/db/migrate/20201214184020_add_epic_board_list.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +class AddEpicBoardList < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + unless table_exists?(:boards_epic_lists) + with_lock_retries do + create_table :boards_epic_lists do |t| + t.timestamps_with_timezone + t.references :epic_board, index: true, foreign_key: { to_table: :boards_epic_boards, on_delete: :cascade }, null: false + t.references :label, index: true, foreign_key: { on_delete: :cascade } + t.integer :position + t.integer :list_type, default: 1, limit: 2, null: false + + t.index [:epic_board_id, :label_id], unique: true, where: 'list_type = 1', name: 'index_boards_epic_lists_on_epic_board_id_and_label_id' + end + end + end + + add_check_constraint :boards_epic_lists, '(list_type <> 1) OR ("position" IS NOT NULL AND "position" >= 0)', 'boards_epic_lists_position_constraint' + end + + def down + with_lock_retries do + drop_table :boards_epic_lists + end + end +end diff --git a/db/migrate/20201215205404_create_namespace_package_settings.rb b/db/migrate/20201215205404_create_namespace_package_settings.rb new file mode 100644 index 00000000000..d74b99597ce --- /dev/null +++ b/db/migrate/20201215205404_create_namespace_package_settings.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class CreateNamespacePackageSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + with_lock_retries do + create_table :namespace_package_settings, if_not_exists: true, id: false do |t| + t.references :namespace, primary_key: true, index: false, default: nil, foreign_key: { to_table: :namespaces, on_delete: :cascade }, type: :bigint + t.boolean :maven_duplicates_allowed, null: false, default: true + t.text :maven_duplicate_exception_regex, null: false, default: '' + end + end + + add_text_limit :namespace_package_settings, :maven_duplicate_exception_regex, 255 + end + + def down + drop_table :namespace_package_settings + end +end diff --git a/db/migrate/20201216151616_add_squash_commit_sha_index.rb b/db/migrate/20201216151616_add_squash_commit_sha_index.rb new file mode 100644 index 00000000000..ac6d3fda2d2 --- /dev/null +++ b/db/migrate/20201216151616_add_squash_commit_sha_index.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class AddSquashCommitShaIndex < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + INDEX_NAME = "index_merge_requests_on_target_project_id_and_squash_commit_sha" + + disable_ddl_transaction! + + def up + add_concurrent_index :merge_requests, + [:target_project_id, :squash_commit_sha], + name: INDEX_NAME + end + + def down + remove_concurrent_index :merge_requests, + [:target_project_id, :squash_commit_sha], + name: INDEX_NAME + end +end diff --git a/db/migrate/20201216154457_add_devops_adoption_snapshot_range_end.rb b/db/migrate/20201216154457_add_devops_adoption_snapshot_range_end.rb new file mode 100644 index 00000000000..ada1bd9b346 --- /dev/null +++ b/db/migrate/20201216154457_add_devops_adoption_snapshot_range_end.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionSnapshotRangeEnd < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :analytics_devops_adoption_snapshots, :end_time, :datetime_with_timezone + end +end diff --git a/db/migrate/20201217070530_add_group_merge_request_approval_settings.rb b/db/migrate/20201217070530_add_group_merge_request_approval_settings.rb new file mode 100644 index 00000000000..dba9e6e440f --- /dev/null +++ b/db/migrate/20201217070530_add_group_merge_request_approval_settings.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddGroupMergeRequestApprovalSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + create_table :group_merge_request_approval_settings, id: false do |t| + t.timestamps_with_timezone null: false + t.references :group, references: :namespaces, primary_key: true, default: nil, index: false, + foreign_key: { to_table: :namespaces, on_delete: :cascade } + t.boolean :allow_author_approval, null: false, default: false + end + end + end + + def down + with_lock_retries do + drop_table :group_merge_request_approval_settings + end + end +end diff --git a/db/migrate/20201217132603_create_elastic_reindexing_subtasks.rb b/db/migrate/20201217132603_create_elastic_reindexing_subtasks.rb new file mode 100644 index 00000000000..db084b885c2 --- /dev/null +++ b/db/migrate/20201217132603_create_elastic_reindexing_subtasks.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +class CreateElasticReindexingSubtasks < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + class ReindexingTask < ActiveRecord::Base + self.table_name = 'elastic_reindexing_tasks' + end + + class ReindexingSubtask < ActiveRecord::Base + self.table_name = 'elastic_reindexing_subtasks' + end + + def up + unless table_exists?(:elastic_reindexing_subtasks) + create_table :elastic_reindexing_subtasks do |t| + t.references :elastic_reindexing_task, foreign_key: { on_delete: :cascade }, null: false + t.text :alias_name, null: false + t.text :index_name_from, null: false + t.text :index_name_to, null: false + t.text :elastic_task, null: false + t.integer :documents_count_target + t.integer :documents_count + t.timestamps_with_timezone null: false + end + end + + add_text_limit :elastic_reindexing_subtasks, :index_name_from, 255 + add_text_limit :elastic_reindexing_subtasks, :index_name_to, 255 + add_text_limit :elastic_reindexing_subtasks, :elastic_task, 255 + add_text_limit :elastic_reindexing_subtasks, :alias_name, 255 + + ReindexingTask.find_each do |task| + next if task.index_name_from.blank? || task.index_name_to.blank? || task.elastic_task.blank? + next if ReindexingSubtask.where(elastic_reindexing_task_id: task.id).exists? + + ReindexingSubtask.create( + elastic_reindexing_task_id: task.id, + documents_count_target: task.documents_count_target, + documents_count: task.documents_count, + alias_name: 'gitlab-production', + index_name_from: task.index_name_from, + index_name_to: task.index_name_to, + elastic_task: task.elastic_task + ) + end + end + + def down + drop_table :elastic_reindexing_subtasks + end +end diff --git a/db/migrate/20201221124036_add_devops_snapshot_index.rb b/db/migrate/20201221124036_add_devops_snapshot_index.rb new file mode 100644 index 00000000000..85001e9abcf --- /dev/null +++ b/db/migrate/20201221124036_add_devops_snapshot_index.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddDevopsSnapshotIndex < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + INDEX_NAME = 'index_on_snapshots_segment_id_end_time' + + def up + add_concurrent_index :analytics_devops_adoption_snapshots, [:segment_id, :end_time], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :analytics_devops_adoption_snapshots, INDEX_NAME + end +end diff --git a/db/migrate/20201221213415_change_clusters_helm_major_version_default_to_3.rb b/db/migrate/20201221213415_change_clusters_helm_major_version_default_to_3.rb new file mode 100644 index 00000000000..baec0da208b --- /dev/null +++ b/db/migrate/20201221213415_change_clusters_helm_major_version_default_to_3.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class ChangeClustersHelmMajorVersionDefaultTo3 < ActiveRecord::Migration[6.0] + DOWNTIME = false + + def change + change_column_default(:clusters, :helm_major_version, from: 2, to: 3) + end +end diff --git a/db/migrate/20201223114050_add_restrict_user_defined_variables_to_project_settings.rb b/db/migrate/20201223114050_add_restrict_user_defined_variables_to_project_settings.rb new file mode 100644 index 00000000000..d04c6981bf9 --- /dev/null +++ b/db/migrate/20201223114050_add_restrict_user_defined_variables_to_project_settings.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddRestrictUserDefinedVariablesToProjectSettings < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + add_column :project_ci_cd_settings, :restrict_user_defined_variables, :boolean, default: false, null: false + end + end + + def down + with_lock_retries do + remove_column :project_ci_cd_settings, :restrict_user_defined_variables + end + end +end diff --git a/db/migrate/20201224144948_migrate_coverage_report_worker.rb b/db/migrate/20201224144948_migrate_coverage_report_worker.rb new file mode 100644 index 00000000000..a13e5e859e0 --- /dev/null +++ b/db/migrate/20201224144948_migrate_coverage_report_worker.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class MigrateCoverageReportWorker < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + sidekiq_queue_migrate 'ci_pipelines_create_artifact', to: 'ci_pipeline_artifacts_coverage_report' + end + + def down + sidekiq_queue_migrate 'ci_pipeline_artifacts_coverage_report', to: 'ci_pipelines_create_artifact' + end +end diff --git a/db/migrate/20201228184500_add_dismissal_reason_into_vulnerability_feedback_table.rb b/db/migrate/20201228184500_add_dismissal_reason_into_vulnerability_feedback_table.rb new file mode 100644 index 00000000000..92484aced4e --- /dev/null +++ b/db/migrate/20201228184500_add_dismissal_reason_into_vulnerability_feedback_table.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddDismissalReasonIntoVulnerabilityFeedbackTable < ActiveRecord::Migration[6.0] + DOWNTIME = false + + def up + add_column :vulnerability_feedback, :dismissal_reason, :smallint + end + + def down + remove_column :vulnerability_feedback, :dismissal_reason + end +end diff --git a/db/migrate/20201229105948_add_invisible_captcha_enabled_to_settings.rb b/db/migrate/20201229105948_add_invisible_captcha_enabled_to_settings.rb new file mode 100644 index 00000000000..025fcba0729 --- /dev/null +++ b/db/migrate/20201229105948_add_invisible_captcha_enabled_to_settings.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddInvisibleCaptchaEnabledToSettings < ActiveRecord::Migration[6.0] + DOWNTIME = false + + def change + add_column :application_settings, :invisible_captcha_enabled, :boolean, null: false, default: false + end +end diff --git a/db/migrate/20201230161206_add_rate_limiting_response_text_to_application_settings.rb b/db/migrate/20201230161206_add_rate_limiting_response_text_to_application_settings.rb new file mode 100644 index 00000000000..647455f5f88 --- /dev/null +++ b/db/migrate/20201230161206_add_rate_limiting_response_text_to_application_settings.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class AddRateLimitingResponseTextToApplicationSettings < ActiveRecord::Migration[6.0] + DOWNTIME = false + + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20210101110640_set_limit_for_rate_limiting_response_text + def change + add_column :application_settings, :rate_limiting_response_text, :text + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20201230180202_create_onboarding_progress.rb b/db/migrate/20201230180202_create_onboarding_progress.rb new file mode 100644 index 00000000000..b9fe64eb19d --- /dev/null +++ b/db/migrate/20201230180202_create_onboarding_progress.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +class CreateOnboardingProgress < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + with_lock_retries do + create_table :onboarding_progresses do |t| + t.references :namespace, null: false, index: { unique: true }, foreign_key: { on_delete: :cascade } + t.timestamps_with_timezone null: false + t.datetime_with_timezone :git_pull_at + t.datetime_with_timezone :git_write_at + t.datetime_with_timezone :merge_request_created_at + t.datetime_with_timezone :pipeline_created_at + t.datetime_with_timezone :user_added_at + t.datetime_with_timezone :trial_started_at + t.datetime_with_timezone :subscription_created_at + t.datetime_with_timezone :required_mr_approvals_enabled_at + t.datetime_with_timezone :code_owners_enabled_at + t.datetime_with_timezone :scoped_label_created_at + t.datetime_with_timezone :security_scan_enabled_at + t.datetime_with_timezone :issue_auto_closed_at + t.datetime_with_timezone :repository_imported_at + t.datetime_with_timezone :repository_mirrored_at + end + end + end + + def down + with_lock_retries do + drop_table :onboarding_progresses + end + end +end diff --git a/db/migrate/20210101110640_set_limit_for_rate_limiting_response_text.rb b/db/migrate/20210101110640_set_limit_for_rate_limiting_response_text.rb new file mode 100644 index 00000000000..b72f2ae7d70 --- /dev/null +++ b/db/migrate/20210101110640_set_limit_for_rate_limiting_response_text.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class SetLimitForRateLimitingResponseText < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_text_limit :application_settings, :rate_limiting_response_text, 255 + end + + def down + remove_text_limit :application_settings, :rate_limiting_response_text + end +end diff --git a/db/migrate/20210102164121_drop_temporary_index_on_ci_builds.rb b/db/migrate/20210102164121_drop_temporary_index_on_ci_builds.rb new file mode 100644 index 00000000000..0ecf194eb97 --- /dev/null +++ b/db/migrate/20210102164121_drop_temporary_index_on_ci_builds.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class DropTemporaryIndexOnCiBuilds < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + INDEX = 'tmp_build_stage_position_index'.freeze + + def up + remove_concurrent_index_by_name :ci_builds, INDEX + end + + def down + add_concurrent_index :ci_builds, [:stage_id, :stage_idx], where: 'stage_idx IS NOT NULL', name: INDEX + end +end diff --git a/db/migrate/20210104163218_add_epic_board_position_index.rb b/db/migrate/20210104163218_add_epic_board_position_index.rb new file mode 100644 index 00000000000..32c829f0288 --- /dev/null +++ b/db/migrate/20210104163218_add_epic_board_position_index.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddEpicBoardPositionIndex < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + INDEX_NAME = 'index_boards_epic_board_positions_on_scoped_relative_position' + + disable_ddl_transaction! + + def up + add_concurrent_index :boards_epic_board_positions, [:epic_board_id, :epic_id, :relative_position], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :boards_epic_board_positions, INDEX_NAME + end +end diff --git a/db/migrate/20210106153021_drop_tmp_index_on_emails.rb b/db/migrate/20210106153021_drop_tmp_index_on_emails.rb new file mode 100644 index 00000000000..94b4a5437af --- /dev/null +++ b/db/migrate/20210106153021_drop_tmp_index_on_emails.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class DropTmpIndexOnEmails < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + EMAIL_INDEX_NAME = 'tmp_index_for_email_unconfirmation_migration' + + disable_ddl_transaction! + + def up + Gitlab::BackgroundMigration.steal('WrongfullyConfirmedEmailUnconfirmer') + + remove_concurrent_index_by_name(:emails, EMAIL_INDEX_NAME) + end + + def down + add_concurrent_index(:emails, :id, where: 'confirmed_at IS NOT NULL', name: EMAIL_INDEX_NAME) + end +end diff --git a/db/migrate/20210108161039_update_max_import_size_default.rb b/db/migrate/20210108161039_update_max_import_size_default.rb new file mode 100644 index 00000000000..5f0591b2766 --- /dev/null +++ b/db/migrate/20210108161039_update_max_import_size_default.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class UpdateMaxImportSizeDefault < ActiveRecord::Migration[6.0] + DOWNTIME = false + + def change + change_column_default(:application_settings, :max_import_size, from: 50, to: 0) + end +end diff --git a/db/migrate/20210112084512_drop_tmp_index_on_emails_again.rb b/db/migrate/20210112084512_drop_tmp_index_on_emails_again.rb new file mode 100644 index 00000000000..6c2f9cbcb32 --- /dev/null +++ b/db/migrate/20210112084512_drop_tmp_index_on_emails_again.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class DropTmpIndexOnEmailsAgain < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + EMAIL_INDEX_NAME = 'tmp_index_for_email_unconfirmation_migration' + + disable_ddl_transaction! + + def up + remove_concurrent_index_by_name(:emails, EMAIL_INDEX_NAME) + end + + def down + add_concurrent_index(:emails, :id, where: 'confirmed_at IS NOT NULL', name: EMAIL_INDEX_NAME) + end +end diff --git a/db/migrate/20210114033715_remove_group_id_title_index.rb b/db/migrate/20210114033715_remove_group_id_title_index.rb new file mode 100644 index 00000000000..8d63da3d400 --- /dev/null +++ b/db/migrate/20210114033715_remove_group_id_title_index.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class RemoveGroupIdTitleIndex < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + INDEX_NAME = 'index_labels_on_group_id_and_title_with_null_project_id' + LABELS_TABLE = :labels + + def up + remove_concurrent_index_by_name LABELS_TABLE, INDEX_NAME + end + + def down + add_concurrent_index LABELS_TABLE, [:group_id, :title], where: 'project_id IS NULL', name: INDEX_NAME + end +end diff --git a/db/post_migrate/20190402224749_schedule_merge_request_assignees_migration_progress_check.rb b/db/post_migrate/20190402224749_schedule_merge_request_assignees_migration_progress_check.rb index 6fb67deb834..8ec6a4a24ec 100644 --- a/db/post_migrate/20190402224749_schedule_merge_request_assignees_migration_progress_check.rb +++ b/db/post_migrate/20190402224749_schedule_merge_request_assignees_migration_progress_check.rb @@ -3,7 +3,7 @@ class ScheduleMergeRequestAssigneesMigrationProgressCheck < ActiveRecord::Migration[5.0] include Gitlab::Database::MigrationHelpers - MIGRATION = 'MergeRequestAssigneesMigrationProgressCheck'.freeze + MIGRATION = 'MergeRequestAssigneesMigrationProgressCheck' DOWNTIME = false diff --git a/db/post_migrate/20190506135400_schedule_sync_issuables_state_id_where_nil.rb b/db/post_migrate/20190506135400_schedule_sync_issuables_state_id_where_nil.rb index cee99f7cf2e..845c855358b 100644 --- a/db/post_migrate/20190506135400_schedule_sync_issuables_state_id_where_nil.rb +++ b/db/post_migrate/20190506135400_schedule_sync_issuables_state_id_where_nil.rb @@ -20,8 +20,8 @@ class ScheduleSyncIssuablesStateIdWhereNil < ActiveRecord::Migration[5.1] # BATCH_SIZE = 5000 DELAY_INTERVAL = 120.seconds.to_i - ISSUES_MIGRATION = 'SyncIssuesStateId'.freeze - MERGE_REQUESTS_MIGRATION = 'SyncMergeRequestsStateId'.freeze + ISSUES_MIGRATION = 'SyncIssuesStateId' + MERGE_REQUESTS_MIGRATION = 'SyncMergeRequestsStateId' disable_ddl_transaction! diff --git a/db/post_migrate/20190611161642_add_index_to_events_and_audit_events_created_at_author_id.rb b/db/post_migrate/20190611161642_add_index_to_events_and_audit_events_created_at_author_id.rb index 342e83d6322..5b9afbe128c 100644 --- a/db/post_migrate/20190611161642_add_index_to_events_and_audit_events_created_at_author_id.rb +++ b/db/post_migrate/20190611161642_add_index_to_events_and_audit_events_created_at_author_id.rb @@ -7,9 +7,9 @@ class AddIndexToEventsAndAuditEventsCreatedAtAuthorId < ActiveRecord::Migration[ include Gitlab::Database::MigrationHelpers DOWNTIME = false - INDEX_NAME = 'analytics_index_%s_on_created_at_and_author_id'.freeze - EVENTS_INDEX_NAME = (INDEX_NAME % 'events').freeze - AUDIT_EVENTS_INDEX_NAME = (INDEX_NAME % 'audit_events').freeze + INDEX_NAME = 'analytics_index_%s_on_created_at_and_author_id' + EVENTS_INDEX_NAME = (INDEX_NAME % 'events') + AUDIT_EVENTS_INDEX_NAME = (INDEX_NAME % 'audit_events') disable_ddl_transaction! diff --git a/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb b/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb index 7a6d0b089a0..5fcec83bfc3 100644 --- a/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb +++ b/db/post_migrate/20191030223057_backfill_version_author_and_created_at.rb @@ -2,7 +2,7 @@ class BackfillVersionAuthorAndCreatedAt < ActiveRecord::Migration[5.2] DOWNTIME = false - MIGRATION = 'BackfillVersionDataFromGitaly'.freeze + MIGRATION = 'BackfillVersionDataFromGitaly' BATCH_SIZE = 500 disable_ddl_transaction! diff --git a/db/post_migrate/20191104142124_nullify_users_role.rb b/db/post_migrate/20191104142124_nullify_users_role.rb index 540d58e95ba..ab8eae46745 100644 --- a/db/post_migrate/20191104142124_nullify_users_role.rb +++ b/db/post_migrate/20191104142124_nullify_users_role.rb @@ -4,7 +4,7 @@ class NullifyUsersRole < ActiveRecord::Migration[5.2] include Gitlab::Database::MigrationHelpers disable_ddl_transaction! - INDEX_NAME = 'partial_index_users_updated_at_for_cleaning_mistaken_values'.freeze + INDEX_NAME = 'partial_index_users_updated_at_for_cleaning_mistaken_values' DOWNTIME = false diff --git a/db/post_migrate/20200207185149_schedule_fix_orphan_promoted_issues.rb b/db/post_migrate/20200207185149_schedule_fix_orphan_promoted_issues.rb index 83ba56501dd..d25d6ed2dc7 100644 --- a/db/post_migrate/20200207185149_schedule_fix_orphan_promoted_issues.rb +++ b/db/post_migrate/20200207185149_schedule_fix_orphan_promoted_issues.rb @@ -5,7 +5,7 @@ class ScheduleFixOrphanPromotedIssues < ActiveRecord::Migration[5.2] DOWNTIME = false BATCH_SIZE = 100 - BACKGROUND_MIGRATION = 'FixOrphanPromotedIssues'.freeze + BACKGROUND_MIGRATION = 'FixOrphanPromotedIssues' disable_ddl_transaction! diff --git a/db/post_migrate/20200217225719_schedule_migrate_security_scans.rb b/db/post_migrate/20200217225719_schedule_migrate_security_scans.rb index 7ef204ed9de..087c189f9fd 100644 --- a/db/post_migrate/20200217225719_schedule_migrate_security_scans.rb +++ b/db/post_migrate/20200217225719_schedule_migrate_security_scans.rb @@ -6,7 +6,7 @@ class ScheduleMigrateSecurityScans < ActiveRecord::Migration[5.2] DOWNTIME = false INTERVAL = 2.minutes.to_i BATCH_SIZE = 10_000 - MIGRATION = 'MigrateSecurityScans'.freeze + MIGRATION = 'MigrateSecurityScans' disable_ddl_transaction! diff --git a/db/post_migrate/20200716234259_remove_duplicate_labels_from_group.rb b/db/post_migrate/20200716234259_remove_duplicate_labels_from_group.rb new file mode 100644 index 00000000000..f19a209092b --- /dev/null +++ b/db/post_migrate/20200716234259_remove_duplicate_labels_from_group.rb @@ -0,0 +1,135 @@ +# frozen_string_literal: true + +class RemoveDuplicateLabelsFromGroup < ActiveRecord::Migration[6.0] + DOWNTIME = false + + CREATE = 1 + RENAME = 2 + + disable_ddl_transaction! + + class BackupLabel < ApplicationRecord + include EachBatch + + self.table_name = 'backup_labels' + end + + class Label < ApplicationRecord + self.table_name = 'labels' + end + + class Group < ApplicationRecord + include EachBatch + + self.table_name = 'namespaces' + end + + BATCH_SIZE = 10_000 + + def up + # Split to smaller chunks + # Loop rather than background job, every 10,000 + # there are ~1,800,000 groups in total (excluding personal namespaces, which can't have labels) + Group.where(type: 'Group').each_batch(of: BATCH_SIZE) do |batch| + range = batch.pluck('MIN(id)', 'MAX(id)').first + + transaction do + remove_full_duplicates(*range) + end + + transaction do + rename_partial_duplicates(*range) + end + end + end + + DOWN_BATCH_SIZE = 1000 + + def down + BackupLabel.where('project_id IS NULL AND group_id IS NOT NULL').each_batch(of: DOWN_BATCH_SIZE) do |batch| + range = batch.pluck('MIN(id)', 'MAX(id)').first + + restore_renamed_labels(*range) + restore_deleted_labels(*range) + end + end + + def remove_full_duplicates(start_id, stop_id) + # Fields that are considered duplicate: + # group_id title template description type color + + duplicate_labels = ApplicationRecord.connection.execute(<<-SQL.squish) +WITH data AS ( + SELECT labels.*, + row_number() OVER (PARTITION BY labels.group_id, labels.title, labels.template, labels.description, labels.type, labels.color ORDER BY labels.id) AS row_number, + #{CREATE} AS restore_action + FROM labels + WHERE labels.group_id BETWEEN #{start_id} AND #{stop_id} + AND NOT EXISTS (SELECT * FROM board_labels WHERE board_labels.label_id = labels.id) + AND NOT EXISTS (SELECT * FROM label_links WHERE label_links.label_id = labels.id) + AND NOT EXISTS (SELECT * FROM label_priorities WHERE label_priorities.label_id = labels.id) + AND NOT EXISTS (SELECT * FROM lists WHERE lists.label_id = labels.id) + AND NOT EXISTS (SELECT * FROM resource_label_events WHERE resource_label_events.label_id = labels.id) +) SELECT * FROM data WHERE row_number > 1; + SQL + + if duplicate_labels.any? + # create backup records + BackupLabel.insert_all!(duplicate_labels.map { |label| label.except("row_number") }) + + Label.unscoped.where(id: duplicate_labels.pluck("id")).delete_all + end + end + + def rename_partial_duplicates(start_id, stop_id) + # We need to ensure that the new title (with `_duplicate#{ID}`) doesn't exceed the limit. + # Truncate the original title (if needed) to 245 characters minus the length of the ID + # then add `_duplicate#{ID}` + + soft_duplicates = ApplicationRecord.connection.execute(<<-SQL.squish) +WITH data AS ( + SELECT + *, + substring(title from 1 for 245 - length(id::text)) || '_duplicate' || id::text as new_title, + #{RENAME} AS restore_action, + row_number() OVER (PARTITION BY group_id, title ORDER BY id) AS row_number + FROM labels + WHERE group_id BETWEEN #{start_id} AND #{stop_id} +) SELECT * FROM data WHERE row_number > 1; + SQL + + if soft_duplicates.any? + # create backup records + BackupLabel.insert_all!(soft_duplicates.map { |label| label.except("row_number") }) + + ApplicationRecord.connection.execute(<<-SQL.squish) +UPDATE labels SET title = substring(title from 1 for 245 - length(id::text)) || '_duplicate' || id::text +WHERE labels.id IN (#{soft_duplicates.map { |dup| dup["id"] }.join(", ")}); + SQL + end + end + + def restore_renamed_labels(start_id, stop_id) + # the backup label IDs are not incremental, they are copied directly from the Labels table + ApplicationRecord.connection.execute(<<-SQL.squish) +WITH backups AS ( + SELECT id, title + FROM backup_labels + WHERE id BETWEEN #{start_id} AND #{stop_id} + AND restore_action = #{RENAME} +) UPDATE labels SET title = backups.title +FROM backups +WHERE labels.id = backups.id; + SQL + end + + def restore_deleted_labels(start_id, stop_id) + ActiveRecord::Base.connection.execute(<<-SQL.squish) +INSERT INTO labels +SELECT id, title, color, group_id, created_at, updated_at, template, description, description_html, type, cached_markdown_version FROM backup_labels + WHERE backup_labels.id BETWEEN #{start_id} AND #{stop_id} + AND backup_labels.project_id IS NULL AND backup_labels.group_id IS NOT NULL + AND backup_labels.restore_action = #{CREATE} + SQL + end +end diff --git a/db/post_migrate/20200716234518_add_uniqueness_index_to_label_title_and_group.rb b/db/post_migrate/20200716234518_add_uniqueness_index_to_label_title_and_group.rb new file mode 100644 index 00000000000..08bab811c00 --- /dev/null +++ b/db/post_migrate/20200716234518_add_uniqueness_index_to_label_title_and_group.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class AddUniquenessIndexToLabelTitleAndGroup < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + GROUP_AND_TITLE = [:group_id, :title] + + def up + add_concurrent_index :labels, GROUP_AND_TITLE, where: "labels.project_id IS NULL", unique: true, name: "index_labels_on_group_id_and_title_unique" + remove_concurrent_index :labels, GROUP_AND_TITLE, name: "index_labels_on_group_id_and_title" + end + + def down + add_concurrent_index :labels, GROUP_AND_TITLE, where: "labels.project_id IS NULL", unique: false, name: "index_labels_on_group_id_and_title" + remove_concurrent_index :labels, GROUP_AND_TITLE, name: "index_labels_on_group_id_and_title_unique" + end +end diff --git a/db/post_migrate/20201207165956_remove_duplicate_services.rb b/db/post_migrate/20201207165956_remove_duplicate_services.rb new file mode 100644 index 00000000000..1659b9a2095 --- /dev/null +++ b/db/post_migrate/20201207165956_remove_duplicate_services.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class RemoveDuplicateServices < ActiveRecord::Migration[6.0] + DOWNTIME = false + + disable_ddl_transaction! + + def up + # noop, replaced by 20210112143418_remove_duplicate_services.rb + end + + def down + end +end diff --git a/db/post_migrate/20201208175117_schedule_backfilling_artifact_expiry_migration.rb b/db/post_migrate/20201208175117_schedule_backfilling_artifact_expiry_migration.rb new file mode 100644 index 00000000000..f11c0bbe33a --- /dev/null +++ b/db/post_migrate/20201208175117_schedule_backfilling_artifact_expiry_migration.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class ScheduleBackfillingArtifactExpiryMigration < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + SWITCH_DATE = Time.utc(2020, 6, 22).freeze + INDEX_NAME = 'expired_artifacts_temp_index'.freeze + INDEX_CONDITION = "expire_at IS NULL AND created_at < '#{SWITCH_DATE}'" + + disable_ddl_transaction! + + class JobArtifact < ActiveRecord::Base + include EachBatch + + self.table_name = 'ci_job_artifacts' + + scope :without_expiry_date, -> { where(expire_at: nil) } + scope :before_switch, -> { where('created_at < ?', SWITCH_DATE) } + end + + def up + # Create temporary index for expired artifacts + # Needs to be removed in a later migration + add_concurrent_index(:ci_job_artifacts, %i(id created_at), where: INDEX_CONDITION, name: INDEX_NAME) + + queue_background_migration_jobs_by_range_at_intervals( + JobArtifact.without_expiry_date.before_switch, + ::Gitlab::BackgroundMigration::BackfillArtifactExpiryDate, + 2.minutes, + batch_size: 200_000 + ) + end + + def down + remove_concurrent_index_by_name :ci_job_artifacts, INDEX_NAME + end +end diff --git a/db/post_migrate/20201211090634_schedule_populate_finding_uuid_for_vulnerability_feedback.rb b/db/post_migrate/20201211090634_schedule_populate_finding_uuid_for_vulnerability_feedback.rb new file mode 100644 index 00000000000..3ecb48dab0f --- /dev/null +++ b/db/post_migrate/20201211090634_schedule_populate_finding_uuid_for_vulnerability_feedback.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class SchedulePopulateFindingUuidForVulnerabilityFeedback < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + MIGRATION_CLASS = 'PopulateFindingUuidForVulnerabilityFeedback' + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1000 + + disable_ddl_transaction! + + def up + queue_background_migration_jobs_by_range_at_intervals( + Gitlab::BackgroundMigration::PopulateFindingUuidForVulnerabilityFeedback::VulnerabilityFeedback, + MIGRATION_CLASS, + DELAY_INTERVAL, + batch_size: BATCH_SIZE + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20201216185336_add_devops_adoption_snapshot_not_null.rb b/db/post_migrate/20201216185336_add_devops_adoption_snapshot_not_null.rb new file mode 100644 index 00000000000..1bb3c57f3cd --- /dev/null +++ b/db/post_migrate/20201216185336_add_devops_adoption_snapshot_not_null.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionSnapshotNotNull < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + with_lock_retries do + execute( + <<~SQL + LOCK TABLE analytics_devops_adoption_snapshots IN ACCESS EXCLUSIVE MODE; + + UPDATE analytics_devops_adoption_snapshots SET end_time = date_trunc('month', recorded_at) - interval '1 millisecond'; + + ALTER TABLE analytics_devops_adoption_snapshots ALTER COLUMN end_time SET NOT NULL; + SQL + ) + end + end + + def down + with_lock_retries do + execute(<<~SQL) + ALTER TABLE analytics_devops_adoption_snapshots ALTER COLUMN end_time DROP NOT NULL; + SQL + end + end +end diff --git a/db/post_migrate/20201223012231_reindex_ci_pipelines_on_schedule_id_and_id.rb b/db/post_migrate/20201223012231_reindex_ci_pipelines_on_schedule_id_and_id.rb new file mode 100644 index 00000000000..9ed1aea911a --- /dev/null +++ b/db/post_migrate/20201223012231_reindex_ci_pipelines_on_schedule_id_and_id.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class ReindexCiPipelinesOnScheduleIdAndId < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + OLD_INDEX_NAME = 'index_ci_pipelines_on_pipeline_schedule_id' + NEW_INDEX_NAME = 'index_ci_pipelines_on_pipeline_schedule_id_and_id' + + disable_ddl_transaction! + + def up + add_concurrent_index :ci_pipelines, [:pipeline_schedule_id, :id], name: NEW_INDEX_NAME + remove_concurrent_index_by_name :ci_pipelines, OLD_INDEX_NAME + end + + def down + add_concurrent_index :ci_pipelines, :pipeline_schedule_id, name: OLD_INDEX_NAME + remove_concurrent_index_by_name :ci_pipelines, NEW_INDEX_NAME + end +end diff --git a/db/post_migrate/20210105103649_delete_column_group_id_on_compliance_framework.rb b/db/post_migrate/20210105103649_delete_column_group_id_on_compliance_framework.rb new file mode 100644 index 00000000000..b13d2fe2d0a --- /dev/null +++ b/db/post_migrate/20210105103649_delete_column_group_id_on_compliance_framework.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class DeleteColumnGroupIdOnComplianceFramework < ActiveRecord::Migration[6.0] + DOWNTIME = false + + def change + remove_column :compliance_management_frameworks, :group_id, :bigint + end +end diff --git a/db/post_migrate/20210107194543_remove_alerts_service_records.rb b/db/post_migrate/20210107194543_remove_alerts_service_records.rb new file mode 100644 index 00000000000..51a2f96ac7f --- /dev/null +++ b/db/post_migrate/20210107194543_remove_alerts_service_records.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class RemoveAlertsServiceRecords < ActiveRecord::Migration[6.0] + DOWNTIME = false + + disable_ddl_transaction! + + class Service < ActiveRecord::Base + self.table_name = 'services' + end + + def up + Service.delete_by(type: 'AlertsService') + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210112143418_remove_duplicate_services2.rb b/db/post_migrate/20210112143418_remove_duplicate_services2.rb new file mode 100644 index 00000000000..83d92a78473 --- /dev/null +++ b/db/post_migrate/20210112143418_remove_duplicate_services2.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +# This replaces the previous post-deployment migration 20201207165956_remove_duplicate_services_spec.rb, +# we have to run this again due to a bug in how we were receiving the arguments in the background migration. +class RemoveDuplicateServices2 < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + INTERVAL = 2.minutes + BATCH_SIZE = 5_000 + MIGRATION = 'RemoveDuplicateServices' + + disable_ddl_transaction! + + def up + project_ids_with_duplicates = Gitlab::BackgroundMigration::RemoveDuplicateServices::Service.project_ids_with_duplicates + + project_ids_with_duplicates.each_batch(of: BATCH_SIZE, column: :project_id) do |batch, index| + migrate_in( + INTERVAL * index, + MIGRATION, + batch.pluck(:project_id) + ) + end + end + + def down + end +end diff --git a/db/schema_migrations/20200716234259 b/db/schema_migrations/20200716234259 new file mode 100644 index 00000000000..51916bdc8af --- /dev/null +++ b/db/schema_migrations/20200716234259 @@ -0,0 +1 @@ +9683f55a327b9579b9b0b9484dd11a07b7ea4244b126c46e0144662cb25da6bb
\ No newline at end of file diff --git a/db/schema_migrations/20200716234518 b/db/schema_migrations/20200716234518 new file mode 100644 index 00000000000..c5f438dcfbe --- /dev/null +++ b/db/schema_migrations/20200716234518 @@ -0,0 +1 @@ +71cd12e553b3acbb665770fe7478365f1f082e2d278c67b166f41461f689aa5e
\ No newline at end of file diff --git a/db/schema_migrations/20201112215132 b/db/schema_migrations/20201112215132 new file mode 100644 index 00000000000..e478dd0f9bf --- /dev/null +++ b/db/schema_migrations/20201112215132 @@ -0,0 +1 @@ +a436597e876a6d9efc2c1558e05dc576cbbc6f829dc8059d62fc231bbf0ce2fa
\ No newline at end of file diff --git a/db/schema_migrations/20201204105300 b/db/schema_migrations/20201204105300 new file mode 100644 index 00000000000..e54d4f939b9 --- /dev/null +++ b/db/schema_migrations/20201204105300 @@ -0,0 +1 @@ +15f48c654c08b58c90e46ce6e6413efa14d5a6e8299f100fc65f09f38190132a
\ No newline at end of file diff --git a/db/schema_migrations/20201204110700 b/db/schema_migrations/20201204110700 new file mode 100644 index 00000000000..b69e93149c2 --- /dev/null +++ b/db/schema_migrations/20201204110700 @@ -0,0 +1 @@ +986ffa5e3e168ce9acf9b346c94bdee05d85c71abe238b8aa21f95cc472faabc
\ No newline at end of file diff --git a/db/schema_migrations/20201204110800 b/db/schema_migrations/20201204110800 new file mode 100644 index 00000000000..de1fdf7442a --- /dev/null +++ b/db/schema_migrations/20201204110800 @@ -0,0 +1 @@ +aecf517402d3decf8f7323e8f43fdfe7160cbe7542a474e392996abd75b2d70f
\ No newline at end of file diff --git a/db/schema_migrations/20201204111000 b/db/schema_migrations/20201204111000 new file mode 100644 index 00000000000..be3078cf503 --- /dev/null +++ b/db/schema_migrations/20201204111000 @@ -0,0 +1 @@ +e9ca7eb8a47f6c48667135eca26f729471f8bb4ffa91dfceea87d98c8f2a616b
\ No newline at end of file diff --git a/db/schema_migrations/20201204111100 b/db/schema_migrations/20201204111100 new file mode 100644 index 00000000000..db3832d5331 --- /dev/null +++ b/db/schema_migrations/20201204111100 @@ -0,0 +1 @@ +b613f8654641948b2933910ebbfc926fd801b18c00a5d23b1c801a9ba9925520
\ No newline at end of file diff --git a/db/schema_migrations/20201204193952 b/db/schema_migrations/20201204193952 new file mode 100644 index 00000000000..4dcea03722f --- /dev/null +++ b/db/schema_migrations/20201204193952 @@ -0,0 +1 @@ +39e5550b6ad6f718a51cf9838ac9148bcaa070aff60f6114bd96e4a76faf2ca1
\ No newline at end of file diff --git a/db/schema_migrations/20201207165956 b/db/schema_migrations/20201207165956 new file mode 100644 index 00000000000..4bded1d3152 --- /dev/null +++ b/db/schema_migrations/20201207165956 @@ -0,0 +1 @@ +1ad19d6b4bc37d24f61f158aa58e4ce6be75cc54722cdc59427c00522fd40b4c
\ No newline at end of file diff --git a/db/schema_migrations/20201208175117 b/db/schema_migrations/20201208175117 new file mode 100644 index 00000000000..caa1bcaedd8 --- /dev/null +++ b/db/schema_migrations/20201208175117 @@ -0,0 +1 @@ +68971e7f9a722e98d9e611f614b5465de83ff3d4dc8c7a8078ed1db8f21e6590
\ No newline at end of file diff --git a/db/schema_migrations/20201208210209 b/db/schema_migrations/20201208210209 new file mode 100644 index 00000000000..61679844170 --- /dev/null +++ b/db/schema_migrations/20201208210209 @@ -0,0 +1 @@ +90b661656195e61c3b3ac43b8eebcdc06f462eb7e73a6201b2f2a8bc9dd519bf
\ No newline at end of file diff --git a/db/schema_migrations/20201209163958 b/db/schema_migrations/20201209163958 new file mode 100644 index 00000000000..081f12e64ea --- /dev/null +++ b/db/schema_migrations/20201209163958 @@ -0,0 +1 @@ +4bdd5eba48a76d8feab948857ec32ef7fe25e04e8633ee7d94fd059e73703472
\ No newline at end of file diff --git a/db/schema_migrations/20201209193551 b/db/schema_migrations/20201209193551 new file mode 100644 index 00000000000..2eb96840500 --- /dev/null +++ b/db/schema_migrations/20201209193551 @@ -0,0 +1 @@ +2278b1e4e19b5306e4b616eb87b622427ef2dcf73dae761739cb3106d5e64718
\ No newline at end of file diff --git a/db/schema_migrations/20201211090634 b/db/schema_migrations/20201211090634 new file mode 100644 index 00000000000..0c11b8f85fb --- /dev/null +++ b/db/schema_migrations/20201211090634 @@ -0,0 +1 @@ +5117b71950bec3c6c746eaf4851c111a335bf2280075ddc2c73b60a30e23d907
\ No newline at end of file diff --git a/db/schema_migrations/20201214000000 b/db/schema_migrations/20201214000000 new file mode 100644 index 00000000000..420b3f2768a --- /dev/null +++ b/db/schema_migrations/20201214000000 @@ -0,0 +1 @@ +58f2bd74adf8b4ef616c8f341053dbeaa8116430a0f4493cbf5f8456d7f4b907
\ No newline at end of file diff --git a/db/schema_migrations/20201214032220 b/db/schema_migrations/20201214032220 new file mode 100644 index 00000000000..ec14b260583 --- /dev/null +++ b/db/schema_migrations/20201214032220 @@ -0,0 +1 @@ +db23b5315386ad5d5fec5a14958769cc1e62a0a89ec3246edb9fc024607e917b
\ No newline at end of file diff --git a/db/schema_migrations/20201214111858 b/db/schema_migrations/20201214111858 new file mode 100644 index 00000000000..7d97a34eadf --- /dev/null +++ b/db/schema_migrations/20201214111858 @@ -0,0 +1 @@ +e3eb306d7956e396f038f07a20c674929fc4aae3e188b24e1087305b3fea8b4d
\ No newline at end of file diff --git a/db/schema_migrations/20201214112752 b/db/schema_migrations/20201214112752 new file mode 100644 index 00000000000..af432649dea --- /dev/null +++ b/db/schema_migrations/20201214112752 @@ -0,0 +1 @@ +59906a3528499dd9c0b4c30088539299c08383ad3b36be8c862a7cc9ef1d50b2
\ No newline at end of file diff --git a/db/schema_migrations/20201214184020 b/db/schema_migrations/20201214184020 new file mode 100644 index 00000000000..5cf5065b251 --- /dev/null +++ b/db/schema_migrations/20201214184020 @@ -0,0 +1 @@ +adce3c714064991e93f8a587da3d5892c47dbc14963fa49638ebbbf8b5489359
\ No newline at end of file diff --git a/db/schema_migrations/20201215205404 b/db/schema_migrations/20201215205404 new file mode 100644 index 00000000000..147ede2064d --- /dev/null +++ b/db/schema_migrations/20201215205404 @@ -0,0 +1 @@ +b54cf8b75c5882f2dfca74b218a9eeac766ff65233d43de865717d3ab8c7a217
\ No newline at end of file diff --git a/db/schema_migrations/20201216151616 b/db/schema_migrations/20201216151616 new file mode 100644 index 00000000000..a8b27610716 --- /dev/null +++ b/db/schema_migrations/20201216151616 @@ -0,0 +1 @@ +f1c6927431895c6ce03fe7e0be30fcd0a1f4ccfeac8277ee0662d7434b97d257
\ No newline at end of file diff --git a/db/schema_migrations/20201216154457 b/db/schema_migrations/20201216154457 new file mode 100644 index 00000000000..773218ff906 --- /dev/null +++ b/db/schema_migrations/20201216154457 @@ -0,0 +1 @@ +c878874bbb9bf2314b90c1328d6e27846fe71513ba1ce688a262d36761b66665
\ No newline at end of file diff --git a/db/schema_migrations/20201216185336 b/db/schema_migrations/20201216185336 new file mode 100644 index 00000000000..376429a2141 --- /dev/null +++ b/db/schema_migrations/20201216185336 @@ -0,0 +1 @@ +3647e8b944aedeb58c41d9b3f08c8fb657fab231b0ff25c276f6d2aaa2ea93ae
\ No newline at end of file diff --git a/db/schema_migrations/20201217070530 b/db/schema_migrations/20201217070530 new file mode 100644 index 00000000000..c09f3b03e3b --- /dev/null +++ b/db/schema_migrations/20201217070530 @@ -0,0 +1 @@ +59e40a24e8422e64bc85c4d54e6da923512017bac6a167350affeff241046e9f
\ No newline at end of file diff --git a/db/schema_migrations/20201217132603 b/db/schema_migrations/20201217132603 new file mode 100644 index 00000000000..d1db386cbf5 --- /dev/null +++ b/db/schema_migrations/20201217132603 @@ -0,0 +1 @@ +164bcc838beb7d51775f8b813b92d3ec7080d4c7937d6ad16cf973131b45359e
\ No newline at end of file diff --git a/db/schema_migrations/20201221124036 b/db/schema_migrations/20201221124036 new file mode 100644 index 00000000000..7a1049a7dd0 --- /dev/null +++ b/db/schema_migrations/20201221124036 @@ -0,0 +1 @@ +15517956f3b5d7ce2c05d196a34881fa169df7b1bf5ccf0dbfbee74fb3143ba7
\ No newline at end of file diff --git a/db/schema_migrations/20201221213415 b/db/schema_migrations/20201221213415 new file mode 100644 index 00000000000..74df483ac70 --- /dev/null +++ b/db/schema_migrations/20201221213415 @@ -0,0 +1 @@ +8c123da6a380524c7269ffc67ea0e533a415d3c6eddf96cee4025ea152fc7582
\ No newline at end of file diff --git a/db/schema_migrations/20201223012231 b/db/schema_migrations/20201223012231 new file mode 100644 index 00000000000..77813ca0655 --- /dev/null +++ b/db/schema_migrations/20201223012231 @@ -0,0 +1 @@ +e845a6704ac92881926cca56bf7fb01c6252f1fe2b2d94fc9d6548144126d6a5
\ No newline at end of file diff --git a/db/schema_migrations/20201223114050 b/db/schema_migrations/20201223114050 new file mode 100644 index 00000000000..25ac0eac211 --- /dev/null +++ b/db/schema_migrations/20201223114050 @@ -0,0 +1 @@ +35acb5bbabfd12f97c988776aafa6ff380e2cbe2267e856b8f439f7102a6fbf2
\ No newline at end of file diff --git a/db/schema_migrations/20201224144948 b/db/schema_migrations/20201224144948 new file mode 100644 index 00000000000..84e2816433c --- /dev/null +++ b/db/schema_migrations/20201224144948 @@ -0,0 +1 @@ +a83762c788d4ec007a26da386dc36bce16b60f5642ed3e6405482acfebefc1be
\ No newline at end of file diff --git a/db/schema_migrations/20201228184500 b/db/schema_migrations/20201228184500 new file mode 100644 index 00000000000..c6168e775b2 --- /dev/null +++ b/db/schema_migrations/20201228184500 @@ -0,0 +1 @@ +9018fed4aab19642fafee3e50bf41be422fc3f8256d0b5d78c8a70fc96f4090f
\ No newline at end of file diff --git a/db/schema_migrations/20201229105948 b/db/schema_migrations/20201229105948 new file mode 100644 index 00000000000..73da30d5392 --- /dev/null +++ b/db/schema_migrations/20201229105948 @@ -0,0 +1 @@ +cf391e617ef16f70c0daa4584959d36eda4b29c7e211f3f90ad74b4ebbc7ebbd
\ No newline at end of file diff --git a/db/schema_migrations/20201230161206 b/db/schema_migrations/20201230161206 new file mode 100644 index 00000000000..594ca5ea890 --- /dev/null +++ b/db/schema_migrations/20201230161206 @@ -0,0 +1 @@ +b3fcc73c6b61469d770e9eb9a14c88bb86398db4ab4b6dc5283718a147db0ac0
\ No newline at end of file diff --git a/db/schema_migrations/20201230180202 b/db/schema_migrations/20201230180202 new file mode 100644 index 00000000000..62a0e277a55 --- /dev/null +++ b/db/schema_migrations/20201230180202 @@ -0,0 +1 @@ +c2766b50914c6b4d8c96fb958cdfb67f0d29e40df45654c35d62792c272e3d5a
\ No newline at end of file diff --git a/db/schema_migrations/20210101110640 b/db/schema_migrations/20210101110640 new file mode 100644 index 00000000000..e21e6768e7b --- /dev/null +++ b/db/schema_migrations/20210101110640 @@ -0,0 +1 @@ +8aac4108b658a7a0646ec230dc2568cb51fea0535b13dfba8b8c9e6edb401d07
\ No newline at end of file diff --git a/db/schema_migrations/20210102164121 b/db/schema_migrations/20210102164121 new file mode 100644 index 00000000000..87f9b9e17f4 --- /dev/null +++ b/db/schema_migrations/20210102164121 @@ -0,0 +1 @@ +d15dc3e57f050f037dd6b6b2b1efdafee49bf411580e35a7b4dbe14868c41e13
\ No newline at end of file diff --git a/db/schema_migrations/20210104163218 b/db/schema_migrations/20210104163218 new file mode 100644 index 00000000000..c58a142f92e --- /dev/null +++ b/db/schema_migrations/20210104163218 @@ -0,0 +1 @@ +37aa0564d2ade1cab56a669facccbaaf08e4d9856c7a4cc120968d33cff161bd
\ No newline at end of file diff --git a/db/schema_migrations/20210105103649 b/db/schema_migrations/20210105103649 new file mode 100644 index 00000000000..9b00aa2524c --- /dev/null +++ b/db/schema_migrations/20210105103649 @@ -0,0 +1 @@ +0a318fbcf54860d9fe8b3e8372e10331d2b52df738e621f4b0eec5fd4f255739
\ No newline at end of file diff --git a/db/schema_migrations/20210106153021 b/db/schema_migrations/20210106153021 new file mode 100644 index 00000000000..a00c59a8534 --- /dev/null +++ b/db/schema_migrations/20210106153021 @@ -0,0 +1 @@ +71e005116082a59e40194fe5f9a500e31d67a011500d12aeecd59cb64d611848
\ No newline at end of file diff --git a/db/schema_migrations/20210107194543 b/db/schema_migrations/20210107194543 new file mode 100644 index 00000000000..997bdd98b5a --- /dev/null +++ b/db/schema_migrations/20210107194543 @@ -0,0 +1 @@ +d72cf1c88a060ccadd9f90cbef5ae7d4ea6a4416a6263d11a870e01b02d1f935
\ No newline at end of file diff --git a/db/schema_migrations/20210108161039 b/db/schema_migrations/20210108161039 new file mode 100644 index 00000000000..d60bab2ec5a --- /dev/null +++ b/db/schema_migrations/20210108161039 @@ -0,0 +1 @@ +7888a82e3bbc1f4c78badcbe8335ac823ebdedec843a9d90f91cf0d5c169a191
\ No newline at end of file diff --git a/db/schema_migrations/20210112084512 b/db/schema_migrations/20210112084512 new file mode 100644 index 00000000000..3091c8e2542 --- /dev/null +++ b/db/schema_migrations/20210112084512 @@ -0,0 +1 @@ +e8e26d49a8292e31ef0ea88a0262f0386b8deda83658ea4de7d464d79c5428e4
\ No newline at end of file diff --git a/db/schema_migrations/20210112143418 b/db/schema_migrations/20210112143418 new file mode 100644 index 00000000000..3183c8cf220 --- /dev/null +++ b/db/schema_migrations/20210112143418 @@ -0,0 +1 @@ +05d45e25ab9ef1565c04ca6515e0b01f2f98c5e98b1eeb09fa9dd43ebbe3c4d0
\ No newline at end of file diff --git a/db/schema_migrations/20210114033715 b/db/schema_migrations/20210114033715 new file mode 100644 index 00000000000..6d25bd971e2 --- /dev/null +++ b/db/schema_migrations/20210114033715 @@ -0,0 +1 @@ +69aae8d967fdb8af816a969fd818ed325b8d780b4faaa205c78a66c5d533ab2a
\ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 9bf6799dc85..de4218ed405 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -10,51 +10,62 @@ CREATE EXTENSION IF NOT EXISTS btree_gist; CREATE EXTENSION IF NOT EXISTS pg_trgm; +CREATE FUNCTION set_has_external_wiki() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN +UPDATE projects SET has_external_wiki = COALESCE(NEW.active, FALSE) +WHERE projects.id = COALESCE(NEW.project_id, OLD.project_id); +RETURN NULL; + +END +$$; + CREATE FUNCTION table_sync_function_2be879775d() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF (TG_OP = 'DELETE') THEN - DELETE FROM audit_events_part_5fc467ac26 where id = OLD.id; + DELETE FROM audit_events_archived where id = OLD.id; ELSIF (TG_OP = 'UPDATE') THEN - UPDATE audit_events_part_5fc467ac26 + UPDATE audit_events_archived SET author_id = NEW.author_id, entity_id = NEW.entity_id, entity_type = NEW.entity_type, details = NEW.details, + created_at = NEW.created_at, ip_address = NEW.ip_address, author_name = NEW.author_name, entity_path = NEW.entity_path, target_details = NEW.target_details, target_type = NEW.target_type, - target_id = NEW.target_id, - created_at = NEW.created_at - WHERE audit_events_part_5fc467ac26.id = NEW.id; + target_id = NEW.target_id + WHERE audit_events_archived.id = NEW.id; ELSIF (TG_OP = 'INSERT') THEN - INSERT INTO audit_events_part_5fc467ac26 (id, + INSERT INTO audit_events_archived (id, author_id, entity_id, entity_type, details, + created_at, ip_address, author_name, entity_path, target_details, target_type, - target_id, - created_at) + target_id) VALUES (NEW.id, NEW.author_id, NEW.entity_id, NEW.entity_type, NEW.details, + NEW.created_at, NEW.ip_address, NEW.author_name, NEW.entity_path, NEW.target_details, NEW.target_type, - NEW.target_id, - NEW.created_at); + NEW.target_id); END IF; RETURN NULL; @@ -63,7 +74,7 @@ $$; COMMENT ON FUNCTION table_sync_function_2be879775d() IS 'Partitioning migration: table sync for audit_events table'; -CREATE TABLE audit_events_part_5fc467ac26 ( +CREATE TABLE audit_events ( id bigint NOT NULL, author_id integer NOT NULL, entity_id integer NOT NULL, @@ -9003,7 +9014,8 @@ CREATE TABLE analytics_devops_adoption_snapshots ( runner_configured boolean NOT NULL, pipeline_succeeded boolean NOT NULL, deploy_succeeded boolean NOT NULL, - security_scan_succeeded boolean NOT NULL + security_scan_succeeded boolean NOT NULL, + end_time timestamp with time zone NOT NULL ); CREATE SEQUENCE analytics_devops_adoption_snapshots_id_seq @@ -9328,7 +9340,7 @@ CREATE TABLE application_settings ( spam_check_endpoint_enabled boolean DEFAULT false NOT NULL, elasticsearch_pause_indexing boolean DEFAULT false NOT NULL, repository_storages_weighted jsonb DEFAULT '{}'::jsonb NOT NULL, - max_import_size integer DEFAULT 50 NOT NULL, + max_import_size integer DEFAULT 0 NOT NULL, enforce_pat_expiration boolean DEFAULT true NOT NULL, compliance_frameworks smallint[] DEFAULT '{}'::smallint[] NOT NULL, notify_on_unknown_sign_in boolean DEFAULT true NOT NULL, @@ -9375,12 +9387,17 @@ CREATE TABLE application_settings ( cloud_license_enabled boolean DEFAULT false NOT NULL, disable_feed_token boolean DEFAULT false NOT NULL, personal_access_token_prefix text, + rate_limiting_response_text text, + invisible_captcha_enabled boolean DEFAULT false NOT NULL, + container_registry_cleanup_tags_service_max_list_size integer DEFAULT 200 NOT NULL, + CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)), CONSTRAINT app_settings_registry_exp_policies_worker_capacity_positive CHECK ((container_registry_expiration_policies_worker_capacity >= 0)), CONSTRAINT check_17d9558205 CHECK ((char_length((kroki_url)::text) <= 1024)), CONSTRAINT check_2dba05b802 CHECK ((char_length(gitpod_url) <= 255)), CONSTRAINT check_51700b31b5 CHECK ((char_length(default_branch_name) <= 255)), CONSTRAINT check_57123c9593 CHECK ((char_length(help_page_documentation_base_url) <= 255)), CONSTRAINT check_718b4458ae CHECK ((char_length(personal_access_token_prefix) <= 20)), + CONSTRAINT check_7227fad848 CHECK ((char_length(rate_limiting_response_text) <= 255)), CONSTRAINT check_85a39b68ff CHECK ((char_length(encrypted_ci_jwt_signing_key_iv) <= 255)), CONSTRAINT check_9a719834eb CHECK ((char_length(secret_detection_token_revocation_url) <= 255)), CONSTRAINT check_9c6c447a13 CHECK ((char_length(maintenance_mode_message) <= 255)), @@ -9623,7 +9640,7 @@ CREATE SEQUENCE atlassian_identities_user_id_seq ALTER SEQUENCE atlassian_identities_user_id_seq OWNED BY atlassian_identities.user_id; -CREATE TABLE audit_events ( +CREATE TABLE audit_events_archived ( id integer NOT NULL, author_id integer NOT NULL, entity_id integer NOT NULL, @@ -9909,6 +9926,26 @@ CREATE SEQUENCE boards_epic_boards_id_seq ALTER SEQUENCE boards_epic_boards_id_seq OWNED BY boards_epic_boards.id; +CREATE TABLE boards_epic_lists ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + epic_board_id bigint NOT NULL, + label_id bigint, + "position" integer, + list_type smallint DEFAULT 1 NOT NULL, + CONSTRAINT boards_epic_lists_position_constraint CHECK (((list_type <> 1) OR (("position" IS NOT NULL) AND ("position" >= 0)))) +); + +CREATE SEQUENCE boards_epic_lists_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE boards_epic_lists_id_seq OWNED BY boards_epic_lists.id; + CREATE TABLE boards_epic_user_preferences ( id bigint NOT NULL, board_id bigint NOT NULL, @@ -11105,7 +11142,7 @@ CREATE TABLE clusters ( management_project_id integer, cleanup_status smallint DEFAULT 1 NOT NULL, cleanup_status_reason text, - helm_major_version integer DEFAULT 2 NOT NULL + helm_major_version integer DEFAULT 3 NOT NULL ); CREATE TABLE clusters_applications_cert_managers ( @@ -11395,7 +11432,6 @@ ALTER SEQUENCE commit_user_mentions_id_seq OWNED BY commit_user_mentions.id; CREATE TABLE compliance_management_frameworks ( id bigint NOT NULL, - group_id bigint, name text NOT NULL, description text NOT NULL, color text NOT NULL, @@ -11925,6 +11961,32 @@ CREATE SEQUENCE draft_notes_id_seq ALTER SEQUENCE draft_notes_id_seq OWNED BY draft_notes.id; +CREATE TABLE elastic_reindexing_subtasks ( + id bigint NOT NULL, + elastic_reindexing_task_id bigint NOT NULL, + alias_name text NOT NULL, + index_name_from text NOT NULL, + index_name_to text NOT NULL, + elastic_task text NOT NULL, + documents_count_target integer, + documents_count integer, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + CONSTRAINT check_4910adc798 CHECK ((char_length(elastic_task) <= 255)), + CONSTRAINT check_88f56216a4 CHECK ((char_length(alias_name) <= 255)), + CONSTRAINT check_a1fbd9faa9 CHECK ((char_length(index_name_from) <= 255)), + CONSTRAINT check_f456494bd8 CHECK ((char_length(index_name_to) <= 255)) +); + +CREATE SEQUENCE elastic_reindexing_subtasks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE elastic_reindexing_subtasks_id_seq OWNED BY elastic_reindexing_subtasks.id; + CREATE TABLE elastic_reindexing_tasks ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -12929,6 +12991,13 @@ CREATE SEQUENCE group_import_states_group_id_seq ALTER SEQUENCE group_import_states_group_id_seq OWNED BY group_import_states.group_id; +CREATE TABLE group_merge_request_approval_settings ( + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + group_id bigint NOT NULL, + allow_author_approval boolean DEFAULT false NOT NULL +); + CREATE TABLE group_wiki_repositories ( shard_id bigint NOT NULL, group_id bigint NOT NULL, @@ -13077,6 +13146,23 @@ CREATE SEQUENCE incident_management_oncall_schedules_id_seq ALTER SEQUENCE incident_management_oncall_schedules_id_seq OWNED BY incident_management_oncall_schedules.id; +CREATE TABLE incident_management_oncall_shifts ( + id bigint NOT NULL, + rotation_id bigint NOT NULL, + participant_id bigint NOT NULL, + starts_at timestamp with time zone NOT NULL, + ends_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE incident_management_oncall_shifts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE incident_management_oncall_shifts_id_seq OWNED BY incident_management_oncall_shifts.id; + CREATE TABLE index_statuses ( id integer NOT NULL, project_id integer NOT NULL, @@ -13972,7 +14058,7 @@ CREATE TABLE merge_requests ( merge_jid character varying, discussion_locked boolean, latest_merge_request_diff_id integer, - allow_maintainer_to_push boolean, + allow_maintainer_to_push boolean DEFAULT true, state_id smallint DEFAULT 1 NOT NULL, rebase_jid character varying, squash_commit_sha bytea, @@ -14127,6 +14213,13 @@ CREATE SEQUENCE namespace_onboarding_actions_id_seq ALTER SEQUENCE namespace_onboarding_actions_id_seq OWNED BY namespace_onboarding_actions.id; +CREATE TABLE namespace_package_settings ( + namespace_id bigint NOT NULL, + maven_duplicates_allowed boolean DEFAULT true NOT NULL, + maven_duplicate_exception_regex text DEFAULT ''::text NOT NULL, + CONSTRAINT check_d63274b2b6 CHECK ((char_length(maven_duplicate_exception_regex) <= 255)) +); + CREATE TABLE namespace_root_storage_statistics ( namespace_id integer NOT NULL, updated_at timestamp with time zone NOT NULL, @@ -14336,7 +14429,11 @@ CREATE TABLE oauth_access_grants ( redirect_uri text NOT NULL, created_at timestamp without time zone NOT NULL, revoked_at timestamp without time zone, - scopes character varying + scopes character varying, + code_challenge text, + code_challenge_method text, + CONSTRAINT oauth_access_grants_code_challenge CHECK ((char_length(code_challenge) <= 128)), + CONSTRAINT oauth_access_grants_code_challenge_method CHECK ((char_length(code_challenge_method) <= 5)) ); CREATE SEQUENCE oauth_access_grants_id_seq @@ -14408,6 +14505,36 @@ CREATE SEQUENCE oauth_openid_requests_id_seq ALTER SEQUENCE oauth_openid_requests_id_seq OWNED BY oauth_openid_requests.id; +CREATE TABLE onboarding_progresses ( + id bigint NOT NULL, + namespace_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + git_pull_at timestamp with time zone, + git_write_at timestamp with time zone, + merge_request_created_at timestamp with time zone, + pipeline_created_at timestamp with time zone, + user_added_at timestamp with time zone, + trial_started_at timestamp with time zone, + subscription_created_at timestamp with time zone, + required_mr_approvals_enabled_at timestamp with time zone, + code_owners_enabled_at timestamp with time zone, + scoped_label_created_at timestamp with time zone, + security_scan_enabled_at timestamp with time zone, + issue_auto_closed_at timestamp with time zone, + repository_imported_at timestamp with time zone, + repository_mirrored_at timestamp with time zone +); + +CREATE SEQUENCE onboarding_progresses_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE onboarding_progresses_id_seq OWNED BY onboarding_progresses.id; + CREATE TABLE open_project_tracker_data ( id bigint NOT NULL, service_id integer NOT NULL, @@ -14585,7 +14712,8 @@ ALTER SEQUENCE packages_build_infos_id_seq OWNED BY packages_build_infos.id; CREATE TABLE packages_composer_metadata ( package_id bigint NOT NULL, target_sha bytea NOT NULL, - composer_json jsonb DEFAULT '{}'::jsonb NOT NULL + composer_json jsonb DEFAULT '{}'::jsonb NOT NULL, + version_cache_sha bytea ); CREATE TABLE packages_conan_file_metadata ( @@ -14626,6 +14754,136 @@ CREATE SEQUENCE packages_conan_metadata_id_seq ALTER SEQUENCE packages_conan_metadata_id_seq OWNED BY packages_conan_metadata.id; +CREATE TABLE packages_debian_file_metadata ( + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + package_file_id bigint NOT NULL, + file_type smallint NOT NULL, + component text, + architecture text, + fields jsonb, + CONSTRAINT check_2ebedda4b6 CHECK ((char_length(component) <= 255)), + CONSTRAINT check_e6e1fffcca CHECK ((char_length(architecture) <= 255)) +); + +CREATE TABLE packages_debian_group_architectures ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + distribution_id bigint NOT NULL, + name text NOT NULL, + CONSTRAINT check_ddb220164a CHECK ((char_length(name) <= 255)) +); + +CREATE SEQUENCE packages_debian_group_architectures_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE packages_debian_group_architectures_id_seq OWNED BY packages_debian_group_architectures.id; + +CREATE TABLE packages_debian_group_distributions ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + group_id bigint NOT NULL, + creator_id bigint, + valid_time_duration_seconds integer, + file_store smallint DEFAULT 1 NOT NULL, + automatic boolean DEFAULT true NOT NULL, + automatic_upgrades boolean DEFAULT false NOT NULL, + codename text NOT NULL, + suite text, + origin text, + label text, + version text, + description text, + encrypted_signing_keys text, + encrypted_signing_keys_iv text, + file text, + file_signature text, + CONSTRAINT check_310ac457b8 CHECK ((char_length(description) <= 255)), + CONSTRAINT check_3d6f87fc31 CHECK ((char_length(file_signature) <= 4096)), + CONSTRAINT check_3fdadf4a0c CHECK ((char_length(version) <= 255)), + CONSTRAINT check_590e18405a CHECK ((char_length(codename) <= 255)), + CONSTRAINT check_9b90bc0f07 CHECK ((char_length(encrypted_signing_keys_iv) <= 255)), + CONSTRAINT check_b057cd840a CHECK ((char_length(origin) <= 255)), + CONSTRAINT check_b811ec1218 CHECK ((char_length(encrypted_signing_keys) <= 2048)), + CONSTRAINT check_be5ed8d307 CHECK ((char_length(file) <= 255)), + CONSTRAINT check_d3244bfc0b CHECK ((char_length(label) <= 255)), + CONSTRAINT check_e7c928a24b CHECK ((char_length(suite) <= 255)) +); + +CREATE SEQUENCE packages_debian_group_distributions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE packages_debian_group_distributions_id_seq OWNED BY packages_debian_group_distributions.id; + +CREATE TABLE packages_debian_project_architectures ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + distribution_id bigint NOT NULL, + name text NOT NULL, + CONSTRAINT check_9c2e1c99d8 CHECK ((char_length(name) <= 255)) +); + +CREATE SEQUENCE packages_debian_project_architectures_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE packages_debian_project_architectures_id_seq OWNED BY packages_debian_project_architectures.id; + +CREATE TABLE packages_debian_project_distributions ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id bigint NOT NULL, + creator_id bigint, + valid_time_duration_seconds integer, + file_store smallint DEFAULT 1 NOT NULL, + automatic boolean DEFAULT true NOT NULL, + automatic_upgrades boolean DEFAULT false NOT NULL, + codename text NOT NULL, + suite text, + origin text, + label text, + version text, + description text, + encrypted_signing_keys text, + encrypted_signing_keys_iv text, + file text, + file_signature text, + CONSTRAINT check_6177ccd4a6 CHECK ((char_length(origin) <= 255)), + CONSTRAINT check_6f6b55a4c4 CHECK ((char_length(label) <= 255)), + CONSTRAINT check_834dabadb6 CHECK ((char_length(codename) <= 255)), + CONSTRAINT check_96965792c2 CHECK ((char_length(version) <= 255)), + CONSTRAINT check_a56ae58a17 CHECK ((char_length(suite) <= 255)), + CONSTRAINT check_a5a2ac6af2 CHECK ((char_length(file_signature) <= 4096)), + CONSTRAINT check_b93154339f CHECK ((char_length(description) <= 255)), + CONSTRAINT check_c25603a25b CHECK ((char_length(encrypted_signing_keys) <= 2048)), + CONSTRAINT check_cb4ac9599e CHECK ((char_length(file) <= 255)), + CONSTRAINT check_d488f8cce3 CHECK ((char_length(encrypted_signing_keys_iv) <= 255)) +); + +CREATE SEQUENCE packages_debian_project_distributions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE packages_debian_project_distributions_id_seq OWNED BY packages_debian_project_distributions.id; + CREATE TABLE packages_dependencies ( id bigint NOT NULL, name character varying(255) NOT NULL, @@ -15313,7 +15571,9 @@ CREATE TABLE project_ci_cd_settings ( default_git_depth integer, forward_deployment_enabled boolean, merge_trains_enabled boolean DEFAULT false, - auto_rollback_enabled boolean DEFAULT false NOT NULL + auto_rollback_enabled boolean DEFAULT false NOT NULL, + keep_latest_artifact boolean DEFAULT true NOT NULL, + restrict_user_defined_variables boolean DEFAULT false NOT NULL ); CREATE SEQUENCE project_ci_cd_settings_id_seq @@ -17584,7 +17844,8 @@ CREATE TABLE vulnerability_feedback ( comment_author_id integer, comment text, comment_timestamp timestamp with time zone, - finding_uuid uuid + finding_uuid uuid, + dismissal_reason smallint ); CREATE SEQUENCE vulnerability_feedback_id_seq @@ -18131,6 +18392,8 @@ ALTER TABLE ONLY boards_epic_board_positions ALTER COLUMN id SET DEFAULT nextval ALTER TABLE ONLY boards_epic_boards ALTER COLUMN id SET DEFAULT nextval('boards_epic_boards_id_seq'::regclass); +ALTER TABLE ONLY boards_epic_lists ALTER COLUMN id SET DEFAULT nextval('boards_epic_lists_id_seq'::regclass); + ALTER TABLE ONLY boards_epic_user_preferences ALTER COLUMN id SET DEFAULT nextval('boards_epic_user_preferences_id_seq'::regclass); ALTER TABLE ONLY broadcast_messages ALTER COLUMN id SET DEFAULT nextval('broadcast_messages_id_seq'::regclass); @@ -18315,6 +18578,8 @@ ALTER TABLE ONLY diff_note_positions ALTER COLUMN id SET DEFAULT nextval('diff_n ALTER TABLE ONLY draft_notes ALTER COLUMN id SET DEFAULT nextval('draft_notes_id_seq'::regclass); +ALTER TABLE ONLY elastic_reindexing_subtasks ALTER COLUMN id SET DEFAULT nextval('elastic_reindexing_subtasks_id_seq'::regclass); + ALTER TABLE ONLY elastic_reindexing_tasks ALTER COLUMN id SET DEFAULT nextval('elastic_reindexing_tasks_id_seq'::regclass); ALTER TABLE ONLY emails ALTER COLUMN id SET DEFAULT nextval('emails_id_seq'::regclass); @@ -18423,6 +18688,8 @@ ALTER TABLE ONLY incident_management_oncall_rotations ALTER COLUMN id SET DEFAUL ALTER TABLE ONLY incident_management_oncall_schedules ALTER COLUMN id SET DEFAULT nextval('incident_management_oncall_schedules_id_seq'::regclass); +ALTER TABLE ONLY incident_management_oncall_shifts ALTER COLUMN id SET DEFAULT nextval('incident_management_oncall_shifts_id_seq'::regclass); + ALTER TABLE ONLY index_statuses ALTER COLUMN id SET DEFAULT nextval('index_statuses_id_seq'::regclass); ALTER TABLE ONLY insights ALTER COLUMN id SET DEFAULT nextval('insights_id_seq'::regclass); @@ -18531,6 +18798,8 @@ ALTER TABLE ONLY oauth_applications ALTER COLUMN id SET DEFAULT nextval('oauth_a ALTER TABLE ONLY oauth_openid_requests ALTER COLUMN id SET DEFAULT nextval('oauth_openid_requests_id_seq'::regclass); +ALTER TABLE ONLY onboarding_progresses ALTER COLUMN id SET DEFAULT nextval('onboarding_progresses_id_seq'::regclass); + ALTER TABLE ONLY open_project_tracker_data ALTER COLUMN id SET DEFAULT nextval('open_project_tracker_data_id_seq'::regclass); ALTER TABLE ONLY operations_feature_flag_scopes ALTER COLUMN id SET DEFAULT nextval('operations_feature_flag_scopes_id_seq'::regclass); @@ -18555,6 +18824,14 @@ ALTER TABLE ONLY packages_conan_file_metadata ALTER COLUMN id SET DEFAULT nextva ALTER TABLE ONLY packages_conan_metadata ALTER COLUMN id SET DEFAULT nextval('packages_conan_metadata_id_seq'::regclass); +ALTER TABLE ONLY packages_debian_group_architectures ALTER COLUMN id SET DEFAULT nextval('packages_debian_group_architectures_id_seq'::regclass); + +ALTER TABLE ONLY packages_debian_group_distributions ALTER COLUMN id SET DEFAULT nextval('packages_debian_group_distributions_id_seq'::regclass); + +ALTER TABLE ONLY packages_debian_project_architectures ALTER COLUMN id SET DEFAULT nextval('packages_debian_project_architectures_id_seq'::regclass); + +ALTER TABLE ONLY packages_debian_project_distributions ALTER COLUMN id SET DEFAULT nextval('packages_debian_project_distributions_id_seq'::regclass); + ALTER TABLE ONLY packages_dependencies ALTER COLUMN id SET DEFAULT nextval('packages_dependencies_id_seq'::regclass); ALTER TABLE ONLY packages_dependency_links ALTER COLUMN id SET DEFAULT nextval('packages_dependency_links_id_seq'::regclass); @@ -19126,11 +19403,11 @@ ALTER TABLE ONLY ar_internal_metadata ALTER TABLE ONLY atlassian_identities ADD CONSTRAINT atlassian_identities_pkey PRIMARY KEY (user_id); -ALTER TABLE ONLY audit_events_part_5fc467ac26 - ADD CONSTRAINT audit_events_part_5fc467ac26_pkey PRIMARY KEY (id, created_at); +ALTER TABLE ONLY audit_events_archived + ADD CONSTRAINT audit_events_archived_pkey PRIMARY KEY (id); ALTER TABLE ONLY audit_events - ADD CONSTRAINT audit_events_pkey PRIMARY KEY (id); + ADD CONSTRAINT audit_events_pkey PRIMARY KEY (id, created_at); ALTER TABLE ONLY authentication_events ADD CONSTRAINT authentication_events_pkey PRIMARY KEY (id); @@ -19174,6 +19451,9 @@ ALTER TABLE ONLY boards_epic_board_positions ALTER TABLE ONLY boards_epic_boards ADD CONSTRAINT boards_epic_boards_pkey PRIMARY KEY (id); +ALTER TABLE ONLY boards_epic_lists + ADD CONSTRAINT boards_epic_lists_pkey PRIMARY KEY (id); + ALTER TABLE ONLY boards_epic_user_preferences ADD CONSTRAINT boards_epic_user_preferences_pkey PRIMARY KEY (id); @@ -19471,6 +19751,9 @@ ALTER TABLE ONLY diff_note_positions ALTER TABLE ONLY draft_notes ADD CONSTRAINT draft_notes_pkey PRIMARY KEY (id); +ALTER TABLE ONLY elastic_reindexing_subtasks + ADD CONSTRAINT elastic_reindexing_subtasks_pkey PRIMARY KEY (id); + ALTER TABLE ONLY elastic_reindexing_tasks ADD CONSTRAINT elastic_reindexing_tasks_pkey PRIMARY KEY (id); @@ -19621,6 +19904,9 @@ ALTER TABLE ONLY group_group_links ALTER TABLE ONLY group_import_states ADD CONSTRAINT group_import_states_pkey PRIMARY KEY (group_id); +ALTER TABLE ONLY group_merge_request_approval_settings + ADD CONSTRAINT group_merge_request_approval_settings_pkey PRIMARY KEY (group_id); + ALTER TABLE ONLY group_wiki_repositories ADD CONSTRAINT group_wiki_repositories_pkey PRIMARY KEY (group_id); @@ -19636,6 +19922,9 @@ ALTER TABLE ONLY import_export_uploads ALTER TABLE ONLY import_failures ADD CONSTRAINT import_failures_pkey PRIMARY KEY (id); +ALTER TABLE ONLY incident_management_oncall_shifts + ADD CONSTRAINT inc_mgmnt_no_overlapping_oncall_shifts EXCLUDE USING gist (rotation_id WITH =, tstzrange(starts_at, ends_at, '[)'::text) WITH &&); + ALTER TABLE ONLY incident_management_oncall_participants ADD CONSTRAINT incident_management_oncall_participants_pkey PRIMARY KEY (id); @@ -19645,6 +19934,9 @@ ALTER TABLE ONLY incident_management_oncall_rotations ALTER TABLE ONLY incident_management_oncall_schedules ADD CONSTRAINT incident_management_oncall_schedules_pkey PRIMARY KEY (id); +ALTER TABLE ONLY incident_management_oncall_shifts + ADD CONSTRAINT incident_management_oncall_shifts_pkey PRIMARY KEY (id); + ALTER TABLE ONLY index_statuses ADD CONSTRAINT index_statuses_pkey PRIMARY KEY (id); @@ -19813,6 +20105,9 @@ ALTER TABLE ONLY namespace_limits ALTER TABLE ONLY namespace_onboarding_actions ADD CONSTRAINT namespace_onboarding_actions_pkey PRIMARY KEY (id); +ALTER TABLE ONLY namespace_package_settings + ADD CONSTRAINT namespace_package_settings_pkey PRIMARY KEY (namespace_id); + ALTER TABLE ONLY namespace_root_storage_statistics ADD CONSTRAINT namespace_root_storage_statistics_pkey PRIMARY KEY (namespace_id); @@ -19846,6 +20141,9 @@ ALTER TABLE ONLY oauth_applications ALTER TABLE ONLY oauth_openid_requests ADD CONSTRAINT oauth_openid_requests_pkey PRIMARY KEY (id); +ALTER TABLE ONLY onboarding_progresses + ADD CONSTRAINT onboarding_progresses_pkey PRIMARY KEY (id); + ALTER TABLE ONLY open_project_tracker_data ADD CONSTRAINT open_project_tracker_data_pkey PRIMARY KEY (id); @@ -19885,6 +20183,21 @@ ALTER TABLE ONLY packages_conan_file_metadata ALTER TABLE ONLY packages_conan_metadata ADD CONSTRAINT packages_conan_metadata_pkey PRIMARY KEY (id); +ALTER TABLE ONLY packages_debian_file_metadata + ADD CONSTRAINT packages_debian_file_metadata_pkey PRIMARY KEY (package_file_id); + +ALTER TABLE ONLY packages_debian_group_architectures + ADD CONSTRAINT packages_debian_group_architectures_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY packages_debian_group_distributions + ADD CONSTRAINT packages_debian_group_distributions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY packages_debian_project_architectures + ADD CONSTRAINT packages_debian_project_architectures_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY packages_debian_project_distributions + ADD CONSTRAINT packages_debian_project_distributions_pkey PRIMARY KEY (id); + ALTER TABLE ONLY packages_dependencies ADD CONSTRAINT packages_dependencies_pkey PRIMARY KEY (id); @@ -20497,9 +20810,9 @@ CREATE INDEX product_analytics_events_experi_project_id_collector_tstamp_idx ON CREATE INDEX active_billable_users ON users USING btree (id) WHERE (((state)::text = 'active'::text) AND ((user_type IS NULL) OR (user_type = ANY (ARRAY[NULL::integer, 6, 4]))) AND ((user_type IS NULL) OR (user_type <> ALL ('{2,6,1,3,7,8}'::smallint[])))); -CREATE INDEX analytics_index_audit_events_on_created_at_and_author_id ON audit_events USING btree (created_at, author_id); +CREATE INDEX analytics_index_audit_events_on_created_at_and_author_id ON audit_events_archived USING btree (created_at, author_id); -CREATE INDEX analytics_index_audit_events_part_on_created_at_and_author_id ON ONLY audit_events_part_5fc467ac26 USING btree (created_at, author_id); +CREATE INDEX analytics_index_audit_events_part_on_created_at_and_author_id ON ONLY audit_events USING btree (created_at, author_id); CREATE INDEX analytics_index_events_on_created_at_and_author_id ON events USING btree (created_at, author_id); @@ -20541,11 +20854,13 @@ CREATE UNIQUE INDEX epic_user_mentions_on_epic_id_and_note_id_index ON epic_user CREATE UNIQUE INDEX epic_user_mentions_on_epic_id_index ON epic_user_mentions USING btree (epic_id) WHERE (note_id IS NULL); +CREATE INDEX expired_artifacts_temp_index ON ci_job_artifacts USING btree (id, created_at) WHERE ((expire_at IS NULL) AND (created_at < '2020-06-22 00:00:00+00'::timestamp with time zone)); + CREATE INDEX finding_links_on_vulnerability_occurrence_id ON vulnerability_finding_links USING btree (vulnerability_occurrence_id); -CREATE INDEX idx_audit_events_on_entity_id_desc_author_id_created_at ON audit_events USING btree (entity_id, entity_type, id DESC, author_id, created_at); +CREATE INDEX idx_audit_events_on_entity_id_desc_author_id_created_at ON audit_events_archived USING btree (entity_id, entity_type, id DESC, author_id, created_at); -CREATE INDEX idx_audit_events_part_on_entity_id_desc_author_id_created_at ON ONLY audit_events_part_5fc467ac26 USING btree (entity_id, entity_type, id DESC, author_id, created_at); +CREATE INDEX idx_audit_events_part_on_entity_id_desc_author_id_created_at ON ONLY audit_events USING btree (entity_id, entity_type, id DESC, author_id, created_at); CREATE INDEX idx_ci_pipelines_artifacts_locked ON ci_pipelines USING btree (ci_ref_id, id) WHERE (locked = 1); @@ -20599,6 +20914,10 @@ CREATE INDEX idx_packages_build_infos_on_package_id ON packages_build_infos USIN CREATE INDEX idx_packages_packages_on_project_id_name_version_package_type ON packages_packages USING btree (project_id, name, version, package_type); +CREATE INDEX idx_pkgs_deb_grp_architectures_on_distribution_id ON packages_debian_group_architectures USING btree (distribution_id); + +CREATE INDEX idx_pkgs_deb_proj_architectures_on_distribution_id ON packages_debian_project_architectures USING btree (distribution_id); + CREATE UNIQUE INDEX idx_pkgs_dep_links_on_pkg_id_dependency_id_dependency_type ON packages_dependency_links USING btree (package_id, dependency_id, dependency_type); CREATE INDEX idx_proj_feat_usg_on_jira_dvcs_cloud_last_sync_at_and_proj_id ON project_feature_usages USING btree (jira_dvcs_cloud_last_sync_at, project_id) WHERE (jira_dvcs_cloud_last_sync_at IS NOT NULL); @@ -20823,8 +21142,16 @@ CREATE UNIQUE INDEX index_boards_epic_board_positions_on_epic_board_id_and_epic_ CREATE INDEX index_boards_epic_board_positions_on_epic_id ON boards_epic_board_positions USING btree (epic_id); +CREATE INDEX index_boards_epic_board_positions_on_scoped_relative_position ON boards_epic_board_positions USING btree (epic_board_id, epic_id, relative_position); + CREATE INDEX index_boards_epic_boards_on_group_id ON boards_epic_boards USING btree (group_id); +CREATE INDEX index_boards_epic_lists_on_epic_board_id ON boards_epic_lists USING btree (epic_board_id); + +CREATE UNIQUE INDEX index_boards_epic_lists_on_epic_board_id_and_label_id ON boards_epic_lists USING btree (epic_board_id, label_id) WHERE (list_type = 1); + +CREATE INDEX index_boards_epic_lists_on_label_id ON boards_epic_lists USING btree (label_id); + CREATE INDEX index_boards_epic_user_preferences_on_board_id ON boards_epic_user_preferences USING btree (board_id); CREATE UNIQUE INDEX index_boards_epic_user_preferences_on_board_user_epic_unique ON boards_epic_user_preferences USING btree (board_id, user_id, epic_id); @@ -20999,7 +21326,7 @@ CREATE INDEX index_ci_pipelines_on_external_pull_request_id ON ci_pipelines USIN CREATE INDEX index_ci_pipelines_on_merge_request_id ON ci_pipelines USING btree (merge_request_id) WHERE (merge_request_id IS NOT NULL); -CREATE INDEX index_ci_pipelines_on_pipeline_schedule_id ON ci_pipelines USING btree (pipeline_schedule_id); +CREATE INDEX index_ci_pipelines_on_pipeline_schedule_id_and_id ON ci_pipelines USING btree (pipeline_schedule_id, id); CREATE INDEX index_ci_pipelines_on_project_id_and_id_desc ON ci_pipelines USING btree (project_id, id DESC); @@ -21295,6 +21622,8 @@ CREATE INDEX index_draft_notes_on_discussion_id ON draft_notes USING btree (disc CREATE INDEX index_draft_notes_on_merge_request_id ON draft_notes USING btree (merge_request_id); +CREATE INDEX index_elastic_reindexing_subtasks_on_elastic_reindexing_task_id ON elastic_reindexing_subtasks USING btree (elastic_reindexing_task_id); + CREATE UNIQUE INDEX index_elastic_reindexing_tasks_on_in_progress ON elastic_reindexing_tasks USING btree (in_progress) WHERE in_progress; CREATE INDEX index_elastic_reindexing_tasks_on_state ON elastic_reindexing_tasks USING btree (state); @@ -21595,6 +21924,10 @@ CREATE UNIQUE INDEX index_inc_mgmnt_oncall_rotations_on_oncall_schedule_id_and_n CREATE INDEX index_incident_management_oncall_schedules_on_project_id ON incident_management_oncall_schedules USING btree (project_id); +CREATE INDEX index_incident_management_oncall_shifts_on_participant_id ON incident_management_oncall_shifts USING btree (participant_id); + +CREATE INDEX index_incident_management_oncall_shifts_on_rotation_id ON incident_management_oncall_shifts USING btree (rotation_id); + CREATE UNIQUE INDEX index_index_statuses_on_project_id ON index_statuses USING btree (project_id); CREATE INDEX index_insights_on_namespace_id ON insights USING btree (namespace_id); @@ -21711,7 +22044,7 @@ CREATE UNIQUE INDEX index_label_priorities_on_project_id_and_label_id ON label_p CREATE UNIQUE INDEX index_labels_on_group_id_and_project_id_and_title ON labels USING btree (group_id, project_id, title); -CREATE INDEX index_labels_on_group_id_and_title_with_null_project_id ON labels USING btree (group_id, title) WHERE (project_id IS NULL); +CREATE UNIQUE INDEX index_labels_on_group_id_and_title_unique ON labels USING btree (group_id, title) WHERE (project_id IS NULL); CREATE INDEX index_labels_on_project_id ON labels USING btree (project_id); @@ -21847,6 +22180,8 @@ CREATE INDEX index_merge_requests_on_target_project_id_and_iid_and_state_id ON m CREATE INDEX index_merge_requests_on_target_project_id_and_iid_jira_title ON merge_requests USING btree (target_project_id, iid) WHERE ((title)::text ~ '[A-Z][A-Z_0-9]+-\d+'::text); +CREATE INDEX index_merge_requests_on_target_project_id_and_squash_commit_sha ON merge_requests USING btree (target_project_id, squash_commit_sha); + CREATE INDEX index_merge_requests_on_target_project_id_and_target_branch ON merge_requests USING btree (target_project_id, target_branch) WHERE ((state_id = 1) AND (merge_when_pipeline_succeeds = true)); CREATE INDEX index_merge_requests_on_target_project_id_iid_jira_description ON merge_requests USING btree (target_project_id, iid) WHERE (description ~ '[A-Z][A-Z_0-9]+-\d+'::text); @@ -22013,6 +22348,8 @@ CREATE UNIQUE INDEX index_on_segment_selections_project_id_segment_id ON analyti CREATE INDEX index_on_segment_selections_segment_id ON analytics_devops_adoption_segment_selections USING btree (segment_id); +CREATE INDEX index_on_snapshots_segment_id_end_time ON analytics_devops_adoption_snapshots USING btree (segment_id, end_time); + CREATE INDEX index_on_snapshots_segment_id_recorded_at ON analytics_devops_adoption_snapshots USING btree (segment_id, recorded_at); CREATE INDEX index_on_users_lower_email ON users USING btree (lower((email)::text)); @@ -22021,6 +22358,8 @@ CREATE INDEX index_on_users_lower_username ON users USING btree (lower((username CREATE INDEX index_on_users_name_lower ON users USING btree (lower((name)::text)); +CREATE UNIQUE INDEX index_onboarding_progresses_on_namespace_id ON onboarding_progresses USING btree (namespace_id); + CREATE INDEX index_open_project_tracker_data_on_service_id ON open_project_tracker_data USING btree (service_id); CREATE INDEX index_operations_feature_flags_issues_on_issue_id ON operations_feature_flags_issues USING btree (issue_id); @@ -22051,6 +22390,14 @@ CREATE UNIQUE INDEX index_packages_conan_file_metadata_on_package_file_id ON pac CREATE UNIQUE INDEX index_packages_conan_metadata_on_package_id_username_channel ON packages_conan_metadata USING btree (package_id, package_username, package_channel); +CREATE INDEX index_packages_debian_group_distributions_on_creator_id ON packages_debian_group_distributions USING btree (creator_id); + +CREATE INDEX index_packages_debian_group_distributions_on_group_id ON packages_debian_group_distributions USING btree (group_id); + +CREATE INDEX index_packages_debian_project_distributions_on_creator_id ON packages_debian_project_distributions USING btree (creator_id); + +CREATE INDEX index_packages_debian_project_distributions_on_project_id ON packages_debian_project_distributions USING btree (project_id); + CREATE UNIQUE INDEX index_packages_dependencies_on_name_and_version_pattern ON packages_dependencies USING btree (name, version_pattern); CREATE INDEX index_packages_dependency_links_on_dependency_id ON packages_dependency_links USING btree (dependency_id); @@ -23001,14 +23348,22 @@ CREATE INDEX temporary_index_vulnerabilities_on_id ON vulnerabilities USING btre CREATE UNIQUE INDEX term_agreements_unique_index ON term_agreements USING btree (user_id, term_id); -CREATE INDEX tmp_build_stage_position_index ON ci_builds USING btree (stage_id, stage_idx) WHERE (stage_idx IS NOT NULL); - -CREATE INDEX tmp_index_for_email_unconfirmation_migration ON emails USING btree (id) WHERE (confirmed_at IS NOT NULL); - CREATE INDEX tmp_index_oauth_applications_on_id_where_trusted ON oauth_applications USING btree (id) WHERE (trusted = true); CREATE INDEX tmp_index_on_vulnerabilities_non_dismissed ON vulnerabilities USING btree (id) WHERE (state <> 2); +CREATE UNIQUE INDEX uniq_pkgs_deb_grp_architectures_on_distribution_id_and_name ON packages_debian_group_architectures USING btree (distribution_id, name); + +CREATE UNIQUE INDEX uniq_pkgs_deb_proj_architectures_on_distribution_id_and_name ON packages_debian_project_architectures USING btree (distribution_id, name); + +CREATE UNIQUE INDEX uniq_pkgs_debian_group_distributions_group_id_and_codename ON packages_debian_group_distributions USING btree (group_id, codename); + +CREATE UNIQUE INDEX uniq_pkgs_debian_group_distributions_group_id_and_suite ON packages_debian_group_distributions USING btree (group_id, suite); + +CREATE UNIQUE INDEX uniq_pkgs_debian_project_distributions_project_id_and_codename ON packages_debian_project_distributions USING btree (project_id, codename); + +CREATE UNIQUE INDEX uniq_pkgs_debian_project_distributions_project_id_and_suite ON packages_debian_project_distributions USING btree (project_id, suite); + CREATE UNIQUE INDEX unique_merge_request_metrics_by_merge_request_id ON merge_request_metrics USING btree (merge_request_id); CREATE UNIQUE INDEX vulnerability_feedback_unique_idx ON vulnerability_feedback USING btree (project_id, category, feedback_type, project_fingerprint); @@ -23273,6 +23628,12 @@ ALTER INDEX product_analytics_events_experimental_pkey ATTACH PARTITION gitlab_p CREATE TRIGGER table_sync_trigger_ee39a25f9d AFTER INSERT OR DELETE OR UPDATE ON audit_events FOR EACH ROW EXECUTE PROCEDURE table_sync_function_2be879775d(); +CREATE TRIGGER trigger_has_external_wiki_on_delete AFTER DELETE ON services FOR EACH ROW WHEN ((((old.type)::text = 'ExternalWikiService'::text) AND (old.project_id IS NOT NULL))) EXECUTE PROCEDURE set_has_external_wiki(); + +CREATE TRIGGER trigger_has_external_wiki_on_insert AFTER INSERT ON services FOR EACH ROW WHEN (((new.active = true) AND ((new.type)::text = 'ExternalWikiService'::text) AND (new.project_id IS NOT NULL))) EXECUTE PROCEDURE set_has_external_wiki(); + +CREATE TRIGGER trigger_has_external_wiki_on_update AFTER UPDATE ON services FOR EACH ROW WHEN ((((new.type)::text = 'ExternalWikiService'::text) AND (old.active <> new.active) AND (new.project_id IS NOT NULL))) EXECUTE PROCEDURE set_has_external_wiki(); + ALTER TABLE ONLY chat_names ADD CONSTRAINT fk_00797a2bf9 FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; @@ -24011,6 +24372,9 @@ ALTER TABLE ONLY trending_projects ALTER TABLE ONLY project_deploy_tokens ADD CONSTRAINT fk_rails_0aca134388 FOREIGN KEY (deploy_token_id) REFERENCES deploy_tokens(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_group_distributions + ADD CONSTRAINT fk_rails_0adf75c347 FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE RESTRICT; + ALTER TABLE ONLY packages_conan_file_metadata ADD CONSTRAINT fk_rails_0afabd9328 FOREIGN KEY (package_file_id) REFERENCES packages_package_files(id) ON DELETE CASCADE; @@ -24032,6 +24396,9 @@ ALTER TABLE ONLY user_synced_attributes_metadata ALTER TABLE ONLY project_authorizations ADD CONSTRAINT fk_rails_0f84bb11f3 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY boards_epic_lists + ADD CONSTRAINT fk_rails_0f9c7f646f FOREIGN KEY (epic_board_id) REFERENCES boards_epic_boards(id) ON DELETE CASCADE; + ALTER TABLE ONLY issue_email_participants ADD CONSTRAINT fk_rails_0fdfd8b811 FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; @@ -24116,6 +24483,9 @@ ALTER TABLE ONLY incident_management_oncall_schedules ALTER TABLE ONLY vulnerability_user_mentions ADD CONSTRAINT fk_rails_1a41c485cd FOREIGN KEY (vulnerability_id) REFERENCES vulnerabilities(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_file_metadata + ADD CONSTRAINT fk_rails_1ae85be112 FOREIGN KEY (package_file_id) REFERENCES packages_package_files(id) ON DELETE CASCADE; + ALTER TABLE ONLY issuable_slas ADD CONSTRAINT fk_rails_1b8768cd63 FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; @@ -24137,6 +24507,9 @@ ALTER TABLE ONLY boards_epic_board_positions ALTER TABLE ONLY geo_repository_created_events ADD CONSTRAINT fk_rails_1f49e46a61 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY boards_epic_lists + ADD CONSTRAINT fk_rails_1fe6b54909 FOREIGN KEY (label_id) REFERENCES labels(id) ON DELETE CASCADE; + ALTER TABLE ONLY approval_merge_request_rules_groups ADD CONSTRAINT fk_rails_2020a7124a FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; @@ -24206,6 +24579,9 @@ ALTER TABLE ONLY geo_repository_updated_events ALTER TABLE ONLY boards_epic_board_labels ADD CONSTRAINT fk_rails_2bedeb8799 FOREIGN KEY (label_id) REFERENCES labels(id) ON DELETE CASCADE; +ALTER TABLE ONLY onboarding_progresses + ADD CONSTRAINT fk_rails_2ccfd420cc FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY protected_branch_unprotect_access_levels ADD CONSTRAINT fk_rails_2d2aba21ef FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; @@ -24260,6 +24636,9 @@ ALTER TABLE ONLY merge_request_blocks ALTER TABLE ONLY merge_request_reviewers ADD CONSTRAINT fk_rails_3704a66140 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; +ALTER TABLE ONLY group_merge_request_approval_settings + ADD CONSTRAINT fk_rails_37b6b4cdba FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY analytics_cycle_analytics_project_stages ADD CONSTRAINT fk_rails_3829e49b66 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -24449,6 +24828,9 @@ ALTER TABLE ONLY issue_user_mentions ALTER TABLE ONLY merge_request_assignees ADD CONSTRAINT fk_rails_579d375628 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_project_architectures + ADD CONSTRAINT fk_rails_5808663adf FOREIGN KEY (distribution_id) REFERENCES packages_debian_project_distributions(id) ON DELETE CASCADE; + ALTER TABLE ONLY clusters_applications_cilium ADD CONSTRAINT fk_rails_59dc12eea6 FOREIGN KEY (cluster_id) REFERENCES clusters(id) ON DELETE CASCADE; @@ -24785,6 +25167,9 @@ ALTER TABLE ONLY alert_management_alert_assignees ALTER TABLE ONLY scim_identities ADD CONSTRAINT fk_rails_9421a0bffb FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_project_distributions + ADD CONSTRAINT fk_rails_94b95e1f84 FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE SET NULL; + ALTER TABLE ONLY packages_pypi_metadata ADD CONSTRAINT fk_rails_9698717cdd FOREIGN KEY (package_id) REFERENCES packages_packages(id) ON DELETE CASCADE; @@ -25145,6 +25530,12 @@ ALTER TABLE ONLY user_callouts ALTER TABLE ONLY vulnerability_feedback ADD CONSTRAINT fk_rails_debd54e456 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_project_distributions + ADD CONSTRAINT fk_rails_df44271a30 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE RESTRICT; + +ALTER TABLE ONLY incident_management_oncall_shifts + ADD CONSTRAINT fk_rails_df4feb286a FOREIGN KEY (rotation_id) REFERENCES incident_management_oncall_rotations(id) ON DELETE CASCADE; + ALTER TABLE ONLY analytics_cycle_analytics_group_stages ADD CONSTRAINT fk_rails_dfb37c880d FOREIGN KEY (end_event_label_id) REFERENCES labels(id) ON DELETE CASCADE; @@ -25184,6 +25575,9 @@ ALTER TABLE ONLY merge_request_metrics ALTER TABLE ONLY draft_notes ADD CONSTRAINT fk_rails_e753681674 FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE; +ALTER TABLE ONLY namespace_package_settings + ADD CONSTRAINT fk_rails_e773444769 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY dast_site_tokens ADD CONSTRAINT fk_rails_e84f721a8e FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -25214,12 +25608,18 @@ ALTER TABLE ONLY snippet_statistics ALTER TABLE ONLY project_security_settings ADD CONSTRAINT fk_rails_ed4abe1338 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_group_distributions + ADD CONSTRAINT fk_rails_ede0bb937f FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE SET NULL; + ALTER TABLE ONLY experiment_subjects ADD CONSTRAINT fk_rails_ede5754774 FOREIGN KEY (experiment_id) REFERENCES experiments(id) ON DELETE CASCADE; ALTER TABLE ONLY ci_daily_build_group_report_results ADD CONSTRAINT fk_rails_ee072d13b3 FOREIGN KEY (last_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; +ALTER TABLE ONLY packages_debian_group_architectures + ADD CONSTRAINT fk_rails_ef667d1b03 FOREIGN KEY (distribution_id) REFERENCES packages_debian_group_distributions(id) ON DELETE CASCADE; + ALTER TABLE ONLY label_priorities ADD CONSTRAINT fk_rails_ef916d14fa FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -25241,6 +25641,9 @@ ALTER TABLE ONLY requirements ALTER TABLE ONLY snippet_repositories ADD CONSTRAINT fk_rails_f21f899728 FOREIGN KEY (shard_id) REFERENCES shards(id) ON DELETE RESTRICT; +ALTER TABLE ONLY elastic_reindexing_subtasks + ADD CONSTRAINT fk_rails_f2cc190164 FOREIGN KEY (elastic_reindexing_task_id) REFERENCES elastic_reindexing_tasks(id) ON DELETE CASCADE; + ALTER TABLE ONLY ci_pipeline_chat_data ADD CONSTRAINT fk_rails_f300456b63 FOREIGN KEY (chat_name_id) REFERENCES chat_names(id) ON DELETE CASCADE; @@ -25256,6 +25659,9 @@ ALTER TABLE ONLY board_group_recent_visits ALTER TABLE ONLY resource_state_events ADD CONSTRAINT fk_rails_f5827a7ccd FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE ONLY incident_management_oncall_shifts + ADD CONSTRAINT fk_rails_f6eef06841 FOREIGN KEY (participant_id) REFERENCES incident_management_oncall_participants(id) ON DELETE CASCADE; + ALTER TABLE ONLY design_user_mentions ADD CONSTRAINT fk_rails_f7075a53c1 FOREIGN KEY (design_id) REFERENCES design_management_designs(id) ON DELETE CASCADE; |