Increase size of the language column in language_stat (#12396)
In #12379 it was discovered that enry v2 has a maximum language length of 34 characters which is larger than the 30 previously provided. This PR updates the language column to 50. Fix #12379
This commit is contained in:
parent
3585bb73ef
commit
502e38c33c
3 changed files with 62 additions and 2 deletions
|
@ -222,6 +222,8 @@ var migrations = []Migration{
|
||||||
NewMigration("recalculate Stars number for all user", recalculateStars),
|
NewMigration("recalculate Stars number for all user", recalculateStars),
|
||||||
// v144 -> v145
|
// v144 -> v145
|
||||||
NewMigration("update Matrix Webhook http method to 'PUT'", updateMatrixWebhookHTTPMethod),
|
NewMigration("update Matrix Webhook http method to 'PUT'", updateMatrixWebhookHTTPMethod),
|
||||||
|
// v145 -> v146
|
||||||
|
NewMigration("Increase Language field to 50 in LanguageStats", increaseLanguageField),
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCurrentDBVersion returns the current db version
|
// GetCurrentDBVersion returns the current db version
|
||||||
|
@ -464,7 +466,6 @@ func dropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
|
||||||
sess.Rollback()
|
sess.Rollback()
|
||||||
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
|
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
default:
|
default:
|
||||||
log.Fatal("Unrecognized DB")
|
log.Fatal("Unrecognized DB")
|
||||||
|
|
59
models/migrations/v145.go
Normal file
59
models/migrations/v145.go
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
// Copyright 2020 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
|
||||||
|
"xorm.io/xorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
func increaseLanguageField(x *xorm.Engine) error {
|
||||||
|
type LanguageStat struct {
|
||||||
|
Language string `xorm:"VARCHAR(50) UNIQUE(s) INDEX NOT NULL"`
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := x.Sync2(new(LanguageStat)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if setting.Database.UseSQLite3 {
|
||||||
|
// SQLite maps VARCHAR to TEXT without size so we're done
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// need to get the correct type for the new column
|
||||||
|
inferredTable, err := x.TableInfo(new(LanguageStat))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
column := inferredTable.GetColumn("language")
|
||||||
|
sqlType := x.Dialect().SQLType(column)
|
||||||
|
|
||||||
|
sess := x.NewSession()
|
||||||
|
defer sess.Close()
|
||||||
|
if err := sess.Begin(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case setting.Database.UseMySQL:
|
||||||
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat MODIFY COLUMN language %s", sqlType)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case setting.Database.UseMSSQL:
|
||||||
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat ALTER COLUMN language %s", sqlType)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case setting.Database.UsePostgreSQL:
|
||||||
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat ALTER COLUMN language TYPE %s", sqlType)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sess.Commit()
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ type LanguageStat struct {
|
||||||
RepoID int64 `xorm:"UNIQUE(s) INDEX NOT NULL"`
|
RepoID int64 `xorm:"UNIQUE(s) INDEX NOT NULL"`
|
||||||
CommitID string
|
CommitID string
|
||||||
IsPrimary bool
|
IsPrimary bool
|
||||||
Language string `xorm:"VARCHAR(30) UNIQUE(s) INDEX NOT NULL"`
|
Language string `xorm:"VARCHAR(50) UNIQUE(s) INDEX NOT NULL"`
|
||||||
Percentage float32 `xorm:"-"`
|
Percentage float32 `xorm:"-"`
|
||||||
Size int64 `xorm:"NOT NULL DEFAULT 0"`
|
Size int64 `xorm:"NOT NULL DEFAULT 0"`
|
||||||
Color string `xorm:"-"`
|
Color string `xorm:"-"`
|
||||||
|
|
Reference in a new issue