diff --git a/config/gitlab_loose_foreign_keys.yml b/config/gitlab_loose_foreign_keys.yml index d2477740fbaf4d87e96820d3bd9bb553fc6d2edf..ea501630e774552d7280d841b75ee8d08414901a 100644 --- a/config/gitlab_loose_foreign_keys.yml +++ b/config/gitlab_loose_foreign_keys.yml @@ -10,15 +10,9 @@ application_settings: - table: users column: usage_stats_set_by_user_id on_delete: async_nullify - - table: namespaces - column: instance_administrators_group_id - on_delete: async_nullify - table: projects column: file_template_project_id on_delete: async_nullify - - table: projects - column: instance_administration_project_id - on_delete: async_nullify - table: namespaces column: custom_project_templates_group_id on_delete: async_nullify diff --git a/db/post_migrate/20231127174335_remove_ignored_application_settings_columns.rb b/db/post_migrate/20231127174335_remove_ignored_application_settings_columns.rb new file mode 100644 index 0000000000000000000000000000000000000000..07cabb93d96faef68492cf02c8a52b94b1baf571 --- /dev/null +++ b/db/post_migrate/20231127174335_remove_ignored_application_settings_columns.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class RemoveIgnoredApplicationSettingsColumns < Gitlab::Database::Migration[2.2] + milestone '16.7' + + disable_ddl_transaction! + + PROJECT_INDEX_NAME = 'index_applicationsettings_on_instance_administration_project_id' + GROUP_INDEX_NAME = 'index_application_settings_on_instance_administrators_group_id' + + def up + remove_column(:application_settings, :instance_administration_project_id) + remove_column(:application_settings, :instance_administrators_group_id) + end + + def down + unless column_exists?(:users, :instance_administration_project_id) + add_column(:application_settings, :instance_administration_project_id, :bigint) + end + + unless column_exists?(:users, :instance_administrators_group_id) + add_column(:application_settings, :instance_administrators_group_id, :integer) + end + + add_concurrent_index(:application_settings, :instance_administration_project_id, name: PROJECT_INDEX_NAME) + add_concurrent_index(:application_settings, :instance_administrators_group_id, name: GROUP_INDEX_NAME) + end +end diff --git a/db/schema_migrations/20231127174335 b/db/schema_migrations/20231127174335 new file mode 100644 index 0000000000000000000000000000000000000000..5a47c758a309c6f48e52f8b31d151b400a4d7ee8 --- /dev/null +++ b/db/schema_migrations/20231127174335 @@ -0,0 +1 @@ +a12b08baa00906fad3acd0f3c0490d1fc6880eb627f7c2cc025edf481c8f9e0b \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 60906ed74e74f54fbffb2746e4cf8096459c05d9..b5de92bf170129247a6bc20392cc6c442a2e37d3 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -11894,7 +11894,6 @@ CREATE TABLE application_settings ( raw_blob_request_limit integer DEFAULT 300 NOT NULL, allow_local_requests_from_web_hooks_and_services boolean DEFAULT false NOT NULL, allow_local_requests_from_system_hooks boolean DEFAULT true NOT NULL, - instance_administration_project_id bigint, asset_proxy_enabled boolean DEFAULT false NOT NULL, asset_proxy_url character varying, encrypted_asset_proxy_secret_key text, @@ -11940,7 +11939,6 @@ CREATE TABLE application_settings ( encrypted_slack_app_verification_token_iv character varying(255), force_pages_access_control boolean DEFAULT false NOT NULL, updating_name_disabled_for_users boolean DEFAULT false NOT NULL, - instance_administrators_group_id integer, elasticsearch_indexed_field_length_limit integer DEFAULT 0 NOT NULL, elasticsearch_max_bulk_size_mb smallint DEFAULT 10 NOT NULL, elasticsearch_max_bulk_concurrency smallint DEFAULT 10 NOT NULL, @@ -31716,16 +31714,12 @@ CREATE INDEX index_application_settings_on_custom_project_templates_group_id ON CREATE INDEX index_application_settings_on_file_template_project_id ON application_settings USING btree (file_template_project_id); -CREATE INDEX index_application_settings_on_instance_administrators_group_id ON application_settings USING btree (instance_administrators_group_id); - CREATE UNIQUE INDEX index_application_settings_on_push_rule_id ON application_settings USING btree (push_rule_id); CREATE INDEX index_application_settings_on_usage_stats_set_by_user_id ON application_settings USING btree (usage_stats_set_by_user_id); CREATE INDEX index_application_settings_web_ide_oauth_application_id ON application_settings USING btree (web_ide_oauth_application_id); -CREATE INDEX index_applicationsettings_on_instance_administration_project_id ON application_settings USING btree (instance_administration_project_id); - CREATE INDEX index_approval_group_rules_groups_on_group_id ON approval_group_rules_groups USING btree (group_id); CREATE INDEX index_approval_group_rules_on_scan_result_policy_id ON approval_group_rules USING btree (scan_result_policy_id); diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index 09f39506448862ba6f6600928e5525109d22d66e..92835d21bb6ab4e65a2f417ebd70b53c4cf6be0b 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -10,6 +10,7 @@ let(:columns_name_with_jsonb) { retrieve_columns_name_with_jsonb } IGNORED_INDEXES_ON_FKS = { + application_settings: %w[instance_administration_project_id instance_administrators_group_id], # `search_index_id index_type` is the composite foreign key configured for `search_namespace_index_assignments`, # but in Search::NamespaceIndexAssignment model, only `search_index_id` is used as foreign key and indexed search_namespace_index_assignments: [%w[search_index_id index_type]],