Address outstanding merging issues with cloud branch (#17160)

Этот коммит содержится в:
Claudio Costa
2021-03-17 10:39:46 +01:00
коммит произвёл GitHub
родитель c5e1b36dd3
Коммит d3a003dcb2
6 изменённых файлов: 79 добавлений и 4 удалений

Просмотреть файл

@@ -145,6 +145,12 @@ type SqlStore struct {
type TraceOnAdapter struct{}
// ColumnInfo holds information about a column.
type ColumnInfo struct {
DataType string
CharMaximumLength int
}
func (t *TraceOnAdapter) Printf(format string, v ...interface{}) {
originalString := fmt.Sprintf(format, v...)
newString := strings.ReplaceAll(originalString, "\n", " ")
@@ -543,6 +549,52 @@ func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool {
}
}
// GetColumnInfo returns data type information about the given column.
func (ss *SqlStore) GetColumnInfo(tableName, columnName string) (*ColumnInfo, error) {
var columnInfo ColumnInfo
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
err := ss.GetMaster().SelectOne(&columnInfo,
`SELECT data_type as DataType,
COALESCE(character_maximum_length, 0) as CharMaximumLength
FROM information_schema.columns
WHERE lower(table_name) = lower($1)
AND lower(column_name) = lower($2)`,
tableName, columnName)
if err != nil {
return nil, err
}
return &columnInfo, nil
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
err := ss.GetMaster().SelectOne(&columnInfo,
`SELECT data_type as DataType,
COALESCE(character_maximum_length, 0) as CharMaximumLength
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND lower(table_name) = lower(?)
AND lower(column_name) = lower(?)`,
tableName, columnName)
if err != nil {
return nil, err
}
return &columnInfo, nil
}
return nil, errors.New("Driver not supported for this method")
}
// IsVarchar returns true if the column type matches one of the varchar types
// either in MySQL or PostgreSQL.
func (ss *SqlStore) IsVarchar(columnType string) bool {
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES && columnType == "character varying" {
return true
}
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL && columnType == "varchar" {
return true
}
return false
}
func (ss *SqlStore) DoesTriggerExist(triggerName string) bool {
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
count, err := ss.GetMaster().SelectInt(`