mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Fix non-ASCII search on database (#18437)
Use `ToASCIIUpper` for SQLite database on issues search, this because `UPPER(x)` on SQLite only transforms ASCII letters. Resolves #18429
This commit is contained in:
		@@ -186,3 +186,37 @@ func Test_OptionalBool(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, OptionalBoolTrue, OptionalBoolParse("t"))
 | 
			
		||||
	assert.Equal(t, OptionalBoolTrue, OptionalBoolParse("True"))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Test case for any function which accepts and returns a single string.
 | 
			
		||||
type StringTest struct {
 | 
			
		||||
	in, out string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var upperTests = []StringTest{
 | 
			
		||||
	{"", ""},
 | 
			
		||||
	{"ONLYUPPER", "ONLYUPPER"},
 | 
			
		||||
	{"abc", "ABC"},
 | 
			
		||||
	{"AbC123", "ABC123"},
 | 
			
		||||
	{"azAZ09_", "AZAZ09_"},
 | 
			
		||||
	{"longStrinGwitHmixofsmaLLandcAps", "LONGSTRINGWITHMIXOFSMALLANDCAPS"},
 | 
			
		||||
	{"long\u0250string\u0250with\u0250nonascii\u2C6Fchars", "LONG\u0250STRING\u0250WITH\u0250NONASCII\u2C6FCHARS"},
 | 
			
		||||
	{"\u0250\u0250\u0250\u0250\u0250", "\u0250\u0250\u0250\u0250\u0250"},
 | 
			
		||||
	{"a\u0080\U0010FFFF", "A\u0080\U0010FFFF"},
 | 
			
		||||
	{"lél", "LéL"},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestToUpperASCII(t *testing.T) {
 | 
			
		||||
	for _, tc := range upperTests {
 | 
			
		||||
		assert.Equal(t, ToUpperASCII(tc.in), tc.out)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func BenchmarkToUpper(b *testing.B) {
 | 
			
		||||
	for _, tc := range upperTests {
 | 
			
		||||
		b.Run(tc.in, func(b *testing.B) {
 | 
			
		||||
			for i := 0; i < b.N; i++ {
 | 
			
		||||
				ToUpperASCII(tc.in)
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user