mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Trim title before insert/update to database to match the size requirements of database (#32498)
Fix #32489
This commit is contained in:
		| @@ -261,6 +261,7 @@ func CancelPreviousJobs(ctx context.Context, repoID int64, ref, workflowID strin | |||||||
| } | } | ||||||
|  |  | ||||||
| // InsertRun inserts a run | // InsertRun inserts a run | ||||||
|  | // The title will be cut off at 255 characters if it's longer than 255 characters. | ||||||
| func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error { | func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error { | ||||||
| 	ctx, committer, err := db.TxContext(ctx) | 	ctx, committer, err := db.TxContext(ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -273,6 +274,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	run.Index = index | 	run.Index = index | ||||||
|  | 	run.Title, _ = util.SplitStringAtByteN(run.Title, 255) | ||||||
|  |  | ||||||
| 	if err := db.Insert(ctx, run); err != nil { | 	if err := db.Insert(ctx, run); err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -399,6 +401,7 @@ func UpdateRun(ctx context.Context, run *ActionRun, cols ...string) error { | |||||||
| 	if len(cols) > 0 { | 	if len(cols) > 0 { | ||||||
| 		sess.Cols(cols...) | 		sess.Cols(cols...) | ||||||
| 	} | 	} | ||||||
|  | 	run.Title, _ = util.SplitStringAtByteN(run.Title, 255) | ||||||
| 	affected, err := sess.Update(run) | 	affected, err := sess.Update(run) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
| @@ -252,6 +252,7 @@ func GetRunnerByID(ctx context.Context, id int64) (*ActionRunner, error) { | |||||||
| // UpdateRunner updates runner's information. | // UpdateRunner updates runner's information. | ||||||
| func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error { | func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error { | ||||||
| 	e := db.GetEngine(ctx) | 	e := db.GetEngine(ctx) | ||||||
|  | 	r.Name, _ = util.SplitStringAtByteN(r.Name, 255) | ||||||
| 	var err error | 	var err error | ||||||
| 	if len(cols) == 0 { | 	if len(cols) == 0 { | ||||||
| 		_, err = e.ID(r.ID).AllCols().Update(r) | 		_, err = e.ID(r.ID).AllCols().Update(r) | ||||||
| @@ -278,6 +279,7 @@ func CreateRunner(ctx context.Context, t *ActionRunner) error { | |||||||
| 		// Remove OwnerID to avoid confusion; it's not worth returning an error here. | 		// Remove OwnerID to avoid confusion; it's not worth returning an error here. | ||||||
| 		t.OwnerID = 0 | 		t.OwnerID = 0 | ||||||
| 	} | 	} | ||||||
|  | 	t.Name, _ = util.SplitStringAtByteN(t.Name, 255) | ||||||
| 	return db.Insert(ctx, t) | 	return db.Insert(ctx, t) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,6 +12,7 @@ import ( | |||||||
| 	repo_model "code.gitea.io/gitea/models/repo" | 	repo_model "code.gitea.io/gitea/models/repo" | ||||||
| 	user_model "code.gitea.io/gitea/models/user" | 	user_model "code.gitea.io/gitea/models/user" | ||||||
| 	"code.gitea.io/gitea/modules/timeutil" | 	"code.gitea.io/gitea/modules/timeutil" | ||||||
|  | 	"code.gitea.io/gitea/modules/util" | ||||||
| 	webhook_module "code.gitea.io/gitea/modules/webhook" | 	webhook_module "code.gitea.io/gitea/modules/webhook" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -67,6 +68,7 @@ func CreateScheduleTask(ctx context.Context, rows []*ActionSchedule) error { | |||||||
|  |  | ||||||
| 	// Loop through each schedule row | 	// Loop through each schedule row | ||||||
| 	for _, row := range rows { | 	for _, row := range rows { | ||||||
|  | 		row.Title, _ = util.SplitStringAtByteN(row.Title, 255) | ||||||
| 		// Create new schedule row | 		// Create new schedule row | ||||||
| 		if err = db.Insert(ctx, row); err != nil { | 		if err = db.Insert(ctx, row); err != nil { | ||||||
| 			return err | 			return err | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ import ( | |||||||
| 	"code.gitea.io/gitea/modules/references" | 	"code.gitea.io/gitea/modules/references" | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
| 	"code.gitea.io/gitea/modules/timeutil" | 	"code.gitea.io/gitea/modules/timeutil" | ||||||
|  | 	"code.gitea.io/gitea/modules/util" | ||||||
|  |  | ||||||
| 	"xorm.io/builder" | 	"xorm.io/builder" | ||||||
| ) | ) | ||||||
| @@ -138,6 +139,7 @@ func ChangeIssueTitle(ctx context.Context, issue *Issue, doer *user_model.User, | |||||||
| 	} | 	} | ||||||
| 	defer committer.Close() | 	defer committer.Close() | ||||||
|  |  | ||||||
|  | 	issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255) | ||||||
| 	if err = UpdateIssueCols(ctx, issue, "name"); err != nil { | 	if err = UpdateIssueCols(ctx, issue, "name"); err != nil { | ||||||
| 		return fmt.Errorf("updateIssueCols: %w", err) | 		return fmt.Errorf("updateIssueCols: %w", err) | ||||||
| 	} | 	} | ||||||
| @@ -386,6 +388,7 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue | |||||||
| } | } | ||||||
|  |  | ||||||
| // NewIssue creates new issue with labels for repository. | // NewIssue creates new issue with labels for repository. | ||||||
|  | // The title will be cut off at 255 characters if it's longer than 255 characters. | ||||||
| func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, labelIDs []int64, uuids []string) (err error) { | func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, labelIDs []int64, uuids []string) (err error) { | ||||||
| 	ctx, committer, err := db.TxContext(ctx) | 	ctx, committer, err := db.TxContext(ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -399,6 +402,7 @@ func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, la | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	issue.Index = idx | 	issue.Index = idx | ||||||
|  | 	issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255) | ||||||
|  |  | ||||||
| 	if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{ | 	if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{ | ||||||
| 		Repo:        repo, | 		Repo:        repo, | ||||||
|   | |||||||
| @@ -572,6 +572,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *Iss | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	issue.Index = idx | 	issue.Index = idx | ||||||
|  | 	issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255) | ||||||
|  |  | ||||||
| 	if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{ | 	if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{ | ||||||
| 		Repo:        repo, | 		Repo:        repo, | ||||||
|   | |||||||
| @@ -242,6 +242,7 @@ func GetSearchOrderByBySortType(sortType string) db.SearchOrderBy { | |||||||
| } | } | ||||||
|  |  | ||||||
| // NewProject creates a new Project | // NewProject creates a new Project | ||||||
|  | // The title will be cut off at 255 characters if it's longer than 255 characters. | ||||||
| func NewProject(ctx context.Context, p *Project) error { | func NewProject(ctx context.Context, p *Project) error { | ||||||
| 	if !IsTemplateTypeValid(p.TemplateType) { | 	if !IsTemplateTypeValid(p.TemplateType) { | ||||||
| 		p.TemplateType = TemplateTypeNone | 		p.TemplateType = TemplateTypeNone | ||||||
| @@ -255,6 +256,8 @@ func NewProject(ctx context.Context, p *Project) error { | |||||||
| 		return util.NewInvalidArgumentErrorf("project type is not valid") | 		return util.NewInvalidArgumentErrorf("project type is not valid") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	p.Title, _ = util.SplitStringAtByteN(p.Title, 255) | ||||||
|  |  | ||||||
| 	return db.WithTx(ctx, func(ctx context.Context) error { | 	return db.WithTx(ctx, func(ctx context.Context) error { | ||||||
| 		if err := db.Insert(ctx, p); err != nil { | 		if err := db.Insert(ctx, p); err != nil { | ||||||
| 			return err | 			return err | ||||||
| @@ -308,6 +311,7 @@ func UpdateProject(ctx context.Context, p *Project) error { | |||||||
| 		p.CardType = CardTypeTextOnly | 		p.CardType = CardTypeTextOnly | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	p.Title, _ = util.SplitStringAtByteN(p.Title, 255) | ||||||
| 	_, err := db.GetEngine(ctx).ID(p.ID).Cols( | 	_, err := db.GetEngine(ctx).ID(p.ID).Cols( | ||||||
| 		"title", | 		"title", | ||||||
| 		"description", | 		"description", | ||||||
|   | |||||||
| @@ -156,6 +156,7 @@ func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, er | |||||||
|  |  | ||||||
| // UpdateRelease updates all columns of a release | // UpdateRelease updates all columns of a release | ||||||
| func UpdateRelease(ctx context.Context, rel *Release) error { | func UpdateRelease(ctx context.Context, rel *Release) error { | ||||||
|  | 	rel.Title, _ = util.SplitStringAtByteN(rel.Title, 255) | ||||||
| 	_, err := db.GetEngine(ctx).ID(rel.ID).AllCols().Update(rel) | 	_, err := db.GetEngine(ctx).ID(rel.ID).AllCols().Update(rel) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|   | |||||||
| @@ -142,6 +142,7 @@ func CreateRelease(gitRepo *git.Repository, rel *repo_model.Release, attachmentU | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	rel.Title, _ = util.SplitStringAtByteN(rel.Title, 255) | ||||||
| 	rel.LowerTagName = strings.ToLower(rel.TagName) | 	rel.LowerTagName = strings.ToLower(rel.TagName) | ||||||
| 	if err = db.Insert(gitRepo.Ctx, rel); err != nil { | 	if err = db.Insert(gitRepo.Ctx, rel); err != nil { | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user