What does this MR do?
Display merge requests in the commit that was introduced in page.
Are there points in the code the reviewer needs to double check?
- UX (Following to #2383 (moved))
- SQL performance (Adding index on
merge_request_diff_commits.sha
)
The following is EXPLAIN ANALYSE
output made by commit.merge_requests
.
Data
SELECT COUNT(*) FROM merge_requests; count ------- 1047SELECT COUNT(*) FROM merge_request_diffs; count
1053
SELECT COUNT(*) FROM merge_request_diff_commits; count
48156
Query
SELECT "merge_requests".* FROM "merge_requests" WHERE "merge_requests"."deleted_at" IS NULL AND "merge_requests"."target_project_id" = 1 AND (EXISTS (SELECT 1 FROM "merge_request_diffs" INNER JOIN "merge_request_diff_commits" ON "merge_request_diff_commits"."merge_request_diff_id" = "merge_request_diffs"."id" WHERE (merge_requests.id = merge_request_diffs.merge_request_id) AND "merge_request_diff_commits"."sha" = '\xe7466ad6e6e024abc6d8442a5dfec822403a62d3'))
Query plan
QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Nested Loop (cost=17.02..17.19 rows=1 width=326) (actual time=0.053..0.060 rows=1 loops=1) -> HashAggregate (cost=16.74..16.75 rows=1 width=4) (actual time=0.044..0.044 rows=2 loops=1) Group Key: merge_request_diffs.merge_request_id -> Nested Loop (cost=0.69..16.74 rows=1 width=4) (actual time=0.033..0.039 rows=2 loops=1) -> Index Scan using index_merge_request_diff_commits_on_sha on merge_request_diff_commits (cost=0.41..8.43 rows=1 width=4) (actual time=0.027..0.027 rows=2 loops=1) Index Cond: (sha = '\xe7466ad6e6e024abc6d8442a5dfec822403a62d3'::bytea) -> Index Scan using merge_request_diffs_pkey on merge_request_diffs (cost=0.28..8.29 rows=1 width=8) (actual time=0.005..0.005 rows=1 loops=2) Index Cond: (id = merge_request_diff_commits.merge_request_diff_id) -> Index Scan using merge_requests_pkey on merge_requests (cost=0.28..0.43 rows=1 width=326) (actual time=0.007..0.007 rows=0 loops=2) Index Cond: (id = merge_request_diffs.merge_request_id) Filter: ((deleted_at IS NULL) AND (target_project_id = 1)) Rows Removed by Filter: 0 Planning time: 8.262 ms Execution time: 0.194 ms
Why was this MR needed?
I use git blame to know why lines in source code have been changed.
I can know the commit that the lines changed in, but it is difficult to find merge requests from the commit.
Screenshots (if relevant)
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated -
API support added -
Tests added for this feature/bug - Review
-
Has been reviewed by UX -
Has been reviewed by Frontend -
Has been reviewed by Backend -
Has been reviewed by Database
-
-
Conform by the merge request performance guides -
Conform by the style guides -
Squashed related commits together
What are the relevant issue numbers?
Closes #2383 (moved)