Address outstanding merging issues with cloud branch (#17160)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
c5e1b36dd3
Коммит
d3a003dcb2
@@ -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(`
|
||||
|
||||
Ссылка в новой задаче
Block a user