]> source.dussan.org Git - gitea.git/commitdiff
Make searching issues by keyword case insensitive on DB (#14848)
authorzeripath <art27@cantab.net>
Tue, 2 Mar 2021 13:07:01 +0000 (13:07 +0000)
committerGitHub <noreply@github.com>
Tue, 2 Mar 2021 13:07:01 +0000 (14:07 +0100)
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>
models/issue.go

index c0bafb54e45a54a762779d921262fcfd33c0353c..58eb229f2990ea11fc9e852e00f4f130cef1aab7 100644 (file)
@@ -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},
                                )),
                        ),
                ),