Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
df0603cf
Commit
df0603cf
authored
Mar 22, 2017
by
mhasbini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
simplify projects, mrs search queries
parent
b26d4d2a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
8 additions
and
11 deletions
+8
-11
app/models/merge_request.rb
app/models/merge_request.rb
+4
-2
app/models/project.rb
app/models/project.rb
+4
-9
No files found.
app/models/merge_request.rb
View file @
df0603cf
...
@@ -155,8 +155,10 @@ class MergeRequest < ActiveRecord::Base
...
@@ -155,8 +155,10 @@ class MergeRequest < ActiveRecord::Base
#
#
# Returns an ActiveRecord::Relation.
# Returns an ActiveRecord::Relation.
def
self
.
in_projects
(
relation
)
def
self
.
in_projects
(
relation
)
source
=
where
(
source_project_id:
relation
).
select
(
:id
)
# unscoping unnecessary conditions that'll be applied
target
=
where
(
target_project_id:
relation
).
select
(
:id
)
# when executing `where("merge_requests.id IN (#{union.to_sql})")`
source
=
unscoped
.
where
(
source_project_id:
relation
).
select
(
:id
)
target
=
unscoped
.
where
(
target_project_id:
relation
).
select
(
:id
)
union
=
Gitlab
::
SQL
::
Union
.
new
([
source
,
target
])
union
=
Gitlab
::
SQL
::
Union
.
new
([
source
,
target
])
where
(
"merge_requests.id IN (
#{
union
.
to_sql
}
)"
)
where
(
"merge_requests.id IN (
#{
union
.
to_sql
}
)"
)
...
...
app/models/project.rb
View file @
df0603cf
...
@@ -313,20 +313,15 @@ class Project < ActiveRecord::Base
...
@@ -313,20 +313,15 @@ class Project < ActiveRecord::Base
ntable
=
Namespace
.
arel_table
ntable
=
Namespace
.
arel_table
pattern
=
"%
#{
query
}
%"
pattern
=
"%
#{
query
}
%"
projects
=
select
(
:id
).
where
(
# unscoping unnecessary conditions that'll be applied
# when executing `where("projects.id IN (#{union.to_sql})")`
projects
=
unscoped
.
select
(
:id
).
where
(
ptable
[
:path
].
matches
(
pattern
).
ptable
[
:path
].
matches
(
pattern
).
or
(
ptable
[
:name
].
matches
(
pattern
)).
or
(
ptable
[
:name
].
matches
(
pattern
)).
or
(
ptable
[
:description
].
matches
(
pattern
))
or
(
ptable
[
:description
].
matches
(
pattern
))
)
)
# We explicitly remove any eager loading clauses as they're:
namespaces
=
unscoped
.
select
(
:id
).
#
# 1. Not needed by this query
# 2. Combined with .joins(:namespace) lead to all columns from the
# projects & namespaces tables being selected, leading to a SQL error
# due to the columns of all UNION'd queries no longer being the same.
namespaces
=
select
(
:id
).
except
(
:includes
).
joins
(
:namespace
).
joins
(
:namespace
).
where
(
ntable
[
:name
].
matches
(
pattern
))
where
(
ntable
[
:name
].
matches
(
pattern
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment