mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 18:38:06 -04:00 
			
		
		
		
	Backport #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>
This commit is contained in:
		| @@ -15,6 +15,7 @@ import ( | |||||||
| 	"code.gitea.io/gitea/models/unit" | 	"code.gitea.io/gitea/models/unit" | ||||||
| 	user_model "code.gitea.io/gitea/models/user" | 	user_model "code.gitea.io/gitea/models/user" | ||||||
| 	"code.gitea.io/gitea/modules/container" | 	"code.gitea.io/gitea/modules/container" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	"code.gitea.io/gitea/modules/structs" | 	"code.gitea.io/gitea/modules/structs" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
|  |  | ||||||
| @@ -498,8 +499,12 @@ func SearchRepositoryCondition(opts *SearchRepoOptions) builder.Cond { | |||||||
| 		// Only show a repo that either has a topic or description. | 		// Only show a repo that either has a topic or description. | ||||||
| 		subQueryCond := builder.NewCond() | 		subQueryCond := builder.NewCond() | ||||||
|  |  | ||||||
| 		// Topic checking. Topics is non-null. | 		// Topic checking. Topics are present. | ||||||
| 		subQueryCond = subQueryCond.Or(builder.And(builder.Neq{"topics": "null"}, builder.Neq{"topics": "[]"})) | 		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. | 		// Description checking. Description not empty. | ||||||
| 		subQueryCond = subQueryCond.Or(builder.Neq{"description": ""}) | 		subQueryCond = subQueryCond.Or(builder.Neq{"description": ""}) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user