summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2019-03-13 14:33:55 +0000
committerRobert Speicher <rspeicher@gmail.com>2019-03-13 14:33:55 +0000
commit69ed9ae4d4bc0a64713c9a01d6ac27f9fc303101 (patch)
tree69d9a1886df4ed8dc110a018656d6270c0120004
parent99c49164bb52a04badc2efbb4872159059f1c066 (diff)
parenteba5672077f5d7956fc8f7db583136b3ccb451b5 (diff)
downloadgitlab-ce-69ed9ae4d4bc0a64713c9a01d6ac27f9fc303101.tar.gz
Merge branch 'allow-filtering-labels-by-a-single-character' into 'master'
Allow filtering labels by a single character Closes #58795 See merge request gitlab-org/gitlab-ce!26012
-rw-r--r--app/models/label.rb7
-rw-r--r--changelogs/unreleased/allow-filtering-labels-by-a-single-character.yml5
-rw-r--r--lib/gitlab/sql/pattern.rb6
-rw-r--r--spec/finders/labels_finder_spec.rb6
4 files changed, 23 insertions, 1 deletions
diff --git a/app/models/label.rb b/app/models/label.rb
index 1c3db3eb35d..96bdb7f17c5 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -126,6 +126,13 @@ class Label < ActiveRecord::Base
fuzzy_search(query, [:title, :description])
end
+ # Override Gitlab::SQL::Pattern.min_chars_for_partial_matching as
+ # label queries are never global, and so will not use a trigram
+ # index. That means we can have just one character in the LIKE.
+ def self.min_chars_for_partial_matching
+ 1
+ end
+
def open_issues_count(user = nil)
issues_count(user, state: 'opened')
end
diff --git a/changelogs/unreleased/allow-filtering-labels-by-a-single-character.yml b/changelogs/unreleased/allow-filtering-labels-by-a-single-character.yml
new file mode 100644
index 00000000000..31165bbadb7
--- /dev/null
+++ b/changelogs/unreleased/allow-filtering-labels-by-a-single-character.yml
@@ -0,0 +1,5 @@
+---
+title: Allow filtering labels list by one or two characters
+merge_request: 26012
+author:
+type: changed
diff --git a/lib/gitlab/sql/pattern.rb b/lib/gitlab/sql/pattern.rb
index 07d0acdbae9..b698391c8bd 100644
--- a/lib/gitlab/sql/pattern.rb
+++ b/lib/gitlab/sql/pattern.rb
@@ -23,8 +23,12 @@ module Gitlab
end
end
+ def min_chars_for_partial_matching
+ MIN_CHARS_FOR_PARTIAL_MATCHING
+ end
+
def partial_matching?(query)
- query.length >= MIN_CHARS_FOR_PARTIAL_MATCHING
+ query.length >= min_chars_for_partial_matching
end
# column - The column name to search in.
diff --git a/spec/finders/labels_finder_spec.rb b/spec/finders/labels_finder_spec.rb
index 9abc52aa664..3f060ba0553 100644
--- a/spec/finders/labels_finder_spec.rb
+++ b/spec/finders/labels_finder_spec.rb
@@ -209,6 +209,12 @@ describe LabelsFinder do
expect(finder.execute).to eq [project_label_1]
end
+
+ it 'returns labels matching a single character' do
+ finder = described_class.new(user, search: '(')
+
+ expect(finder.execute).to eq [group_label_1]
+ end
end
context 'filter by subscription' do