Commit 7c36265f authored by Dmitry Gruzd's avatar Dmitry Gruzd

Merge branch '322784-avoid-joins-when-searching-mrs' into 'master'

Don't use Elasticsearch join for group/project MR searches

See merge request gitlab-org/gitlab!60249
parents 7b517589 0b0ade4d
---
title: Don't use Elasticsearch join for group/project MR searches
merge_request: 60249
author:
type: performance
......@@ -32,6 +32,31 @@ module Elastic
relation.includes(target_project: [:project_feature])
end
# rubocop: enable CodeReuse/ActiveRecord
private
# Builds an elasticsearch query that will select documents from a
# set of projects for Group and Project searches, taking user access
# rules for merge_requests into account. Relies upon super for Global searches
def project_ids_filter(query_hash, options)
return super if options[:public_and_internal_projects]
current_user = options[:current_user]
scoped_project_ids = scoped_project_ids(current_user, options[:project_ids])
return super if scoped_project_ids == :any
context.name(:project) do
query_hash[:query][:bool][:filter] ||= []
query_hash[:query][:bool][:filter] << {
terms: {
_name: context.name,
target_project_id: filter_ids_by_feature(scoped_project_ids, current_user, 'merge_requests')
}
}
end
query_hash
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment