mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
Upgrade xorm to v1.1.1 (#16339)
This commit is contained in:
3
vendor/xorm.io/xorm/dialects/dialect.go
generated
vendored
3
vendor/xorm.io/xorm/dialects/dialect.go
generated
vendored
@@ -44,6 +44,7 @@ type Dialect interface {
|
||||
URI() *URI
|
||||
SQLType(*schemas.Column) string
|
||||
FormatBytes(b []byte) string
|
||||
Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error)
|
||||
|
||||
IsReserved(string) bool
|
||||
Quoter() schemas.Quoter
|
||||
@@ -217,7 +218,7 @@ func regDrvsNDialects() bool {
|
||||
"sqlite3": {"sqlite3", func() Driver { return &sqlite3Driver{} }, func() Dialect { return &sqlite3{} }},
|
||||
"sqlite": {"sqlite3", func() Driver { return &sqlite3Driver{} }, func() Dialect { return &sqlite3{} }},
|
||||
"oci8": {"oracle", func() Driver { return &oci8Driver{} }, func() Dialect { return &oracle{} }},
|
||||
"goracle": {"oracle", func() Driver { return &goracleDriver{} }, func() Dialect { return &oracle{} }},
|
||||
"godror": {"oracle", func() Driver { return &godrorDriver{} }, func() Dialect { return &oracle{} }},
|
||||
}
|
||||
|
||||
for driverName, v := range providedDrvsNDialects {
|
||||
|
36
vendor/xorm.io/xorm/dialects/filter.go
generated
vendored
36
vendor/xorm.io/xorm/dialects/filter.go
generated
vendored
@@ -23,13 +23,45 @@ type SeqFilter struct {
|
||||
func convertQuestionMark(sql, prefix string, start int) string {
|
||||
var buf strings.Builder
|
||||
var beginSingleQuote bool
|
||||
var isLineComment bool
|
||||
var isComment bool
|
||||
var isMaybeLineComment bool
|
||||
var isMaybeComment bool
|
||||
var isMaybeCommentEnd bool
|
||||
var index = start
|
||||
for _, c := range sql {
|
||||
if !beginSingleQuote && c == '?' {
|
||||
if !beginSingleQuote && !isLineComment && !isComment && c == '?' {
|
||||
buf.WriteString(fmt.Sprintf("%s%v", prefix, index))
|
||||
index++
|
||||
} else {
|
||||
if c == '\'' {
|
||||
if isMaybeLineComment {
|
||||
if c == '-' {
|
||||
isLineComment = true
|
||||
}
|
||||
isMaybeLineComment = false
|
||||
} else if isMaybeComment {
|
||||
if c == '*' {
|
||||
isComment = true
|
||||
}
|
||||
isMaybeComment = false
|
||||
} else if isMaybeCommentEnd {
|
||||
if c == '/' {
|
||||
isComment = false
|
||||
}
|
||||
isMaybeCommentEnd = false
|
||||
} else if isLineComment {
|
||||
if c == '\n' {
|
||||
isLineComment = false
|
||||
}
|
||||
} else if isComment {
|
||||
if c == '*' {
|
||||
isMaybeCommentEnd = true
|
||||
}
|
||||
} else if !beginSingleQuote && c == '-' {
|
||||
isMaybeLineComment = true
|
||||
} else if !beginSingleQuote && c == '/' {
|
||||
isMaybeComment = true
|
||||
} else if c == '\'' {
|
||||
beginSingleQuote = !beginSingleQuote
|
||||
}
|
||||
buf.WriteRune(c)
|
||||
|
29
vendor/xorm.io/xorm/dialects/mssql.go
generated
vendored
29
vendor/xorm.io/xorm/dialects/mssql.go
generated
vendored
@@ -253,6 +253,31 @@ func (db *mssql) SetParams(params map[string]string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (db *mssql) Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error) {
|
||||
rows, err := queryer.QueryContext(ctx,
|
||||
"SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel') AS ProductLevel, SERVERPROPERTY ('edition') AS ProductEdition")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var version, level, edition string
|
||||
if !rows.Next() {
|
||||
return nil, errors.New("unknow version")
|
||||
}
|
||||
|
||||
if err := rows.Scan(&version, &level, &edition); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// MSSQL: Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4 (X64) Nov 30 2018 12:57:58 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Linux (Ubuntu 16.04.5 LTS)
|
||||
return &schemas.Version{
|
||||
Number: version,
|
||||
Level: level,
|
||||
Edition: edition,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (db *mssql) SQLType(c *schemas.Column) string {
|
||||
var res string
|
||||
switch t := c.SQLType.Name; t {
|
||||
@@ -284,7 +309,7 @@ func (db *mssql) SQLType(c *schemas.Column) string {
|
||||
case schemas.TimeStampz:
|
||||
res = "DATETIMEOFFSET"
|
||||
c.Length = 7
|
||||
case schemas.MediumInt, schemas.UnsignedInt:
|
||||
case schemas.MediumInt:
|
||||
res = schemas.Int
|
||||
case schemas.Text, schemas.MediumText, schemas.TinyText, schemas.LongText, schemas.Json:
|
||||
res = db.defaultVarchar + "(MAX)"
|
||||
@@ -296,7 +321,7 @@ func (db *mssql) SQLType(c *schemas.Column) string {
|
||||
case schemas.TinyInt:
|
||||
res = schemas.TinyInt
|
||||
c.Length = 0
|
||||
case schemas.BigInt, schemas.UnsignedBigInt:
|
||||
case schemas.BigInt, schemas.UnsignedBigInt, schemas.UnsignedInt:
|
||||
res = schemas.BigInt
|
||||
c.Length = 0
|
||||
case schemas.NVarchar:
|
||||
|
37
vendor/xorm.io/xorm/dialects/mysql.go
generated
vendored
37
vendor/xorm.io/xorm/dialects/mysql.go
generated
vendored
@@ -188,6 +188,43 @@ func (db *mysql) Init(uri *URI) error {
|
||||
return db.Base.Init(db, uri)
|
||||
}
|
||||
|
||||
func (db *mysql) Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error) {
|
||||
rows, err := queryer.QueryContext(ctx, "SELECT @@VERSION")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var version string
|
||||
if !rows.Next() {
|
||||
return nil, errors.New("Unknow version")
|
||||
}
|
||||
|
||||
if err := rows.Scan(&version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fields := strings.Split(version, "-")
|
||||
if len(fields) == 3 && fields[1] == "TiDB" {
|
||||
// 5.7.25-TiDB-v3.0.3
|
||||
return &schemas.Version{
|
||||
Number: strings.TrimPrefix(fields[2], "v"),
|
||||
Level: fields[0],
|
||||
Edition: fields[1],
|
||||
}, nil
|
||||
}
|
||||
|
||||
var edition string
|
||||
if len(fields) == 2 {
|
||||
edition = fields[1]
|
||||
}
|
||||
|
||||
return &schemas.Version{
|
||||
Number: fields[0],
|
||||
Edition: edition,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (db *mysql) SetParams(params map[string]string) {
|
||||
rowFormat, ok := params["rowFormat"]
|
||||
if ok {
|
||||
|
24
vendor/xorm.io/xorm/dialects/oracle.go
generated
vendored
24
vendor/xorm.io/xorm/dialects/oracle.go
generated
vendored
@@ -515,6 +515,26 @@ func (db *oracle) Init(uri *URI) error {
|
||||
return db.Base.Init(db, uri)
|
||||
}
|
||||
|
||||
func (db *oracle) Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error) {
|
||||
rows, err := queryer.QueryContext(ctx, "select * from v$version where banner like 'Oracle%'")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var version string
|
||||
if !rows.Next() {
|
||||
return nil, errors.New("unknow version")
|
||||
}
|
||||
|
||||
if err := rows.Scan(&version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &schemas.Version{
|
||||
Number: version,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (db *oracle) SQLType(c *schemas.Column) string {
|
||||
var res string
|
||||
switch t := c.SQLType.Name; t {
|
||||
@@ -802,10 +822,10 @@ func (db *oracle) Filters() []Filter {
|
||||
}
|
||||
}
|
||||
|
||||
type goracleDriver struct {
|
||||
type godrorDriver struct {
|
||||
}
|
||||
|
||||
func (cfg *goracleDriver) Parse(driverName, dataSourceName string) (*URI, error) {
|
||||
func (cfg *godrorDriver) Parse(driverName, dataSourceName string) (*URI, error) {
|
||||
db := &URI{DBType: schemas.ORACLE}
|
||||
dsnPattern := regexp.MustCompile(
|
||||
`^(?:(?P<user>.*?)(?::(?P<passwd>.*))?@)?` + // [user[:password]@]
|
||||
|
58
vendor/xorm.io/xorm/dialects/postgres.go
generated
vendored
58
vendor/xorm.io/xorm/dialects/postgres.go
generated
vendored
@@ -788,6 +788,42 @@ func (db *postgres) Init(uri *URI) error {
|
||||
return db.Base.Init(db, uri)
|
||||
}
|
||||
|
||||
func (db *postgres) Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error) {
|
||||
rows, err := queryer.QueryContext(ctx, "SELECT version()")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var version string
|
||||
if !rows.Next() {
|
||||
return nil, errors.New("Unknow version")
|
||||
}
|
||||
|
||||
if err := rows.Scan(&version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Postgres: 9.5.22 on x86_64-pc-linux-gnu (Debian 9.5.22-1.pgdg90+1), compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
|
||||
// CockroachDB CCL v19.2.4 (x86_64-unknown-linux-gnu, built
|
||||
if strings.HasPrefix(version, "CockroachDB") {
|
||||
versions := strings.Split(strings.TrimPrefix(version, "CockroachDB CCL "), " ")
|
||||
return &schemas.Version{
|
||||
Number: strings.TrimPrefix(versions[0], "v"),
|
||||
Edition: "CockroachDB",
|
||||
}, nil
|
||||
} else if strings.HasPrefix(version, "PostgreSQL") {
|
||||
versions := strings.Split(strings.TrimPrefix(version, "PostgreSQL "), " on ")
|
||||
return &schemas.Version{
|
||||
Number: versions[0],
|
||||
Level: versions[1],
|
||||
Edition: "PostgreSQL",
|
||||
}, nil
|
||||
}
|
||||
|
||||
return nil, errors.New("unknow database version")
|
||||
}
|
||||
|
||||
func (db *postgres) getSchema() string {
|
||||
if db.uri.Schema != "" {
|
||||
return db.uri.Schema
|
||||
@@ -838,12 +874,12 @@ func (db *postgres) SQLType(c *schemas.Column) string {
|
||||
case schemas.Bit:
|
||||
res = schemas.Boolean
|
||||
return res
|
||||
case schemas.MediumInt, schemas.Int, schemas.Integer, schemas.UnsignedInt:
|
||||
case schemas.MediumInt, schemas.Int, schemas.Integer:
|
||||
if c.IsAutoIncrement {
|
||||
return schemas.Serial
|
||||
}
|
||||
return schemas.Integer
|
||||
case schemas.BigInt, schemas.UnsignedBigInt:
|
||||
case schemas.BigInt, schemas.UnsignedBigInt, schemas.UnsignedInt:
|
||||
if c.IsAutoIncrement {
|
||||
return schemas.BigSerial
|
||||
}
|
||||
@@ -1008,12 +1044,13 @@ func (db *postgres) IsColumnExist(queryer core.Queryer, ctx context.Context, tab
|
||||
|
||||
func (db *postgres) GetColumns(queryer core.Queryer, ctx context.Context, tableName string) ([]string, map[string]*schemas.Column, error) {
|
||||
args := []interface{}{tableName}
|
||||
s := `SELECT column_name, column_default, is_nullable, data_type, character_maximum_length,
|
||||
s := `SELECT column_name, column_default, is_nullable, data_type, character_maximum_length, description,
|
||||
CASE WHEN p.contype = 'p' THEN true ELSE false END AS primarykey,
|
||||
CASE WHEN p.contype = 'u' THEN true ELSE false END AS uniquekey
|
||||
FROM pg_attribute f
|
||||
JOIN pg_class c ON c.oid = f.attrelid JOIN pg_type t ON t.oid = f.atttypid
|
||||
LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum
|
||||
LEFT JOIN pg_description de ON f.attrelid=de.objoid AND f.attnum=de.objsubid
|
||||
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
|
||||
LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY (p.conkey)
|
||||
LEFT JOIN pg_class AS g ON p.confrelid = g.oid
|
||||
@@ -1042,9 +1079,9 @@ WHERE n.nspname= s.table_schema AND c.relkind = 'r'::char AND c.relname = $1%s A
|
||||
col.Indexes = make(map[string]int)
|
||||
|
||||
var colName, isNullable, dataType string
|
||||
var maxLenStr, colDefault *string
|
||||
var maxLenStr, colDefault, description *string
|
||||
var isPK, isUnique bool
|
||||
err = rows.Scan(&colName, &colDefault, &isNullable, &dataType, &maxLenStr, &isPK, &isUnique)
|
||||
err = rows.Scan(&colName, &colDefault, &isNullable, &dataType, &maxLenStr, &description, &isPK, &isUnique)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -1090,6 +1127,10 @@ WHERE n.nspname= s.table_schema AND c.relkind = 'r'::char AND c.relname = $1%s A
|
||||
col.DefaultIsEmpty = true
|
||||
}
|
||||
|
||||
if description != nil {
|
||||
col.Comment = *description
|
||||
}
|
||||
|
||||
if isPK {
|
||||
col.IsPrimaryKey = true
|
||||
}
|
||||
@@ -1221,7 +1262,8 @@ func (db *postgres) GetIndexes(queryer core.Queryer, ctx context.Context, tableN
|
||||
continue
|
||||
}
|
||||
indexName = strings.Trim(indexName, `" `)
|
||||
if strings.HasSuffix(indexName, "_pkey") {
|
||||
// ignore primary index
|
||||
if strings.HasSuffix(indexName, "_pkey") || strings.EqualFold(indexName, "primary") {
|
||||
continue
|
||||
}
|
||||
if strings.HasPrefix(indexdef, "CREATE UNIQUE INDEX") {
|
||||
@@ -1241,7 +1283,9 @@ func (db *postgres) GetIndexes(queryer core.Queryer, ctx context.Context, tableN
|
||||
|
||||
index := &schemas.Index{Name: indexName, Type: indexType, Cols: make([]string, 0)}
|
||||
for _, colName := range colNames {
|
||||
index.Cols = append(index.Cols, strings.TrimSpace(strings.Replace(colName, `"`, "", -1)))
|
||||
col := strings.TrimSpace(strings.Replace(colName, `"`, "", -1))
|
||||
fields := strings.Split(col, " ")
|
||||
index.Cols = append(index.Cols, fields[0])
|
||||
}
|
||||
index.IsRegular = isRegular
|
||||
indexes[index.Name] = index
|
||||
|
21
vendor/xorm.io/xorm/dialects/sqlite3.go
generated
vendored
21
vendor/xorm.io/xorm/dialects/sqlite3.go
generated
vendored
@@ -160,6 +160,27 @@ func (db *sqlite3) Init(uri *URI) error {
|
||||
return db.Base.Init(db, uri)
|
||||
}
|
||||
|
||||
func (db *sqlite3) Version(ctx context.Context, queryer core.Queryer) (*schemas.Version, error) {
|
||||
rows, err := queryer.QueryContext(ctx, "SELECT sqlite_version()")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var version string
|
||||
if !rows.Next() {
|
||||
return nil, errors.New("Unknow version")
|
||||
}
|
||||
|
||||
if err := rows.Scan(&version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &schemas.Version{
|
||||
Number: version,
|
||||
Edition: "sqlite",
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (db *sqlite3) SetQuotePolicy(quotePolicy QuotePolicy) {
|
||||
switch quotePolicy {
|
||||
case QuotePolicyNone:
|
||||
|
Reference in New Issue
Block a user