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 0000000000000000000000000000000000000000..7c14ccb58a2fda434092fa243d5cb5f402ffd2ca --- /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 0000000000000000000000000000000000000000..baa5befef208d875f3cc3aa8c101568257f5bb9e --- /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 f46c5208840a65929a72bbe77fde9a4651c763a4..191f050a815e2d003f646d78b84ac27d9ecb4d82 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);