summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-03-02 13:07:01 +0000
committerGitHub <noreply@github.com>2021-03-02 14:07:01 +0100
commitdef964e57fae6dadf124f07d3b250b0a09a37546 (patch)
tree08e2ef5f93a7c7e6b775991977e8c0ba347c36cd /models
parentf878c8231f9e8a29668e19d27c29eedb1c6dab0e (diff)
downloadgitea-def964e57fae6dadf124f07d3b250b0a09a37546.tar.gz
gitea-def964e57fae6dadf124f07d3b250b0a09a37546.zip
Make searching issues by keyword case insensitive on DB (#14848)
Most DBs apart from SQLite will use a default Collation that is not case insensitive. This means that SearchIssuesByKeyword becomes case sensitive for db indexing - in contrast to the bleve and elastic indexers. This PR simply uses UPPER(...) to do the LIKE - and although it may be more efficient to change collations this would be a non-trivial task. Fix #13663 Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'models')
-rw-r--r--models/issue.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/models/issue.go b/models/issue.go
index c0bafb54e4..58eb229f29 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -1706,17 +1706,18 @@ func GetRepoIssueStats(repoID, uid int64, filterMode int, isPull bool) (numOpen
func SearchIssueIDsByKeyword(kw string, repoIDs []int64, limit, start int) (int64, []int64, error) {
var repoCond = builder.In("repo_id", repoIDs)
var subQuery = builder.Select("id").From("issue").Where(repoCond)
+ kw = strings.ToUpper(kw)
var cond = builder.And(
repoCond,
builder.Or(
- builder.Like{"name", kw},
- builder.Like{"content", kw},
+ builder.Like{"UPPER(name)", kw},
+ builder.Like{"UPPER(content)", kw},
builder.In("id", builder.Select("issue_id").
From("comment").
Where(builder.And(
builder.Eq{"type": CommentTypeComment},
builder.In("issue_id", subQuery),
- builder.Like{"content", kw},
+ builder.Like{"UPPER(content)", kw},
)),
),
),