diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 09:55:51 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-20 09:55:51 +0000 |
commit | e8d2c2579383897a1dd7f9debd359abe8ae8373d (patch) | |
tree | c42be41678c2586d49a75cabce89322082698334 /db | |
parent | fc845b37ec3a90aaa719975f607740c22ba6a113 (diff) | |
download | gitlab-ce-e8d2c2579383897a1dd7f9debd359abe8ae8373d.tar.gz |
Add latest changes from gitlab-org/gitlab@14-1-stable-eev14.1.0-rc42
Diffstat (limited to 'db')
182 files changed, 2487 insertions, 160 deletions
diff --git a/db/ci_migrate/20210617101848_create_ci_instance_variables_on_ci.rb b/db/ci_migrate/20210617101848_create_ci_instance_variables_on_ci.rb new file mode 100644 index 00000000000..7274e6bcdf2 --- /dev/null +++ b/db/ci_migrate/20210617101848_create_ci_instance_variables_on_ci.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class CreateCiInstanceVariablesOnCi < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + unless table_exists?(:ci_instance_variables) + create_table :ci_instance_variables do |t| + t.integer :variable_type, null: false, limit: 2, default: 1 + t.boolean :masked, default: false, allow_null: false + t.boolean :protected, default: false, allow_null: false + t.text :key, null: false + t.text :encrypted_value + t.text :encrypted_value_iv + + t.index [:key], name: 'index_ci_instance_variables_on_key', unique: true, using: :btree + end + end + + add_text_limit(:ci_instance_variables, :key, 255) + # Use constraint_name generated from db/migrate/20200625193358_increase_size_on_instance_level_variable_values.rb + add_text_limit(:ci_instance_variables, :encrypted_value, 13_579, constraint_name: 'check_956afd70f1') + add_text_limit(:ci_instance_variables, :encrypted_value_iv, 255) + end + + def down + drop_table :ci_instance_variables + end +end diff --git a/db/ci_schema_migrations/20210617101848 b/db/ci_schema_migrations/20210617101848 new file mode 100644 index 00000000000..2969c694fa2 --- /dev/null +++ b/db/ci_schema_migrations/20210617101848 @@ -0,0 +1 @@ +1b74312f59f6f8937cd0dd754d22dc72e9bdc7302e6254a2fda5762afebe303c
\ No newline at end of file diff --git a/db/ci_structure.sql b/db/ci_structure.sql new file mode 100644 index 00000000000..1b898012f46 --- /dev/null +++ b/db/ci_structure.sql @@ -0,0 +1,45 @@ +CREATE TABLE ar_internal_metadata ( + key character varying NOT NULL, + value character varying, + created_at timestamp(6) without time zone NOT NULL, + updated_at timestamp(6) without time zone NOT NULL +); + +CREATE TABLE ci_instance_variables ( + id bigint NOT NULL, + variable_type smallint DEFAULT 1 NOT NULL, + masked boolean DEFAULT false, + protected boolean DEFAULT false, + key text NOT NULL, + encrypted_value text, + encrypted_value_iv text, + CONSTRAINT check_07a45a5bcb CHECK ((char_length(encrypted_value_iv) <= 255)), + CONSTRAINT check_5aede12208 CHECK ((char_length(key) <= 255)), + CONSTRAINT check_956afd70f1 CHECK ((char_length(encrypted_value) <= 13579)) +); + +CREATE SEQUENCE ci_instance_variables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE ci_instance_variables_id_seq OWNED BY ci_instance_variables.id; + +CREATE TABLE schema_migrations ( + version character varying NOT NULL +); + +ALTER TABLE ONLY ci_instance_variables ALTER COLUMN id SET DEFAULT nextval('ci_instance_variables_id_seq'::regclass); + +ALTER TABLE ONLY ar_internal_metadata + ADD CONSTRAINT ar_internal_metadata_pkey PRIMARY KEY (key); + +ALTER TABLE ONLY ci_instance_variables + ADD CONSTRAINT ci_instance_variables_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY schema_migrations + ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); + +CREATE UNIQUE INDEX index_ci_instance_variables_on_key ON ci_instance_variables USING btree (key); diff --git a/db/fixtures/development/19_environments.rb b/db/fixtures/development/19_environments.rb index 0f9188164c9..50ce6bfc297 100644 --- a/db/fixtures/development/19_environments.rb +++ b/db/fixtures/development/19_environments.rb @@ -6,7 +6,7 @@ class Gitlab::Seeder::Environments end def seed! - @project.create_mock_monitoring_service!(active: true) + @project.create_mock_monitoring_integration!(active: true) create_master_deployments!('production') create_master_deployments!('staging') diff --git a/db/gitlab_structure.sql b/db/gitlab_structure.sql deleted file mode 100644 index 0d4943ccde4..00000000000 --- a/db/gitlab_structure.sql +++ /dev/null @@ -1,3 +0,0 @@ --- this file tracks custom GitLab data, such as foreign keys referencing partitioned tables --- more details can be found in the issue: https://gitlab.com/gitlab-org/gitlab/-/issues/201872 - diff --git a/db/migrate/20201224144948_migrate_coverage_report_worker.rb b/db/migrate/20201224144948_migrate_coverage_report_worker.rb index a13e5e859e0..8580a15c256 100644 --- a/db/migrate/20201224144948_migrate_coverage_report_worker.rb +++ b/db/migrate/20201224144948_migrate_coverage_report_worker.rb @@ -6,10 +6,10 @@ class MigrateCoverageReportWorker < ActiveRecord::Migration[6.0] DOWNTIME = false def up - sidekiq_queue_migrate 'ci_pipelines_create_artifact', to: 'ci_pipeline_artifacts_coverage_report' + sidekiq_queue_migrate 'ci_pipelines_create_artifact', to: 'ci_pipeline_artifacts_coverage_report' # rubocop:disable Migration/SidekiqQueueMigrate end def down - sidekiq_queue_migrate 'ci_pipeline_artifacts_coverage_report', to: 'ci_pipelines_create_artifact' + sidekiq_queue_migrate 'ci_pipeline_artifacts_coverage_report', to: 'ci_pipelines_create_artifact' # rubocop:disable Migration/SidekiqQueueMigrate end end diff --git a/db/migrate/20210317210338_add_valid_runner_registrars.rb b/db/migrate/20210317210338_add_valid_runner_registrars.rb new file mode 100644 index 00000000000..61663836d39 --- /dev/null +++ b/db/migrate/20210317210338_add_valid_runner_registrars.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddValidRunnerRegistrars < ActiveRecord::Migration[6.0] + def change + add_column :application_settings, :valid_runner_registrars, :string, array: true, default: %w(project group) + end +end diff --git a/db/migrate/20210526155257_rename_sync_security_report_approval_rules_sidekiq_queue.rb b/db/migrate/20210526155257_rename_sync_security_report_approval_rules_sidekiq_queue.rb index b9cefe456b8..51f234166de 100644 --- a/db/migrate/20210526155257_rename_sync_security_report_approval_rules_sidekiq_queue.rb +++ b/db/migrate/20210526155257_rename_sync_security_report_approval_rules_sidekiq_queue.rb @@ -6,10 +6,10 @@ class RenameSyncSecurityReportApprovalRulesSidekiqQueue < ActiveRecord::Migratio DOWNTIME = false def up - sidekiq_queue_migrate 'sync_security_reports_to_report_approval_rules', to: 'ci_sync_reports_to_report_approval_rules' + sidekiq_queue_migrate 'sync_security_reports_to_report_approval_rules', to: 'ci_sync_reports_to_report_approval_rules' # rubocop:disable Migration/SidekiqQueueMigrate end def down - sidekiq_queue_migrate 'ci_sync_reports_to_report_approval_rules', to: 'sync_security_reports_to_report_approval_rules' + sidekiq_queue_migrate 'ci_sync_reports_to_report_approval_rules', to: 'sync_security_reports_to_report_approval_rules' # rubocop:disable Migration/SidekiqQueueMigrate end end diff --git a/db/migrate/20210601132134_remove_partial_index_for_hashed_storage_migration.rb b/db/migrate/20210601132134_remove_partial_index_for_hashed_storage_migration.rb new file mode 100644 index 00000000000..d9793832d8c --- /dev/null +++ b/db/migrate/20210601132134_remove_partial_index_for_hashed_storage_migration.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RemovePartialIndexForHashedStorageMigration < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + remove_concurrent_index :projects, :id, name: 'index_on_id_partial_with_legacy_storage' + end + + def down + add_concurrent_index :projects, :id, where: 'storage_version < 2 or storage_version IS NULL', name: 'index_on_id_partial_with_legacy_storage' + end +end diff --git a/db/migrate/20210602155056_add_merge_request_diff_commit_users.rb b/db/migrate/20210602155056_add_merge_request_diff_commit_users.rb new file mode 100644 index 00000000000..f99790e0eca --- /dev/null +++ b/db/migrate/20210602155056_add_merge_request_diff_commit_users.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class AddMergeRequestDiffCommitUsers < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + create_table_with_constraints :merge_request_diff_commit_users, id: :bigint do |t| + t.text :name + t.text :email + + t.text_limit :name, 512 + t.text_limit :email, 512 + + t.index [:name, :email], unique: true + end + + # Names or Emails can be optional, so in some cases one of these may be + # null. But if both are NULL/empty, no row should exist in this table. + add_check_constraint( + :merge_request_diff_commit_users, + "(COALESCE(name, '') != '') OR (COALESCE(email, '') != '')", + :merge_request_diff_commit_users_name_or_email_existence + ) + end + + def down + drop_table :merge_request_diff_commit_users + end +end diff --git a/db/migrate/20210602155110_add_merge_request_diff_commit_user_columns.rb b/db/migrate/20210602155110_add_merge_request_diff_commit_user_columns.rb new file mode 100644 index 00000000000..8cc86c7e73c --- /dev/null +++ b/db/migrate/20210602155110_add_merge_request_diff_commit_user_columns.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddMergeRequestDiffCommitUserColumns < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + # NOTE: these columns are _not_ indexed, nor do they use foreign keys. + # + # This is deliberate, as creating these indexes on GitLab.com takes a _very_ + # long time. In addition, there's no real need for them either based on how + # this data is used. + # + # For more information, refer to the following: + # + # - https://gitlab.com/gitlab-com/gl-infra/production/-/issues/5038#note_614592881 + # - https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63669 + add_column(:merge_request_diff_commits, :commit_author_id, :bigint) + add_column(:merge_request_diff_commits, :committer_id, :bigint) + end + + def down + remove_column(:merge_request_diff_commits, :commit_author_id) + remove_column(:merge_request_diff_commits, :committer_id) + end +end diff --git a/db/migrate/20210604032738_create_dast_site_profiles_builds.rb b/db/migrate/20210604032738_create_dast_site_profiles_builds.rb new file mode 100644 index 00000000000..2e9eb2c7cb7 --- /dev/null +++ b/db/migrate/20210604032738_create_dast_site_profiles_builds.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class CreateDastSiteProfilesBuilds < ActiveRecord::Migration[6.1] + def up + table_comment = { owner: 'group::dynamic analysis', description: 'Join table between DAST Site Profiles and CI Builds' } + + create_table :dast_site_profiles_builds, primary_key: [:dast_site_profile_id, :ci_build_id], comment: table_comment.to_json do |t| + t.bigint :dast_site_profile_id, null: false + t.bigint :ci_build_id, null: false + + t.index :ci_build_id, unique: true, name: :dast_site_profiles_builds_on_ci_build_id + end + end + + def down + drop_table :dast_site_profiles_builds + end +end diff --git a/db/migrate/20210604034158_add_ci_build_id_fk_to_dast_site_profiles_builds.rb b/db/migrate/20210604034158_add_ci_build_id_fk_to_dast_site_profiles_builds.rb new file mode 100644 index 00000000000..6908da69e08 --- /dev/null +++ b/db/migrate/20210604034158_add_ci_build_id_fk_to_dast_site_profiles_builds.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddCiBuildIdFkToDastSiteProfilesBuilds < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :dast_site_profiles_builds, :ci_builds, column: :ci_build_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :dast_site_profiles_builds, column: :ci_build_id + end + end +end diff --git a/db/migrate/20210604034354_add_dast_site_profile_id_fk_to_dast_site_profiles_builds.rb b/db/migrate/20210604034354_add_dast_site_profile_id_fk_to_dast_site_profiles_builds.rb new file mode 100644 index 00000000000..58fe3090a4f --- /dev/null +++ b/db/migrate/20210604034354_add_dast_site_profile_id_fk_to_dast_site_profiles_builds.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddDastSiteProfileIdFkToDastSiteProfilesBuilds < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :dast_site_profiles_builds, :dast_site_profiles, column: :dast_site_profile_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :dast_site_profiles_builds, column: :dast_site_profile_id + end + end +end diff --git a/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb b/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb new file mode 100644 index 00000000000..f8a5f735f0d --- /dev/null +++ b/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class CreateDastScannerProfilesBuilds < ActiveRecord::Migration[6.1] + def up + table_comment = { owner: 'group::dynamic analysis', description: 'Join table between DAST Scanner Profiles and CI Builds' } + + create_table :dast_scanner_profiles_builds, primary_key: [:dast_scanner_profile_id, :ci_build_id], comment: table_comment.to_json do |t| + t.bigint :dast_scanner_profile_id, null: false + t.bigint :ci_build_id, null: false + + t.index :ci_build_id, unique: true, name: :dast_scanner_profiles_builds_on_ci_build_id + end + end + + def down + drop_table :dast_scanner_profiles_builds + end +end diff --git a/db/migrate/20210604051742_add_ci_build_id_fk_to_dast_scanner_profiles_builds.rb b/db/migrate/20210604051742_add_ci_build_id_fk_to_dast_scanner_profiles_builds.rb new file mode 100644 index 00000000000..cc495c749c5 --- /dev/null +++ b/db/migrate/20210604051742_add_ci_build_id_fk_to_dast_scanner_profiles_builds.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddCiBuildIdFkToDastScannerProfilesBuilds < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :dast_scanner_profiles_builds, :ci_builds, column: :ci_build_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :dast_scanner_profiles_builds, column: :ci_build_id + end + end +end diff --git a/db/migrate/20210604051917_add_dast_scanner_profile_id_fk_to_dast_scanner_profiles_builds.rb b/db/migrate/20210604051917_add_dast_scanner_profile_id_fk_to_dast_scanner_profiles_builds.rb new file mode 100644 index 00000000000..0c14c798da4 --- /dev/null +++ b/db/migrate/20210604051917_add_dast_scanner_profile_id_fk_to_dast_scanner_profiles_builds.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddDastScannerProfileIdFkToDastScannerProfilesBuilds < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :dast_scanner_profiles_builds, :dast_scanner_profiles, column: :dast_scanner_profile_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :dast_scanner_profiles_builds, column: :dast_scanner_profile_id + end + end +end diff --git a/db/migrate/20210610153556_delete_legacy_operations_feature_flags.rb b/db/migrate/20210610153556_delete_legacy_operations_feature_flags.rb new file mode 100644 index 00000000000..f0bcbe5e472 --- /dev/null +++ b/db/migrate/20210610153556_delete_legacy_operations_feature_flags.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class DeleteLegacyOperationsFeatureFlags < ActiveRecord::Migration[6.1] + LEGACY_FEATURE_FLAG_VERSION = 1 + + def up + execute("DELETE FROM operations_feature_flags WHERE version = #{LEGACY_FEATURE_FLAG_VERSION}") + end + + def down + # no-op + end +end diff --git a/db/migrate/20210611101034_add_devops_adoption_sast_dast.rb b/db/migrate/20210611101034_add_devops_adoption_sast_dast.rb new file mode 100644 index 00000000000..0a9eb64a5fc --- /dev/null +++ b/db/migrate/20210611101034_add_devops_adoption_sast_dast.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionSastDast < ActiveRecord::Migration[6.1] + def change + add_column :analytics_devops_adoption_snapshots, :sast_enabled_count, :integer + add_column :analytics_devops_adoption_snapshots, :dast_enabled_count, :integer + end +end diff --git a/db/migrate/20210614142311_add_running_container_scanning_max_size_to_plan_limits.rb b/db/migrate/20210614142311_add_running_container_scanning_max_size_to_plan_limits.rb new file mode 100644 index 00000000000..248fff6c42f --- /dev/null +++ b/db/migrate/20210614142311_add_running_container_scanning_max_size_to_plan_limits.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddRunningContainerScanningMaxSizeToPlanLimits < ActiveRecord::Migration[6.0] + def change + add_column :plan_limits, :ci_max_artifact_size_running_container_scanning, :integer, null: false, default: 0 + end +end diff --git a/db/migrate/20210615064342_add_issue_id_to_requirement.rb b/db/migrate/20210615064342_add_issue_id_to_requirement.rb new file mode 100644 index 00000000000..a6d85bd9d6e --- /dev/null +++ b/db/migrate/20210615064342_add_issue_id_to_requirement.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIssueIdToRequirement < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + add_column :requirements, :issue_id, :bigint, null: true + end + end + + def down + with_lock_retries do + remove_column :requirements, :issue_id + end + end +end diff --git a/db/migrate/20210616110748_add_issue_index_to_requirement.rb b/db/migrate/20210616110748_add_issue_index_to_requirement.rb new file mode 100644 index 00000000000..747ee3875dc --- /dev/null +++ b/db/migrate/20210616110748_add_issue_index_to_requirement.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIssueIndexToRequirement < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'index_requirements_on_issue_id' + + def up + add_concurrent_index :requirements, :issue_id, name: INDEX_NAME, unique: true + end + + def down + remove_concurrent_index_by_name :requirements, INDEX_NAME + end +end diff --git a/db/migrate/20210616111311_add_issue_requirement_foreign_key.rb b/db/migrate/20210616111311_add_issue_requirement_foreign_key.rb new file mode 100644 index 00000000000..ed851da9f31 --- /dev/null +++ b/db/migrate/20210616111311_add_issue_requirement_foreign_key.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddIssueRequirementForeignKey < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + TARGET_TABLE = :requirements + + def up + add_concurrent_foreign_key TARGET_TABLE, :issues, column: :issue_id + end + + def down + with_lock_retries do + remove_foreign_key_if_exists(TARGET_TABLE, column: :issue_id) + end + end +end diff --git a/db/migrate/20210616134905_add_timestamp_to_schema_migration.rb b/db/migrate/20210616134905_add_timestamp_to_schema_migration.rb new file mode 100644 index 00000000000..7086b20c48f --- /dev/null +++ b/db/migrate/20210616134905_add_timestamp_to_schema_migration.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddTimestampToSchemaMigration < ActiveRecord::Migration[6.1] + def up + # Add a nullable column with default null first + add_column :schema_migrations, :finished_at, :timestamptz + + # Change default to NOW() for new records + change_column_default :schema_migrations, :finished_at, -> { 'NOW()' } + end + + def down + remove_column :schema_migrations, :finished_at + end +end diff --git a/db/migrate/20210616154808_remove_ci_build_protected_index.rb b/db/migrate/20210616154808_remove_ci_build_protected_index.rb new file mode 100644 index 00000000000..25a8d159c1e --- /dev/null +++ b/db/migrate/20210616154808_remove_ci_build_protected_index.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class RemoveCiBuildProtectedIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + INDEX_NAME = 'index_ci_builds_on_protected' + + disable_ddl_transaction! + + def up + remove_concurrent_index :ci_builds, :protected, name: INDEX_NAME + end + + def down + add_concurrent_index :ci_builds, :protected, name: INDEX_NAME + end +end diff --git a/db/migrate/20210616185947_add_mailgun_settings_to_application_setting.rb b/db/migrate/20210616185947_add_mailgun_settings_to_application_setting.rb new file mode 100644 index 00000000000..8447ff79d12 --- /dev/null +++ b/db/migrate/20210616185947_add_mailgun_settings_to_application_setting.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddMailgunSettingsToApplicationSetting < ActiveRecord::Migration[6.1] + def change + add_column :application_settings, :encrypted_mailgun_signing_key, :binary + add_column :application_settings, :encrypted_mailgun_signing_key_iv, :binary + + add_column :application_settings, :mailgun_events_enabled, :boolean, default: false, null: false + end +end diff --git a/db/migrate/20210617022324_create_incident_management_pending_alert_escalations.rb b/db/migrate/20210617022324_create_incident_management_pending_alert_escalations.rb new file mode 100644 index 00000000000..32249c9ed56 --- /dev/null +++ b/db/migrate/20210617022324_create_incident_management_pending_alert_escalations.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +class CreateIncidentManagementPendingAlertEscalations < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + execute(<<~SQL) + + CREATE TABLE incident_management_pending_alert_escalations ( + id bigserial NOT NULL, + rule_id bigint, + alert_id bigint NOT NULL, + schedule_id bigint NOT NULL, + process_at timestamp with time zone NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status smallint NOT NULL, + PRIMARY KEY (id, process_at) + ) PARTITION BY RANGE (process_at); + + CREATE INDEX index_incident_management_pending_alert_escalations_on_alert_id + ON incident_management_pending_alert_escalations USING btree (alert_id); + + CREATE INDEX index_incident_management_pending_alert_escalations_on_rule_id + ON incident_management_pending_alert_escalations USING btree (rule_id); + + CREATE INDEX index_incident_management_pending_alert_escalations_on_schedule_id + ON incident_management_pending_alert_escalations USING btree (schedule_id); + + ALTER TABLE incident_management_pending_alert_escalations ADD CONSTRAINT fk_rails_fcbfd9338b + FOREIGN KEY (schedule_id) REFERENCES incident_management_oncall_schedules(id) ON DELETE CASCADE; + + ALTER TABLE incident_management_pending_alert_escalations ADD CONSTRAINT fk_rails_057c1e3d87 + FOREIGN KEY (rule_id) REFERENCES incident_management_escalation_rules(id) ON DELETE SET NULL; + + ALTER TABLE incident_management_pending_alert_escalations ADD CONSTRAINT fk_rails_8d8de95da9 + FOREIGN KEY (alert_id) REFERENCES alert_management_alerts(id) ON DELETE CASCADE; + SQL + end + end + + def down + with_lock_retries do + drop_table :incident_management_pending_alert_escalations + end + end +end diff --git a/db/migrate/20210617161348_cascade_delete_freeze_periods.rb b/db/migrate/20210617161348_cascade_delete_freeze_periods.rb new file mode 100644 index 00000000000..90623b27920 --- /dev/null +++ b/db/migrate/20210617161348_cascade_delete_freeze_periods.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class CascadeDeleteFreezePeriods < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + OLD_PROJECT_FK = 'fk_rails_2e02bbd1a6' + NEW_PROJECT_FK = 'fk_2e02bbd1a6' + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :ci_freeze_periods, :projects, column: :project_id, on_delete: :cascade, name: NEW_PROJECT_FK + remove_foreign_key_if_exists :ci_freeze_periods, :projects, column: :project_id, name: OLD_PROJECT_FK + end + + def down + add_concurrent_foreign_key :ci_freeze_periods, :projects, column: :project_id, on_delete: nil, name: OLD_PROJECT_FK + remove_foreign_key_if_exists :ci_freeze_periods, :projects, column: :project_id, name: NEW_PROJECT_FK + end +end diff --git a/db/migrate/20210617180131_migrate_usage_ping_sidekiq_queue.rb b/db/migrate/20210617180131_migrate_usage_ping_sidekiq_queue.rb new file mode 100644 index 00000000000..9eebc6feb14 --- /dev/null +++ b/db/migrate/20210617180131_migrate_usage_ping_sidekiq_queue.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class MigrateUsagePingSidekiqQueue < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + # rubocop:disable Migration/SidekiqQueueMigrate + def up + sidekiq_queue_migrate 'cronjob:gitlab_usage_ping', to: 'cronjob:gitlab_service_ping' + end + + def down + sidekiq_queue_migrate 'cronjob:gitlab_service_ping', to: 'cronjob:gitlab_usage_ping' + end + # rubocop:enable Migration/SidekiqQueueMigrate +end diff --git a/db/migrate/20210621043337_rename_services_to_integrations.rb b/db/migrate/20210621043337_rename_services_to_integrations.rb new file mode 100644 index 00000000000..17f4b6a2d4d --- /dev/null +++ b/db/migrate/20210621043337_rename_services_to_integrations.rb @@ -0,0 +1,150 @@ +# frozen_string_literal: true + +class RenameServicesToIntegrations < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + include Gitlab::Database::SchemaHelpers + + # Function and trigger names match those migrated in: + # - https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49916 + # - https://gitlab.com/gitlab-org/gitlab/-/merge_requests/51852 + + WIKI_FUNCTION_NAME = 'set_has_external_wiki' + TRACKER_FUNCTION_NAME = 'set_has_external_issue_tracker' + + WIKI_TRIGGER_ON_INSERT_NAME = 'trigger_has_external_wiki_on_insert' + WIKI_TRIGGER_ON_UPDATE_NAME = 'trigger_has_external_wiki_on_update' + WIKI_TRIGGER_ON_DELETE_NAME = 'trigger_has_external_wiki_on_delete' + + TRACKER_TRIGGER_ON_INSERT_NAME = 'trigger_has_external_issue_tracker_on_insert' + TRACKER_TRIGGER_ON_UPDATE_NAME = 'trigger_has_external_issue_tracker_on_update' + TRACKER_TRIGGER_ON_DELETE_NAME = 'trigger_has_external_issue_tracker_on_delete' + + ALL_TRIGGERS = [ + WIKI_TRIGGER_ON_INSERT_NAME, + WIKI_TRIGGER_ON_UPDATE_NAME, + WIKI_TRIGGER_ON_DELETE_NAME, + TRACKER_TRIGGER_ON_INSERT_NAME, + TRACKER_TRIGGER_ON_UPDATE_NAME, + TRACKER_TRIGGER_ON_DELETE_NAME + ].freeze + + def up + execute('LOCK services IN ACCESS EXCLUSIVE MODE') + + drop_all_triggers(:services) + + rename_table_safely(:services, :integrations) + + recreate_all_triggers(:integrations) + end + + def down + execute('LOCK integrations IN ACCESS EXCLUSIVE MODE') + + drop_all_triggers(:integrations) + + undo_rename_table_safely(:services, :integrations) + + recreate_all_triggers(:services) + end + + private + + def drop_all_triggers(table_name) + ALL_TRIGGERS.each do |trigger_name| + drop_trigger(table_name, trigger_name) + end + end + + def recreate_all_triggers(table_name) + wiki_create_insert_trigger(table_name) + wiki_create_update_trigger(table_name) + wiki_create_delete_trigger(table_name) + + tracker_replace_trigger_function(table_name) + + tracker_create_insert_trigger(table_name) + tracker_create_update_trigger(table_name) + tracker_create_delete_trigger(table_name) + end + + def wiki_create_insert_trigger(table_name) + execute(<<~SQL) + CREATE TRIGGER #{WIKI_TRIGGER_ON_INSERT_NAME} + AFTER INSERT ON #{table_name} + FOR EACH ROW + WHEN (NEW.active = TRUE AND NEW.type = 'ExternalWikiService' AND NEW.project_id IS NOT NULL) + EXECUTE FUNCTION #{WIKI_FUNCTION_NAME}(); + SQL + end + + def wiki_create_update_trigger(table_name) + execute(<<~SQL) + CREATE TRIGGER #{WIKI_TRIGGER_ON_UPDATE_NAME} + AFTER UPDATE ON #{table_name} + FOR EACH ROW + WHEN (NEW.type = 'ExternalWikiService' AND OLD.active != NEW.active AND NEW.project_id IS NOT NULL) + EXECUTE FUNCTION #{WIKI_FUNCTION_NAME}(); + SQL + end + + def wiki_create_delete_trigger(table_name) + execute(<<~SQL) + CREATE TRIGGER #{WIKI_TRIGGER_ON_DELETE_NAME} + AFTER DELETE ON #{table_name} + FOR EACH ROW + WHEN (OLD.type = 'ExternalWikiService' AND OLD.project_id IS NOT NULL) + EXECUTE FUNCTION #{WIKI_FUNCTION_NAME}(); + SQL + end + + # Using `replace: true` to rewrite the existing function + def tracker_replace_trigger_function(table_name) + create_trigger_function(TRACKER_FUNCTION_NAME, replace: true) do + <<~SQL + UPDATE projects SET has_external_issue_tracker = ( + EXISTS + ( + SELECT 1 + FROM #{table_name} + WHERE project_id = COALESCE(NEW.project_id, OLD.project_id) + AND active = TRUE + AND category = 'issue_tracker' + ) + ) + WHERE projects.id = COALESCE(NEW.project_id, OLD.project_id); + RETURN NULL; + SQL + end + end + + def tracker_create_insert_trigger(table_name) + execute(<<~SQL) + CREATE TRIGGER #{TRACKER_TRIGGER_ON_INSERT_NAME} + AFTER INSERT ON #{table_name} + FOR EACH ROW + WHEN (NEW.category = 'issue_tracker' AND NEW.active = TRUE AND NEW.project_id IS NOT NULL) + EXECUTE FUNCTION #{TRACKER_FUNCTION_NAME}(); + SQL + end + + def tracker_create_update_trigger(table_name) + execute(<<~SQL) + CREATE TRIGGER #{TRACKER_TRIGGER_ON_UPDATE_NAME} + AFTER UPDATE ON #{table_name} + FOR EACH ROW + WHEN (NEW.category = 'issue_tracker' AND OLD.active != NEW.active AND NEW.project_id IS NOT NULL) + EXECUTE FUNCTION #{TRACKER_FUNCTION_NAME}(); + SQL + end + + def tracker_create_delete_trigger(table_name) + execute(<<~SQL) + CREATE TRIGGER #{TRACKER_TRIGGER_ON_DELETE_NAME} + AFTER DELETE ON #{table_name} + FOR EACH ROW + WHEN (OLD.category = 'issue_tracker' AND OLD.active = TRUE AND OLD.project_id IS NOT NULL) + EXECUTE FUNCTION #{TRACKER_FUNCTION_NAME}(); + SQL + end +end diff --git a/db/migrate/20210621044000_rename_services_indexes_to_integrations.rb b/db/migrate/20210621044000_rename_services_indexes_to_integrations.rb new file mode 100644 index 00000000000..9dba663f6a7 --- /dev/null +++ b/db/migrate/20210621044000_rename_services_indexes_to_integrations.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class RenameServicesIndexesToIntegrations < ActiveRecord::Migration[6.1] + INDEXES = %w( + project_and_type_where_inherit_null + project_id_and_type_unique + template + type + type_and_instance_partial + type_and_template_partial + type_id_when_active_and_project_id_not_null + unique_group_id_and_type + ).freeze + + def up + INDEXES.each do |index| + execute(<<~SQL) + ALTER INDEX IF EXISTS "index_services_on_#{index}" RENAME TO "index_integrations_on_#{index}" + SQL + end + end + + def down + INDEXES.each do |index| + execute(<<~SQL) + ALTER INDEX IF EXISTS "index_integrations_on_#{index}" RENAME TO "index_services_on_#{index}" + SQL + end + end +end diff --git a/db/migrate/20210621084632_add_summary_to_timelogs.rb b/db/migrate/20210621084632_add_summary_to_timelogs.rb new file mode 100644 index 00000000000..45fd7f1e0bc --- /dev/null +++ b/db/migrate/20210621084632_add_summary_to_timelogs.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddSummaryToTimelogs < ActiveRecord::Migration[6.1] + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20210621090030_add_text_limit_to_timelogs_summary + def change + add_column :timelogs, :summary, :text + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20210621090030_add_text_limit_to_timelogs_summary.rb b/db/migrate/20210621090030_add_text_limit_to_timelogs_summary.rb new file mode 100644 index 00000000000..ac872afd3fa --- /dev/null +++ b/db/migrate/20210621090030_add_text_limit_to_timelogs_summary.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddTextLimitToTimelogsSummary < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + add_text_limit :timelogs, :summary, 255 + end + + def down + remove_text_limit :timelogs, :summary + end +end diff --git a/db/migrate/20210621091830_add_devops_adoption_snapshot_dependency_scanning.rb b/db/migrate/20210621091830_add_devops_adoption_snapshot_dependency_scanning.rb new file mode 100644 index 00000000000..ae19a46b66f --- /dev/null +++ b/db/migrate/20210621091830_add_devops_adoption_snapshot_dependency_scanning.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionSnapshotDependencyScanning < ActiveRecord::Migration[6.1] + def change + add_column :analytics_devops_adoption_snapshots, :dependency_scanning_enabled_count, :integer + end +end diff --git a/db/migrate/20210622135221_add_foreign_key_for_environment_id_to_environments.rb b/db/migrate/20210622135221_add_foreign_key_for_environment_id_to_environments.rb new file mode 100644 index 00000000000..03991cea41c --- /dev/null +++ b/db/migrate/20210622135221_add_foreign_key_for_environment_id_to_environments.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class AddForeignKeyForEnvironmentIdToEnvironments < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + # `validate: false` option is passed here, because validating the existing rows fails by the orphaned deployments, + # which will be cleaned up in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64588. + # The validation runs for only new records or updates, so that we can at least + # stop creating orphaned rows. + add_concurrent_foreign_key :deployments, :environments, column: :environment_id, on_delete: :cascade, validate: false + end + + def down + with_lock_retries do + remove_foreign_key_if_exists :deployments, :environments + end + end +end diff --git a/db/migrate/20210623074226_add_usage_ping_features_enabled_to_application_settings.rb b/db/migrate/20210623074226_add_usage_ping_features_enabled_to_application_settings.rb new file mode 100644 index 00000000000..7a70f695039 --- /dev/null +++ b/db/migrate/20210623074226_add_usage_ping_features_enabled_to_application_settings.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddUsagePingFeaturesEnabledToApplicationSettings < ActiveRecord::Migration[6.1] + def up + add_column :application_settings, :usage_ping_features_enabled, :boolean, default: false, null: false + end + + def down + remove_column :application_settings, :usage_ping_features_enabled + end +end diff --git a/db/migrate/20210623123722_add_present_on_default_branch_to_vulnerabilities.rb b/db/migrate/20210623123722_add_present_on_default_branch_to_vulnerabilities.rb new file mode 100644 index 00000000000..d528c4c6967 --- /dev/null +++ b/db/migrate/20210623123722_add_present_on_default_branch_to_vulnerabilities.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddPresentOnDefaultBranchToVulnerabilities < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + add_column :vulnerabilities, :present_on_default_branch, :boolean, default: true, null: false + end + end + + def down + with_lock_retries do + remove_column :vulnerabilities, :present_on_default_branch + end + end +end diff --git a/db/migrate/20210623133635_create_error_tracking_errors.rb b/db/migrate/20210623133635_create_error_tracking_errors.rb new file mode 100644 index 00000000000..e26fbe8df86 --- /dev/null +++ b/db/migrate/20210623133635_create_error_tracking_errors.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class CreateErrorTrackingErrors < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + create_table_with_constraints :error_tracking_errors do |t| + t.references :project, index: true, null: false, foreign_key: { on_delete: :cascade } + t.text :name, null: false + t.text :description, null: false + t.text :actor, null: false + t.datetime_with_timezone :first_seen_at, null: false, default: -> { 'NOW()' } + t.datetime_with_timezone :last_seen_at, null: false, default: -> { 'NOW()' } + t.text :platform + + t.text_limit :name, 255 + t.text_limit :description, 1024 + t.text_limit :actor, 255 + t.text_limit :platform, 255 + + t.timestamps_with_timezone + end + end + + def down + drop_table :error_tracking_errors + end +end diff --git a/db/migrate/20210623163342_add_index_to_compliance_management_frameworks_pipeline_configuration.rb b/db/migrate/20210623163342_add_index_to_compliance_management_frameworks_pipeline_configuration.rb new file mode 100644 index 00000000000..81903230f43 --- /dev/null +++ b/db/migrate/20210623163342_add_index_to_compliance_management_frameworks_pipeline_configuration.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIndexToComplianceManagementFrameworksPipelineConfiguration < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'index_compliance_frameworks_id_where_frameworks_not_null' + + def up + add_concurrent_index :compliance_management_frameworks, :id, name: INDEX_NAME, where: 'pipeline_configuration_full_path IS NOT NULL' + end + + def down + remove_concurrent_index_by_name :compliance_management_frameworks, INDEX_NAME + end +end diff --git a/db/migrate/20210624112821_add_devops_adoption_coverage_fuzzing.rb b/db/migrate/20210624112821_add_devops_adoption_coverage_fuzzing.rb new file mode 100644 index 00000000000..6ca040dbfbc --- /dev/null +++ b/db/migrate/20210624112821_add_devops_adoption_coverage_fuzzing.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionCoverageFuzzing < ActiveRecord::Migration[6.1] + def change + add_column :analytics_devops_adoption_snapshots, :coverage_fuzzing_enabled_count, :integer + end +end diff --git a/db/migrate/20210624180613_add_last_synced_at_to_licenses.rb b/db/migrate/20210624180613_add_last_synced_at_to_licenses.rb new file mode 100644 index 00000000000..085fccdc20f --- /dev/null +++ b/db/migrate/20210624180613_add_last_synced_at_to_licenses.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddLastSyncedAtToLicenses < ActiveRecord::Migration[6.1] + def change + add_column :licenses, :last_synced_at, :datetime_with_timezone + end +end diff --git a/db/migrate/20210625094554_create_error_tracking_error_events.rb b/db/migrate/20210625094554_create_error_tracking_error_events.rb new file mode 100644 index 00000000000..c1ed6d6ce6e --- /dev/null +++ b/db/migrate/20210625094554_create_error_tracking_error_events.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class CreateErrorTrackingErrorEvents < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + create_table_with_constraints :error_tracking_error_events do |t| + t.references :error, + index: true, + null: false, + foreign_key: { on_delete: :cascade, to_table: :error_tracking_errors } + + t.text :description, null: false + t.text :environment + t.text :level + t.datetime_with_timezone :occurred_at, null: false + t.jsonb :payload, null: false, default: {} + + t.text_limit :description, 255 + t.text_limit :environment, 255 + t.text_limit :level, 255 + + t.timestamps_with_timezone + end + end + + def down + drop_table :error_tracking_error_events + end +end diff --git a/db/migrate/20210627204936_add_plan_limits_max_size_cluster_image_scanning_column.rb b/db/migrate/20210627204936_add_plan_limits_max_size_cluster_image_scanning_column.rb new file mode 100644 index 00000000000..322e6991d0b --- /dev/null +++ b/db/migrate/20210627204936_add_plan_limits_max_size_cluster_image_scanning_column.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddPlanLimitsMaxSizeClusterImageScanningColumn < ActiveRecord::Migration[6.0] + def change + add_column :plan_limits, :ci_max_artifact_size_cluster_image_scanning, :integer, null: false, default: 0 + end +end diff --git a/db/migrate/20210629153519_add_index_to_bulk_import_entities_on_bulk_import_id_and_status.rb b/db/migrate/20210629153519_add_index_to_bulk_import_entities_on_bulk_import_id_and_status.rb new file mode 100644 index 00000000000..c84a42cbea4 --- /dev/null +++ b/db/migrate/20210629153519_add_index_to_bulk_import_entities_on_bulk_import_id_and_status.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddIndexToBulkImportEntitiesOnBulkImportIdAndStatus < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + NEW_INDEX_NAME = 'index_bulk_import_entities_on_bulk_import_id_and_status' + OLD_INDEX_NAME = 'index_bulk_import_entities_on_bulk_import_id' + + def up + add_concurrent_index :bulk_import_entities, [:bulk_import_id, :status], name: NEW_INDEX_NAME + remove_concurrent_index_by_name :bulk_import_entities, name: OLD_INDEX_NAME + end + + def down + add_concurrent_index :bulk_import_entities, :bulk_import_id, name: OLD_INDEX_NAME + remove_concurrent_index_by_name :bulk_import_entities, name: NEW_INDEX_NAME + end +end diff --git a/db/migrate/20210630144339_add_invite_email_success_to_members.rb b/db/migrate/20210630144339_add_invite_email_success_to_members.rb new file mode 100644 index 00000000000..6c341ecb3f3 --- /dev/null +++ b/db/migrate/20210630144339_add_invite_email_success_to_members.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddInviteEmailSuccessToMembers < ActiveRecord::Migration[6.1] + def up + # no-op + end + + def down + # no-op + end +end diff --git a/db/migrate/20210701111627_add_upvotes_count_to_issues.rb b/db/migrate/20210701111627_add_upvotes_count_to_issues.rb new file mode 100644 index 00000000000..beefb186f37 --- /dev/null +++ b/db/migrate/20210701111627_add_upvotes_count_to_issues.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddUpvotesCountToIssues < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + add_column :issues, :upvotes_count, :integer, default: 0, null: false + end + end + + def down + remove_column :issues, :upvotes_count + end +end diff --git a/db/migrate/20210702124842_add_ci_job_trace_size_to_plan_limits.rb b/db/migrate/20210702124842_add_ci_job_trace_size_to_plan_limits.rb new file mode 100644 index 00000000000..561c98c449c --- /dev/null +++ b/db/migrate/20210702124842_add_ci_job_trace_size_to_plan_limits.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddCiJobTraceSizeToPlanLimits < ActiveRecord::Migration[6.1] + def change + add_column(:plan_limits, :ci_jobs_trace_size_limit, :integer, default: 100, null: false) + end +end diff --git a/db/migrate/20210705124128_add_project_settings_previous_default_branch.rb b/db/migrate/20210705124128_add_project_settings_previous_default_branch.rb new file mode 100644 index 00000000000..e54d762fa75 --- /dev/null +++ b/db/migrate/20210705124128_add_project_settings_previous_default_branch.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddProjectSettingsPreviousDefaultBranch < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20210707173645_add_project_settings_previous_default_branch_text_limit + def up + with_lock_retries do + add_column :project_settings, :previous_default_branch, :text + end + end + # rubocop:enable Migration/AddLimitToTextColumns + + def down + with_lock_retries do + remove_column :project_settings, :previous_default_branch + end + end +end diff --git a/db/migrate/20210705130919_create_container_repos_on_exp_cleanup_status_project_id_start_date_index.rb b/db/migrate/20210705130919_create_container_repos_on_exp_cleanup_status_project_id_start_date_index.rb new file mode 100644 index 00000000000..a6983c2d599 --- /dev/null +++ b/db/migrate/20210705130919_create_container_repos_on_exp_cleanup_status_project_id_start_date_index.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class CreateContainerReposOnExpCleanupStatusProjectIdStartDateIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + OLD_INDEX_NAME = 'idx_container_repositories_on_exp_cleanup_status_and_start_date' + NEW_INDEX_NAME = 'idx_container_repos_on_exp_cleanup_status_project_id_start_date' + + disable_ddl_transaction! + + def up + add_concurrent_index(:container_repositories, [:expiration_policy_cleanup_status, :project_id, :expiration_policy_started_at], name: NEW_INDEX_NAME) + remove_concurrent_index(:container_repositories, [:expiration_policy_cleanup_status, :expiration_policy_started_at], name: OLD_INDEX_NAME) + end + + def down + add_concurrent_index(:container_repositories, [:expiration_policy_cleanup_status, :expiration_policy_started_at], name: OLD_INDEX_NAME) + remove_concurrent_index(:container_repositories, [:expiration_policy_cleanup_status, :project_id, :expiration_policy_started_at], name: NEW_INDEX_NAME) + end +end diff --git a/db/migrate/20210705132928_add_new_user_signups_cap_to_namespace_settings.rb b/db/migrate/20210705132928_add_new_user_signups_cap_to_namespace_settings.rb new file mode 100644 index 00000000000..7f736bf2b87 --- /dev/null +++ b/db/migrate/20210705132928_add_new_user_signups_cap_to_namespace_settings.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddNewUserSignupsCapToNamespaceSettings < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + add_column :namespace_settings, :new_user_signups_cap, :integer, null: true + end + end + + def down + with_lock_retries do + remove_column :namespace_settings, :new_user_signups_cap + end + end +end diff --git a/db/migrate/20210705144657_add_instance_runners_enabled_to_ci_pending_build.rb b/db/migrate/20210705144657_add_instance_runners_enabled_to_ci_pending_build.rb new file mode 100644 index 00000000000..b362fd930a3 --- /dev/null +++ b/db/migrate/20210705144657_add_instance_runners_enabled_to_ci_pending_build.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddInstanceRunnersEnabledToCiPendingBuild < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + with_lock_retries do + add_column :ci_pending_builds, :instance_runners_enabled, :boolean, null: false, default: false + end + end + + def down + with_lock_retries do + remove_column :ci_pending_builds, :instance_runners_enabled + end + end +end diff --git a/db/migrate/20210706084713_add_devops_adoption_snapshots_index.rb b/db/migrate/20210706084713_add_devops_adoption_snapshots_index.rb new file mode 100644 index 00000000000..26727b7ad7d --- /dev/null +++ b/db/migrate/20210706084713_add_devops_adoption_snapshots_index.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionSnapshotsIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'idx_analytics_devops_adoption_snapshots_finalized' + + def up + add_concurrent_index :analytics_devops_adoption_snapshots, [:namespace_id, :end_time], where: "recorded_at >= 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/20210706152139_add_index_type_to_postgres_indexes_view.rb b/db/migrate/20210706152139_add_index_type_to_postgres_indexes_view.rb new file mode 100644 index 00000000000..a2a3d74cd49 --- /dev/null +++ b/db/migrate/20210706152139_add_index_type_to_postgres_indexes_view.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +class AddIndexTypeToPostgresIndexesView < ActiveRecord::Migration[6.1] + def up + execute(<<~SQL) + DROP VIEW IF EXISTS postgres_indexes; + + CREATE VIEW postgres_indexes AS + SELECT (pg_namespace.nspname::text || '.'::text) || i.relname::text AS identifier, + pg_index.indexrelid, + pg_namespace.nspname AS schema, + i.relname AS name, + pg_indexes.tablename, + a.amname AS type, + pg_index.indisunique AS "unique", + pg_index.indisvalid AS valid_index, + i.relispartition AS partitioned, + pg_index.indisexclusion AS exclusion, + pg_index.indexprs IS NOT NULL AS expression, + pg_index.indpred IS NOT NULL AS partial, + pg_indexes.indexdef AS definition, + pg_relation_size(i.oid::regclass) AS ondisk_size_bytes + FROM pg_index + JOIN pg_class i ON i.oid = pg_index.indexrelid + JOIN pg_namespace ON i.relnamespace = pg_namespace.oid + JOIN pg_indexes ON i.relname = pg_indexes.indexname + JOIN pg_am a ON i.relam = a.oid + WHERE pg_namespace.nspname <> 'pg_catalog'::name AND (pg_namespace.nspname = ANY (ARRAY["current_schema"(), 'gitlab_partitions_dynamic'::name, 'gitlab_partitions_static'::name])); + SQL + end + + def down + execute(<<~SQL) + DROP VIEW IF EXISTS postgres_indexes; + + CREATE VIEW postgres_indexes AS + SELECT (((pg_namespace.nspname)::text || '.'::text) || (pg_class.relname)::text) AS identifier, + pg_index.indexrelid, + pg_namespace.nspname AS schema, + pg_class.relname AS name, + pg_indexes.tablename, + pg_index.indisunique AS "unique", + pg_index.indisvalid AS valid_index, + pg_class.relispartition AS partitioned, + pg_index.indisexclusion AS exclusion, + (pg_index.indexprs IS NOT NULL) AS expression, + (pg_index.indpred IS NOT NULL) AS partial, + pg_indexes.indexdef AS definition, + pg_relation_size((pg_class.oid)::regclass) AS ondisk_size_bytes + FROM (((pg_index + JOIN pg_class ON ((pg_class.oid = pg_index.indexrelid))) + JOIN pg_namespace ON ((pg_class.relnamespace = pg_namespace.oid))) + JOIN pg_indexes ON ((pg_class.relname = pg_indexes.indexname))) + WHERE ((pg_namespace.nspname <> 'pg_catalog'::name) AND (pg_namespace.nspname = ANY (ARRAY["current_schema"(), 'gitlab_partitions_dynamic'::name, 'gitlab_partitions_static'::name]))); + SQL + end +end diff --git a/db/migrate/20210706213537_add_premium_and_ultimate_plan_limits.rb b/db/migrate/20210706213537_add_premium_and_ultimate_plan_limits.rb new file mode 100644 index 00000000000..f78e37d645a --- /dev/null +++ b/db/migrate/20210706213537_add_premium_and_ultimate_plan_limits.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class AddPremiumAndUltimatePlanLimits < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + class Plan < ActiveRecord::Base + self.inheritance_column = :_type_disabled + + has_one :limits, class_name: 'PlanLimits' + end + + class PlanLimits < ActiveRecord::Base + self.inheritance_column = :_type_disabled + + belongs_to :plan + end + + def copy_plan_limits(from_plan_name:, to_plan_name:) + source_plan = Plan.find_by(name: from_plan_name) + target_plan = Plan.find_by(name: to_plan_name) + return unless source_plan && target_plan + return unless source_plan.limits.present? + return if target_plan.limits.present? + + limits = source_plan.limits.dup + limits.plan = target_plan + limits.save! + end + + def up + return unless Gitlab.com? + + copy_plan_limits(from_plan_name: 'gold', to_plan_name: 'ultimate') + copy_plan_limits(from_plan_name: 'silver', to_plan_name: 'premium') + end + + def down + # no-op + end +end diff --git a/db/migrate/20210707095545_add_status_to_merge_request_cleanup_schedules.rb b/db/migrate/20210707095545_add_status_to_merge_request_cleanup_schedules.rb new file mode 100644 index 00000000000..597e274cda2 --- /dev/null +++ b/db/migrate/20210707095545_add_status_to_merge_request_cleanup_schedules.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddStatusToMergeRequestCleanupSchedules < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + INDEX_NAME = 'index_merge_request_cleanup_schedules_on_status' + + disable_ddl_transaction! + + def up + unless column_exists?(:merge_request_cleanup_schedules, :status) + add_column(:merge_request_cleanup_schedules, :status, :integer, limit: 2, default: 0, null: false) + end + + add_concurrent_index(:merge_request_cleanup_schedules, :status, name: INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(:merge_request_cleanup_schedules, INDEX_NAME) + + if column_exists?(:merge_request_cleanup_schedules, :status) + remove_column(:merge_request_cleanup_schedules, :status) + end + end +end diff --git a/db/migrate/20210707151536_create_vulnerability_finding_evidence_sources.rb b/db/migrate/20210707151536_create_vulnerability_finding_evidence_sources.rb new file mode 100644 index 00000000000..90bc6fb82bd --- /dev/null +++ b/db/migrate/20210707151536_create_vulnerability_finding_evidence_sources.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class CreateVulnerabilityFindingEvidenceSources < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + create_table_with_constraints :vulnerability_finding_evidence_sources do |t| + t.timestamps_with_timezone null: false + + t.references :vulnerability_finding_evidence, index: { name: 'finding_evidence_sources_on_finding_evidence_id' }, null: false, foreign_key: { on_delete: :cascade } + t.text :name + t.text :url + + t.text_limit :name, 2048 + t.text_limit :url, 2048 + end + end + + def down + with_lock_retries do + drop_table :vulnerability_finding_evidence_sources + end + end +end diff --git a/db/migrate/20210707171536_create_vulnerability_finding_evidence_assets.rb b/db/migrate/20210707171536_create_vulnerability_finding_evidence_assets.rb new file mode 100644 index 00000000000..57c71e6bc17 --- /dev/null +++ b/db/migrate/20210707171536_create_vulnerability_finding_evidence_assets.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class CreateVulnerabilityFindingEvidenceAssets < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + create_table_with_constraints :vulnerability_finding_evidence_assets do |t| + t.timestamps_with_timezone null: false + + t.references :vulnerability_finding_evidence, index: { name: 'finding_evidence_assets_on_finding_evidence_id' }, null: false, foreign_key: { on_delete: :cascade } + t.text :type + t.text :name + t.text :url + + t.text_limit :type, 2048 + t.text_limit :name, 2048 + t.text_limit :url, 2048 + end + end + + def down + with_lock_retries do + drop_table :vulnerability_finding_evidence_assets + end + end +end diff --git a/db/migrate/20210707171554_create_vulnerability_flags.rb b/db/migrate/20210707171554_create_vulnerability_flags.rb new file mode 100644 index 00000000000..bf33963b08f --- /dev/null +++ b/db/migrate/20210707171554_create_vulnerability_flags.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class CreateVulnerabilityFlags < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + FALSE_POSITIVE_ENUM_VALUE = 0 + + disable_ddl_transaction! + + def up + create_table_with_constraints :vulnerability_flags do |t| + t.timestamps_with_timezone null: false + + t.references :vulnerability_occurrence, null: false, foreign_key: { on_delete: :cascade } + + t.integer :flag_type, limit: 2, null: false, default: FALSE_POSITIVE_ENUM_VALUE + + t.text :origin, null: false + t.text :description, null: false + + t.text_limit :origin, 255 + t.text_limit :description, 1024 + end + end + + def down + drop_table :vulnerability_flags + end +end diff --git a/db/migrate/20210707173645_add_project_settings_previous_default_branch_text_limit.rb b/db/migrate/20210707173645_add_project_settings_previous_default_branch_text_limit.rb new file mode 100644 index 00000000000..a6a83b00234 --- /dev/null +++ b/db/migrate/20210707173645_add_project_settings_previous_default_branch_text_limit.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddProjectSettingsPreviousDefaultBranchTextLimit < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + add_text_limit :project_settings, :previous_default_branch, 4096 + end + + def down + remove_text_limit :project_settings, :previous_default_branch + end +end diff --git a/db/migrate/20210707181536_create_vulnerability_finding_evidence_supporting_messages.rb b/db/migrate/20210707181536_create_vulnerability_finding_evidence_supporting_messages.rb new file mode 100644 index 00000000000..b9fc822a5a3 --- /dev/null +++ b/db/migrate/20210707181536_create_vulnerability_finding_evidence_supporting_messages.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class CreateVulnerabilityFindingEvidenceSupportingMessages < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + create_table_with_constraints :vulnerability_finding_evidence_supporting_messages do |t| + t.timestamps_with_timezone null: false + + t.references :vulnerability_finding_evidence, index: { name: 'finding_evidence_supporting_messages_on_finding_evidence_id' }, null: false, foreign_key: { on_delete: :cascade } + t.text :name + + t.text_limit :name, 2048 + end + end + + def down + with_lock_retries do + drop_table :vulnerability_finding_evidence_supporting_messages + end + end +end diff --git a/db/migrate/20210708063032_add_failed_count_to_merge_request_cleanup_schedules.rb b/db/migrate/20210708063032_add_failed_count_to_merge_request_cleanup_schedules.rb new file mode 100644 index 00000000000..f613856a18c --- /dev/null +++ b/db/migrate/20210708063032_add_failed_count_to_merge_request_cleanup_schedules.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddFailedCountToMergeRequestCleanupSchedules < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def change + add_column :merge_request_cleanup_schedules, :failed_count, :integer, default: 0, null: false + end +end diff --git a/db/migrate/20210708124229_add_security_scans_created_at_index.rb b/db/migrate/20210708124229_add_security_scans_created_at_index.rb new file mode 100644 index 00000000000..d2d1958f5b9 --- /dev/null +++ b/db/migrate/20210708124229_add_security_scans_created_at_index.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddSecurityScansCreatedAtIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'index_security_scans_on_created_at' + + def up + add_concurrent_index(:security_scans, :created_at, name: INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(:security_scans, INDEX_NAME) + end +end diff --git a/db/migrate/20210708131048_add_error_tracking_counter_cache.rb b/db/migrate/20210708131048_add_error_tracking_counter_cache.rb new file mode 100644 index 00000000000..3bf7e1e3688 --- /dev/null +++ b/db/migrate/20210708131048_add_error_tracking_counter_cache.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddErrorTrackingCounterCache < ActiveRecord::Migration[6.1] + def up + add_column :error_tracking_errors, :events_count, :bigint, null: false, default: 0 + end + + def down + remove_column :error_tracking_errors, :events_count + end +end diff --git a/db/migrate/20210708134446_remove_not_null_constraint_from_terms.rb b/db/migrate/20210708134446_remove_not_null_constraint_from_terms.rb new file mode 100644 index 00000000000..82abfeb57f9 --- /dev/null +++ b/db/migrate/20210708134446_remove_not_null_constraint_from_terms.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class RemoveNotNullConstraintFromTerms < ActiveRecord::Migration[6.1] + def up + change_column_null :application_setting_terms, :terms, true + end + + def down + change_column_null :application_setting_terms, :terms, false + end +end diff --git a/db/migrate/20210709085759_index_batched_migration_jobs_by_max_value.rb b/db/migrate/20210709085759_index_batched_migration_jobs_by_max_value.rb new file mode 100644 index 00000000000..8240e968e7a --- /dev/null +++ b/db/migrate/20210709085759_index_batched_migration_jobs_by_max_value.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class IndexBatchedMigrationJobsByMaxValue < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'index_migration_jobs_on_migration_id_and_max_value' + + def up + add_concurrent_index :batched_background_migration_jobs, %i(batched_background_migration_id max_value), name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :batched_background_migration_jobs, INDEX_NAME + end +end diff --git a/db/migrate/20210709132707_change_default_job_token_scope_enabled.rb b/db/migrate/20210709132707_change_default_job_token_scope_enabled.rb new file mode 100644 index 00000000000..fbd9f7baa61 --- /dev/null +++ b/db/migrate/20210709132707_change_default_job_token_scope_enabled.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class ChangeDefaultJobTokenScopeEnabled < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + change_column_default :project_ci_cd_settings, :job_token_scope_enabled, from: false, to: true + end + end + + def down + with_lock_retries do + change_column_default :project_ci_cd_settings, :job_token_scope_enabled, from: true, to: false + end + end +end diff --git a/db/migrate/20210713070842_update_merge_request_cleanup_schedules_scheduled_at_index.rb b/db/migrate/20210713070842_update_merge_request_cleanup_schedules_scheduled_at_index.rb new file mode 100644 index 00000000000..a19d15d80a0 --- /dev/null +++ b/db/migrate/20210713070842_update_merge_request_cleanup_schedules_scheduled_at_index.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class UpdateMergeRequestCleanupSchedulesScheduledAtIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + INDEX_NAME = 'index_mr_cleanup_schedules_timestamps_status' + OLD_INDEX_NAME = 'index_mr_cleanup_schedules_timestamps' + + disable_ddl_transaction! + + def up + add_concurrent_index(:merge_request_cleanup_schedules, :scheduled_at, where: 'completed_at IS NULL AND status = 0', name: INDEX_NAME) + remove_concurrent_index_by_name(:merge_request_cleanup_schedules, OLD_INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(:merge_request_cleanup_schedules, INDEX_NAME) + add_concurrent_index(:merge_request_cleanup_schedules, :scheduled_at, where: 'completed_at IS NULL', name: OLD_INDEX_NAME) + end +end diff --git a/db/migrate/20210713135152_add_devops_adoption_vulnerability_management_used_count.rb b/db/migrate/20210713135152_add_devops_adoption_vulnerability_management_used_count.rb new file mode 100644 index 00000000000..74f24364177 --- /dev/null +++ b/db/migrate/20210713135152_add_devops_adoption_vulnerability_management_used_count.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionVulnerabilityManagementUsedCount < ActiveRecord::Migration[6.1] + def change + add_column :analytics_devops_adoption_snapshots, :vulnerability_management_used_count, :integer + end +end diff --git a/db/migrate/20210713144637_add_vulnerabilities_created_at_index.rb b/db/migrate/20210713144637_add_vulnerabilities_created_at_index.rb new file mode 100644 index 00000000000..27eb2691754 --- /dev/null +++ b/db/migrate/20210713144637_add_vulnerabilities_created_at_index.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddVulnerabilitiesCreatedAtIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'idx_vulnerabilities_partial_devops_adoption' + + def up + add_concurrent_index :vulnerabilities, [:project_id, :created_at], where: 'state != 1', name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :vulnerabilities, INDEX_NAME + end +end diff --git a/db/migrate/20210714120600_add_detected_at_to_vulnerabilities.rb b/db/migrate/20210714120600_add_detected_at_to_vulnerabilities.rb new file mode 100644 index 00000000000..fb18ac4e174 --- /dev/null +++ b/db/migrate/20210714120600_add_detected_at_to_vulnerabilities.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddDetectedAtToVulnerabilities < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + add_column :vulnerabilities, :detected_at, :datetime_with_timezone + change_column_default :vulnerabilities, :detected_at, -> { 'NOW()' } + end + end + + def down + with_lock_retries do + remove_column :vulnerabilities, :detected_at + end + end +end diff --git a/db/migrate/20210716074555_revert_default_job_token_scope.rb b/db/migrate/20210716074555_revert_default_job_token_scope.rb new file mode 100644 index 00000000000..d28f75605e4 --- /dev/null +++ b/db/migrate/20210716074555_revert_default_job_token_scope.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class RevertDefaultJobTokenScope < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + change_column_default :project_ci_cd_settings, :job_token_scope_enabled, from: true, to: false + end + end + + def down + with_lock_retries do + change_column_default :project_ci_cd_settings, :job_token_scope_enabled, from: false, to: true + end + end +end diff --git a/db/post_migrate/20210602164044_schedule_latest_pipeline_id_population.rb b/db/post_migrate/20210602164044_schedule_latest_pipeline_id_population.rb new file mode 100644 index 00000000000..dfd2806fece --- /dev/null +++ b/db/post_migrate/20210602164044_schedule_latest_pipeline_id_population.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class ScheduleLatestPipelineIdPopulation < ActiveRecord::Migration[6.1] + def up + # no-op: This migration has been marked as no-op and replaced by + # `ReScheduleLatestPipelineIdPopulation` as we've found some problems. + # For more information: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/65280 + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210604133651_schedule_merge_request_diff_users_background_migration.rb b/db/post_migrate/20210604133651_schedule_merge_request_diff_users_background_migration.rb new file mode 100644 index 00000000000..b9b694012f2 --- /dev/null +++ b/db/post_migrate/20210604133651_schedule_merge_request_diff_users_background_migration.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class ScheduleMergeRequestDiffUsersBackgroundMigration < ActiveRecord::Migration[6.1] + def up + # no-op + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210609202501_schedule_backfill_draft_status_on_merge_requests.rb b/db/post_migrate/20210609202501_schedule_backfill_draft_status_on_merge_requests.rb new file mode 100644 index 00000000000..72c4168af50 --- /dev/null +++ b/db/post_migrate/20210609202501_schedule_backfill_draft_status_on_merge_requests.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class ScheduleBackfillDraftStatusOnMergeRequests < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + INDEX_NAME = "tmp_index_merge_requests_draft_and_status" + MIGRATION = 'BackfillDraftStatusOnMergeRequests' + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 100 + + disable_ddl_transaction! + + def up + add_concurrent_index :merge_requests, :id, + where: "draft = false AND state_id = 1 AND ((title)::text ~* '^\\[draft\\]|\\(draft\\)|draft:|draft|\\[WIP\\]|WIP:|WIP'::text)", + name: INDEX_NAME + + eligible_mrs = Gitlab::BackgroundMigration::BackfillDraftStatusOnMergeRequests::MergeRequest.eligible + + queue_background_migration_jobs_by_range_at_intervals( + eligible_mrs, + MIGRATION, + DELAY_INTERVAL, + track_jobs: true, + batch_size: BATCH_SIZE + ) + end + + def down + remove_concurrent_index_by_name :merge_requests, INDEX_NAME + end +end diff --git a/db/post_migrate/20210610042700_remove_clusters_applications_fluentd_table.rb b/db/post_migrate/20210610042700_remove_clusters_applications_fluentd_table.rb new file mode 100644 index 00000000000..9d37180326f --- /dev/null +++ b/db/post_migrate/20210610042700_remove_clusters_applications_fluentd_table.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class RemoveClustersApplicationsFluentdTable < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + def up + drop_table :clusters_applications_fluentd + end + + def down + create_table :clusters_applications_fluentd do |t| + t.integer :protocol, null: false, limit: 2 + t.integer :status, null: false + t.integer :port, null: false + t.references :cluster, null: false, index: { unique: true }, foreign_key: { on_delete: :cascade } + t.timestamps_with_timezone null: false + t.string :version, null: false, limit: 255 + t.string :host, null: false, limit: 255 + t.boolean :cilium_log_enabled, default: true, null: false + t.boolean :waf_log_enabled, default: true, null: false + t.text :status_reason # rubocop:disable Migration/AddLimitToTextColumns + end + end +end diff --git a/db/post_migrate/20210614124111_add_devops_adoption_sast_dast_indexes.rb b/db/post_migrate/20210614124111_add_devops_adoption_sast_dast_indexes.rb new file mode 100644 index 00000000000..9d40fe30ed6 --- /dev/null +++ b/db/post_migrate/20210614124111_add_devops_adoption_sast_dast_indexes.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddDevopsAdoptionSastDastIndexes < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_SAST = 'index_ci_job_artifacts_sast_for_devops_adoption' + INDEX_DAST = 'index_ci_job_artifacts_dast_for_devops_adoption' + + def up + add_concurrent_index :ci_job_artifacts, [:project_id, :created_at], where: "file_type = 5", name: INDEX_SAST + add_concurrent_index :ci_job_artifacts, [:project_id, :created_at], where: "file_type = 8", name: INDEX_DAST + end + + def down + remove_concurrent_index_by_name :ci_job_artifacts, INDEX_SAST + remove_concurrent_index_by_name :ci_job_artifacts, INDEX_DAST + end +end diff --git a/db/post_migrate/20210615234935_fix_batched_migrations_old_format_job_arguments.rb b/db/post_migrate/20210615234935_fix_batched_migrations_old_format_job_arguments.rb new file mode 100644 index 00000000000..535f7426938 --- /dev/null +++ b/db/post_migrate/20210615234935_fix_batched_migrations_old_format_job_arguments.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class FixBatchedMigrationsOldFormatJobArguments < ActiveRecord::Migration[6.1] + class BatchedMigration < ActiveRecord::Base + self.table_name = 'batched_background_migrations' + end + + def up + # rubocop:disable Style/WordArray + [ + ['events', 'id', ['id', 'id_convert_to_bigint'], [['id'], ['id_convert_to_bigint']]], + ['push_event_payloads', 'event_id', ['event_id', 'event_id_convert_to_bigint'], [['event_id'], ['event_id_convert_to_bigint']]] + ].each do |table_name, column_name, legacy_job_arguments, current_job_arguments| + base_scope = BatchedMigration + .where(job_class_name: 'CopyColumnUsingBackgroundMigrationJob', table_name: table_name, column_name: column_name) + # rubocop:enable Style/WordArray + + # rubocop:disable Rails/WhereEquals + base_scope + .where('job_arguments = ?', legacy_job_arguments.to_json) + .where('NOT EXISTS (?)', base_scope.select('1').where('job_arguments = ?', current_job_arguments.to_json)) + .update_all(job_arguments: current_job_arguments) + # rubocop:enable Rails/WhereEquals + end + end + + def down + # No-op, there is no way to know were the existing record migrated from + # legacy job arguments, or were using the current format from the start. + # There is no reason to go back anyway. + end +end diff --git a/db/post_migrate/20210616145254_add_partial_index_for_ci_builds_token.rb b/db/post_migrate/20210616145254_add_partial_index_for_ci_builds_token.rb new file mode 100644 index 00000000000..6e169a6f0e1 --- /dev/null +++ b/db/post_migrate/20210616145254_add_partial_index_for_ci_builds_token.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddPartialIndexForCiBuildsToken < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + NAME = 'index_ci_builds_on_token_partial' + + def up + add_concurrent_index :ci_builds, :token, unique: true, where: 'token IS NOT NULL', name: NAME + end + + def down + remove_concurrent_index_by_name :ci_builds, NAME + end +end diff --git a/db/post_migrate/20210621111747_add_ci_artifacts_devops_adoption_index.rb b/db/post_migrate/20210621111747_add_ci_artifacts_devops_adoption_index.rb new file mode 100644 index 00000000000..71fd61072ac --- /dev/null +++ b/db/post_migrate/20210621111747_add_ci_artifacts_devops_adoption_index.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true +# +class AddCiArtifactsDevopsAdoptionIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + NEW_INDEX = 'index_ci_job_artifacts_on_file_type_for_devops_adoption' + + def up + add_concurrent_index :ci_job_artifacts, [:file_type, :project_id, :created_at], name: NEW_INDEX, where: 'file_type IN (5,6,8,23)' + end + + def down + remove_concurrent_index_by_name :ci_job_artifacts, NEW_INDEX + end +end diff --git a/db/post_migrate/20210621155328_replace_project_authorizations_project_id_index.rb b/db/post_migrate/20210621155328_replace_project_authorizations_project_id_index.rb new file mode 100644 index 00000000000..498090c3ab9 --- /dev/null +++ b/db/post_migrate/20210621155328_replace_project_authorizations_project_id_index.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class ReplaceProjectAuthorizationsProjectIdIndex < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + OLD_INDEX_NAME = 'index_project_authorizations_on_project_id' + NEW_INDEX_NAME = 'index_project_authorizations_on_project_id_user_id' + + def up + add_concurrent_index(:project_authorizations, [:project_id, :user_id], name: NEW_INDEX_NAME) + remove_concurrent_index_by_name(:project_authorizations, OLD_INDEX_NAME) + end + + def down + add_concurrent_index(:project_authorizations, :project_id, name: OLD_INDEX_NAME) + remove_concurrent_index_by_name(:project_authorizations, NEW_INDEX_NAME) + end +end diff --git a/db/post_migrate/20210621164210_drop_remove_on_close_from_labels.rb b/db/post_migrate/20210621164210_drop_remove_on_close_from_labels.rb new file mode 100644 index 00000000000..0430c8447d9 --- /dev/null +++ b/db/post_migrate/20210621164210_drop_remove_on_close_from_labels.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class DropRemoveOnCloseFromLabels < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + def up + # Migration that adds column was reverted, but run in Gitlab SaaS stg and prod + return unless column_exists?(:labels, :remove_on_close) + + with_lock_retries do + remove_column :labels, :remove_on_close + end + end + + def down + # No rollback as the original migration was reverted in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62056 + # up simply removes the column from envs where the original migration was run + end +end diff --git a/db/post_migrate/20210621223000_steal_background_jobs_that_reference_services.rb b/db/post_migrate/20210621223000_steal_background_jobs_that_reference_services.rb new file mode 100644 index 00000000000..8d326036a68 --- /dev/null +++ b/db/post_migrate/20210621223000_steal_background_jobs_that_reference_services.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class StealBackgroundJobsThatReferenceServices < ActiveRecord::Migration[6.1] + def up + Gitlab::BackgroundMigration.steal('BackfillJiraTrackerDeploymentType2') + Gitlab::BackgroundMigration.steal('FixProjectsWithoutPrometheusService') + Gitlab::BackgroundMigration.steal('MigrateIssueTrackersSensitiveData') + Gitlab::BackgroundMigration.steal('RemoveDuplicateServices') + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210621223242_finalize_rename_services_to_integrations.rb b/db/post_migrate/20210621223242_finalize_rename_services_to_integrations.rb new file mode 100644 index 00000000000..803a6fa0aca --- /dev/null +++ b/db/post_migrate/20210621223242_finalize_rename_services_to_integrations.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class FinalizeRenameServicesToIntegrations < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + finalize_table_rename(:services, :integrations) + end + + def down + undo_finalize_table_rename(:services, :integrations) + end +end diff --git a/db/post_migrate/20210622041846_finalize_push_event_payloads_bigint_conversion.rb b/db/post_migrate/20210622041846_finalize_push_event_payloads_bigint_conversion.rb new file mode 100644 index 00000000000..38b081e3e5e --- /dev/null +++ b/db/post_migrate/20210622041846_finalize_push_event_payloads_bigint_conversion.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +class FinalizePushEventPayloadsBigintConversion < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + TABLE_NAME = 'push_event_payloads' + INDEX_NAME = 'index_push_event_payloads_on_event_id_convert_to_bigint' + + def up + return unless should_run? + + ensure_batched_background_migration_is_finished( + job_class_name: 'CopyColumnUsingBackgroundMigrationJob', + table_name: TABLE_NAME, + column_name: 'event_id', + job_arguments: [["event_id"], ["event_id_convert_to_bigint"]] + ) + + swap_columns + end + + def down + return unless should_run? + + swap_columns + end + + private + + def should_run? + Gitlab.dev_or_test_env? || Gitlab.com? + end + + def swap_columns + add_concurrent_index TABLE_NAME, :event_id_convert_to_bigint, unique: true, name: INDEX_NAME + + # Add a foreign key on `event_id_convert_to_bigint` before we swap the columns and drop the old FK (fk_36c74129da) + add_concurrent_foreign_key TABLE_NAME, :events, column: :event_id_convert_to_bigint, on_delete: :cascade + + with_lock_retries(raise_on_exhaustion: true) do + # Swap column names + temp_name = 'event_id_tmp' + execute "ALTER TABLE #{quote_table_name(TABLE_NAME)} RENAME COLUMN #{quote_column_name(:event_id)} TO #{quote_column_name(temp_name)}" + execute "ALTER TABLE #{quote_table_name(TABLE_NAME)} RENAME COLUMN #{quote_column_name(:event_id_convert_to_bigint)} TO #{quote_column_name(:event_id)}" + execute "ALTER TABLE #{quote_table_name(TABLE_NAME)} RENAME COLUMN #{quote_column_name(temp_name)} TO #{quote_column_name(:event_id_convert_to_bigint)}" + + # We need to update the trigger function in order to make PostgreSQL to + # regenerate the execution plan for it. This is to avoid type mismatch errors like + # "type of parameter 15 (bigint) does not match that when preparing the plan (integer)" + function_name = Gitlab::Database::UnidirectionalCopyTrigger.on_table(TABLE_NAME).name(:event_id, :event_id_convert_to_bigint) + execute "ALTER FUNCTION #{quote_table_name(function_name)} RESET ALL" + + # Swap defaults + change_column_default TABLE_NAME, :event_id, nil + change_column_default TABLE_NAME, :event_id_convert_to_bigint, 0 + + # Swap PK constraint + execute "ALTER TABLE #{TABLE_NAME} DROP CONSTRAINT push_event_payloads_pkey" + rename_index TABLE_NAME, INDEX_NAME, 'push_event_payloads_pkey' + execute "ALTER TABLE #{TABLE_NAME} ADD CONSTRAINT push_event_payloads_pkey PRIMARY KEY USING INDEX push_event_payloads_pkey" + + # Drop original FK on the old int4 `event_id` (fk_36c74129da) + remove_foreign_key TABLE_NAME, name: concurrent_foreign_key_name(TABLE_NAME, :event_id) + # We swapped the columns but the FK for event_id is still using the old name for the event_id_convert_to_bigint column + # So we have to also swap the FK name now that we dropped the other one with the same + rename_constraint( + TABLE_NAME, + concurrent_foreign_key_name(TABLE_NAME, :event_id_convert_to_bigint), + concurrent_foreign_key_name(TABLE_NAME, :event_id) + ) + end + end +end diff --git a/db/post_migrate/20210622141148_schedule_delete_orphaned_deployments.rb b/db/post_migrate/20210622141148_schedule_delete_orphaned_deployments.rb new file mode 100644 index 00000000000..cbd0d0ea3a2 --- /dev/null +++ b/db/post_migrate/20210622141148_schedule_delete_orphaned_deployments.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class ScheduleDeleteOrphanedDeployments < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + MIGRATION = 'DeleteOrphanedDeployments' + BATCH_SIZE = 100_000 + DELAY_INTERVAL = 2.minutes + + disable_ddl_transaction! + + def up + queue_background_migration_jobs_by_range_at_intervals( + define_batchable_model('deployments'), + MIGRATION, + DELAY_INTERVAL, + batch_size: BATCH_SIZE, + track_jobs: true + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210628124505_reset_job_token_scope_enabled.rb b/db/post_migrate/20210628124505_reset_job_token_scope_enabled.rb new file mode 100644 index 00000000000..1176e704d0a --- /dev/null +++ b/db/post_migrate/20210628124505_reset_job_token_scope_enabled.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class ResetJobTokenScopeEnabled < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + def up + with_lock_retries do + remove_column :project_ci_cd_settings, :job_token_scope_enabled + add_column :project_ci_cd_settings, :job_token_scope_enabled, :boolean, default: false, null: false + end + end + + def down + # Irreversible + end +end diff --git a/db/post_migrate/20210629101712_remove_deprecated_modsecurity_columns.rb b/db/post_migrate/20210629101712_remove_deprecated_modsecurity_columns.rb new file mode 100644 index 00000000000..371298aef62 --- /dev/null +++ b/db/post_migrate/20210629101712_remove_deprecated_modsecurity_columns.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class RemoveDeprecatedModsecurityColumns < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'index_clusters_applications_ingress_on_modsecurity' + + def up + remove_column :clusters_applications_ingress, :modsecurity_enabled if column_exists?(:clusters_applications_ingress, :modsecurity_enabled) + remove_column :clusters_applications_ingress, :modsecurity_mode if column_exists?(:clusters_applications_ingress, :modsecurity_mode) + end + + def down + add_column :clusters_applications_ingress, :modsecurity_enabled, :boolean unless column_exists?(:clusters_applications_ingress, :modsecurity_enabled) + add_column :clusters_applications_ingress, :modsecurity_mode, :smallint, null: false, default: 0 unless column_exists?(:clusters_applications_ingress, :modsecurity_mode) + + add_concurrent_index :clusters_applications_ingress, [:modsecurity_enabled, :modsecurity_mode, :cluster_id], name: INDEX_NAME + end +end diff --git a/db/post_migrate/20210629104933_drop_index_on_ci_builds_for_token.rb b/db/post_migrate/20210629104933_drop_index_on_ci_builds_for_token.rb new file mode 100644 index 00000000000..cc26db924fe --- /dev/null +++ b/db/post_migrate/20210629104933_drop_index_on_ci_builds_for_token.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class DropIndexOnCiBuildsForToken < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEXNAME = :index_ci_builds_on_token + + def up + remove_concurrent_index_by_name :ci_builds, INDEXNAME + end + + def down + add_concurrent_index :ci_builds, :token, unique: true, name: INDEXNAME + end +end diff --git a/db/post_migrate/20210630025020_migrate_push_event_payloads_event_id_back_to_integer_for_gitlab_com.rb b/db/post_migrate/20210630025020_migrate_push_event_payloads_event_id_back_to_integer_for_gitlab_com.rb new file mode 100644 index 00000000000..834a23a5c7a --- /dev/null +++ b/db/post_migrate/20210630025020_migrate_push_event_payloads_event_id_back_to_integer_for_gitlab_com.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require Rails.root.join('db', 'post_migrate', '20210622041846_finalize_push_event_payloads_bigint_conversion') + +class MigratePushEventPayloadsEventIdBackToIntegerForGitlabCom < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + def up + FinalizePushEventPayloadsBigintConversion.new.down + end + + def down + FinalizePushEventPayloadsBigintConversion.new.up + end +end diff --git a/db/post_migrate/20210701111909_backfill_issues_upvotes_count.rb b/db/post_migrate/20210701111909_backfill_issues_upvotes_count.rb new file mode 100644 index 00000000000..0afc0bc1d08 --- /dev/null +++ b/db/post_migrate/20210701111909_backfill_issues_upvotes_count.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class BackfillIssuesUpvotesCount < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + MIGRATION = 'BackfillUpvotesCountOnIssues' + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 5_000 + + def up + scope = Issue.joins("INNER JOIN award_emoji e ON e.awardable_id = issues.id AND e.awardable_type = 'Issue' AND e.name = 'thumbsup'") + + queue_background_migration_jobs_by_range_at_intervals( + scope, + MIGRATION, + DELAY_INTERVAL, + batch_size: BATCH_SIZE + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210706115312_add_upvotes_count_index_to_issues.rb b/db/post_migrate/20210706115312_add_upvotes_count_index_to_issues.rb new file mode 100644 index 00000000000..65ec43930ea --- /dev/null +++ b/db/post_migrate/20210706115312_add_upvotes_count_index_to_issues.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddUpvotesCountIndexToIssues < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX_NAME = 'index_issues_on_project_id_and_upvotes_count' + + def up + add_concurrent_index :issues, [:project_id, :upvotes_count], name: INDEX_NAME + end + + def down + remove_concurrent_index :issues, [:project_id, :upvotes_count], name: INDEX_NAME + end +end diff --git a/db/post_migrate/20210706120847_remove_framework_column_from_compliance_management_frameworks.rb b/db/post_migrate/20210706120847_remove_framework_column_from_compliance_management_frameworks.rb new file mode 100644 index 00000000000..73344ee061f --- /dev/null +++ b/db/post_migrate/20210706120847_remove_framework_column_from_compliance_management_frameworks.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class RemoveFrameworkColumnFromComplianceManagementFrameworks < ActiveRecord::Migration[6.1] + def change + remove_column :project_compliance_framework_settings, :framework, :smallint + end +end diff --git a/db/post_migrate/20210706142819_re_schedule_latest_pipeline_id_population.rb b/db/post_migrate/20210706142819_re_schedule_latest_pipeline_id_population.rb new file mode 100644 index 00000000000..709e0be8b79 --- /dev/null +++ b/db/post_migrate/20210706142819_re_schedule_latest_pipeline_id_population.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class ReScheduleLatestPipelineIdPopulation < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + DELAY_INTERVAL = 2.minutes.to_i + BATCH_SIZE = 100 + MIGRATION = 'PopulateLatestPipelineIds' + + disable_ddl_transaction! + + def up + return unless Gitlab.ee? + + queue_background_migration_jobs_by_range_at_intervals( + Gitlab::BackgroundMigration::PopulateLatestPipelineIds::ProjectSetting.has_vulnerabilities_without_latest_pipeline_set, + MIGRATION, + DELAY_INTERVAL, + batch_size: BATCH_SIZE, + primary_column_name: 'project_id' + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20210708130419_reschedule_merge_request_diff_users_background_migration.rb b/db/post_migrate/20210708130419_reschedule_merge_request_diff_users_background_migration.rb new file mode 100644 index 00000000000..53f13ca96d2 --- /dev/null +++ b/db/post_migrate/20210708130419_reschedule_merge_request_diff_users_background_migration.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +class RescheduleMergeRequestDiffUsersBackgroundMigration < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + # The number of rows to process in a single migration job. + # + # The minimum interval for background migrations is two minutes. On staging we + # observed we can process roughly 20 000 rows in a minute. Based on the total + # number of rows on staging, this translates to a total processing time of + # roughly 14 days. + # + # By using a batch size of 40 000, we maintain a rate of roughly 20 000 rows + # per minute, hopefully keeping the total migration time under two weeks; + # instead of four weeks. + BATCH_SIZE = 40_000 + + MIGRATION_NAME = 'MigrateMergeRequestDiffCommitUsers' + + class MergeRequestDiff < ActiveRecord::Base + self.table_name = 'merge_request_diffs' + end + + def up + start = MergeRequestDiff.minimum(:id).to_i + max = MergeRequestDiff.maximum(:id).to_i + delay = BackgroundMigrationWorker.minimum_interval + + Gitlab::Database::BackgroundMigrationJob + .where(class_name: MIGRATION_NAME) + .delete_all + + # The table merge_request_diff_commits contains _a lot_ of rows (roughly 400 + # 000 000 on staging). Iterating a table that large to determine job ranges + # would take a while. + # + # To avoid that overhead, we simply schedule fixed ranges according to the + # minimum and maximum IDs. The background migration in turn only processes + # rows that actually exist. + while start < max + stop = start + BATCH_SIZE + + migrate_in(delay, MIGRATION_NAME, [start, stop]) + + Gitlab::Database::BackgroundMigrationJob + .create!(class_name: MIGRATION_NAME, arguments: [start, stop]) + + delay += BackgroundMigrationWorker.minimum_interval + start += BATCH_SIZE + end + end + + def down + # no-op + end +end diff --git a/db/schema_migrations/20210317210338 b/db/schema_migrations/20210317210338 new file mode 100644 index 00000000000..15400399589 --- /dev/null +++ b/db/schema_migrations/20210317210338 @@ -0,0 +1 @@ +e915378e1ebb78b528abfecda55cdc52a690d982e4377876b818197b3134c09a
\ No newline at end of file diff --git a/db/schema_migrations/20210601132134 b/db/schema_migrations/20210601132134 new file mode 100644 index 00000000000..3fa9505de2f --- /dev/null +++ b/db/schema_migrations/20210601132134 @@ -0,0 +1 @@ +966299fecd160b594f0837f19cc01b38fc365fa749982f9245c296d912e3eb2f
\ No newline at end of file diff --git a/db/schema_migrations/20210602155056 b/db/schema_migrations/20210602155056 new file mode 100644 index 00000000000..4c6f7f95874 --- /dev/null +++ b/db/schema_migrations/20210602155056 @@ -0,0 +1 @@ +42b3090efee66f5a7a5c06d8768d1417892c5d6745f60163a09f58e6e3722761
\ No newline at end of file diff --git a/db/schema_migrations/20210602155110 b/db/schema_migrations/20210602155110 new file mode 100644 index 00000000000..127375dc477 --- /dev/null +++ b/db/schema_migrations/20210602155110 @@ -0,0 +1 @@ +aa04d433e400ed3ec11e5d40ada72f122b1d8b7a82f8803d9206da5c94ec5ef9
\ No newline at end of file diff --git a/db/schema_migrations/20210602164044 b/db/schema_migrations/20210602164044 new file mode 100644 index 00000000000..4574aaf9cb9 --- /dev/null +++ b/db/schema_migrations/20210602164044 @@ -0,0 +1 @@ +6c617b919e6e0cba0bd62cc0d5056dcad3ebe1a9ce25102a288de5456cbaa6c3
\ No newline at end of file diff --git a/db/schema_migrations/20210604032738 b/db/schema_migrations/20210604032738 new file mode 100644 index 00000000000..1bd62357c71 --- /dev/null +++ b/db/schema_migrations/20210604032738 @@ -0,0 +1 @@ +fa373e98739d57d829273cfa9246137e2c151be67e97183c1dcdb288150aaeb5
\ No newline at end of file diff --git a/db/schema_migrations/20210604034158 b/db/schema_migrations/20210604034158 new file mode 100644 index 00000000000..06b04764628 --- /dev/null +++ b/db/schema_migrations/20210604034158 @@ -0,0 +1 @@ +c7cf4aad7637d793d1ace8fee02111bc9b0d2eea09efadb0fd616bc5c5e5550c
\ No newline at end of file diff --git a/db/schema_migrations/20210604034354 b/db/schema_migrations/20210604034354 new file mode 100644 index 00000000000..a76242b3412 --- /dev/null +++ b/db/schema_migrations/20210604034354 @@ -0,0 +1 @@ +da868be7c8edefc462110b5b36415870cc0c7c59dba1e3d514348011a9e70642
\ No newline at end of file diff --git a/db/schema_migrations/20210604051330 b/db/schema_migrations/20210604051330 new file mode 100644 index 00000000000..74140921c2f --- /dev/null +++ b/db/schema_migrations/20210604051330 @@ -0,0 +1 @@ +2d025932dca7a407968e14872ce053461e69550098ca089d4e6ece323d240927
\ No newline at end of file diff --git a/db/schema_migrations/20210604051742 b/db/schema_migrations/20210604051742 new file mode 100644 index 00000000000..32ed06dafff --- /dev/null +++ b/db/schema_migrations/20210604051742 @@ -0,0 +1 @@ +7529373266b6c9b179367d5fa8775f5e2ad600008957b3a821d689aec70c7407
\ No newline at end of file diff --git a/db/schema_migrations/20210604051917 b/db/schema_migrations/20210604051917 new file mode 100644 index 00000000000..0034d9988e7 --- /dev/null +++ b/db/schema_migrations/20210604051917 @@ -0,0 +1 @@ +3818094a4470ff7d0c105c000655dac4205e8265f78df638df0e2ef3dc6deaf3
\ No newline at end of file diff --git a/db/schema_migrations/20210604133651 b/db/schema_migrations/20210604133651 new file mode 100644 index 00000000000..7c6394cd470 --- /dev/null +++ b/db/schema_migrations/20210604133651 @@ -0,0 +1 @@ +0c01bb41113c468a602649b591e1fd2959a6e3190c835ef2e27351cf69f50fd5
\ No newline at end of file diff --git a/db/schema_migrations/20210609202501 b/db/schema_migrations/20210609202501 new file mode 100644 index 00000000000..ad71feddcfc --- /dev/null +++ b/db/schema_migrations/20210609202501 @@ -0,0 +1 @@ +93f577e2fe2dcc0daafc4ff7e15a4511a2e9f86f05f9892f5c7625f11bfce3ae
\ No newline at end of file diff --git a/db/schema_migrations/20210610042700 b/db/schema_migrations/20210610042700 new file mode 100644 index 00000000000..ef0f3e34f48 --- /dev/null +++ b/db/schema_migrations/20210610042700 @@ -0,0 +1 @@ +f8b8276ed7e120b61f6748a328590a98f0e444e0d26bcb1a2b0daa54c3643acd
\ No newline at end of file diff --git a/db/schema_migrations/20210610153556 b/db/schema_migrations/20210610153556 new file mode 100644 index 00000000000..71b71a671c4 --- /dev/null +++ b/db/schema_migrations/20210610153556 @@ -0,0 +1 @@ +39ca841ce1de3faadee41fbb756d80c98efd853fbbffa7cb3f8f9de56752078b
\ No newline at end of file diff --git a/db/schema_migrations/20210611101034 b/db/schema_migrations/20210611101034 new file mode 100644 index 00000000000..70712a32be1 --- /dev/null +++ b/db/schema_migrations/20210611101034 @@ -0,0 +1 @@ +a535348229ff5e9e3c5b530ded9407df9f4308fc4d9967106bf246d7267c2a48
\ No newline at end of file diff --git a/db/schema_migrations/20210614124111 b/db/schema_migrations/20210614124111 new file mode 100644 index 00000000000..25427277070 --- /dev/null +++ b/db/schema_migrations/20210614124111 @@ -0,0 +1 @@ +30c6316f3931075bd8b167e06af5d80b7ece65f428d1fa7602ab27b526bc8410
\ No newline at end of file diff --git a/db/schema_migrations/20210614142311 b/db/schema_migrations/20210614142311 new file mode 100644 index 00000000000..69a2472990a --- /dev/null +++ b/db/schema_migrations/20210614142311 @@ -0,0 +1 @@ +5dc0a4f91dc35b7720b20e89fa77374a0337c380b9234704e7d4143639e512f0
\ No newline at end of file diff --git a/db/schema_migrations/20210615064342 b/db/schema_migrations/20210615064342 new file mode 100644 index 00000000000..a126cd6258e --- /dev/null +++ b/db/schema_migrations/20210615064342 @@ -0,0 +1 @@ +509f30d8772e24efc52c5aa12ebcde084f7ded8d228109bbbdda2f21d3235512
\ No newline at end of file diff --git a/db/schema_migrations/20210615234935 b/db/schema_migrations/20210615234935 new file mode 100644 index 00000000000..83e43f74a53 --- /dev/null +++ b/db/schema_migrations/20210615234935 @@ -0,0 +1 @@ +205336e95a6e3c9fa8c56fa67e66ef3023ba8c6cd4e6f3599160b74b3fbfaa3c
\ No newline at end of file diff --git a/db/schema_migrations/20210616110748 b/db/schema_migrations/20210616110748 new file mode 100644 index 00000000000..06cab110a99 --- /dev/null +++ b/db/schema_migrations/20210616110748 @@ -0,0 +1 @@ +8207eb9917b4d02f39cd9e9eca9ec0e001266b25b3378f09e4e8c27ff22b6e73
\ No newline at end of file diff --git a/db/schema_migrations/20210616111311 b/db/schema_migrations/20210616111311 new file mode 100644 index 00000000000..070f9adfcda --- /dev/null +++ b/db/schema_migrations/20210616111311 @@ -0,0 +1 @@ +fd014b505ecd162c232da23a10c34dc4b1f1dbe8fe357a0f20585479b25d50bc
\ No newline at end of file diff --git a/db/schema_migrations/20210616134905 b/db/schema_migrations/20210616134905 new file mode 100644 index 00000000000..90658174989 --- /dev/null +++ b/db/schema_migrations/20210616134905 @@ -0,0 +1 @@ +52843d12ab18b92c71a334cf877682d9fae57632cf0ba14213dfc0543e39cf1b
\ No newline at end of file diff --git a/db/schema_migrations/20210616145254 b/db/schema_migrations/20210616145254 new file mode 100644 index 00000000000..e5d7553d883 --- /dev/null +++ b/db/schema_migrations/20210616145254 @@ -0,0 +1 @@ +525fbdd66dcabbf1e6d0430468600f86fbc3c00dcfdab1c5a052294d7d73de37
\ No newline at end of file diff --git a/db/schema_migrations/20210616154808 b/db/schema_migrations/20210616154808 new file mode 100644 index 00000000000..be7d5811540 --- /dev/null +++ b/db/schema_migrations/20210616154808 @@ -0,0 +1 @@ +adfa07888317cb7f22062f5d23906bc01de579305acb3bb3384f18e3f581a87b
\ No newline at end of file diff --git a/db/schema_migrations/20210616185947 b/db/schema_migrations/20210616185947 new file mode 100644 index 00000000000..30275f102dc --- /dev/null +++ b/db/schema_migrations/20210616185947 @@ -0,0 +1 @@ +8d73f4b4b716176afe5a9b0ee3a4ef28bbbc2fe944a18fb66afa8cf8f763e8ac
\ No newline at end of file diff --git a/db/schema_migrations/20210617022324 b/db/schema_migrations/20210617022324 new file mode 100644 index 00000000000..40bace34b4c --- /dev/null +++ b/db/schema_migrations/20210617022324 @@ -0,0 +1 @@ +fa4f1ec80e7039e59d283dc6effd6904ca33c637d27c687d990822eb2f6198e5
\ No newline at end of file diff --git a/db/schema_migrations/20210617161348 b/db/schema_migrations/20210617161348 new file mode 100644 index 00000000000..238f969d304 --- /dev/null +++ b/db/schema_migrations/20210617161348 @@ -0,0 +1 @@ +3f73aa7d2cff11d00b330d88e76daaa058f82b7012da3c244f246da6e538921c
\ No newline at end of file diff --git a/db/schema_migrations/20210617180131 b/db/schema_migrations/20210617180131 new file mode 100644 index 00000000000..b44f82a3311 --- /dev/null +++ b/db/schema_migrations/20210617180131 @@ -0,0 +1 @@ +2adb38e71c6173350d1f98f3237b692e4f12c8a073115be23f3a713f69cde911
\ No newline at end of file diff --git a/db/schema_migrations/20210621043337 b/db/schema_migrations/20210621043337 new file mode 100644 index 00000000000..1dd6b0ac1dd --- /dev/null +++ b/db/schema_migrations/20210621043337 @@ -0,0 +1 @@ +cfe35a1297c4a92c4b5e62757ed74c11ffd6f207777291c11b05a4e3cee91618
\ No newline at end of file diff --git a/db/schema_migrations/20210621044000 b/db/schema_migrations/20210621044000 new file mode 100644 index 00000000000..0b620576357 --- /dev/null +++ b/db/schema_migrations/20210621044000 @@ -0,0 +1 @@ +64babbed04b9e3bf59bb723b43e3c30730527f0e0e09906073b5bd9379067ab6
\ No newline at end of file diff --git a/db/schema_migrations/20210621084632 b/db/schema_migrations/20210621084632 new file mode 100644 index 00000000000..4ab2467fab0 --- /dev/null +++ b/db/schema_migrations/20210621084632 @@ -0,0 +1 @@ +fb5b54e29400836afb122cd38a2ae34abc1ff6dd800eadaba023220c51da6868
\ No newline at end of file diff --git a/db/schema_migrations/20210621090030 b/db/schema_migrations/20210621090030 new file mode 100644 index 00000000000..c015bc6ec7f --- /dev/null +++ b/db/schema_migrations/20210621090030 @@ -0,0 +1 @@ +5077a5c9cfe9b79506bb65d9dd02b745545a8586c198041bf7cbb945827c07cf
\ No newline at end of file diff --git a/db/schema_migrations/20210621091830 b/db/schema_migrations/20210621091830 new file mode 100644 index 00000000000..89a505b0c9a --- /dev/null +++ b/db/schema_migrations/20210621091830 @@ -0,0 +1 @@ +11450695142e5145e5cbf9077f259e28c908b794948be5c4b77e34465f6498aa
\ No newline at end of file diff --git a/db/schema_migrations/20210621111747 b/db/schema_migrations/20210621111747 new file mode 100644 index 00000000000..728eb47b0ba --- /dev/null +++ b/db/schema_migrations/20210621111747 @@ -0,0 +1 @@ +582a22626330e93e679a14eff2cdd85a5732f797fc1a6c94409d46cc5027c8ea
\ No newline at end of file diff --git a/db/schema_migrations/20210621155328 b/db/schema_migrations/20210621155328 new file mode 100644 index 00000000000..ba3dd235cee --- /dev/null +++ b/db/schema_migrations/20210621155328 @@ -0,0 +1 @@ +d08fdc3da5fe1a7bf20af5fbe42438fc43ebdf1299c61159740df7644e4ea117
\ No newline at end of file diff --git a/db/schema_migrations/20210621164210 b/db/schema_migrations/20210621164210 new file mode 100644 index 00000000000..6855b8e42ee --- /dev/null +++ b/db/schema_migrations/20210621164210 @@ -0,0 +1 @@ +b952f1e3fe2bfa680ba68b79637e0a2a1ee5b388cfa106db62521a663262b024
\ No newline at end of file diff --git a/db/schema_migrations/20210621223000 b/db/schema_migrations/20210621223000 new file mode 100644 index 00000000000..17f64d4b263 --- /dev/null +++ b/db/schema_migrations/20210621223000 @@ -0,0 +1 @@ +07d0de05b6a59ba0d1f464ae488f5ead812bc643984ac3dc662c78a02a978f7f
\ No newline at end of file diff --git a/db/schema_migrations/20210621223242 b/db/schema_migrations/20210621223242 new file mode 100644 index 00000000000..9aa2562f30f --- /dev/null +++ b/db/schema_migrations/20210621223242 @@ -0,0 +1 @@ +eeee178019c259a6fff85219490abf62f2694227cc2facf454d93e57c373833b
\ No newline at end of file diff --git a/db/schema_migrations/20210622041846 b/db/schema_migrations/20210622041846 new file mode 100644 index 00000000000..f16291b8424 --- /dev/null +++ b/db/schema_migrations/20210622041846 @@ -0,0 +1 @@ +750cda544df323be99452d53aaf39933c8584fc6754ece45263e131884d980d0
\ No newline at end of file diff --git a/db/schema_migrations/20210622135221 b/db/schema_migrations/20210622135221 new file mode 100644 index 00000000000..eedd4d82b2c --- /dev/null +++ b/db/schema_migrations/20210622135221 @@ -0,0 +1 @@ +e43889baa57ea2cd0b87ba98819408115955f6a6586b3275cf0a08bd79909c71
\ No newline at end of file diff --git a/db/schema_migrations/20210622141148 b/db/schema_migrations/20210622141148 new file mode 100644 index 00000000000..ba693e271aa --- /dev/null +++ b/db/schema_migrations/20210622141148 @@ -0,0 +1 @@ +432954295d6f3a2a45f3deef42b547ffe42501beaea4f376e1be51cf148de671
\ No newline at end of file diff --git a/db/schema_migrations/20210623074226 b/db/schema_migrations/20210623074226 new file mode 100644 index 00000000000..76d5cd41839 --- /dev/null +++ b/db/schema_migrations/20210623074226 @@ -0,0 +1 @@ +1a0df6210d9ee0e0229f3cdf3e95acaaa47ebf4ca31ac0fd9f57255115355f99
\ No newline at end of file diff --git a/db/schema_migrations/20210623123722 b/db/schema_migrations/20210623123722 new file mode 100644 index 00000000000..f635c512d94 --- /dev/null +++ b/db/schema_migrations/20210623123722 @@ -0,0 +1 @@ +af58377b87f7e0fb4709637f96b24a4075322d0d8cf87dfaf5bf8e0f8a9372e0
\ No newline at end of file diff --git a/db/schema_migrations/20210623133635 b/db/schema_migrations/20210623133635 new file mode 100644 index 00000000000..bd59fe90c62 --- /dev/null +++ b/db/schema_migrations/20210623133635 @@ -0,0 +1 @@ +1a930fec524c91c5d382c40514d0d1943e59514f5dbd8588595363c24819b8d0
\ No newline at end of file diff --git a/db/schema_migrations/20210623163342 b/db/schema_migrations/20210623163342 new file mode 100644 index 00000000000..f60112edd81 --- /dev/null +++ b/db/schema_migrations/20210623163342 @@ -0,0 +1 @@ +6732401a959a7a691b8729e2bfb38e010dd4da4cd04418aada22946c42fdd6dc
\ No newline at end of file diff --git a/db/schema_migrations/20210624112821 b/db/schema_migrations/20210624112821 new file mode 100644 index 00000000000..86b0e9612e0 --- /dev/null +++ b/db/schema_migrations/20210624112821 @@ -0,0 +1 @@ +2fca5d3203b7bb766274fc333e9a2a267340142856bd23efaabb1cb2c1cb7cb7
\ No newline at end of file diff --git a/db/schema_migrations/20210624180613 b/db/schema_migrations/20210624180613 new file mode 100644 index 00000000000..e7f4d25fc78 --- /dev/null +++ b/db/schema_migrations/20210624180613 @@ -0,0 +1 @@ +705c4cf981f1929f8e8e4d8a8a3c12613516d65e59c71ac79048224cd97c47cc
\ No newline at end of file diff --git a/db/schema_migrations/20210625094554 b/db/schema_migrations/20210625094554 new file mode 100644 index 00000000000..a20925101f8 --- /dev/null +++ b/db/schema_migrations/20210625094554 @@ -0,0 +1 @@ +df9e976b0f294284ad9e9b617da42310c83cb1acc6db6ea00ea93c49c2310a1c
\ No newline at end of file diff --git a/db/schema_migrations/20210627204936 b/db/schema_migrations/20210627204936 new file mode 100644 index 00000000000..abc39339816 --- /dev/null +++ b/db/schema_migrations/20210627204936 @@ -0,0 +1 @@ +b37bf7db9c00c8f54c0ccca2d418f1279e12ff7e5b71347966494dc5645eb648
\ No newline at end of file diff --git a/db/schema_migrations/20210628124505 b/db/schema_migrations/20210628124505 new file mode 100644 index 00000000000..478617f5506 --- /dev/null +++ b/db/schema_migrations/20210628124505 @@ -0,0 +1 @@ +7add197fec50d8da5bcdbca83115558480668c26ad3a3fefc4ab93c07f34f63a
\ No newline at end of file diff --git a/db/schema_migrations/20210629101712 b/db/schema_migrations/20210629101712 new file mode 100644 index 00000000000..4b4a88bdfa3 --- /dev/null +++ b/db/schema_migrations/20210629101712 @@ -0,0 +1 @@ +28e448810fdf8bab4de44d45acac862e752f578b5b8fd77b885a385b9ef16b2d
\ No newline at end of file diff --git a/db/schema_migrations/20210629104933 b/db/schema_migrations/20210629104933 new file mode 100644 index 00000000000..4c5a3fb0003 --- /dev/null +++ b/db/schema_migrations/20210629104933 @@ -0,0 +1 @@ +2ec44dfd0745fd155ab3ab52153688a8969641134a9cc0cc485dd698cc8fd2d1
\ No newline at end of file diff --git a/db/schema_migrations/20210629153519 b/db/schema_migrations/20210629153519 new file mode 100644 index 00000000000..304ff5c9fa6 --- /dev/null +++ b/db/schema_migrations/20210629153519 @@ -0,0 +1 @@ +cba36a2e8bedd70f8ccaca47517314d0a3c75a9b8d90715a29919247aa686835
\ No newline at end of file diff --git a/db/schema_migrations/20210630025020 b/db/schema_migrations/20210630025020 new file mode 100644 index 00000000000..7808a7e3178 --- /dev/null +++ b/db/schema_migrations/20210630025020 @@ -0,0 +1 @@ +71ad8c8f2419721f8fdf6c6bbd1265c4a7ca277972c59319e155bc6dfc46aa48
\ No newline at end of file diff --git a/db/schema_migrations/20210630144339 b/db/schema_migrations/20210630144339 new file mode 100644 index 00000000000..5d91d60199c --- /dev/null +++ b/db/schema_migrations/20210630144339 @@ -0,0 +1 @@ +8d1777941e1a4b5f9f8f5f5e3ae416d6d02aaee1174eff1f9b4b38a6cdf0103a
\ No newline at end of file diff --git a/db/schema_migrations/20210701111627 b/db/schema_migrations/20210701111627 new file mode 100644 index 00000000000..ca52a786a22 --- /dev/null +++ b/db/schema_migrations/20210701111627 @@ -0,0 +1 @@ +c2efdad12c3d0ec5371259baa91466137b827f513250e901842ab28e56c3de0a
\ No newline at end of file diff --git a/db/schema_migrations/20210701111909 b/db/schema_migrations/20210701111909 new file mode 100644 index 00000000000..ed6e2d56e8d --- /dev/null +++ b/db/schema_migrations/20210701111909 @@ -0,0 +1 @@ +fdd7509fc88e563b65b487706cae1a64066a7ba7d4bd13d0414b8431c3ddfb68
\ No newline at end of file diff --git a/db/schema_migrations/20210702124842 b/db/schema_migrations/20210702124842 new file mode 100644 index 00000000000..dbaeb88a6fd --- /dev/null +++ b/db/schema_migrations/20210702124842 @@ -0,0 +1 @@ +8c4c92c4606cf406def47829ce16e903b3b2da00cbbdccfe6f0af5fa249be862
\ No newline at end of file diff --git a/db/schema_migrations/20210705124128 b/db/schema_migrations/20210705124128 new file mode 100644 index 00000000000..247378331e4 --- /dev/null +++ b/db/schema_migrations/20210705124128 @@ -0,0 +1 @@ +02aea8fe759614bc3aa751e023aa508963f8183366f6d6f518bbccc2d85ec1a1
\ No newline at end of file diff --git a/db/schema_migrations/20210705130919 b/db/schema_migrations/20210705130919 new file mode 100644 index 00000000000..9e0b9ffe69a --- /dev/null +++ b/db/schema_migrations/20210705130919 @@ -0,0 +1 @@ +c33dd2c63d5a8c6e3c2f49e640b1780734b4bfca88378fac67ea5f5bd24fb2b4
\ No newline at end of file diff --git a/db/schema_migrations/20210705132928 b/db/schema_migrations/20210705132928 new file mode 100644 index 00000000000..c1ef3ec3c1f --- /dev/null +++ b/db/schema_migrations/20210705132928 @@ -0,0 +1 @@ +c66a42fc813846a09d4389a895a2d20ad48889d8ff45ab642e771b6792490623
\ No newline at end of file diff --git a/db/schema_migrations/20210705144657 b/db/schema_migrations/20210705144657 new file mode 100644 index 00000000000..557dbdbd95c --- /dev/null +++ b/db/schema_migrations/20210705144657 @@ -0,0 +1 @@ +9ba27b5e2599262846a06736db72fb0d31dc904e2ef4d167c1ee9530feb6367f
\ No newline at end of file diff --git a/db/schema_migrations/20210706084713 b/db/schema_migrations/20210706084713 new file mode 100644 index 00000000000..7c87af30919 --- /dev/null +++ b/db/schema_migrations/20210706084713 @@ -0,0 +1 @@ +f69e3f50e4e5642a59e157a3c4a133090ec843b563e47198d560a54328176e56
\ No newline at end of file diff --git a/db/schema_migrations/20210706115312 b/db/schema_migrations/20210706115312 new file mode 100644 index 00000000000..a1298418836 --- /dev/null +++ b/db/schema_migrations/20210706115312 @@ -0,0 +1 @@ +ac150e706b115849aa3802ae7b8e07d983e89eb637c48582c64948cbc7d7163d
\ No newline at end of file diff --git a/db/schema_migrations/20210706120847 b/db/schema_migrations/20210706120847 new file mode 100644 index 00000000000..329e5650dd0 --- /dev/null +++ b/db/schema_migrations/20210706120847 @@ -0,0 +1 @@ +0fffffc44c32a936760424541e183b1a41938750d4e10da9dd76c2a09094a07b
\ No newline at end of file diff --git a/db/schema_migrations/20210706142819 b/db/schema_migrations/20210706142819 new file mode 100644 index 00000000000..193c6ba1d56 --- /dev/null +++ b/db/schema_migrations/20210706142819 @@ -0,0 +1 @@ +ed0daff7120cbdba2f0e9ca1f2e40c11114bb2c7db4543903d16891ffbbba3f8
\ No newline at end of file diff --git a/db/schema_migrations/20210706152139 b/db/schema_migrations/20210706152139 new file mode 100644 index 00000000000..81339dc1d81 --- /dev/null +++ b/db/schema_migrations/20210706152139 @@ -0,0 +1 @@ +45ec2dd6113d112050a1ac062064950fa18b3b5903a9fd60234e9e9fa48c7070
\ No newline at end of file diff --git a/db/schema_migrations/20210706213537 b/db/schema_migrations/20210706213537 new file mode 100644 index 00000000000..fa621773ee7 --- /dev/null +++ b/db/schema_migrations/20210706213537 @@ -0,0 +1 @@ +150463cef309e6bf69240c258dc8aede53b846a08a7e2d668ee0429709022554
\ No newline at end of file diff --git a/db/schema_migrations/20210707095545 b/db/schema_migrations/20210707095545 new file mode 100644 index 00000000000..83255c22622 --- /dev/null +++ b/db/schema_migrations/20210707095545 @@ -0,0 +1 @@ +98d4deaf0564119c1ee44d76d3a30bff1a0fceb7cab67c5dbef576faef62ddf5
\ No newline at end of file diff --git a/db/schema_migrations/20210707151536 b/db/schema_migrations/20210707151536 new file mode 100644 index 00000000000..feea256b2ac --- /dev/null +++ b/db/schema_migrations/20210707151536 @@ -0,0 +1 @@ +4fc688d17e374faf806a25635e05b053228ac201b94920d4f3b3810329a6552c
\ No newline at end of file diff --git a/db/schema_migrations/20210707171536 b/db/schema_migrations/20210707171536 new file mode 100644 index 00000000000..dd78b254a67 --- /dev/null +++ b/db/schema_migrations/20210707171536 @@ -0,0 +1 @@ +ee8576a7dec8e0657a3976422f74202e3f89c9a72aae64f0f75398d0c6ff5b97
\ No newline at end of file diff --git a/db/schema_migrations/20210707171554 b/db/schema_migrations/20210707171554 new file mode 100644 index 00000000000..ef6f174f734 --- /dev/null +++ b/db/schema_migrations/20210707171554 @@ -0,0 +1 @@ +5f2acbd5ed9132ad6c11cf4be34061decde2f3c602ef319331454b424e6b4344
\ No newline at end of file diff --git a/db/schema_migrations/20210707173645 b/db/schema_migrations/20210707173645 new file mode 100644 index 00000000000..0cc2386b4ef --- /dev/null +++ b/db/schema_migrations/20210707173645 @@ -0,0 +1 @@ +e440dac0e14df7309c84e72b98ed6373c712901dc66310a474979e0fce7dc59c
\ No newline at end of file diff --git a/db/schema_migrations/20210707181536 b/db/schema_migrations/20210707181536 new file mode 100644 index 00000000000..7bbdcc9a1d0 --- /dev/null +++ b/db/schema_migrations/20210707181536 @@ -0,0 +1 @@ +0c25d19d03bce4f145eca271c852aad6a8327821a8f5ff0aa2f0286f4a65b328
\ No newline at end of file diff --git a/db/schema_migrations/20210708063032 b/db/schema_migrations/20210708063032 new file mode 100644 index 00000000000..9d3271bdd91 --- /dev/null +++ b/db/schema_migrations/20210708063032 @@ -0,0 +1 @@ +77f6db1d2aeebdefd76c96966da6c9e4ce5da2c92a42f6ac2398b35fa21c680f
\ No newline at end of file diff --git a/db/schema_migrations/20210708124229 b/db/schema_migrations/20210708124229 new file mode 100644 index 00000000000..29cf5b8986f --- /dev/null +++ b/db/schema_migrations/20210708124229 @@ -0,0 +1 @@ +18f7a9a0e9f0b331028951adf2bf6ca9a9fc4a62872f5307ee9d74761ae06deb
\ No newline at end of file diff --git a/db/schema_migrations/20210708130419 b/db/schema_migrations/20210708130419 new file mode 100644 index 00000000000..b20db5b17c2 --- /dev/null +++ b/db/schema_migrations/20210708130419 @@ -0,0 +1 @@ +8545d6575c9dacec6796882677c4403cf3559430518e8709bf390f20717413d7
\ No newline at end of file diff --git a/db/schema_migrations/20210708131048 b/db/schema_migrations/20210708131048 new file mode 100644 index 00000000000..f61978d8e0f --- /dev/null +++ b/db/schema_migrations/20210708131048 @@ -0,0 +1 @@ +ed0c0dc015e7c3457248303b8b478c8d259d6a800a2bfed8b05b1f976b6794a7
\ No newline at end of file diff --git a/db/schema_migrations/20210708134446 b/db/schema_migrations/20210708134446 new file mode 100644 index 00000000000..9ec3b2182df --- /dev/null +++ b/db/schema_migrations/20210708134446 @@ -0,0 +1 @@ +1367865e22f6129fa69f3c86dc72b88a9af0479a41f2029a446464aeeed9c18e
\ No newline at end of file diff --git a/db/schema_migrations/20210709085759 b/db/schema_migrations/20210709085759 new file mode 100644 index 00000000000..4546b090e42 --- /dev/null +++ b/db/schema_migrations/20210709085759 @@ -0,0 +1 @@ +4216604d14b4ccc652ba423a95ee9bd15646b3553903dc4b79497871f5384492
\ No newline at end of file diff --git a/db/schema_migrations/20210709132707 b/db/schema_migrations/20210709132707 new file mode 100644 index 00000000000..04ba096a692 --- /dev/null +++ b/db/schema_migrations/20210709132707 @@ -0,0 +1 @@ +e0a2de69a3c9d616b87207b764e33fa3326627e065f28fc200c1414f08ee9fff
\ No newline at end of file diff --git a/db/schema_migrations/20210713070842 b/db/schema_migrations/20210713070842 new file mode 100644 index 00000000000..857dea1627e --- /dev/null +++ b/db/schema_migrations/20210713070842 @@ -0,0 +1 @@ +2899d954a199fa52bf6ab4beca5f22dcb9f9f0312e658f1307d1a7355394f1bb
\ No newline at end of file diff --git a/db/schema_migrations/20210713135152 b/db/schema_migrations/20210713135152 new file mode 100644 index 00000000000..a1ba4e939e9 --- /dev/null +++ b/db/schema_migrations/20210713135152 @@ -0,0 +1 @@ +d7f8f7f5d8a6cf03d500825ef43234c69f7ad36908c0bade337591b05985c2fe
\ No newline at end of file diff --git a/db/schema_migrations/20210713144637 b/db/schema_migrations/20210713144637 new file mode 100644 index 00000000000..ebc122e0275 --- /dev/null +++ b/db/schema_migrations/20210713144637 @@ -0,0 +1 @@ +699ac7f8b9253920271686c497b57521bf4b0d26c802ca2a57447e4929cd147f
\ No newline at end of file diff --git a/db/schema_migrations/20210714120600 b/db/schema_migrations/20210714120600 new file mode 100644 index 00000000000..e698300671b --- /dev/null +++ b/db/schema_migrations/20210714120600 @@ -0,0 +1 @@ +de9167bc4f9e2b68b257a7ff81636d5dbb6d73ff81672fdf1c73adadf5707bea
\ No newline at end of file diff --git a/db/schema_migrations/20210716074555 b/db/schema_migrations/20210716074555 new file mode 100644 index 00000000000..f079b199ca5 --- /dev/null +++ b/db/schema_migrations/20210716074555 @@ -0,0 +1 @@ +5cf415013b50c46fde5f12702c3f5bae808848a82eb57bfa38764947fc672ad9
\ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 64161ee7843..da2d4c50068 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -18,7 +18,7 @@ UPDATE projects SET has_external_issue_tracker = ( EXISTS ( SELECT 1 - FROM services + FROM integrations WHERE project_id = COALESCE(NEW.project_id, OLD.project_id) AND active = TRUE AND category = 'issue_tracker' @@ -199,6 +199,18 @@ CREATE TABLE audit_events ( ) PARTITION BY RANGE (created_at); +CREATE TABLE incident_management_pending_alert_escalations ( + id bigint NOT NULL, + rule_id bigint, + alert_id bigint NOT NULL, + schedule_id bigint NOT NULL, + process_at timestamp with time zone NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status smallint NOT NULL +) +PARTITION BY RANGE (process_at); + CREATE TABLE web_hook_logs ( id bigint NOT NULL, web_hook_id integer NOT NULL, @@ -9123,6 +9135,11 @@ CREATE TABLE analytics_devops_adoption_snapshots ( total_projects_count integer, code_owners_used_count integer, namespace_id integer, + sast_enabled_count integer, + dast_enabled_count integer, + dependency_scanning_enabled_count integer, + coverage_fuzzing_enabled_count integer, + vulnerability_management_used_count integer, CONSTRAINT check_3f472de131 CHECK ((namespace_id IS NOT NULL)) ); @@ -9199,7 +9216,7 @@ ALTER SEQUENCE appearances_id_seq OWNED BY appearances.id; CREATE TABLE application_setting_terms ( id integer NOT NULL, cached_markdown_version integer, - terms text NOT NULL, + terms text, terms_html text ); @@ -9528,6 +9545,11 @@ CREATE TABLE application_settings ( encrypted_elasticsearch_password_iv bytea, diff_max_lines integer DEFAULT 50000 NOT NULL, diff_max_files integer DEFAULT 1000 NOT NULL, + valid_runner_registrars character varying[] DEFAULT '{project,group}'::character varying[], + encrypted_mailgun_signing_key bytea, + encrypted_mailgun_signing_key_iv bytea, + mailgun_events_enabled boolean DEFAULT false NOT NULL, + usage_ping_features_enabled boolean DEFAULT false 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_ext_pipeline_validation_service_url_text_limit CHECK ((char_length(external_pipeline_validation_service_url) <= 255)), CONSTRAINT app_settings_registry_exp_policies_worker_capacity_positive CHECK ((container_registry_expiration_policies_worker_capacity >= 0)), @@ -10812,7 +10834,8 @@ CREATE TABLE ci_pending_builds ( build_id bigint NOT NULL, project_id bigint NOT NULL, created_at timestamp with time zone DEFAULT now() NOT NULL, - protected boolean DEFAULT false NOT NULL + protected boolean DEFAULT false NOT NULL, + instance_runners_enabled boolean DEFAULT false NOT NULL ); CREATE SEQUENCE ci_pending_builds_id_seq @@ -11640,30 +11663,6 @@ CREATE SEQUENCE clusters_applications_elastic_stacks_id_seq ALTER SEQUENCE clusters_applications_elastic_stacks_id_seq OWNED BY clusters_applications_elastic_stacks.id; -CREATE TABLE clusters_applications_fluentd ( - id bigint NOT NULL, - protocol smallint NOT NULL, - status integer NOT NULL, - port integer NOT NULL, - cluster_id bigint NOT NULL, - created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL, - version character varying(255) NOT NULL, - host character varying(255) NOT NULL, - status_reason text, - waf_log_enabled boolean DEFAULT true NOT NULL, - cilium_log_enabled boolean DEFAULT true NOT NULL -); - -CREATE SEQUENCE clusters_applications_fluentd_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE clusters_applications_fluentd_id_seq OWNED BY clusters_applications_fluentd.id; - CREATE TABLE clusters_applications_helm ( id integer NOT NULL, cluster_id integer NOT NULL, @@ -11697,9 +11696,7 @@ CREATE TABLE clusters_applications_ingress ( cluster_ip character varying, status_reason text, external_ip character varying, - external_hostname character varying, - modsecurity_enabled boolean, - modsecurity_mode smallint DEFAULT 0 NOT NULL + external_hostname character varying ); CREATE SEQUENCE clusters_applications_ingress_id_seq @@ -12055,6 +12052,13 @@ CREATE TABLE dast_scanner_profiles ( CONSTRAINT check_568568fabf CHECK ((char_length(name) <= 255)) ); +CREATE TABLE dast_scanner_profiles_builds ( + dast_scanner_profile_id bigint NOT NULL, + ci_build_id bigint NOT NULL +); + +COMMENT ON TABLE dast_scanner_profiles_builds IS '{"owner":"group::dynamic analysis","description":"Join table between DAST Scanner Profiles and CI Builds"}'; + CREATE SEQUENCE dast_scanner_profiles_id_seq START WITH 1 INCREMENT BY 1 @@ -12110,6 +12114,13 @@ CREATE TABLE dast_site_profiles ( CONSTRAINT check_f22f18002a CHECK ((char_length(auth_username) <= 255)) ); +CREATE TABLE dast_site_profiles_builds ( + dast_site_profile_id bigint NOT NULL, + ci_build_id bigint NOT NULL +); + +COMMENT ON TABLE dast_site_profiles_builds IS '{"owner":"group::dynamic analysis","description":"Join table between DAST Site Profiles and CI Builds"}'; + CREATE SEQUENCE dast_site_profiles_id_seq START WITH 1 INCREMENT BY 1 @@ -12746,6 +12757,57 @@ CREATE SEQUENCE epics_id_seq ALTER SEQUENCE epics_id_seq OWNED BY epics.id; +CREATE TABLE error_tracking_error_events ( + id bigint NOT NULL, + error_id bigint NOT NULL, + description text NOT NULL, + environment text, + level text, + occurred_at timestamp with time zone NOT NULL, + payload jsonb DEFAULT '{}'::jsonb NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + CONSTRAINT check_92ecc3077b CHECK ((char_length(description) <= 255)), + CONSTRAINT check_c67d5b8007 CHECK ((char_length(level) <= 255)), + CONSTRAINT check_f4b52474ad CHECK ((char_length(environment) <= 255)) +); + +CREATE SEQUENCE error_tracking_error_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE error_tracking_error_events_id_seq OWNED BY error_tracking_error_events.id; + +CREATE TABLE error_tracking_errors ( + id bigint NOT NULL, + project_id bigint NOT NULL, + name text NOT NULL, + description text NOT NULL, + actor text NOT NULL, + first_seen_at timestamp with time zone DEFAULT now() NOT NULL, + last_seen_at timestamp with time zone DEFAULT now() NOT NULL, + platform text, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + events_count bigint DEFAULT 0 NOT NULL, + CONSTRAINT check_18a758e537 CHECK ((char_length(name) <= 255)), + CONSTRAINT check_b5cb4d3888 CHECK ((char_length(actor) <= 255)), + CONSTRAINT check_c739788b12 CHECK ((char_length(description) <= 1024)), + CONSTRAINT check_fe99886883 CHECK ((char_length(platform) <= 255)) +); + +CREATE SEQUENCE error_tracking_errors_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE error_tracking_errors_id_seq OWNED BY error_tracking_errors.id; + CREATE TABLE events ( id integer NOT NULL, project_id integer, @@ -13906,6 +13968,15 @@ CREATE SEQUENCE incident_management_oncall_shifts_id_seq ALTER SEQUENCE incident_management_oncall_shifts_id_seq OWNED BY incident_management_oncall_shifts.id; +CREATE SEQUENCE incident_management_pending_alert_escalations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE incident_management_pending_alert_escalations_id_seq OWNED BY incident_management_pending_alert_escalations.id; + CREATE TABLE index_statuses ( id integer NOT NULL, project_id integer NOT NULL, @@ -13942,6 +14013,45 @@ CREATE SEQUENCE insights_id_seq ALTER SEQUENCE insights_id_seq OWNED BY insights.id; +CREATE TABLE integrations ( + id integer NOT NULL, + type character varying, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + active boolean DEFAULT false NOT NULL, + properties text, + push_events boolean DEFAULT true, + issues_events boolean DEFAULT true, + merge_requests_events boolean DEFAULT true, + tag_push_events boolean DEFAULT true, + note_events boolean DEFAULT true NOT NULL, + category character varying DEFAULT 'common'::character varying NOT NULL, + wiki_page_events boolean DEFAULT true, + pipeline_events boolean DEFAULT false NOT NULL, + confidential_issues_events boolean DEFAULT true NOT NULL, + commit_events boolean DEFAULT true NOT NULL, + job_events boolean DEFAULT false NOT NULL, + confidential_note_events boolean DEFAULT true, + deployment_events boolean DEFAULT false NOT NULL, + comment_on_event_enabled boolean DEFAULT true NOT NULL, + template boolean DEFAULT false, + instance boolean DEFAULT false NOT NULL, + comment_detail smallint, + inherit_from_id bigint, + alert_events boolean, + group_id bigint +); + +CREATE SEQUENCE integrations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE integrations_id_seq OWNED BY integrations.id; + CREATE TABLE internal_ids ( id bigint NOT NULL, project_id integer, @@ -14160,6 +14270,7 @@ CREATE TABLE issues ( sprint_id bigint, issue_type smallint DEFAULT 0 NOT NULL, blocking_issues_count integer DEFAULT 0 NOT NULL, + upvotes_count integer DEFAULT 0 NOT NULL, CONSTRAINT check_fba63f706d CHECK ((lock_version IS NOT NULL)) ); @@ -14478,7 +14589,8 @@ CREATE TABLE licenses ( data text NOT NULL, created_at timestamp without time zone, updated_at timestamp without time zone, - cloud boolean DEFAULT false + cloud boolean DEFAULT false, + last_synced_at timestamp with time zone ); CREATE SEQUENCE licenses_id_seq @@ -14600,7 +14712,9 @@ CREATE TABLE merge_request_cleanup_schedules ( scheduled_at timestamp with time zone NOT NULL, completed_at timestamp with time zone, created_at timestamp with time zone NOT NULL, - updated_at timestamp with time zone NOT NULL + updated_at timestamp with time zone NOT NULL, + status smallint DEFAULT 0 NOT NULL, + failed_count integer DEFAULT 0 NOT NULL ); CREATE SEQUENCE merge_request_cleanup_schedules_merge_request_id_seq @@ -14652,6 +14766,24 @@ CREATE SEQUENCE merge_request_context_commits_id_seq ALTER SEQUENCE merge_request_context_commits_id_seq OWNED BY merge_request_context_commits.id; +CREATE TABLE merge_request_diff_commit_users ( + id bigint NOT NULL, + name text, + email text, + CONSTRAINT check_147358fc42 CHECK ((char_length(name) <= 512)), + CONSTRAINT check_f5fa206cf7 CHECK ((char_length(email) <= 512)), + CONSTRAINT merge_request_diff_commit_users_name_or_email_existence CHECK (((COALESCE(name, ''::text) <> ''::text) OR (COALESCE(email, ''::text) <> ''::text))) +); + +CREATE SEQUENCE merge_request_diff_commit_users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE merge_request_diff_commit_users_id_seq OWNED BY merge_request_diff_commit_users.id; + CREATE TABLE merge_request_diff_commits ( authored_date timestamp without time zone, committed_date timestamp without time zone, @@ -14663,7 +14795,9 @@ CREATE TABLE merge_request_diff_commits ( committer_name text, committer_email text, message text, - trailers jsonb DEFAULT '{}'::jsonb NOT NULL + trailers jsonb DEFAULT '{}'::jsonb NOT NULL, + commit_author_id bigint, + committer_id bigint ); CREATE TABLE merge_request_diff_details ( @@ -15034,6 +15168,7 @@ CREATE TABLE namespace_settings ( resource_access_token_creation_allowed boolean DEFAULT true NOT NULL, lock_delayed_project_removal boolean DEFAULT false NOT NULL, prevent_sharing_groups_outside_hierarchy boolean DEFAULT false NOT NULL, + new_user_signups_cap integer, CONSTRAINT check_0ba93c78c7 CHECK ((char_length(default_branch_name) <= 255)) ); @@ -16292,7 +16427,10 @@ CREATE TABLE plan_limits ( ci_registered_group_runners integer DEFAULT 1000 NOT NULL, ci_registered_project_runners integer DEFAULT 1000 NOT NULL, web_hook_calls integer DEFAULT 0 NOT NULL, - ci_daily_pipeline_schedule_triggers integer DEFAULT 0 NOT NULL + ci_daily_pipeline_schedule_triggers integer DEFAULT 0 NOT NULL, + ci_max_artifact_size_running_container_scanning integer DEFAULT 0 NOT NULL, + ci_max_artifact_size_cluster_image_scanning integer DEFAULT 0 NOT NULL, + ci_jobs_trace_size_limit integer DEFAULT 100 NOT NULL ); CREATE SEQUENCE plan_limits_id_seq @@ -16451,23 +16589,25 @@ END AS attrelname ORDER BY relation_stats.nspname, relation_stats.tblname, relation_stats.idxname; CREATE VIEW postgres_indexes AS - SELECT (((pg_namespace.nspname)::text || '.'::text) || (pg_class.relname)::text) AS identifier, + SELECT (((pg_namespace.nspname)::text || '.'::text) || (i.relname)::text) AS identifier, pg_index.indexrelid, pg_namespace.nspname AS schema, - pg_class.relname AS name, + i.relname AS name, pg_indexes.tablename, + a.amname AS type, pg_index.indisunique AS "unique", pg_index.indisvalid AS valid_index, - pg_class.relispartition AS partitioned, + i.relispartition AS partitioned, pg_index.indisexclusion AS exclusion, (pg_index.indexprs IS NOT NULL) AS expression, (pg_index.indpred IS NOT NULL) AS partial, pg_indexes.indexdef AS definition, - pg_relation_size((pg_class.oid)::regclass) AS ondisk_size_bytes - FROM (((pg_index - JOIN pg_class ON ((pg_class.oid = pg_index.indexrelid))) - JOIN pg_namespace ON ((pg_class.relnamespace = pg_namespace.oid))) - JOIN pg_indexes ON ((pg_class.relname = pg_indexes.indexname))) + pg_relation_size((i.oid)::regclass) AS ondisk_size_bytes + FROM ((((pg_index + JOIN pg_class i ON ((i.oid = pg_index.indexrelid))) + JOIN pg_namespace ON ((i.relnamespace = pg_namespace.oid))) + JOIN pg_indexes ON ((i.relname = pg_indexes.indexname))) + JOIN pg_am a ON ((i.relam = a.oid))) WHERE ((pg_namespace.nspname <> 'pg_catalog'::name) AND (pg_namespace.nspname = ANY (ARRAY["current_schema"(), 'gitlab_partitions_dynamic'::name, 'gitlab_partitions_static'::name]))); CREATE VIEW postgres_partitioned_tables AS @@ -16626,7 +16766,6 @@ ALTER SEQUENCE project_ci_cd_settings_id_seq OWNED BY project_ci_cd_settings.id; CREATE TABLE project_compliance_framework_settings ( project_id bigint NOT NULL, - framework smallint, framework_id bigint, CONSTRAINT check_d348de9e2d CHECK ((framework_id IS NOT NULL)) ); @@ -16946,6 +17085,8 @@ CREATE TABLE project_settings ( prevent_merge_without_jira_issue boolean DEFAULT false NOT NULL, cve_id_request_enabled boolean DEFAULT true NOT NULL, mr_default_target_self boolean DEFAULT false NOT NULL, + previous_default_branch text, + CONSTRAINT check_3a03e7557a CHECK ((char_length(previous_default_branch) <= 4096)), CONSTRAINT check_bde223416c CHECK ((show_default_award_emojis IS NOT NULL)) ); @@ -17493,6 +17634,7 @@ CREATE TABLE requirements ( title_html text, description text, description_html text, + issue_id bigint, CONSTRAINT check_785ae25b9d CHECK ((char_length(description) <= 10000)) ); @@ -17707,7 +17849,8 @@ CREATE SEQUENCE saml_providers_id_seq ALTER SEQUENCE saml_providers_id_seq OWNED BY saml_providers.id; CREATE TABLE schema_migrations ( - version character varying NOT NULL + version character varying NOT NULL, + finished_at timestamp with time zone DEFAULT now() ); CREATE TABLE scim_identities ( @@ -17907,45 +18050,6 @@ CREATE TABLE service_desk_settings ( project_key character varying(255) ); -CREATE TABLE services ( - id integer NOT NULL, - type character varying, - project_id integer, - created_at timestamp without time zone, - updated_at timestamp without time zone, - active boolean DEFAULT false NOT NULL, - properties text, - push_events boolean DEFAULT true, - issues_events boolean DEFAULT true, - merge_requests_events boolean DEFAULT true, - tag_push_events boolean DEFAULT true, - note_events boolean DEFAULT true NOT NULL, - category character varying DEFAULT 'common'::character varying NOT NULL, - wiki_page_events boolean DEFAULT true, - pipeline_events boolean DEFAULT false NOT NULL, - confidential_issues_events boolean DEFAULT true NOT NULL, - commit_events boolean DEFAULT true NOT NULL, - job_events boolean DEFAULT false NOT NULL, - confidential_note_events boolean DEFAULT true, - deployment_events boolean DEFAULT false NOT NULL, - comment_on_event_enabled boolean DEFAULT true NOT NULL, - template boolean DEFAULT false, - instance boolean DEFAULT false NOT NULL, - comment_detail smallint, - inherit_from_id bigint, - alert_events boolean, - group_id bigint -); - -CREATE SEQUENCE services_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE services_id_seq OWNED BY services.id; - CREATE TABLE shards ( id integer NOT NULL, name character varying NOT NULL @@ -18409,7 +18513,9 @@ CREATE TABLE timelogs ( merge_request_id integer, spent_at timestamp without time zone, note_id integer, - project_id integer + project_id integer, + summary text, + CONSTRAINT check_271d321699 CHECK ((char_length(summary) <= 255)) ); CREATE SEQUENCE timelogs_id_seq @@ -18939,7 +19045,9 @@ CREATE TABLE vulnerabilities ( confirmed_at timestamp with time zone, dismissed_at timestamp with time zone, dismissed_by_id bigint, - resolved_on_default_branch boolean DEFAULT false NOT NULL + resolved_on_default_branch boolean DEFAULT false NOT NULL, + present_on_default_branch boolean DEFAULT true NOT NULL, + detected_at timestamp with time zone DEFAULT now() ); CREATE SEQUENCE vulnerabilities_id_seq @@ -19026,6 +19134,28 @@ CREATE SEQUENCE vulnerability_feedback_id_seq ALTER SEQUENCE vulnerability_feedback_id_seq OWNED BY vulnerability_feedback.id; +CREATE TABLE vulnerability_finding_evidence_assets ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + vulnerability_finding_evidence_id bigint NOT NULL, + type text, + name text, + url text, + CONSTRAINT check_5adf5d69de CHECK ((char_length(type) <= 2048)), + CONSTRAINT check_839f29d7ca CHECK ((char_length(name) <= 2048)), + CONSTRAINT check_9272d912c0 CHECK ((char_length(url) <= 2048)) +); + +CREATE SEQUENCE vulnerability_finding_evidence_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE vulnerability_finding_evidence_assets_id_seq OWNED BY vulnerability_finding_evidence_assets.id; + CREATE TABLE vulnerability_finding_evidence_headers ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -19090,6 +19220,44 @@ CREATE SEQUENCE vulnerability_finding_evidence_responses_id_seq ALTER SEQUENCE vulnerability_finding_evidence_responses_id_seq OWNED BY vulnerability_finding_evidence_responses.id; +CREATE TABLE vulnerability_finding_evidence_sources ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + vulnerability_finding_evidence_id bigint NOT NULL, + name text, + url text, + CONSTRAINT check_0fe01298d6 CHECK ((char_length(url) <= 2048)), + CONSTRAINT check_86b537ba1a CHECK ((char_length(name) <= 2048)) +); + +CREATE SEQUENCE vulnerability_finding_evidence_sources_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE vulnerability_finding_evidence_sources_id_seq OWNED BY vulnerability_finding_evidence_sources.id; + +CREATE TABLE vulnerability_finding_evidence_supporting_messages ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + vulnerability_finding_evidence_id bigint NOT NULL, + name text, + CONSTRAINT check_fa33b9ae85 CHECK ((char_length(name) <= 2048)) +); + +CREATE SEQUENCE vulnerability_finding_evidence_supporting_messages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE vulnerability_finding_evidence_supporting_messages_id_seq OWNED BY vulnerability_finding_evidence_supporting_messages.id; + CREATE TABLE vulnerability_finding_evidences ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -19163,6 +19331,27 @@ CREATE SEQUENCE vulnerability_findings_remediations_id_seq ALTER SEQUENCE vulnerability_findings_remediations_id_seq OWNED BY vulnerability_findings_remediations.id; +CREATE TABLE vulnerability_flags ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + vulnerability_occurrence_id bigint NOT NULL, + flag_type smallint DEFAULT 0 NOT NULL, + origin text NOT NULL, + description text NOT NULL, + CONSTRAINT check_45e743349f CHECK ((char_length(description) <= 1024)), + CONSTRAINT check_49c1d00032 CHECK ((char_length(origin) <= 255)) +); + +CREATE SEQUENCE vulnerability_flags_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE vulnerability_flags_id_seq OWNED BY vulnerability_flags.id; + CREATE TABLE vulnerability_historical_statistics ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -19808,8 +19997,6 @@ ALTER TABLE ONLY clusters_applications_crossplane ALTER COLUMN id SET DEFAULT ne ALTER TABLE ONLY clusters_applications_elastic_stacks ALTER COLUMN id SET DEFAULT nextval('clusters_applications_elastic_stacks_id_seq'::regclass); -ALTER TABLE ONLY clusters_applications_fluentd ALTER COLUMN id SET DEFAULT nextval('clusters_applications_fluentd_id_seq'::regclass); - ALTER TABLE ONLY clusters_applications_helm ALTER COLUMN id SET DEFAULT nextval('clusters_applications_helm_id_seq'::regclass); ALTER TABLE ONLY clusters_applications_ingress ALTER COLUMN id SET DEFAULT nextval('clusters_applications_ingress_id_seq'::regclass); @@ -19898,6 +20085,10 @@ ALTER TABLE ONLY epic_user_mentions ALTER COLUMN id SET DEFAULT nextval('epic_us ALTER TABLE ONLY epics ALTER COLUMN id SET DEFAULT nextval('epics_id_seq'::regclass); +ALTER TABLE ONLY error_tracking_error_events ALTER COLUMN id SET DEFAULT nextval('error_tracking_error_events_id_seq'::regclass); + +ALTER TABLE ONLY error_tracking_errors ALTER COLUMN id SET DEFAULT nextval('error_tracking_errors_id_seq'::regclass); + ALTER TABLE ONLY events ALTER COLUMN id SET DEFAULT nextval('events_id_seq'::regclass); ALTER TABLE ONLY evidences ALTER COLUMN id SET DEFAULT nextval('evidences_id_seq'::regclass); @@ -20010,10 +20201,14 @@ ALTER TABLE ONLY incident_management_oncall_schedules ALTER COLUMN id SET DEFAUL ALTER TABLE ONLY incident_management_oncall_shifts ALTER COLUMN id SET DEFAULT nextval('incident_management_oncall_shifts_id_seq'::regclass); +ALTER TABLE ONLY incident_management_pending_alert_escalations ALTER COLUMN id SET DEFAULT nextval('incident_management_pending_alert_escalations_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); +ALTER TABLE ONLY integrations ALTER COLUMN id SET DEFAULT nextval('integrations_id_seq'::regclass); + ALTER TABLE ONLY internal_ids ALTER COLUMN id SET DEFAULT nextval('internal_ids_id_seq'::regclass); ALTER TABLE ONLY ip_restrictions ALTER COLUMN id SET DEFAULT nextval('ip_restrictions_id_seq'::regclass); @@ -20078,6 +20273,8 @@ ALTER TABLE ONLY merge_request_cleanup_schedules ALTER COLUMN merge_request_id S ALTER TABLE ONLY merge_request_context_commits ALTER COLUMN id SET DEFAULT nextval('merge_request_context_commits_id_seq'::regclass); +ALTER TABLE ONLY merge_request_diff_commit_users ALTER COLUMN id SET DEFAULT nextval('merge_request_diff_commit_users_id_seq'::regclass); + ALTER TABLE ONLY merge_request_diff_details ALTER COLUMN merge_request_diff_id SET DEFAULT nextval('merge_request_diff_details_merge_request_diff_id_seq'::regclass); ALTER TABLE ONLY merge_request_diffs ALTER COLUMN id SET DEFAULT nextval('merge_request_diffs_id_seq'::regclass); @@ -20326,8 +20523,6 @@ ALTER TABLE ONLY sent_notifications ALTER COLUMN id SET DEFAULT nextval('sent_no ALTER TABLE ONLY sentry_issues ALTER COLUMN id SET DEFAULT nextval('sentry_issues_id_seq'::regclass); -ALTER TABLE ONLY services ALTER COLUMN id SET DEFAULT nextval('services_id_seq'::regclass); - ALTER TABLE ONLY shards ALTER COLUMN id SET DEFAULT nextval('shards_id_seq'::regclass); ALTER TABLE ONLY slack_integrations ALTER COLUMN id SET DEFAULT nextval('slack_integrations_id_seq'::regclass); @@ -20418,12 +20613,18 @@ ALTER TABLE ONLY vulnerability_external_issue_links ALTER COLUMN id SET DEFAULT ALTER TABLE ONLY vulnerability_feedback ALTER COLUMN id SET DEFAULT nextval('vulnerability_feedback_id_seq'::regclass); +ALTER TABLE ONLY vulnerability_finding_evidence_assets ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidence_assets_id_seq'::regclass); + ALTER TABLE ONLY vulnerability_finding_evidence_headers ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidence_headers_id_seq'::regclass); ALTER TABLE ONLY vulnerability_finding_evidence_requests ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidence_requests_id_seq'::regclass); ALTER TABLE ONLY vulnerability_finding_evidence_responses ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidence_responses_id_seq'::regclass); +ALTER TABLE ONLY vulnerability_finding_evidence_sources ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidence_sources_id_seq'::regclass); + +ALTER TABLE ONLY vulnerability_finding_evidence_supporting_messages ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidence_supporting_messages_id_seq'::regclass); + ALTER TABLE ONLY vulnerability_finding_evidences ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_evidences_id_seq'::regclass); ALTER TABLE ONLY vulnerability_finding_links ALTER COLUMN id SET DEFAULT nextval('vulnerability_finding_links_id_seq'::regclass); @@ -20432,6 +20633,8 @@ ALTER TABLE ONLY vulnerability_finding_signatures ALTER COLUMN id SET DEFAULT ne ALTER TABLE ONLY vulnerability_findings_remediations ALTER COLUMN id SET DEFAULT nextval('vulnerability_findings_remediations_id_seq'::regclass); +ALTER TABLE ONLY vulnerability_flags ALTER COLUMN id SET DEFAULT nextval('vulnerability_flags_id_seq'::regclass); + ALTER TABLE ONLY vulnerability_historical_statistics ALTER COLUMN id SET DEFAULT nextval('vulnerability_historical_statistics_id_seq'::regclass); ALTER TABLE ONLY vulnerability_identifiers ALTER COLUMN id SET DEFAULT nextval('vulnerability_identifiers_id_seq'::regclass); @@ -21040,9 +21243,6 @@ ALTER TABLE ONLY clusters_applications_crossplane ALTER TABLE ONLY clusters_applications_elastic_stacks ADD CONSTRAINT clusters_applications_elastic_stacks_pkey PRIMARY KEY (id); -ALTER TABLE ONLY clusters_applications_fluentd - ADD CONSTRAINT clusters_applications_fluentd_pkey PRIMARY KEY (id); - ALTER TABLE ONLY clusters_applications_helm ADD CONSTRAINT clusters_applications_helm_pkey PRIMARY KEY (id); @@ -21100,12 +21300,18 @@ ALTER TABLE ONLY dast_profiles_pipelines ALTER TABLE ONLY dast_profiles ADD CONSTRAINT dast_profiles_pkey PRIMARY KEY (id); +ALTER TABLE ONLY dast_scanner_profiles_builds + ADD CONSTRAINT dast_scanner_profiles_builds_pkey PRIMARY KEY (dast_scanner_profile_id, ci_build_id); + ALTER TABLE ONLY dast_scanner_profiles ADD CONSTRAINT dast_scanner_profiles_pkey PRIMARY KEY (id); ALTER TABLE ONLY dast_site_profile_secret_variables ADD CONSTRAINT dast_site_profile_secret_variables_pkey PRIMARY KEY (id); +ALTER TABLE ONLY dast_site_profiles_builds + ADD CONSTRAINT dast_site_profiles_builds_pkey PRIMARY KEY (dast_site_profile_id, ci_build_id); + ALTER TABLE ONLY dast_site_profiles_pipelines ADD CONSTRAINT dast_site_profiles_pipelines_pkey PRIMARY KEY (dast_site_profile_id, ci_pipeline_id); @@ -21205,6 +21411,12 @@ ALTER TABLE ONLY epic_user_mentions ALTER TABLE ONLY epics ADD CONSTRAINT epics_pkey PRIMARY KEY (id); +ALTER TABLE ONLY error_tracking_error_events + ADD CONSTRAINT error_tracking_error_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY error_tracking_errors + ADD CONSTRAINT error_tracking_errors_pkey PRIMARY KEY (id); + ALTER TABLE ONLY events ADD CONSTRAINT events_pkey PRIMARY KEY (id); @@ -21385,12 +21597,18 @@ ALTER TABLE ONLY incident_management_oncall_schedules ALTER TABLE ONLY incident_management_oncall_shifts ADD CONSTRAINT incident_management_oncall_shifts_pkey PRIMARY KEY (id); +ALTER TABLE ONLY incident_management_pending_alert_escalations + ADD CONSTRAINT incident_management_pending_alert_escalations_pkey PRIMARY KEY (id, process_at); + ALTER TABLE ONLY index_statuses ADD CONSTRAINT index_statuses_pkey PRIMARY KEY (id); ALTER TABLE ONLY insights ADD CONSTRAINT insights_pkey PRIMARY KEY (id); +ALTER TABLE ONLY integrations + ADD CONSTRAINT integrations_pkey PRIMARY KEY (id); + ALTER TABLE ONLY internal_ids ADD CONSTRAINT internal_ids_pkey PRIMARY KEY (id); @@ -21505,6 +21723,9 @@ ALTER TABLE ONLY merge_request_context_commit_diff_files ALTER TABLE ONLY merge_request_context_commits ADD CONSTRAINT merge_request_context_commits_pkey PRIMARY KEY (id); +ALTER TABLE ONLY merge_request_diff_commit_users + ADD CONSTRAINT merge_request_diff_commit_users_pkey PRIMARY KEY (id); + ALTER TABLE ONLY merge_request_diff_commits ADD CONSTRAINT merge_request_diff_commits_pkey PRIMARY KEY (merge_request_diff_id, relative_order); @@ -21958,9 +22179,6 @@ ALTER TABLE ONLY serverless_domain_cluster ALTER TABLE ONLY service_desk_settings ADD CONSTRAINT service_desk_settings_pkey PRIMARY KEY (project_id); -ALTER TABLE ONLY services - ADD CONSTRAINT services_pkey PRIMARY KEY (id); - ALTER TABLE ONLY shards ADD CONSTRAINT shards_pkey PRIMARY KEY (id); @@ -22117,6 +22335,9 @@ ALTER TABLE ONLY vulnerability_external_issue_links ALTER TABLE ONLY vulnerability_feedback ADD CONSTRAINT vulnerability_feedback_pkey PRIMARY KEY (id); +ALTER TABLE ONLY vulnerability_finding_evidence_assets + ADD CONSTRAINT vulnerability_finding_evidence_assets_pkey PRIMARY KEY (id); + ALTER TABLE ONLY vulnerability_finding_evidence_headers ADD CONSTRAINT vulnerability_finding_evidence_headers_pkey PRIMARY KEY (id); @@ -22126,6 +22347,12 @@ ALTER TABLE ONLY vulnerability_finding_evidence_requests ALTER TABLE ONLY vulnerability_finding_evidence_responses ADD CONSTRAINT vulnerability_finding_evidence_responses_pkey PRIMARY KEY (id); +ALTER TABLE ONLY vulnerability_finding_evidence_sources + ADD CONSTRAINT vulnerability_finding_evidence_sources_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY vulnerability_finding_evidence_supporting_messages + ADD CONSTRAINT vulnerability_finding_evidence_supporting_messages_pkey PRIMARY KEY (id); + ALTER TABLE ONLY vulnerability_finding_evidences ADD CONSTRAINT vulnerability_finding_evidences_pkey PRIMARY KEY (id); @@ -22138,6 +22365,9 @@ ALTER TABLE ONLY vulnerability_finding_signatures ALTER TABLE ONLY vulnerability_findings_remediations ADD CONSTRAINT vulnerability_findings_remediations_pkey PRIMARY KEY (id); +ALTER TABLE ONLY vulnerability_flags + ADD CONSTRAINT vulnerability_flags_pkey PRIMARY KEY (id); + ALTER TABLE ONLY vulnerability_historical_statistics ADD CONSTRAINT vulnerability_historical_statistics_pkey PRIMARY KEY (id); @@ -22351,6 +22581,10 @@ CREATE INDEX commit_id_and_note_id_index ON commit_user_mentions USING btree (co CREATE INDEX composer_cache_files_index_on_deleted_at ON packages_composer_cache_files USING btree (delete_at, id); +CREATE UNIQUE INDEX dast_scanner_profiles_builds_on_ci_build_id ON dast_scanner_profiles_builds USING btree (ci_build_id); + +CREATE UNIQUE INDEX dast_site_profiles_builds_on_ci_build_id ON dast_site_profiles_builds USING btree (ci_build_id); + CREATE UNIQUE INDEX design_management_designs_versions_uniqueness ON design_management_designs_versions USING btree (design_id, version_id); CREATE INDEX design_user_mentions_on_design_id_and_note_id_index ON design_user_mentions USING btree (design_id, note_id); @@ -22359,6 +22593,8 @@ 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 finding_evidence_assets_on_finding_evidence_id ON vulnerability_finding_evidence_assets USING btree (vulnerability_finding_evidence_id); + CREATE INDEX finding_evidence_header_on_finding_evidence_request_id ON vulnerability_finding_evidence_headers USING btree (vulnerability_finding_evidence_request_id); CREATE INDEX finding_evidence_header_on_finding_evidence_response_id ON vulnerability_finding_evidence_headers USING btree (vulnerability_finding_evidence_response_id); @@ -22367,6 +22603,10 @@ CREATE INDEX finding_evidence_requests_on_finding_evidence_id ON vulnerability_f CREATE INDEX finding_evidence_responses_on_finding_evidences_id ON vulnerability_finding_evidence_responses USING btree (vulnerability_finding_evidence_id); +CREATE INDEX finding_evidence_sources_on_finding_evidence_id ON vulnerability_finding_evidence_sources USING btree (vulnerability_finding_evidence_id); + +CREATE INDEX finding_evidence_supporting_messages_on_finding_evidence_id ON vulnerability_finding_evidence_supporting_messages USING btree (vulnerability_finding_evidence_id); + CREATE INDEX finding_evidences_on_vulnerability_occurrence_id ON vulnerability_finding_evidences USING btree (vulnerability_occurrence_id); CREATE INDEX finding_links_on_vulnerability_occurrence_id ON vulnerability_finding_links USING btree (vulnerability_occurrence_id); @@ -22375,6 +22615,8 @@ CREATE UNIQUE INDEX i_ci_job_token_project_scope_links_on_source_and_target_proj CREATE INDEX idx_analytics_devops_adoption_segments_on_namespace_id ON analytics_devops_adoption_segments USING btree (namespace_id); +CREATE INDEX idx_analytics_devops_adoption_snapshots_finalized ON analytics_devops_adoption_snapshots USING btree (namespace_id, end_time) WHERE (recorded_at >= end_time); + 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_award_emoji_on_user_emoji_name_awardable_type_awardable_id ON award_emoji USING btree (user_id, name, awardable_type, awardable_id); @@ -22385,7 +22627,7 @@ CREATE INDEX idx_container_exp_policies_on_project_id_next_run_at ON container_e CREATE INDEX idx_container_exp_policies_on_project_id_next_run_at_enabled ON container_expiration_policies USING btree (project_id, next_run_at, enabled); -CREATE INDEX idx_container_repositories_on_exp_cleanup_status_and_start_date ON container_repositories USING btree (expiration_policy_cleanup_status, expiration_policy_started_at); +CREATE INDEX idx_container_repos_on_exp_cleanup_status_project_id_start_date ON container_repositories USING btree (expiration_policy_cleanup_status, project_id, expiration_policy_started_at); CREATE INDEX idx_deployment_clusters_on_cluster_id_and_kubernetes_namespace ON deployment_clusters USING btree (cluster_id, kubernetes_namespace); @@ -22503,6 +22745,8 @@ CREATE UNIQUE INDEX idx_vuln_signatures_on_occurrences_id_and_signature_sha ON v CREATE UNIQUE INDEX idx_vuln_signatures_uniqueness_signature_sha ON vulnerability_finding_signatures USING btree (finding_id, algorithm_type, signature_sha); +CREATE INDEX idx_vulnerabilities_partial_devops_adoption ON vulnerabilities USING btree (project_id, created_at) WHERE (state <> 1); + CREATE UNIQUE INDEX idx_vulnerability_ext_issue_links_on_vulne_id_and_ext_issue ON vulnerability_external_issue_links USING btree (vulnerability_id, external_type, external_project_key, external_issue_key); CREATE UNIQUE INDEX idx_vulnerability_ext_issue_links_on_vulne_id_and_link_type ON vulnerability_external_issue_links USING btree (vulnerability_id, link_type) WHERE (link_type = 1); @@ -22737,7 +22981,7 @@ CREATE INDEX index_broadcast_message_on_ends_at_and_broadcast_type_and_id ON bro CREATE INDEX index_bulk_import_configurations_on_bulk_import_id ON bulk_import_configurations USING btree (bulk_import_id); -CREATE INDEX index_bulk_import_entities_on_bulk_import_id ON bulk_import_entities USING btree (bulk_import_id); +CREATE INDEX index_bulk_import_entities_on_bulk_import_id_and_status ON bulk_import_entities USING btree (bulk_import_id, status); CREATE INDEX index_bulk_import_entities_on_namespace_id ON bulk_import_entities USING btree (namespace_id); @@ -22799,8 +23043,6 @@ CREATE INDEX index_ci_builds_on_project_id_and_name_and_ref ON ci_builds USING b CREATE INDEX index_ci_builds_on_project_id_for_successfull_pages_deploy ON ci_builds USING btree (project_id) WHERE (((type)::text = 'GenericCommitStatus'::text) AND ((stage)::text = 'deploy'::text) AND ((name)::text = 'pages:deploy'::text) AND ((status)::text = 'success'::text)); -CREATE INDEX index_ci_builds_on_protected ON ci_builds USING btree (protected); - CREATE INDEX index_ci_builds_on_queued_at ON ci_builds USING btree (queued_at); CREATE INDEX index_ci_builds_on_runner_id_and_id_desc ON ci_builds USING btree (runner_id, id DESC); @@ -22809,10 +23051,10 @@ CREATE INDEX index_ci_builds_on_stage_id ON ci_builds USING btree (stage_id); CREATE INDEX index_ci_builds_on_status_and_type_and_runner_id ON ci_builds USING btree (status, type, runner_id); -CREATE UNIQUE INDEX index_ci_builds_on_token ON ci_builds USING btree (token); - CREATE UNIQUE INDEX index_ci_builds_on_token_encrypted ON ci_builds USING btree (token_encrypted) WHERE (token_encrypted IS NOT NULL); +CREATE UNIQUE INDEX index_ci_builds_on_token_partial ON ci_builds USING btree (token) WHERE (token IS NOT NULL); + CREATE INDEX index_ci_builds_on_updated_at ON ci_builds USING btree (updated_at); CREATE INDEX index_ci_builds_on_upstream_pipeline_id ON ci_builds USING btree (upstream_pipeline_id) WHERE (upstream_pipeline_id IS NOT NULL); @@ -22843,6 +23085,8 @@ CREATE UNIQUE INDEX index_ci_group_variables_on_group_id_and_key_and_environment CREATE UNIQUE INDEX index_ci_instance_variables_on_key ON ci_instance_variables USING btree (key); +CREATE INDEX index_ci_job_artifacts_dast_for_devops_adoption ON ci_job_artifacts USING btree (project_id, created_at) WHERE (file_type = 8); + CREATE INDEX index_ci_job_artifacts_for_terraform_reports ON ci_job_artifacts USING btree (project_id, id) WHERE (file_type = 18); CREATE INDEX index_ci_job_artifacts_id_for_terraform_reports ON ci_job_artifacts USING btree (id) WHERE (file_type = 18); @@ -22851,12 +23095,16 @@ CREATE INDEX index_ci_job_artifacts_on_expire_at_and_job_id ON ci_job_artifacts CREATE INDEX index_ci_job_artifacts_on_file_store ON ci_job_artifacts USING btree (file_store); +CREATE INDEX index_ci_job_artifacts_on_file_type_for_devops_adoption ON ci_job_artifacts USING btree (file_type, project_id, created_at) WHERE (file_type = ANY (ARRAY[5, 6, 8, 23])); + CREATE UNIQUE INDEX index_ci_job_artifacts_on_job_id_and_file_type ON ci_job_artifacts USING btree (job_id, file_type); CREATE INDEX index_ci_job_artifacts_on_project_id ON ci_job_artifacts USING btree (project_id); CREATE INDEX index_ci_job_artifacts_on_project_id_for_security_reports ON ci_job_artifacts USING btree (project_id) WHERE (file_type = ANY (ARRAY[5, 6, 7, 8])); +CREATE INDEX index_ci_job_artifacts_sast_for_devops_adoption ON ci_job_artifacts USING btree (project_id, created_at) WHERE (file_type = 5); + CREATE INDEX index_ci_job_token_project_scope_links_on_added_by_id ON ci_job_token_project_scope_links USING btree (added_by_id); CREATE INDEX index_ci_job_token_project_scope_links_on_target_project_id ON ci_job_token_project_scope_links USING btree (target_project_id); @@ -23077,14 +23325,10 @@ CREATE UNIQUE INDEX index_clusters_applications_crossplane_on_cluster_id ON clus CREATE UNIQUE INDEX index_clusters_applications_elastic_stacks_on_cluster_id ON clusters_applications_elastic_stacks USING btree (cluster_id); -CREATE UNIQUE INDEX index_clusters_applications_fluentd_on_cluster_id ON clusters_applications_fluentd USING btree (cluster_id); - CREATE UNIQUE INDEX index_clusters_applications_helm_on_cluster_id ON clusters_applications_helm USING btree (cluster_id); CREATE UNIQUE INDEX index_clusters_applications_ingress_on_cluster_id ON clusters_applications_ingress USING btree (cluster_id); -CREATE INDEX index_clusters_applications_ingress_on_modsecurity ON clusters_applications_ingress USING btree (modsecurity_enabled, modsecurity_mode, cluster_id); - CREATE UNIQUE INDEX index_clusters_applications_jupyter_on_cluster_id ON clusters_applications_jupyter USING btree (cluster_id); CREATE INDEX index_clusters_applications_jupyter_on_oauth_application_id ON clusters_applications_jupyter USING btree (oauth_application_id); @@ -23115,6 +23359,8 @@ CREATE INDEX index_clusters_on_user_id ON clusters USING btree (user_id); CREATE UNIQUE INDEX index_commit_user_mentions_on_note_id ON commit_user_mentions USING btree (note_id); +CREATE INDEX index_compliance_frameworks_id_where_frameworks_not_null ON compliance_management_frameworks USING btree (id) WHERE (pipeline_configuration_full_path IS NOT NULL); + CREATE INDEX index_composer_cache_files_where_namespace_id_is_null ON packages_composer_cache_files USING btree (id) WHERE (namespace_id IS NULL); CREATE INDEX index_container_expiration_policies_on_next_run_at_and_enabled ON container_expiration_policies USING btree (next_run_at, enabled); @@ -23343,6 +23589,10 @@ CREATE INDEX index_epics_on_start_date_sourcing_epic_id ON epics USING btree (st CREATE INDEX index_epics_on_start_date_sourcing_milestone_id ON epics USING btree (start_date_sourcing_milestone_id); +CREATE INDEX index_error_tracking_error_events_on_error_id ON error_tracking_error_events USING btree (error_id); + +CREATE INDEX index_error_tracking_errors_on_project_id ON error_tracking_errors USING btree (project_id); + CREATE INDEX index_esc_protected_branches_on_external_status_check_id ON external_status_checks_protected_branches USING btree (external_status_check_id); CREATE INDEX index_esc_protected_branches_on_protected_branch_id ON external_status_checks_protected_branches USING btree (protected_branch_id); @@ -23587,12 +23837,36 @@ CREATE INDEX index_incident_management_oncall_schedules_on_project_id ON inciden CREATE INDEX index_incident_management_oncall_shifts_on_participant_id ON incident_management_oncall_shifts USING btree (participant_id); +CREATE INDEX index_incident_management_pending_alert_escalations_on_alert_id ON ONLY incident_management_pending_alert_escalations USING btree (alert_id); + +CREATE INDEX index_incident_management_pending_alert_escalations_on_rule_id ON ONLY incident_management_pending_alert_escalations USING btree (rule_id); + +CREATE INDEX index_incident_management_pending_alert_escalations_on_schedule ON ONLY incident_management_pending_alert_escalations USING btree (schedule_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); CREATE INDEX index_insights_on_project_id ON insights USING btree (project_id); +CREATE INDEX index_integrations_on_inherit_from_id ON integrations USING btree (inherit_from_id); + +CREATE INDEX index_integrations_on_project_and_type_where_inherit_null ON integrations USING btree (project_id, type) WHERE (inherit_from_id IS NULL); + +CREATE UNIQUE INDEX index_integrations_on_project_id_and_type_unique ON integrations USING btree (project_id, type); + +CREATE INDEX index_integrations_on_template ON integrations USING btree (template); + +CREATE INDEX index_integrations_on_type ON integrations USING btree (type); + +CREATE UNIQUE INDEX index_integrations_on_type_and_instance_partial ON integrations USING btree (type, instance) WHERE (instance = true); + +CREATE UNIQUE INDEX index_integrations_on_type_and_template_partial ON integrations USING btree (type, template) WHERE (template = true); + +CREATE INDEX index_integrations_on_type_id_when_active_and_project_id_not_nu ON integrations USING btree (type, id) WHERE ((active = true) AND (project_id IS NOT NULL)); + +CREATE UNIQUE INDEX index_integrations_on_unique_group_id_and_type ON integrations USING btree (group_id, type); + CREATE INDEX index_internal_ids_on_namespace_id ON internal_ids USING btree (namespace_id); CREATE INDEX index_internal_ids_on_project_id ON internal_ids USING btree (project_id); @@ -23655,6 +23929,8 @@ CREATE UNIQUE INDEX index_issues_on_project_id_and_external_key ON issues USING CREATE UNIQUE INDEX index_issues_on_project_id_and_iid ON issues USING btree (project_id, iid); +CREATE INDEX index_issues_on_project_id_and_upvotes_count ON issues USING btree (project_id, upvotes_count); + CREATE INDEX index_issues_on_promoted_to_epic_id ON issues USING btree (promoted_to_epic_id) WHERE (promoted_to_epic_id IS NOT NULL); CREATE INDEX index_issues_on_sprint_id ON issues USING btree (sprint_id); @@ -23777,6 +24053,10 @@ CREATE INDEX index_merge_request_blocks_on_blocked_merge_request_id ON merge_req CREATE UNIQUE INDEX index_merge_request_cleanup_schedules_on_merge_request_id ON merge_request_cleanup_schedules USING btree (merge_request_id); +CREATE INDEX index_merge_request_cleanup_schedules_on_status ON merge_request_cleanup_schedules USING btree (status); + +CREATE UNIQUE INDEX index_merge_request_diff_commit_users_on_name_and_email ON merge_request_diff_commit_users USING btree (name, email); + CREATE INDEX index_merge_request_diff_commits_on_sha ON merge_request_diff_commits USING btree (sha); CREATE INDEX index_merge_request_diff_details_failed_verification ON merge_request_diff_details USING btree (verification_retry_at NULLS FIRST) WHERE (verification_state = 3); @@ -23887,6 +24167,8 @@ CREATE INDEX index_metrics_users_starred_dashboards_on_project_id ON metrics_use CREATE INDEX index_migration_jobs_on_migration_id_and_finished_at ON batched_background_migration_jobs USING btree (batched_background_migration_id, finished_at); +CREATE INDEX index_migration_jobs_on_migration_id_and_max_value ON batched_background_migration_jobs USING btree (batched_background_migration_id, max_value); + CREATE INDEX index_milestone_releases_on_release_id ON milestone_releases USING btree (release_id); CREATE INDEX index_milestones_on_description_trigram ON milestones USING gin (description gin_trgm_ops); @@ -23905,7 +24187,7 @@ CREATE INDEX index_mirror_data_non_scheduled_or_started ON project_mirror_data U CREATE UNIQUE INDEX index_mr_blocks_on_blocking_and_blocked_mr_ids ON merge_request_blocks USING btree (blocking_merge_request_id, blocked_merge_request_id); -CREATE INDEX index_mr_cleanup_schedules_timestamps ON merge_request_cleanup_schedules USING btree (scheduled_at) WHERE (completed_at IS NULL); +CREATE INDEX index_mr_cleanup_schedules_timestamps_status ON merge_request_cleanup_schedules USING btree (scheduled_at) WHERE ((completed_at IS NULL) AND (status = 0)); CREATE UNIQUE INDEX index_mr_context_commits_on_merge_request_id_and_sha ON merge_request_context_commits USING btree (merge_request_id, sha); @@ -24011,8 +24293,6 @@ CREATE INDEX index_oauth_openid_requests_on_access_grant_id ON oauth_openid_requ CREATE UNIQUE INDEX index_on_deploy_keys_id_and_type_and_public ON keys USING btree (id, type) WHERE (public = true); -CREATE INDEX index_on_id_partial_with_legacy_storage ON projects USING btree (id) WHERE ((storage_version < 2) OR (storage_version IS NULL)); - CREATE INDEX index_on_identities_lower_extern_uid_and_provider ON identities USING btree (lower((extern_uid)::text), provider); CREATE UNIQUE INDEX index_on_instance_statistics_recorded_at_and_identifier ON analytics_usage_trends_measurements USING btree (identifier, recorded_at); @@ -24231,7 +24511,7 @@ CREATE UNIQUE INDEX index_project_aliases_on_name ON project_aliases USING btree CREATE INDEX index_project_aliases_on_project_id ON project_aliases USING btree (project_id); -CREATE INDEX index_project_authorizations_on_project_id ON project_authorizations USING btree (project_id); +CREATE INDEX index_project_authorizations_on_project_id_user_id ON project_authorizations USING btree (project_id, user_id); CREATE UNIQUE INDEX index_project_auto_devops_on_project_id ON project_auto_devops USING btree (project_id); @@ -24511,6 +24791,8 @@ CREATE INDEX index_requirements_on_author_id ON requirements USING btree (author CREATE INDEX index_requirements_on_created_at ON requirements USING btree (created_at); +CREATE UNIQUE INDEX index_requirements_on_issue_id ON requirements USING btree (issue_id); + CREATE INDEX index_requirements_on_project_id ON requirements USING btree (project_id); CREATE UNIQUE INDEX index_requirements_on_project_id_and_iid ON requirements USING btree (project_id, iid) WHERE (project_id IS NOT NULL); @@ -24615,6 +24897,8 @@ CREATE INDEX index_security_findings_on_severity ON security_findings USING btre CREATE UNIQUE INDEX index_security_findings_on_uuid_and_scan_id ON security_findings USING btree (uuid, scan_id); +CREATE INDEX index_security_scans_on_created_at ON security_scans USING btree (created_at); + CREATE INDEX index_security_scans_on_date_created_at_and_id ON security_scans USING btree (date(timezone('UTC'::text, created_at)), id); CREATE INDEX index_self_managed_prometheus_alert_events_on_environment_id ON self_managed_prometheus_alert_events USING btree (environment_id); @@ -24633,24 +24917,6 @@ CREATE INDEX index_serverless_domain_cluster_on_pages_domain_id ON serverless_do CREATE INDEX index_service_desk_enabled_projects_on_id_creator_id_created_at ON projects USING btree (id, creator_id, created_at) WHERE (service_desk_enabled = true); -CREATE INDEX index_services_on_inherit_from_id ON services USING btree (inherit_from_id); - -CREATE INDEX index_services_on_project_and_type_where_inherit_null ON services USING btree (project_id, type) WHERE (inherit_from_id IS NULL); - -CREATE UNIQUE INDEX index_services_on_project_id_and_type_unique ON services USING btree (project_id, type); - -CREATE INDEX index_services_on_template ON services USING btree (template); - -CREATE INDEX index_services_on_type ON services USING btree (type); - -CREATE UNIQUE INDEX index_services_on_type_and_instance_partial ON services USING btree (type, instance) WHERE (instance = true); - -CREATE UNIQUE INDEX index_services_on_type_and_template_partial ON services USING btree (type, template) WHERE (template = true); - -CREATE INDEX index_services_on_type_id_when_active_and_project_id_not_null ON services USING btree (type, id) WHERE ((active = true) AND (project_id IS NOT NULL)); - -CREATE UNIQUE INDEX index_services_on_unique_group_id_and_type ON services USING btree (group_id, type); - CREATE UNIQUE INDEX index_shards_on_name ON shards USING btree (name); CREATE UNIQUE INDEX index_site_profile_secret_variables_on_site_profile_id_and_key ON dast_site_profile_secret_variables USING btree (dast_site_profile_id, key); @@ -25011,6 +25277,8 @@ CREATE INDEX index_vulnerability_findings_remediations_on_remediation_id ON vuln CREATE UNIQUE INDEX index_vulnerability_findings_remediations_on_unique_keys ON vulnerability_findings_remediations USING btree (vulnerability_occurrence_id, vulnerability_remediation_id); +CREATE INDEX index_vulnerability_flags_on_vulnerability_occurrence_id ON vulnerability_flags USING btree (vulnerability_occurrence_id); + CREATE INDEX index_vulnerability_historical_statistics_on_date_and_id ON vulnerability_historical_statistics USING btree (date, id); CREATE UNIQUE INDEX index_vulnerability_identifiers_on_project_id_and_fingerprint ON vulnerability_identifiers USING btree (project_id, fingerprint); @@ -25153,6 +25421,8 @@ CREATE INDEX tmp_idx_deduplicate_vulnerability_occurrences ON vulnerability_occu CREATE INDEX tmp_idx_on_namespaces_delayed_project_removal ON namespaces USING btree (id) WHERE (delayed_project_removal = true); +CREATE INDEX tmp_index_merge_requests_draft_and_status ON merge_requests USING btree (id) WHERE ((draft = false) AND (state_id = 1) AND ((title)::text ~* '^\[draft\]|\(draft\)|draft:|draft|\[WIP\]|WIP:|WIP'::text)); + CREATE INDEX tmp_index_namespaces_empty_traversal_ids_with_child_namespaces ON namespaces USING btree (id) WHERE ((parent_id IS NOT NULL) AND (traversal_ids = '{}'::integer[])); CREATE INDEX tmp_index_namespaces_empty_traversal_ids_with_root_namespaces ON namespaces USING btree (id) WHERE ((parent_id IS NULL) AND (traversal_ids = '{}'::integer[])); @@ -25469,20 +25739,23 @@ CREATE TRIGGER trigger_cf2f9e35f002 BEFORE INSERT OR UPDATE ON ci_build_trace_ch CREATE TRIGGER trigger_f1ca8ec18d78 BEFORE INSERT OR UPDATE ON geo_job_artifact_deleted_events FOR EACH ROW EXECUTE FUNCTION trigger_f1ca8ec18d78(); -CREATE TRIGGER trigger_has_external_issue_tracker_on_delete AFTER DELETE ON services FOR EACH ROW WHEN ((((old.category)::text = 'issue_tracker'::text) AND (old.active = true) AND (old.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker(); +CREATE TRIGGER trigger_has_external_issue_tracker_on_delete AFTER DELETE ON integrations FOR EACH ROW WHEN ((((old.category)::text = 'issue_tracker'::text) AND (old.active = true) AND (old.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker(); -CREATE TRIGGER trigger_has_external_issue_tracker_on_insert AFTER INSERT ON services FOR EACH ROW WHEN ((((new.category)::text = 'issue_tracker'::text) AND (new.active = true) AND (new.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker(); +CREATE TRIGGER trigger_has_external_issue_tracker_on_insert AFTER INSERT ON integrations FOR EACH ROW WHEN ((((new.category)::text = 'issue_tracker'::text) AND (new.active = true) AND (new.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker(); -CREATE TRIGGER trigger_has_external_issue_tracker_on_update AFTER UPDATE ON services FOR EACH ROW WHEN ((((new.category)::text = 'issue_tracker'::text) AND (old.active <> new.active) AND (new.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker(); +CREATE TRIGGER trigger_has_external_issue_tracker_on_update AFTER UPDATE ON integrations FOR EACH ROW WHEN ((((new.category)::text = 'issue_tracker'::text) AND (old.active <> new.active) AND (new.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_issue_tracker(); -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 FUNCTION set_has_external_wiki(); +CREATE TRIGGER trigger_has_external_wiki_on_delete AFTER DELETE ON integrations FOR EACH ROW WHEN ((((old.type)::text = 'ExternalWikiService'::text) AND (old.project_id IS NOT NULL))) EXECUTE FUNCTION 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 FUNCTION set_has_external_wiki(); +CREATE TRIGGER trigger_has_external_wiki_on_insert AFTER INSERT ON integrations FOR EACH ROW WHEN (((new.active = true) AND ((new.type)::text = 'ExternalWikiService'::text) AND (new.project_id IS NOT NULL))) EXECUTE FUNCTION 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 FUNCTION set_has_external_wiki(); +CREATE TRIGGER trigger_has_external_wiki_on_update AFTER UPDATE ON integrations FOR EACH ROW WHEN ((((new.type)::text = 'ExternalWikiService'::text) AND (old.active <> new.active) AND (new.project_id IS NOT NULL))) EXECUTE FUNCTION set_has_external_wiki(); ALTER TABLE ONLY chat_names - ADD CONSTRAINT fk_00797a2bf9 FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; + ADD CONSTRAINT fk_00797a2bf9 FOREIGN KEY (service_id) REFERENCES integrations(id) ON DELETE CASCADE; + +ALTER TABLE ONLY deployments + ADD CONSTRAINT fk_009fd21147 FOREIGN KEY (environment_id) REFERENCES environments(id) ON DELETE CASCADE NOT VALID; ALTER TABLE ONLY epics ADD CONSTRAINT fk_013c9f36ca FOREIGN KEY (due_date_sourcing_epic_id) REFERENCES epics(id) ON DELETE SET NULL; @@ -25607,6 +25880,9 @@ ALTER TABLE ONLY geo_event_log ALTER TABLE ONLY deployments ADD CONSTRAINT fk_289bba3222 FOREIGN KEY (cluster_id) REFERENCES clusters(id) ON DELETE SET NULL; +ALTER TABLE ONLY ci_freeze_periods + ADD CONSTRAINT fk_2e02bbd1a6 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE ONLY notes ADD CONSTRAINT fk_2e82291620 FOREIGN KEY (review_id) REFERENCES reviews(id) ON DELETE SET NULL; @@ -25709,6 +25985,9 @@ ALTER TABLE ONLY vulnerability_feedback ALTER TABLE ONLY deploy_keys_projects ADD CONSTRAINT fk_58a901ca7e FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY dast_scanner_profiles_builds + ADD CONSTRAINT fk_5d46286ad3 FOREIGN KEY (dast_scanner_profile_id) REFERENCES dast_scanner_profiles(id) ON DELETE CASCADE; + ALTER TABLE ONLY issue_assignees ADD CONSTRAINT fk_5e0c8d9154 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; @@ -25751,7 +26030,7 @@ ALTER TABLE ONLY terraform_state_versions ALTER TABLE ONLY protected_branch_push_access_levels ADD CONSTRAINT fk_7111b68cdb FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; -ALTER TABLE ONLY services +ALTER TABLE ONLY integrations ADD CONSTRAINT fk_71cce407f9 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; ALTER TABLE ONLY user_interacted_projects @@ -25826,6 +26105,9 @@ ALTER TABLE ONLY experiment_subjects ALTER TABLE ONLY merge_request_diffs ADD CONSTRAINT fk_8483f3258f FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE; +ALTER TABLE ONLY requirements + ADD CONSTRAINT fk_85044baef0 FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; + ALTER TABLE ONLY ci_pipelines ADD CONSTRAINT fk_86635dbd80 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -25868,6 +26150,9 @@ ALTER TABLE ONLY ci_pipeline_schedules ALTER TABLE ONLY todos ADD CONSTRAINT fk_91d1f47b13 FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE; +ALTER TABLE ONLY dast_site_profiles_builds + ADD CONSTRAINT fk_94e80df60e FOREIGN KEY (dast_site_profile_id) REFERENCES dast_site_profiles(id) ON DELETE CASCADE; + ALTER TABLE ONLY vulnerability_feedback ADD CONSTRAINT fk_94f7c8a81e FOREIGN KEY (comment_author_id) REFERENCES users(id) ON DELETE SET NULL; @@ -25931,6 +26216,9 @@ ALTER TABLE ONLY ci_builds ALTER TABLE ONLY ci_pipelines ADD CONSTRAINT fk_a23be95014 FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE; +ALTER TABLE ONLY dast_site_profiles_builds + ADD CONSTRAINT fk_a325505e99 FOREIGN KEY (ci_build_id) REFERENCES ci_builds(id) ON DELETE CASCADE; + ALTER TABLE ONLY bulk_import_entities ADD CONSTRAINT fk_a44ff95be5 FOREIGN KEY (parent_id) REFERENCES bulk_import_entities(id) ON DELETE CASCADE; @@ -26088,7 +26376,7 @@ ALTER TABLE ONLY ci_builds ADD CONSTRAINT fk_d3130c9a7f FOREIGN KEY (commit_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; ALTER TABLE ONLY web_hooks - ADD CONSTRAINT fk_d47999a98a FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; + ADD CONSTRAINT fk_d47999a98a FOREIGN KEY (service_id) REFERENCES integrations(id) ON DELETE CASCADE; ALTER TABLE ONLY ci_sources_pipelines ADD CONSTRAINT fk_d4e29af7d7 FOREIGN KEY (source_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; @@ -26141,6 +26429,9 @@ ALTER TABLE ONLY gitlab_subscriptions ALTER TABLE ONLY ci_triggers ADD CONSTRAINT fk_e3e63f966e FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY dast_scanner_profiles_builds + ADD CONSTRAINT fk_e4c49200f8 FOREIGN KEY (ci_build_id) REFERENCES ci_builds(id) ON DELETE CASCADE; + ALTER TABLE ONLY merge_requests ADD CONSTRAINT fk_e719a85f8a FOREIGN KEY (author_id) REFERENCES users(id) ON DELETE SET NULL; @@ -26168,7 +26459,7 @@ ALTER TABLE ONLY vulnerability_statistics ALTER TABLE ONLY ci_triggers ADD CONSTRAINT fk_e8e10d1964 FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE; -ALTER TABLE ONLY services +ALTER TABLE ONLY integrations ADD CONSTRAINT fk_e8fe908a34 FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; ALTER TABLE ONLY pages_domains @@ -26288,6 +26579,9 @@ ALTER TABLE ONLY terraform_state_versions ALTER TABLE ONLY ci_build_report_results ADD CONSTRAINT fk_rails_056d298d48 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE incident_management_pending_alert_escalations + ADD CONSTRAINT fk_rails_057c1e3d87 FOREIGN KEY (rule_id) REFERENCES incident_management_escalation_rules(id) ON DELETE SET NULL; + ALTER TABLE ONLY ci_daily_build_group_report_results ADD CONSTRAINT fk_rails_0667f7608c FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -26409,7 +26703,7 @@ ALTER TABLE ONLY group_wiki_repositories ADD CONSTRAINT fk_rails_19755e374b FOREIGN KEY (shard_id) REFERENCES shards(id) ON DELETE RESTRICT; ALTER TABLE ONLY open_project_tracker_data - ADD CONSTRAINT fk_rails_1987546e48 FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; + ADD CONSTRAINT fk_rails_1987546e48 FOREIGN KEY (service_id) REFERENCES integrations(id) ON DELETE CASCADE; ALTER TABLE ONLY gpg_signatures ADD CONSTRAINT fk_rails_19d4f1c6f9 FOREIGN KEY (gpg_key_subkey_id) REFERENCES gpg_key_subkeys(id) ON DELETE SET NULL; @@ -26537,15 +26831,15 @@ ALTER TABLE ONLY packages_debian_group_component_files 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 error_tracking_error_events + ADD CONSTRAINT fk_rails_2c096c0076 FOREIGN KEY (error_id) REFERENCES error_tracking_errors(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; -ALTER TABLE ONLY ci_freeze_periods - ADD CONSTRAINT fk_rails_2e02bbd1a6 FOREIGN KEY (project_id) REFERENCES projects(id); - ALTER TABLE ONLY issuable_severities ADD CONSTRAINT fk_rails_2fbb74ad6d FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; @@ -26672,9 +26966,6 @@ ALTER TABLE ONLY security_orchestration_policy_configurations ALTER TABLE ONLY ci_resources ADD CONSTRAINT fk_rails_430336af2d FOREIGN KEY (resource_group_id) REFERENCES ci_resource_groups(id) ON DELETE CASCADE; -ALTER TABLE ONLY clusters_applications_fluentd - ADD CONSTRAINT fk_rails_4319b1dcd2 FOREIGN KEY (cluster_id) REFERENCES clusters(id) ON DELETE CASCADE; - ALTER TABLE ONLY batched_background_migration_jobs ADD CONSTRAINT fk_rails_432153b86d FOREIGN KEY (batched_background_migration_id) REFERENCES batched_background_migrations(id) ON DELETE CASCADE; @@ -26951,12 +27242,18 @@ ALTER TABLE ONLY plan_limits ALTER TABLE ONLY operations_feature_flags_issues ADD CONSTRAINT fk_rails_6a8856ca4f FOREIGN KEY (feature_flag_id) REFERENCES operations_feature_flags(id) ON DELETE CASCADE; +ALTER TABLE ONLY error_tracking_errors + ADD CONSTRAINT fk_rails_6b41f837ba FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE ONLY prometheus_alerts ADD CONSTRAINT fk_rails_6d9b283465 FOREIGN KEY (environment_id) REFERENCES environments(id) ON DELETE CASCADE; ALTER TABLE ONLY term_agreements ADD CONSTRAINT fk_rails_6ea6520e4a FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; +ALTER TABLE ONLY vulnerability_finding_evidence_assets + ADD CONSTRAINT fk_rails_6edbbecba4 FOREIGN KEY (vulnerability_finding_evidence_id) REFERENCES vulnerability_finding_evidences(id) ON DELETE CASCADE; + ALTER TABLE ONLY project_compliance_framework_settings ADD CONSTRAINT fk_rails_6f5294f16c FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -26991,7 +27288,7 @@ ALTER TABLE ONLY vulnerability_finding_evidence_requests ADD CONSTRAINT fk_rails_72c87c8eb6 FOREIGN KEY (vulnerability_finding_evidence_id) REFERENCES vulnerability_finding_evidences(id) ON DELETE CASCADE; ALTER TABLE ONLY slack_integrations - ADD CONSTRAINT fk_rails_73db19721a FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; + ADD CONSTRAINT fk_rails_73db19721a FOREIGN KEY (service_id) REFERENCES integrations(id) ON DELETE CASCADE; ALTER TABLE ONLY custom_emoji ADD CONSTRAINT fk_rails_745925b412 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; @@ -27044,6 +27341,9 @@ ALTER TABLE ONLY terraform_states ALTER TABLE ONLY analytics_cycle_analytics_project_stages ADD CONSTRAINT fk_rails_796a7dbc9c FOREIGN KEY (project_value_stream_id) REFERENCES analytics_cycle_analytics_project_value_streams(id) ON DELETE CASCADE; +ALTER TABLE ONLY vulnerability_finding_evidence_supporting_messages + ADD CONSTRAINT fk_rails_79e77f6c5c FOREIGN KEY (vulnerability_finding_evidence_id) REFERENCES vulnerability_finding_evidences(id) ON DELETE CASCADE; + ALTER TABLE ONLY software_license_policies ADD CONSTRAINT fk_rails_7a7a2a92de FOREIGN KEY (software_license_id) REFERENCES software_licenses(id) ON DELETE CASCADE; @@ -27131,6 +27431,9 @@ ALTER TABLE ONLY vulnerability_feedback ALTER TABLE ONLY ci_pipeline_messages ADD CONSTRAINT fk_rails_8d3b04e3e1 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; +ALTER TABLE incident_management_pending_alert_escalations + ADD CONSTRAINT fk_rails_8d8de95da9 FOREIGN KEY (alert_id) REFERENCES alert_management_alerts(id) ON DELETE CASCADE; + ALTER TABLE ONLY approval_merge_request_rules_approved_approvers ADD CONSTRAINT fk_rails_8dc94cff4d FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; @@ -27255,7 +27558,7 @@ ALTER TABLE ONLY todos ADD CONSTRAINT fk_rails_a27c483435 FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; ALTER TABLE ONLY jira_tracker_data - ADD CONSTRAINT fk_rails_a299066916 FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; + ADD CONSTRAINT fk_rails_a299066916 FOREIGN KEY (service_id) REFERENCES integrations(id) ON DELETE CASCADE; ALTER TABLE ONLY protected_environments ADD CONSTRAINT fk_rails_a354313d11 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -27510,7 +27813,7 @@ ALTER TABLE ONLY operations_strategies_user_lists ADD CONSTRAINT fk_rails_ccb7e4bc0b FOREIGN KEY (user_list_id) REFERENCES operations_user_lists(id) ON DELETE CASCADE; ALTER TABLE ONLY issue_tracker_data - ADD CONSTRAINT fk_rails_ccc0840427 FOREIGN KEY (service_id) REFERENCES services(id) ON DELETE CASCADE; + ADD CONSTRAINT fk_rails_ccc0840427 FOREIGN KEY (service_id) REFERENCES integrations(id) ON DELETE CASCADE; ALTER TABLE ONLY vulnerability_finding_evidence_headers ADD CONSTRAINT fk_rails_ce7f121a03 FOREIGN KEY (vulnerability_finding_evidence_request_id) REFERENCES vulnerability_finding_evidence_requests(id) ON DELETE CASCADE; @@ -27626,6 +27929,9 @@ ALTER TABLE ONLY clusters_integration_prometheus ALTER TABLE ONLY vulnerability_occurrence_identifiers ADD CONSTRAINT fk_rails_e4ef6d027c FOREIGN KEY (occurrence_id) REFERENCES vulnerability_occurrences(id) ON DELETE CASCADE; +ALTER TABLE ONLY vulnerability_flags + ADD CONSTRAINT fk_rails_e59393b48b FOREIGN KEY (vulnerability_occurrence_id) REFERENCES vulnerability_occurrences(id) ON DELETE CASCADE; + ALTER TABLE ONLY serverless_domain_cluster ADD CONSTRAINT fk_rails_e59e868733 FOREIGN KEY (clusters_applications_knative_id) REFERENCES clusters_applications_knative(id) ON DELETE CASCADE; @@ -27671,6 +27977,9 @@ ALTER TABLE ONLY vulnerability_issue_links ALTER TABLE ONLY merge_request_blocks ADD CONSTRAINT fk_rails_e9387863bc FOREIGN KEY (blocking_merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE; +ALTER TABLE ONLY vulnerability_finding_evidence_sources + ADD CONSTRAINT fk_rails_e9761bed4c FOREIGN KEY (vulnerability_finding_evidence_id) REFERENCES vulnerability_finding_evidences(id) ON DELETE CASCADE; + ALTER TABLE ONLY protected_branch_unprotect_access_levels ADD CONSTRAINT fk_rails_e9eb8dc025 FOREIGN KEY (protected_branch_id) REFERENCES protected_branches(id) ON DELETE CASCADE; @@ -27791,6 +28100,9 @@ ALTER TABLE ONLY ci_job_variables ALTER TABLE ONLY packages_nuget_metadata ADD CONSTRAINT fk_rails_fc0c19f5b4 FOREIGN KEY (package_id) REFERENCES packages_packages(id) ON DELETE CASCADE; +ALTER TABLE incident_management_pending_alert_escalations + ADD CONSTRAINT fk_rails_fcbfd9338b FOREIGN KEY (schedule_id) REFERENCES incident_management_oncall_schedules(id) ON DELETE CASCADE; + ALTER TABLE ONLY external_approval_rules ADD CONSTRAINT fk_rails_fd4f9ac573 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -27809,8 +28121,8 @@ ALTER TABLE ONLY resource_label_events ALTER TABLE ONLY ci_builds_metadata ADD CONSTRAINT fk_rails_ffcf702a02 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; -ALTER TABLE ONLY services - ADD CONSTRAINT fk_services_inherit_from_id FOREIGN KEY (inherit_from_id) REFERENCES services(id) ON DELETE CASCADE; +ALTER TABLE ONLY integrations + ADD CONSTRAINT fk_services_inherit_from_id FOREIGN KEY (inherit_from_id) REFERENCES integrations(id) ON DELETE CASCADE; ALTER TABLE ONLY merge_requests ADD CONSTRAINT fk_source_project FOREIGN KEY (source_project_id) REFERENCES projects(id) ON DELETE SET NULL; @@ -27834,6 +28146,4 @@ ALTER TABLE ONLY user_follow_users ADD CONSTRAINT user_follow_users_followee_id_fkey FOREIGN KEY (followee_id) REFERENCES users(id) ON DELETE CASCADE; ALTER TABLE ONLY user_follow_users - ADD CONSTRAINT user_follow_users_follower_id_fkey FOREIGN KEY (follower_id) REFERENCES users(id) ON DELETE CASCADE;-- schema_migrations.version information is no longer stored in this file, --- but instead tracked in the db/schema_migrations directory --- see https://gitlab.com/gitlab-org/gitlab/-/issues/218590 for details + ADD CONSTRAINT user_follow_users_follower_id_fkey FOREIGN KEY (follower_id) REFERENCES users(id) ON DELETE CASCADE; |