From 1eb51932c461e79322f2c668a78fe546153c16b0 Mon Sep 17 00:00:00 2001 From: Martin Schurz <2090677-schurzi@users.noreply.gitlab.com> Date: Tue, 6 Feb 2024 11:13:07 +0000 Subject: [PATCH] Create index for merge_request_metrics The additional index is needed to support the filter by merge_user in merge request views. Changelog: other --- ...n_merged_by_id_target_project_id_m_r_id.rb | 26 +++++++++++++++++++ db/schema_migrations/20240121161500 | 1 + db/structure.sql | 4 +-- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 db/post_migrate/20240121161500_add_index_merge_request_metrics_on_merged_by_id_target_project_id_m_r_id.rb create mode 100644 db/schema_migrations/20240121161500 diff --git a/db/post_migrate/20240121161500_add_index_merge_request_metrics_on_merged_by_id_target_project_id_m_r_id.rb b/db/post_migrate/20240121161500_add_index_merge_request_metrics_on_merged_by_id_target_project_id_m_r_id.rb new file mode 100644 index 0000000000000..7c14ccb58a2fd --- /dev/null +++ b/db/post_migrate/20240121161500_add_index_merge_request_metrics_on_merged_by_id_target_project_id_m_r_id.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class AddIndexMergeRequestMetricsOnMergedByIdTargetProjectIdMRId < Gitlab::Database::Migration[2.2] + disable_ddl_transaction! + + milestone '16.9' + + TABLE_NAME = :merge_request_metrics + INDEX_NAME = :idx_merge_request_metrics_on_merged_by_project_and_mr + INDEX_COLUMNS = %i[merged_by_id target_project_id merge_request_id] + + DROP_INDEX_NAME = :index_merge_request_metrics_on_merged_by_id + DROP_INDEX_COLUMNS = %i[merged_by_id] + + def up + add_concurrent_index TABLE_NAME, INDEX_COLUMNS, name: INDEX_NAME + # the existing index index_merge_request_metrics_on_merged_by_id is now redundant and should be removed + remove_concurrent_index TABLE_NAME, DROP_INDEX_COLUMNS, name: DROP_INDEX_NAME + end + + def down + # recreate the existing index index_merge_request_metrics_on_merged_by_id + add_concurrent_index TABLE_NAME, DROP_INDEX_COLUMNS, name: DROP_INDEX_NAME + remove_concurrent_index TABLE_NAME, INDEX_COLUMNS, name: INDEX_NAME + end +end diff --git a/db/schema_migrations/20240121161500 b/db/schema_migrations/20240121161500 new file mode 100644 index 0000000000000..baa5befef208d --- /dev/null +++ b/db/schema_migrations/20240121161500 @@ -0,0 +1 @@ +b68d79dc51049d14368f10652b95d8bd4b8a9fa8df093d61a4b53c936103ee7a \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index f46c5208840a6..191f050a815e2 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -32380,6 +32380,8 @@ CREATE INDEX idx_members_created_at_user_id_invite_token ON members USING btree CREATE INDEX idx_members_on_user_and_source_and_source_type_and_member_role ON members USING btree (user_id, source_id, source_type, member_role_id); +CREATE INDEX idx_merge_request_metrics_on_merged_by_project_and_mr ON merge_request_metrics USING btree (merged_by_id, target_project_id, merge_request_id); + CREATE INDEX idx_merge_requests_on_id_and_merge_jid ON merge_requests USING btree (id, merge_jid) WHERE ((merge_jid IS NOT NULL) AND (state_id = 4)); CREATE INDEX idx_merge_requests_on_merged_state ON merge_requests USING btree (id) WHERE (state_id = 3); @@ -34348,8 +34350,6 @@ CREATE INDEX index_merge_request_metrics_on_merge_request_id_and_merged_at ON me CREATE INDEX index_merge_request_metrics_on_merged_at ON merge_request_metrics USING btree (merged_at); -CREATE INDEX index_merge_request_metrics_on_merged_by_id ON merge_request_metrics USING btree (merged_by_id); - CREATE INDEX index_merge_request_metrics_on_pipeline_id ON merge_request_metrics USING btree (pipeline_id); CREATE INDEX index_merge_request_review_llm_summaries_on_mr_diff_id ON merge_request_review_llm_summaries USING btree (merge_request_diff_id); -- GitLab