From 2e24e696bf35214a3eacc771df4955842a6b5967 Mon Sep 17 00:00:00 2001 From: Kerri Miller Date: Wed, 20 May 2020 18:29:52 -0700 Subject: [PATCH] Update index to include section --- ...o_index_on_approval_merge_request_rules.rb | 44 +++++++++++++++++++ db/structure.sql | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20200520231123_add_section_to_index_on_approval_merge_request_rules.rb diff --git a/db/migrate/20200520231123_add_section_to_index_on_approval_merge_request_rules.rb b/db/migrate/20200520231123_add_section_to_index_on_approval_merge_request_rules.rb new file mode 100644 index 00000000000000..77b59d8f217422 --- /dev/null +++ b/db/migrate/20200520231123_add_section_to_index_on_approval_merge_request_rules.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class AddSectionToIndexOnApprovalMergeRequestRules < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + LEGACY_INDEX_NAME = "approval_rule_name_index_for_code_owners" + SECTIONAL_INDEX_NAME = "approval_rule_name_index_for_sectional_code_owners" + + def up + unless index_exists_by_name?(:approval_merge_request_rules, SECTIONAL_INDEX_NAME) + add_concurrent_index( + :approval_merge_request_rules, + [:merge_request_id, :code_owner, :name, :section], + unique: true, + where: "(code_owner = true)", + name: SECTIONAL_INDEX_NAME + ) + end + + if index_exists_by_name?(:approval_merge_request_rules, LEGACY_INDEX_NAME) + remove_concurrent_index_by_name :approval_merge_request_rules, LEGACY_INDEX_NAME + end + end + + def down + unless index_exists_by_name?(:approval_merge_request_rules, LEGACY_INDEX_NAME) + add_concurrent_index( + :approval_merge_request_rules, + [:merge_request_id, :code_owner, :name], + unique: false, + where: "(code_owner = true)", + name: LEGACY_INDEX_NAME + ) + end + + if index_exists_by_name?(:approval_merge_request_rules, SECTIONAL_INDEX_NAME) + remove_concurrent_index_by_name :approval_merge_request_rules, SECTIONAL_INDEX_NAME + end + end +end diff --git a/db/structure.sql b/db/structure.sql index 09ee7544c72440..3c877d19a9d97f 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -8975,7 +8975,7 @@ CREATE UNIQUE INDEX any_approver_merge_request_rule_type_unique_index ON public. CREATE UNIQUE INDEX any_approver_project_rule_type_unique_index ON public.approval_project_rules USING btree (project_id) WHERE (rule_type = 3); -CREATE UNIQUE INDEX approval_rule_name_index_for_code_owners ON public.approval_merge_request_rules USING btree (merge_request_id, code_owner, name) WHERE (code_owner = true); +CREATE UNIQUE INDEX approval_rule_name_index_for_code_owners ON public.approval_merge_request_rules USING btree (merge_request_id, code_owner, name, section) WHERE (code_owner = true); CREATE INDEX ci_builds_gitlab_monitor_metrics ON public.ci_builds USING btree (status, created_at, project_id) WHERE ((type)::text = 'Ci::Build'::text); @@ -13932,6 +13932,7 @@ COPY "schema_migrations" (version) FROM STDIN; 20200515155620 20200519115908 20200519171058 +20200520231123 20200525114553 20200525121014 20200526120714 -- GitLab