mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Fix Operator does not exist bug on explore page with ONLY_SHOW_RELEVANT_REPOS (#22454)
There is a mistake in the code for SearchRepositoryCondition where it tests topics as a string. This is incorrect for postgres where topics is cast and stored as json. topics needs to be cast to text for this to work. (For some reason JSON_ARRAY_LENGTH does not work, so I have taken the simplest solution of casting to text and doing a string comparison.) Ref https://github.com/go-gitea/gitea/pull/21962#issuecomment-1379584057 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: delvh <dev.lh@web.de>
This commit is contained in:
		@@ -13,6 +13,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/models/unit"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/container"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
 | 
			
		||||
@@ -496,8 +497,12 @@ func SearchRepositoryCondition(opts *SearchRepoOptions) builder.Cond {
 | 
			
		||||
		// Only show a repo that either has a topic or description.
 | 
			
		||||
		subQueryCond := builder.NewCond()
 | 
			
		||||
 | 
			
		||||
		// Topic checking. Topics is non-null.
 | 
			
		||||
		// Topic checking. Topics are present.
 | 
			
		||||
		if setting.Database.UsePostgreSQL { // postgres stores the topics as json and not as text
 | 
			
		||||
			subQueryCond = subQueryCond.Or(builder.And(builder.NotNull{"topics"}, builder.Neq{"(topics)::text": "[]"}))
 | 
			
		||||
		} else {
 | 
			
		||||
			subQueryCond = subQueryCond.Or(builder.And(builder.Neq{"topics": "null"}, builder.Neq{"topics": "[]"}))
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Description checking. Description not empty.
 | 
			
		||||
		subQueryCond = subQueryCond.Or(builder.Neq{"description": ""})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user