Skip to content
代码片段 群组 项目
提交 ca7bf70b 编辑于 作者: Patrick Bajao's avatar Patrick Bajao
浏览文件

Prevent N+1 when diffStats is queried via GraphQL

Preload the `latest_merge_request_diff` when `diffStats` field
is queried by using lookahead.

Changelog: performance
上级 a7716746
No related branches found
No related tags found
无相关合并请求
...@@ -59,7 +59,8 @@ def preloads ...@@ -59,7 +59,8 @@ def preloads
timelogs: [:timelogs], timelogs: [:timelogs],
pipelines: [:merge_request_diffs], # used by `recent_diff_head_shas` to load pipelines pipelines: [:merge_request_diffs], # used by `recent_diff_head_shas` to load pipelines
committers: [merge_request_diff: [:merge_request_diff_commits]], committers: [merge_request_diff: [:merge_request_diff_commits]],
suggested_reviewers: [:predictions] suggested_reviewers: [:predictions],
diff_stats: [:latest_merge_request_diff]
} }
end end
end end
...@@ -396,6 +396,18 @@ def execute_query ...@@ -396,6 +396,18 @@ def execute_query
include_examples 'N+1 query check', skip_cached: false include_examples 'N+1 query check', skip_cached: false
end end
context 'when requesting diffStats' do
let(:requested_fields) { ['diffStats { path }'] }
before do
create_list(:merge_request_diff, 2, merge_request: merge_request_a)
create_list(:merge_request_diff, 2, merge_request: merge_request_b)
create_list(:merge_request_diff, 2, merge_request: merge_request_c)
end
include_examples 'N+1 query check', skip_cached: false
end
end end
describe 'performance' do describe 'performance' do
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册