From def964e57fae6dadf124f07d3b250b0a09a37546 Mon Sep 17 00:00:00 2001 From: zeripath Date: Tue, 2 Mar 2021 13:07:01 +0000 Subject: [PATCH] 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 --- models/issue.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/models/issue.go b/models/issue.go index c0bafb54e45..58eb229f299 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}, )), ), ),