diff options
Diffstat (limited to 'db/migrate')
59 files changed, 822 insertions, 7 deletions
diff --git a/db/migrate/20210305031822_create_dast_site_profile_variables.rb b/db/migrate/20210305031822_create_dast_site_profile_variables.rb index f55755aa731..4b8fc982d86 100644 --- a/db/migrate/20210305031822_create_dast_site_profile_variables.rb +++ b/db/migrate/20210305031822_create_dast_site_profile_variables.rb @@ -13,7 +13,7 @@ class CreateDastSiteProfileVariables < ActiveRecord::Migration[6.0] encrypted_value_constraint_name = check_constraint_name(:dast_site_profile_secret_variables, 'encrypted_value', 'max_length') encrypted_value_iv_constraint_name = check_constraint_name(:dast_site_profile_secret_variables, 'encrypted_value_iv', 'max_length') - create_table_with_constraints :dast_site_profile_secret_variables, comment: table_comment.to_json do |t| + create_table_with_constraints :dast_site_profile_secret_variables, comment: Gitlab::Json.dump(table_comment) do |t| t.references :dast_site_profile, null: false, foreign_key: { on_delete: :cascade }, index: false t.timestamps_with_timezone diff --git a/db/migrate/20210317035357_create_dast_profiles_pipelines.rb b/db/migrate/20210317035357_create_dast_profiles_pipelines.rb index f7a29958f12..f84e1237643 100644 --- a/db/migrate/20210317035357_create_dast_profiles_pipelines.rb +++ b/db/migrate/20210317035357_create_dast_profiles_pipelines.rb @@ -6,7 +6,7 @@ class CreateDastProfilesPipelines < ActiveRecord::Migration[6.0] def up table_comment = { owner: 'group::dynamic analysis', description: 'Join table between DAST Profiles and CI Pipelines' } - create_table :dast_profiles_pipelines, primary_key: [:dast_profile_id, :ci_pipeline_id], comment: table_comment.to_json do |t| + create_table :dast_profiles_pipelines, primary_key: [:dast_profile_id, :ci_pipeline_id], comment: Gitlab::Json.dump(table_comment) do |t| t.bigint :dast_profile_id, null: false t.bigint :ci_pipeline_id, null: false diff --git a/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb b/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb index c7035400cba..365fa36f11b 100644 --- a/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb +++ b/db/migrate/20210412111213_create_security_orchestration_policy_rule_schedule.rb @@ -11,7 +11,7 @@ class CreateSecurityOrchestrationPolicyRuleSchedule < ActiveRecord::Migration[6. def up table_comment = { owner: 'group::container security', description: 'Schedules used to store relationship between project and security policy repository' } - create_table_with_constraints :security_orchestration_policy_rule_schedules, comment: table_comment.to_json do |t| + create_table_with_constraints :security_orchestration_policy_rule_schedules, comment: Gitlab::Json.dump(table_comment) do |t| t.timestamps_with_timezone t.datetime_with_timezone :next_run_at, null: true diff --git a/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb b/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb index bbdb4f02ab4..80b97ff5afe 100644 --- a/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb +++ b/db/migrate/20210423054022_create_dast_site_profiles_pipelines.rb @@ -4,7 +4,7 @@ class CreateDastSiteProfilesPipelines < ActiveRecord::Migration[6.0] def up table_comment = { owner: 'group::dynamic analysis', description: 'Join table between DAST Site Profiles and CI Pipelines' } - create_table :dast_site_profiles_pipelines, primary_key: [:dast_site_profile_id, :ci_pipeline_id], comment: table_comment.to_json do |t| + create_table :dast_site_profiles_pipelines, primary_key: [:dast_site_profile_id, :ci_pipeline_id], comment: Gitlab::Json.dump(table_comment) do |t| t.bigint :dast_site_profile_id, null: false t.bigint :ci_pipeline_id, null: false diff --git a/db/migrate/20210604032738_create_dast_site_profiles_builds.rb b/db/migrate/20210604032738_create_dast_site_profiles_builds.rb index 2e9eb2c7cb7..6e653b36787 100644 --- a/db/migrate/20210604032738_create_dast_site_profiles_builds.rb +++ b/db/migrate/20210604032738_create_dast_site_profiles_builds.rb @@ -4,7 +4,7 @@ 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| + create_table :dast_site_profiles_builds, primary_key: [:dast_site_profile_id, :ci_build_id], comment: Gitlab::Json.dump(table_comment) do |t| t.bigint :dast_site_profile_id, null: false t.bigint :ci_build_id, null: false diff --git a/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb b/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb index f8a5f735f0d..0fe3ada4c0d 100644 --- a/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb +++ b/db/migrate/20210604051330_create_dast_scanner_profiles_builds.rb @@ -4,7 +4,7 @@ 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| + create_table :dast_scanner_profiles_builds, primary_key: [:dast_scanner_profile_id, :ci_build_id], comment: Gitlab::Json.dump(table_comment) do |t| t.bigint :dast_scanner_profile_id, null: false t.bigint :ci_build_id, null: false diff --git a/db/migrate/20210713123345_create_dast_profile_schedule.rb b/db/migrate/20210713123345_create_dast_profile_schedule.rb index 951aab63579..ea660de572a 100644 --- a/db/migrate/20210713123345_create_dast_profile_schedule.rb +++ b/db/migrate/20210713123345_create_dast_profile_schedule.rb @@ -10,7 +10,7 @@ class CreateDastProfileSchedule < ActiveRecord::Migration[6.1] owner: 'group::dynamic analysis', description: 'Scheduling for scans using DAST Profiles' } - create_table_with_constraints :dast_profile_schedules, comment: table_comment.to_json do |t| + create_table_with_constraints :dast_profile_schedules, comment: Gitlab::Json.dump(table_comment) do |t| t.bigint :project_id, null: false t.bigint :dast_profile_id, null: false t.bigint :user_id diff --git a/db/migrate/20220613112029_add_namespace_id_to_protected_branches.rb b/db/migrate/20220613112029_add_namespace_id_to_protected_branches.rb new file mode 100644 index 00000000000..1620a23d564 --- /dev/null +++ b/db/migrate/20220613112029_add_namespace_id_to_protected_branches.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddNamespaceIdToProtectedBranches < Gitlab::Database::Migration[2.0] + enable_lock_retries! + + def change + add_column :protected_branches, :namespace_id, :bigint + end +end diff --git a/db/migrate/20220613112030_add_namespace_id_indexes_foreign_key_to_protected_branches.rb b/db/migrate/20220613112030_add_namespace_id_indexes_foreign_key_to_protected_branches.rb new file mode 100644 index 00000000000..18a91743746 --- /dev/null +++ b/db/migrate/20220613112030_add_namespace_id_indexes_foreign_key_to_protected_branches.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddNamespaceIdIndexesForeignKeyToProtectedBranches < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_protected_branches_namespace_id' + + def up + add_concurrent_index :protected_branches, :namespace_id, name: INDEX_NAME, where: 'namespace_id IS NOT NULL' + add_concurrent_foreign_key :protected_branches, :namespaces, column: :namespace_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :protected_branches, column: :namespace_id + end + remove_concurrent_index :protected_branches, :namespace_id, name: INDEX_NAME + end +end diff --git a/db/migrate/20220613112031_add_group_or_project_constraint_in_protected_branches.rb b/db/migrate/20220613112031_add_group_or_project_constraint_in_protected_branches.rb new file mode 100644 index 00000000000..b7f20450480 --- /dev/null +++ b/db/migrate/20220613112031_add_group_or_project_constraint_in_protected_branches.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddGroupOrProjectConstraintInProtectedBranches < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + CONSTRAINT_NAME = 'protected_branches_project_id_namespace_id_any_not_null' + + def up + constraint = <<~CONSTRAINT + (project_id IS NULL) <> (namespace_id IS NULL) + CONSTRAINT + add_check_constraint :protected_branches, constraint, CONSTRAINT_NAME + end + + def down + remove_check_constraint :protected_branches, CONSTRAINT_NAME + end +end diff --git a/db/migrate/20220613112032_change_project_id_null_in_protected_branches.rb b/db/migrate/20220613112032_change_project_id_null_in_protected_branches.rb new file mode 100644 index 00000000000..4bf8437d4fb --- /dev/null +++ b/db/migrate/20220613112032_change_project_id_null_in_protected_branches.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class ChangeProjectIdNullInProtectedBranches < Gitlab::Database::Migration[2.0] + enable_lock_retries! + + def up + change_column_null :protected_branches, :project_id, true + end + + def down + change_column_null :protected_branches, :project_id, false + end +end diff --git a/db/migrate/20220721065723_add_issue_branch_template_to_project_settings.rb b/db/migrate/20220721065723_add_issue_branch_template_to_project_settings.rb new file mode 100644 index 00000000000..d65bd2c21e7 --- /dev/null +++ b/db/migrate/20220721065723_add_issue_branch_template_to_project_settings.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIssueBranchTemplateToProjectSettings < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + with_lock_retries do + add_column :project_settings, :issue_branch_template, :text, if_not_exists: true + end + + add_text_limit :project_settings, :issue_branch_template, 255 + end + + def down + remove_column :project_settings, :issue_branch_template, if_exists: true + end +end diff --git a/db/migrate/20220919062640_add_mirror_branch_regex_to_remote_mirrors.rb b/db/migrate/20220919062640_add_mirror_branch_regex_to_remote_mirrors.rb new file mode 100644 index 00000000000..0f27ba9488b --- /dev/null +++ b/db/migrate/20220919062640_add_mirror_branch_regex_to_remote_mirrors.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddMirrorBranchRegexToRemoteMirrors < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + add_column :remote_mirrors, :mirror_branch_regex, :text + add_text_limit :remote_mirrors, :mirror_branch_regex, 255 + end + + def down + remove_text_limit :remote_mirrors, :mirror_branch_regex + remove_column :remote_mirrors, :mirror_branch_regex + end +end diff --git a/db/migrate/20220920135632_add_jira_connect_proxy_url_setting.rb b/db/migrate/20220920135632_add_jira_connect_proxy_url_setting.rb new file mode 100644 index 00000000000..c5842b6c787 --- /dev/null +++ b/db/migrate/20220920135632_add_jira_connect_proxy_url_setting.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddJiraConnectProxyUrlSetting < Gitlab::Database::Migration[2.0] + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20220920135717_add_textlimit_to_jira_connect_proxy_url_setting.rb + def change + add_column :application_settings, :jira_connect_proxy_url, :text + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20220920135717_add_textlimit_to_jira_connect_proxy_url_setting.rb b/db/migrate/20220920135717_add_textlimit_to_jira_connect_proxy_url_setting.rb new file mode 100644 index 00000000000..3a571580e79 --- /dev/null +++ b/db/migrate/20220920135717_add_textlimit_to_jira_connect_proxy_url_setting.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddTextlimitToJiraConnectProxyUrlSetting < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + add_text_limit :application_settings, :jira_connect_proxy_url, 255 + end + + def down + remove_text_limit :application_settings, :jira_connect_proxy_url + end +end diff --git a/db/migrate/20220926023734_add_mirror_branch_regex_to_project_settings.rb b/db/migrate/20220926023734_add_mirror_branch_regex_to_project_settings.rb new file mode 100644 index 00000000000..5032a9ff964 --- /dev/null +++ b/db/migrate/20220926023734_add_mirror_branch_regex_to_project_settings.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class AddMirrorBranchRegexToProjectSettings < Gitlab::Database::Migration[2.0] + enable_lock_retries! + + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20221027124848_add_text_limit_to_project_settings_mirror_branch_regex.rb + def change + add_column :project_settings, :mirror_branch_regex, :text + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20221003151747_create_audit_events_streaming_event_type_filters.rb b/db/migrate/20221003151747_create_audit_events_streaming_event_type_filters.rb new file mode 100644 index 00000000000..c0acbe75d78 --- /dev/null +++ b/db/migrate/20221003151747_create_audit_events_streaming_event_type_filters.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class CreateAuditEventsStreamingEventTypeFilters < Gitlab::Database::Migration[2.0] + UNIQ_INDEX_NAME = 'unique_streaming_event_type_filters_destination_id' + + def change + create_table :audit_events_streaming_event_type_filters do |t| + t.timestamps_with_timezone null: false + t.references :external_audit_event_destination, + null: false, + index: false, + foreign_key: { to_table: 'audit_events_external_audit_event_destinations', on_delete: :cascade } + t.text :audit_event_type, null: false, limit: 255 + + t.index [:external_audit_event_destination_id, :audit_event_type], unique: true, name: UNIQ_INDEX_NAME + end + end +end diff --git a/db/migrate/20221010103207_add_product_analytics_enabled_to_application_settings.rb b/db/migrate/20221010103207_add_product_analytics_enabled_to_application_settings.rb new file mode 100644 index 00000000000..24887e7b9fb --- /dev/null +++ b/db/migrate/20221010103207_add_product_analytics_enabled_to_application_settings.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddProductAnalyticsEnabledToApplicationSettings < Gitlab::Database::Migration[2.0] + def change + add_column :application_settings, :product_analytics_enabled, :boolean, default: false, null: false + end +end diff --git a/db/migrate/20221010184839_add_new_amount_used_to_ci_project_monthly_usages.rb b/db/migrate/20221010184839_add_new_amount_used_to_ci_project_monthly_usages.rb new file mode 100644 index 00000000000..5c77dfe9334 --- /dev/null +++ b/db/migrate/20221010184839_add_new_amount_used_to_ci_project_monthly_usages.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddNewAmountUsedToCiProjectMonthlyUsages < Gitlab::Database::Migration[2.0] + TABLE = :ci_project_monthly_usages + OLD_COLUMN = :amount_used + NEW_COLUMN = :new_amount_used + TRIGGER_NAME = 'sync_projects_amount_used_columns' + + disable_ddl_transaction! + + def up + check_trigger_permissions!(TABLE) + + add_column(TABLE, NEW_COLUMN, :decimal, default: 0.0, precision: 18, scale: 4, null: false, if_not_exists: true) + + install_rename_triggers(TABLE, OLD_COLUMN, NEW_COLUMN, trigger_name: TRIGGER_NAME) + end + + def down + remove_rename_triggers(TABLE, TRIGGER_NAME) + + remove_column(TABLE, NEW_COLUMN) + end +end diff --git a/db/migrate/20221010201815_add_purl_type_to_sbom_components.rb b/db/migrate/20221010201815_add_purl_type_to_sbom_components.rb new file mode 100644 index 00000000000..3ab2aa262b1 --- /dev/null +++ b/db/migrate/20221010201815_add_purl_type_to_sbom_components.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddPurlTypeToSbomComponents < Gitlab::Database::Migration[2.0] + def change + add_column :sbom_components, :purl_type, :smallint + end +end diff --git a/db/migrate/20221010202339_remove_unique_index_on_sbom_components_type_and_name.rb b/db/migrate/20221010202339_remove_unique_index_on_sbom_components_type_and_name.rb new file mode 100644 index 00000000000..fe092232ca6 --- /dev/null +++ b/db/migrate/20221010202339_remove_unique_index_on_sbom_components_type_and_name.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RemoveUniqueIndexOnSbomComponentsTypeAndName < Gitlab::Database::Migration[2.0] + INDEX_NAME = 'index_sbom_components_on_component_type_and_name' + + disable_ddl_transaction! + + def up + remove_concurrent_index_by_name :sbom_components, name: INDEX_NAME + end + + def down + add_concurrent_index :sbom_components, [:component_type, :name], unique: true, name: INDEX_NAME + end +end diff --git a/db/migrate/20221010202408_add_unique_index_on_sbom_components_type_name_and_purl_type.rb b/db/migrate/20221010202408_add_unique_index_on_sbom_components_type_name_and_purl_type.rb new file mode 100644 index 00000000000..5935db7c2c1 --- /dev/null +++ b/db/migrate/20221010202408_add_unique_index_on_sbom_components_type_name_and_purl_type.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddUniqueIndexOnSbomComponentsTypeNameAndPurlType < Gitlab::Database::Migration[2.0] + INDEX_NAME = 'index_sbom_components_on_component_type_name_and_purl_type' + + disable_ddl_transaction! + + def up + add_concurrent_index :sbom_components, [:name, :purl_type, :component_type], unique: true, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :sbom_components, name: INDEX_NAME + end +end diff --git a/db/migrate/20221013103738_add_disable_admin_oauth_scopes.rb b/db/migrate/20221013103738_add_disable_admin_oauth_scopes.rb new file mode 100644 index 00000000000..3406252790d --- /dev/null +++ b/db/migrate/20221013103738_add_disable_admin_oauth_scopes.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddDisableAdminOauthScopes < Gitlab::Database::Migration[2.0] + def change + add_column :application_settings, :disable_admin_oauth_scopes, :boolean, null: false, default: false + end +end diff --git a/db/migrate/20221015000511_add_email_confirmation_setting_to_application_settings.rb b/db/migrate/20221015000511_add_email_confirmation_setting_to_application_settings.rb new file mode 100644 index 00000000000..42fa4c1baf5 --- /dev/null +++ b/db/migrate/20221015000511_add_email_confirmation_setting_to_application_settings.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddEmailConfirmationSettingToApplicationSettings < Gitlab::Database::Migration[2.0] + def change + add_column :application_settings, :email_confirmation_setting, :integer, limit: 2, default: 2 + end +end diff --git a/db/migrate/20221017084208_rename_ci_pipeline_metadata_title.rb b/db/migrate/20221017084208_rename_ci_pipeline_metadata_title.rb new file mode 100644 index 00000000000..3c1a3bbd40a --- /dev/null +++ b/db/migrate/20221017084208_rename_ci_pipeline_metadata_title.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class RenameCiPipelineMetadataTitle < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + rename_column_concurrently :ci_pipeline_metadata, :title, :name, batch_column_name: :pipeline_id + end + + def down + undo_rename_column_concurrently :ci_pipeline_metadata, :title, :name + end +end diff --git a/db/migrate/20221018050323_add_objective_and_keyresult_to_work_item_types.rb b/db/migrate/20221018050323_add_objective_and_keyresult_to_work_item_types.rb new file mode 100644 index 00000000000..51834a3b19b --- /dev/null +++ b/db/migrate/20221018050323_add_objective_and_keyresult_to_work_item_types.rb @@ -0,0 +1,56 @@ +# 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 AddObjectiveAndKeyresultToWorkItemTypes < Gitlab::Database::Migration[2.0] + # Added the following statements as per https://docs.gitlab.com/ee/development/database/migrations_for_multiple_databases.html + disable_ddl_transaction! + restrict_gitlab_migration gitlab_schema: :gitlab_main + + OBJECTIVE_ENUM_VALUE = 5 + KEY_RESULT_ENUM_VALUE = 6 + + class WorkItemType < MigrationRecord + self.inheritance_column = :_type_disabled + self.table_name = 'work_item_types' + end + + def up + # New instances will not run this migration and add this type via fixtures + # checking if record exists mostly because migration specs will run all migrations + # and that will conflict with the preloaded base work item types + objective_work_item = WorkItemType.find_by(base_type: OBJECTIVE_ENUM_VALUE, name: 'Objective', namespace_id: nil) + key_result_work_item = WorkItemType.find_by(base_type: KEY_RESULT_ENUM_VALUE, name: 'Key Result', namespace_id: nil) + + if objective_work_item + say('Objective item record exist, skipping creation') + else + execute( + <<~SQL + INSERT INTO work_item_types (base_type, icon_name, name, created_at, updated_at) VALUES( + #{OBJECTIVE_ENUM_VALUE}, 'issue-type-objective', 'Objective', NOW(), NOW() + ) ON CONFLICT DO NOTHING; + SQL + ) + end + + if key_result_work_item + say('Keyresult item record exist, skipping creation') + else + execute( + <<~SQL + INSERT INTO work_item_types (base_type, icon_name, name, created_at, updated_at) VALUES( + #{KEY_RESULT_ENUM_VALUE}, 'issue-type-keyresult', 'Key Result', NOW(), NOW() + ) ON CONFLICT DO NOTHING; + SQL + ) + end + end + + def down + # There's the remote possibility that issues could already be + # using this issue type, with a tight foreign constraint. + # Therefore we will not attempt to remove any data. + end +end diff --git a/db/migrate/20221018092552_add_file_name_index_to_packages_rpm_repository_files.rb b/db/migrate/20221018092552_add_file_name_index_to_packages_rpm_repository_files.rb new file mode 100644 index 00000000000..fcec3a6800d --- /dev/null +++ b/db/migrate/20221018092552_add_file_name_index_to_packages_rpm_repository_files.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddFileNameIndexToPackagesRpmRepositoryFiles < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + NEW_INDEX_NAME = 'index_packages_rpm_repository_files_on_project_id_and_file_name' + OLD_INDEX_NAME = 'index_packages_rpm_repository_files_on_project_id' + + def up + add_concurrent_index :packages_rpm_repository_files, %i[project_id file_name], name: NEW_INDEX_NAME + remove_concurrent_index :packages_rpm_repository_files, :project_id, name: OLD_INDEX_NAME + end + + def down + add_concurrent_index :packages_rpm_repository_files, :project_id, name: OLD_INDEX_NAME + remove_concurrent_index :packages_rpm_repository_files, %i[project_id file_name], name: NEW_INDEX_NAME + end +end diff --git a/db/migrate/20221018124029_add_consume_after_to_ghost_user_migrations.rb b/db/migrate/20221018124029_add_consume_after_to_ghost_user_migrations.rb new file mode 100644 index 00000000000..148c6516dc9 --- /dev/null +++ b/db/migrate/20221018124029_add_consume_after_to_ghost_user_migrations.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddConsumeAfterToGhostUserMigrations < Gitlab::Database::Migration[2.0] + def change + add_column :ghost_user_migrations, :consume_after, :datetime_with_timezone, null: false, default: -> { 'NOW()' } + end +end diff --git a/db/migrate/20221018124035_add_consume_after_index_to_ghost_user_migrations.rb b/db/migrate/20221018124035_add_consume_after_index_to_ghost_user_migrations.rb new file mode 100644 index 00000000000..543d91b3f33 --- /dev/null +++ b/db/migrate/20221018124035_add_consume_after_index_to_ghost_user_migrations.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddConsumeAfterIndexToGhostUserMigrations < Gitlab::Database::Migration[2.0] + INDEX_NAME = 'index_ghost_user_migrations_on_consume_after_id' + + disable_ddl_transaction! + + def up + add_concurrent_index :ghost_user_migrations, [:consume_after, :id], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :ghost_user_migrations, INDEX_NAME + end +end diff --git a/db/migrate/20221018202524_create_dependency_proxy_blob_states.rb b/db/migrate/20221018202524_create_dependency_proxy_blob_states.rb new file mode 100644 index 00000000000..b042df43f04 --- /dev/null +++ b/db/migrate/20221018202524_create_dependency_proxy_blob_states.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +class CreateDependencyProxyBlobStates < Gitlab::Database::Migration[2.0] + VERIFICATION_STATE_INDEX_NAME = "index_dependency_proxy_blob_states_on_verification_state" + PENDING_VERIFICATION_INDEX_NAME = "index_dependency_proxy_blob_states_pending_verification" + FAILED_VERIFICATION_INDEX_NAME = "index_dependency_proxy_blob_states_failed_verification" + NEEDS_VERIFICATION_INDEX_NAME = "index_dependency_proxy_blob_states_needs_verification" + + enable_lock_retries! + + def up + table_comment = { + owner: 'group::geo', + description: 'Geo-specific table to store the verification state of DependencyProxy::Blob objects' + } + + create_table :dependency_proxy_blob_states, id: false, comment: Gitlab::Json.dump(table_comment) do |t| + t.datetime_with_timezone :verification_started_at + t.datetime_with_timezone :verification_retry_at + t.datetime_with_timezone :verified_at + t.references :dependency_proxy_blob, + primary_key: true, + default: nil, + index: true, + foreign_key: { on_delete: :cascade } + t.integer :verification_state, default: 0, limit: 2, null: false + t.integer :verification_retry_count, default: 0, limit: 2, null: false + t.binary :verification_checksum, using: 'verification_checksum::bytea' + t.text :verification_failure, limit: 255 + + t.index :verification_state, name: VERIFICATION_STATE_INDEX_NAME + t.index :verified_at, + where: "(verification_state = 0)", + order: { verified_at: 'ASC NULLS FIRST' }, + name: PENDING_VERIFICATION_INDEX_NAME + t.index :verification_retry_at, + where: "(verification_state = 3)", + order: { verification_retry_at: 'ASC NULLS FIRST' }, + name: FAILED_VERIFICATION_INDEX_NAME + t.index :verification_state, + where: "(verification_state = 0 OR verification_state = 3)", + name: NEEDS_VERIFICATION_INDEX_NAME + end + end + + def down + drop_table :dependency_proxy_blob_states + end +end diff --git a/db/migrate/20221020124018_add_delete_started_at_to_container_repositories.rb b/db/migrate/20221020124018_add_delete_started_at_to_container_repositories.rb new file mode 100644 index 00000000000..c225d9cc343 --- /dev/null +++ b/db/migrate/20221020124018_add_delete_started_at_to_container_repositories.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddDeleteStartedAtToContainerRepositories < Gitlab::Database::Migration[2.0] + def change + add_column :container_repositories, + :delete_started_at, + :datetime_with_timezone, + null: true, + default: nil + end +end diff --git a/db/migrate/20221021213216_create_namespace_commit_emails.rb b/db/migrate/20221021213216_create_namespace_commit_emails.rb new file mode 100644 index 00000000000..07811bf7b75 --- /dev/null +++ b/db/migrate/20221021213216_create_namespace_commit_emails.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class CreateNamespaceCommitEmails < Gitlab::Database::Migration[2.0] + def change + create_table :namespace_commit_emails do |t| + t.references :user, index: false, null: false, foreign_key: { on_delete: :cascade } + t.references :namespace, null: false + t.references :email, null: false + t.timestamps_with_timezone null: false + + t.index [:user_id, :namespace_id], unique: true + end + end +end diff --git a/db/migrate/20221022213505_add_namespace_commit_emails_namespace_fk.rb b/db/migrate/20221022213505_add_namespace_commit_emails_namespace_fk.rb new file mode 100644 index 00000000000..0c543b03397 --- /dev/null +++ b/db/migrate/20221022213505_add_namespace_commit_emails_namespace_fk.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddNamespaceCommitEmailsNamespaceFk < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :namespace_commit_emails, :namespaces, column: :namespace_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :namespace_commit_emails, column: :namespace_id + end + end +end diff --git a/db/migrate/20221022213521_add_namespace_commit_emails_email_fk.rb b/db/migrate/20221022213521_add_namespace_commit_emails_email_fk.rb new file mode 100644 index 00000000000..9dbde26475c --- /dev/null +++ b/db/migrate/20221022213521_add_namespace_commit_emails_email_fk.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddNamespaceCommitEmailsEmailFk < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :namespace_commit_emails, :emails, column: :email_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :namespace_commit_emails, column: :email_id + end + end +end diff --git a/db/migrate/20221025043930_change_default_value_on_password_last_changed_at_to_user_details.rb b/db/migrate/20221025043930_change_default_value_on_password_last_changed_at_to_user_details.rb new file mode 100644 index 00000000000..49436043a66 --- /dev/null +++ b/db/migrate/20221025043930_change_default_value_on_password_last_changed_at_to_user_details.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class ChangeDefaultValueOnPasswordLastChangedAtToUserDetails < Gitlab::Database::Migration[2.0] + enable_lock_retries! + + # rubocop:disable Migration/RemoveColumn + def change + remove_column :user_details, :password_last_changed_at, :datetime_with_timezone + add_column :user_details, :password_last_changed_at, :datetime_with_timezone, + null: false, default: -> { 'NOW()' }, comment: 'JiHu-specific column' + end + # rubocop:enable Migration/RemoveColumn +end diff --git a/db/migrate/20221025105205_add_status_and_id_index_to_container_repositories.rb b/db/migrate/20221025105205_add_status_and_id_index_to_container_repositories.rb new file mode 100644 index 00000000000..380ffd2e484 --- /dev/null +++ b/db/migrate/20221025105205_add_status_and_id_index_to_container_repositories.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddStatusAndIdIndexToContainerRepositories < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_container_repositories_on_status_and_id' + + def up + add_concurrent_index :container_repositories, [:status, :id], name: INDEX_NAME, where: 'status IS NOT NULL' + end + + def down + remove_concurrent_index :container_repositories, [:status, :id], name: INDEX_NAME + end +end diff --git a/db/migrate/20221025145452_change_vulnerability_feedback_unique_idx.rb b/db/migrate/20221025145452_change_vulnerability_feedback_unique_idx.rb new file mode 100644 index 00000000000..677245e1f50 --- /dev/null +++ b/db/migrate/20221025145452_change_vulnerability_feedback_unique_idx.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class ChangeVulnerabilityFeedbackUniqueIdx < Gitlab::Database::Migration[2.0] + NEW_INDEX_NAME = :index_vulnerability_feedback_on_common_attributes + OLD_INDEX_NAME = :vulnerability_feedback_unique_idx + + disable_ddl_transaction! + + def up + add_concurrent_index :vulnerability_feedback, + %i[project_id category feedback_type project_fingerprint], + name: NEW_INDEX_NAME + + remove_concurrent_index_by_name :vulnerability_feedback, OLD_INDEX_NAME + end + + def down + add_concurrent_index :vulnerability_feedback, + %i[project_id category feedback_type project_fingerprint], + name: OLD_INDEX_NAME, + unique: true + + remove_concurrent_index_by_name :vulnerability_feedback, NEW_INDEX_NAME + end +end diff --git a/db/migrate/20221025150202_add_index_for_finding_uuid_and_feedback_type_on_feedback.rb b/db/migrate/20221025150202_add_index_for_finding_uuid_and_feedback_type_on_feedback.rb new file mode 100644 index 00000000000..f909573937b --- /dev/null +++ b/db/migrate/20221025150202_add_index_for_finding_uuid_and_feedback_type_on_feedback.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddIndexForFindingUuidAndFeedbackTypeOnFeedback < Gitlab::Database::Migration[2.0] + INDEX_NAME = :index_vulnerability_feedback_on_feedback_type_and_finding_uuid + + disable_ddl_transaction! + + def up + add_concurrent_index :vulnerability_feedback, %i[feedback_type finding_uuid], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :vulnerability_feedback, INDEX_NAME + end +end diff --git a/db/migrate/20221027124848_add_text_limit_to_project_settings_mirror_branch_regex.rb b/db/migrate/20221027124848_add_text_limit_to_project_settings_mirror_branch_regex.rb new file mode 100644 index 00000000000..e87eb207204 --- /dev/null +++ b/db/migrate/20221027124848_add_text_limit_to_project_settings_mirror_branch_regex.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddTextLimitToProjectSettingsMirrorBranchRegex < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + add_text_limit :project_settings, :mirror_branch_regex, 255 + end + + def down + remove_text_limit :project_settings, :mirror_branch_regex + end +end diff --git a/db/migrate/20221028015347_add_commit_committer_name_check_to_push_rules.rb b/db/migrate/20221028015347_add_commit_committer_name_check_to_push_rules.rb new file mode 100644 index 00000000000..e9a0887f353 --- /dev/null +++ b/db/migrate/20221028015347_add_commit_committer_name_check_to_push_rules.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddCommitCommitterNameCheckToPushRules < Gitlab::Database::Migration[2.0] + def change + add_column :push_rules, :commit_committer_name_check, :boolean, default: false, null: false + end +end diff --git a/db/migrate/20221028152422_add_finding_data_column_to_security_findings.rb b/db/migrate/20221028152422_add_finding_data_column_to_security_findings.rb new file mode 100644 index 00000000000..a5d3929579b --- /dev/null +++ b/db/migrate/20221028152422_add_finding_data_column_to_security_findings.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddFindingDataColumnToSecurityFindings < Gitlab::Database::Migration[2.0] + enable_lock_retries! + + def up + add_column :security_findings, :finding_data, :jsonb, default: {}, null: false + end + + def down + remove_column :security_findings, :finding_data + end +end diff --git a/db/migrate/20221031102916_add_users_foreign_key_to_projects.rb b/db/migrate/20221031102916_add_users_foreign_key_to_projects.rb new file mode 100644 index 00000000000..fb37b3b37c2 --- /dev/null +++ b/db/migrate/20221031102916_add_users_foreign_key_to_projects.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddUsersForeignKeyToProjects < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :projects, :users, column: :creator_id, on_delete: :nullify, validate: false + end + + def down + with_lock_retries do + remove_foreign_key_if_exists :projects, column: :creator_id + end + end +end diff --git a/db/migrate/20221101032521_add_default_preferred_language_to_application_settings.rb b/db/migrate/20221101032521_add_default_preferred_language_to_application_settings.rb new file mode 100644 index 00000000000..d6941f95465 --- /dev/null +++ b/db/migrate/20221101032521_add_default_preferred_language_to_application_settings.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddDefaultPreferredLanguageToApplicationSettings < Gitlab::Database::Migration[2.0] + def change + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20221101032600_add_text_limit_to_default_preferred_language_on_application_settings.rb + add_column :application_settings, :default_preferred_language, :text, default: 'en', null: false + # rubocop:enable Migration/AddLimitToTextColumns + end +end diff --git a/db/migrate/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings.rb b/db/migrate/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings.rb new file mode 100644 index 00000000000..1f6b9815b93 --- /dev/null +++ b/db/migrate/20221101032600_add_text_limit_to_default_preferred_language_on_application_settings.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddTextLimitToDefaultPreferredLanguageOnApplicationSettings < Gitlab::Database::Migration[2.0] + MAXIMUM_LIMIT = 32 + + disable_ddl_transaction! + + def up + add_text_limit :application_settings, :default_preferred_language, MAXIMUM_LIMIT + end + + def down + remove_text_limit :application_settings, :default_preferred_language + end +end diff --git a/db/migrate/20221101195903_change_email_confirmation_setting_default.rb b/db/migrate/20221101195903_change_email_confirmation_setting_default.rb new file mode 100644 index 00000000000..86c1896f184 --- /dev/null +++ b/db/migrate/20221101195903_change_email_confirmation_setting_default.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class ChangeEmailConfirmationSettingDefault < Gitlab::Database::Migration[2.0] + def change + change_column_default(:application_settings, :email_confirmation_setting, from: 2, to: 0) + end +end diff --git a/db/migrate/20221101201031_set_email_confirmation_setting_from_send_user_confirmation_email_setting.rb b/db/migrate/20221101201031_set_email_confirmation_setting_from_send_user_confirmation_email_setting.rb new file mode 100644 index 00000000000..0c0a0dc1a58 --- /dev/null +++ b/db/migrate/20221101201031_set_email_confirmation_setting_from_send_user_confirmation_email_setting.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class SetEmailConfirmationSettingFromSendUserConfirmationEmailSetting < Gitlab::Database::Migration[2.0] + restrict_gitlab_migration gitlab_schema: :gitlab_main + + class ApplicationSetting < MigrationRecord + self.table_name = 'application_settings' + end + + def up + return unless ApplicationSetting.exists? + return unless ApplicationSetting.last.send_user_confirmation_email + + ApplicationSetting.last.update(email_confirmation_setting: 2) + end + + def down + return unless ApplicationSetting.exists? + + ApplicationSetting.last.update(email_confirmation_setting: 0) + end +end diff --git a/db/migrate/20221102202130_extend_x509_subject_limit.rb b/db/migrate/20221102202130_extend_x509_subject_limit.rb new file mode 100644 index 00000000000..3e6bfc7691c --- /dev/null +++ b/db/migrate/20221102202130_extend_x509_subject_limit.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class ExtendX509SubjectLimit < Gitlab::Database::Migration[2.0] + def up + change_column :x509_certificates, :subject, :string, limit: 512 + end + + def down + change_column :x509_certificates, :subject, :string, limit: 255 + end +end diff --git a/db/migrate/20221102225800_add_max_seats_used_changed_at_index_to_gitlab_subscriptions.rb b/db/migrate/20221102225800_add_max_seats_used_changed_at_index_to_gitlab_subscriptions.rb new file mode 100644 index 00000000000..b5cf8289673 --- /dev/null +++ b/db/migrate/20221102225800_add_max_seats_used_changed_at_index_to_gitlab_subscriptions.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddMaxSeatsUsedChangedAtIndexToGitlabSubscriptions < Gitlab::Database::Migration[2.0] + INDEX_NAME = 'index_gitlab_subscriptions_on_max_seats_used_changed_at' + + disable_ddl_transaction! + + def up + add_concurrent_index :gitlab_subscriptions, [:max_seats_used_changed_at, :namespace_id], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :gitlab_subscriptions, INDEX_NAME + end +end diff --git a/db/migrate/20221103131409_add_partial_index_on_primary_key_of_security_scans.rb b/db/migrate/20221103131409_add_partial_index_on_primary_key_of_security_scans.rb new file mode 100644 index 00000000000..f3defcd38c6 --- /dev/null +++ b/db/migrate/20221103131409_add_partial_index_on_primary_key_of_security_scans.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddPartialIndexOnPrimaryKeyOfSecurityScans < Gitlab::Database::Migration[2.0] + INDEX_NAME = :index_security_scans_on_id_for_non_purged_records + PURGED_STATE = 6 + disable_ddl_transaction! + + def up + add_concurrent_index :security_scans, :id, where: "status != #{PURGED_STATE}", name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :security_scans, INDEX_NAME + end +end diff --git a/db/migrate/20221104061320_add_disable_download_button_into_application_settings.rb b/db/migrate/20221104061320_add_disable_download_button_into_application_settings.rb new file mode 100644 index 00000000000..b93085b8617 --- /dev/null +++ b/db/migrate/20221104061320_add_disable_download_button_into_application_settings.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddDisableDownloadButtonIntoApplicationSettings < Gitlab::Database::Migration[2.0] + def change + add_column :application_settings, :disable_download_button, :boolean, + null: false, default: false, comment: 'JiHu-specific column' + end +end diff --git a/db/migrate/20221104094042_remove_users_foreign_key_to_projects.rb b/db/migrate/20221104094042_remove_users_foreign_key_to_projects.rb new file mode 100644 index 00000000000..19497c80b8e --- /dev/null +++ b/db/migrate/20221104094042_remove_users_foreign_key_to_projects.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RemoveUsersForeignKeyToProjects < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + def up + with_lock_retries do + remove_foreign_key_if_exists :projects, column: :creator_id + end + end + + def down + add_concurrent_foreign_key :projects, :users, column: :creator_id, on_delete: :nullify, validate: false + end +end diff --git a/db/migrate/20221107115247_change_scim_identity_group_id_remove_null.rb b/db/migrate/20221107115247_change_scim_identity_group_id_remove_null.rb new file mode 100644 index 00000000000..f68cab68261 --- /dev/null +++ b/db/migrate/20221107115247_change_scim_identity_group_id_remove_null.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +class ChangeScimIdentityGroupIdRemoveNull < Gitlab::Database::Migration[2.0] + def up + change_column_null :scim_identities, :group_id, true + end + + def down + # There may now be nulls in the table, so we cannot re-add the constraint here. + end +end diff --git a/db/migrate/20221107115413_change_scim_oauth_access_token_group_id_remove_null.rb b/db/migrate/20221107115413_change_scim_oauth_access_token_group_id_remove_null.rb new file mode 100644 index 00000000000..c33e67291a4 --- /dev/null +++ b/db/migrate/20221107115413_change_scim_oauth_access_token_group_id_remove_null.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +class ChangeScimOauthAccessTokenGroupIdRemoveNull < Gitlab::Database::Migration[2.0] + def up + change_column_null :scim_oauth_access_tokens, :group_id, true + end + + def down + # There may now be nulls in the table, so we cannot re-add the constraint here. + end +end diff --git a/db/migrate/20221107183222_create_project_wiki_repositories.rb b/db/migrate/20221107183222_create_project_wiki_repositories.rb new file mode 100644 index 00000000000..770c62604ff --- /dev/null +++ b/db/migrate/20221107183222_create_project_wiki_repositories.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class CreateProjectWikiRepositories < Gitlab::Database::Migration[2.0] + def change + create_table :project_wiki_repositories do |t| + t.references :project, index: { unique: true }, foreign_key: { on_delete: :cascade }, null: false + + t.timestamps_with_timezone null: false + end + end +end diff --git a/db/migrate/20221107184542_add_new_amount_used_to_ci_namespace_monthly_usages.rb b/db/migrate/20221107184542_add_new_amount_used_to_ci_namespace_monthly_usages.rb new file mode 100644 index 00000000000..23a5a716164 --- /dev/null +++ b/db/migrate/20221107184542_add_new_amount_used_to_ci_namespace_monthly_usages.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class AddNewAmountUsedToCiNamespaceMonthlyUsages < Gitlab::Database::Migration[2.0] + TABLE = :ci_namespace_monthly_usages + OLD_COLUMN = :amount_used + NEW_COLUMN = :new_amount_used + TRIGGER_NAME = 'sync_namespaces_amount_used_columns' + + disable_ddl_transaction! + + def up + check_trigger_permissions!(TABLE) + + add_column(TABLE, NEW_COLUMN, :decimal, default: 0.0, precision: 18, scale: 4, null: false, if_not_exists: true) + + install_rename_triggers(TABLE, OLD_COLUMN, NEW_COLUMN, trigger_name: TRIGGER_NAME) + end + + def down + remove_rename_triggers(TABLE, TRIGGER_NAME) + + remove_column(TABLE, NEW_COLUMN) + end +end diff --git a/db/migrate/20221108015813_add_telesign_to_application_settings.rb b/db/migrate/20221108015813_add_telesign_to_application_settings.rb new file mode 100644 index 00000000000..f8e4fb5340b --- /dev/null +++ b/db/migrate/20221108015813_add_telesign_to_application_settings.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddTelesignToApplicationSettings < Gitlab::Database::Migration[2.0] + def change + add_column :application_settings, :encrypted_telesign_customer_xid, :binary + add_column :application_settings, :encrypted_telesign_customer_xid_iv, :binary + + add_column :application_settings, :encrypted_telesign_api_key, :binary + add_column :application_settings, :encrypted_telesign_api_key_iv, :binary + end +end diff --git a/db/migrate/20221108185442_add_project_wiki_repository_id_to_project_wiki_repository_states.rb b/db/migrate/20221108185442_add_project_wiki_repository_id_to_project_wiki_repository_states.rb new file mode 100644 index 00000000000..317f58dac27 --- /dev/null +++ b/db/migrate/20221108185442_add_project_wiki_repository_id_to_project_wiki_repository_states.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class AddProjectWikiRepositoryIdToProjectWikiRepositoryStates < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + INDEX_NAME = 'idx_project_wiki_repository_states_project_wiki_repository_id' + + def up + with_lock_retries do + unless column_exists?(:project_wiki_repository_states, :project_wiki_repository_id) + add_column :project_wiki_repository_states, :project_wiki_repository_id, :bigint + end + end + + add_concurrent_index :project_wiki_repository_states, + :project_wiki_repository_id, + name: INDEX_NAME + + add_concurrent_foreign_key :project_wiki_repository_states, + :project_wiki_repositories, + column: :project_wiki_repository_id, + on_delete: :cascade + end + + def down + with_lock_retries do + if column_exists?(:project_wiki_repository_states, :project_wiki_repository_id) + remove_column :project_wiki_repository_states, :project_wiki_repository_id + end + end + + remove_foreign_key_if_exists :project_wiki_repository_states, column: :project_wiki_repository_id + remove_concurrent_index_by_name :project_wiki_repository_states, name: INDEX_NAME + end +end diff --git a/db/migrate/20221110105857_add_index_for_in_product_marketing_email_metrics.rb b/db/migrate/20221110105857_add_index_for_in_product_marketing_email_metrics.rb new file mode 100644 index 00000000000..f1bc07e4197 --- /dev/null +++ b/db/migrate/20221110105857_add_index_for_in_product_marketing_email_metrics.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddIndexForInProductMarketingEmailMetrics < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_in_product_marketing_emails_on_track_series_id_clicked' + + def up + add_concurrent_index :in_product_marketing_emails, %i[track series id cta_clicked_at], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :in_product_marketing_emails, INDEX_NAME + end +end diff --git a/db/migrate/20221110150942_add_project_id_lower_name_index_remove_old_index.rb b/db/migrate/20221110150942_add_project_id_lower_name_index_remove_old_index.rb new file mode 100644 index 00000000000..dfff2f89610 --- /dev/null +++ b/db/migrate/20221110150942_add_project_id_lower_name_index_remove_old_index.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class AddProjectIdLowerNameIndexRemoveOldIndex < Gitlab::Database::Migration[2.0] + INDEX_NAME = 'index_im_timeline_event_tags_name_project_id' + NEW_INDEX_NAME = 'index_im_timeline_event_tags_on_lower_name_and_project_id' + + disable_ddl_transaction! + + def up + # Add new index + add_concurrent_index :incident_management_timeline_event_tags, 'project_id, LOWER(name)', + unique: true, name: NEW_INDEX_NAME + + # Remove old index + remove_concurrent_index_by_name :incident_management_timeline_event_tags, INDEX_NAME + end + + def down + # Add old index + add_concurrent_index :incident_management_timeline_event_tags, [:project_id, :name], + unique: true, name: INDEX_NAME + + # Remove new index + remove_concurrent_index_by_name :incident_management_timeline_event_tags, NEW_INDEX_NAME + end +end |