Этот коммит содержится в:
Ben Schumacher
2021-07-12 20:05:36 +02:00
коммит произвёл Claudio Costa
родитель 953eebdef4
Коммит 97ccf0bdf6
472 изменённых файлов: 9126 добавлений и 9132 удалений

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

@@ -179,7 +179,7 @@ func New(settings model.SqlSettings, metrics einterfaces.MetricsInterface) *SqlS
store.initConnection()
if *settings.DriverName == model.DATABASE_DRIVER_POSTGRES {
if *settings.DriverName == model.DatabaseDriverPostgres {
ver, err := store.GetDbVersion(true)
if err != nil {
mlog.Critical("Cannot get DB version.", mlog.Err(err))
@@ -347,14 +347,14 @@ func getDBMap(settings *model.SqlSettings, db *dbsql.DB) *gorp.DbMap {
connectionTimeout := time.Duration(*settings.QueryTimeout) * time.Second
var dbMap *gorp.DbMap
switch *settings.DriverName {
case model.DATABASE_DRIVER_MYSQL:
case model.DatabaseDriverMysql:
dbMap = &gorp.DbMap{
Db: db,
TypeConverter: mattermConverter{},
Dialect: gorp.MySQLDialect{Engine: "InnoDB", Encoding: "UTF8MB4"},
QueryTimeout: connectionTimeout,
}
case model.DATABASE_DRIVER_POSTGRES:
case model.DatabaseDriverPostgres:
dbMap = &gorp.DbMap{
Db: db,
TypeConverter: mattermConverter{},
@@ -383,7 +383,7 @@ func (ss *SqlStore) Context() context.Context {
func (ss *SqlStore) initConnection() {
dataSource := *ss.settings.DataSource
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
// TODO: We ignore the readTimeout datasource parameter for MySQL since QueryTimeout
// covers that already. Ideally we'd like to do this only for the upgrade
// step. To be reviewed in MM-35789.
@@ -437,13 +437,13 @@ func (ss *SqlStore) GetCurrentSchemaVersion() string {
// that can be parsed by callers.
func (ss *SqlStore) GetDbVersion(numerical bool) (string, error) {
var sqlVersion string
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
if numerical {
sqlVersion = `SHOW server_version_num`
} else {
sqlVersion = `SHOW server_version`
}
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
sqlVersion = `SELECT version()`
} else {
return "", errors.New("Not supported driver")
@@ -564,15 +564,15 @@ func (ss *SqlStore) MarkSystemRanUnitTests() {
return
}
unitTests := props[model.SYSTEM_RAN_UNIT_TESTS]
unitTests := props[model.SystemRanUnitTests]
if unitTests == "" {
systemTests := &model.System{Name: model.SYSTEM_RAN_UNIT_TESTS, Value: "1"}
systemTests := &model.System{Name: model.SystemRanUnitTests, Value: "1"}
ss.System().Save(systemTests)
}
}
func (ss *SqlStore) DoesTableExist(tableName string) bool {
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
count, err := ss.GetMaster().SelectInt(
`SELECT count(relname) FROM pg_class WHERE relname=$1`,
strings.ToLower(tableName),
@@ -586,7 +586,7 @@ func (ss *SqlStore) DoesTableExist(tableName string) bool {
return count > 0
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
count, err := ss.GetMaster().SelectInt(
`SELECT
@@ -617,7 +617,7 @@ func (ss *SqlStore) DoesTableExist(tableName string) bool {
}
func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool {
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
count, err := ss.GetMaster().SelectInt(
`SELECT COUNT(0)
FROM pg_attribute
@@ -640,7 +640,7 @@ func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool {
return count > 0
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
count, err := ss.GetMaster().SelectInt(
`SELECT
@@ -674,7 +674,7 @@ 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 {
if ss.DriverName() == model.DatabaseDriverPostgres {
err := ss.GetMaster().SelectOne(&columnInfo,
`SELECT data_type as DataType,
COALESCE(character_maximum_length, 0) as CharMaximumLength
@@ -686,7 +686,7 @@ func (ss *SqlStore) GetColumnInfo(tableName, columnName string) (*ColumnInfo, er
return nil, err
}
return &columnInfo, nil
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
err := ss.GetMaster().SelectOne(&columnInfo,
`SELECT data_type as DataType,
COALESCE(character_maximum_length, 0) as CharMaximumLength
@@ -706,11 +706,11 @@ func (ss *SqlStore) GetColumnInfo(tableName, columnName string) (*ColumnInfo, er
// 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" {
if ss.DriverName() == model.DatabaseDriverPostgres && columnType == "character varying" {
return true
}
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL && columnType == "varchar" {
if ss.DriverName() == model.DatabaseDriverMysql && columnType == "varchar" {
return true
}
@@ -718,7 +718,7 @@ func (ss *SqlStore) IsVarchar(columnType string) bool {
}
func (ss *SqlStore) DoesTriggerExist(triggerName string) bool {
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
count, err := ss.GetMaster().SelectInt(`
SELECT
COUNT(0)
@@ -736,7 +736,7 @@ func (ss *SqlStore) DoesTriggerExist(triggerName string) bool {
return count > 0
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
count, err := ss.GetMaster().SelectInt(`
SELECT
COUNT(0)
@@ -769,7 +769,7 @@ func (ss *SqlStore) CreateColumnIfNotExists(tableName string, columnName string,
return false
}
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
_, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + postgresColType + " DEFAULT '" + defaultValue + "'")
if err != nil {
mlog.Critical("Failed to create column", mlog.Err(err))
@@ -779,7 +779,7 @@ func (ss *SqlStore) CreateColumnIfNotExists(tableName string, columnName string,
return true
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
_, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + mySqlColType + " DEFAULT '" + defaultValue + "'")
if err != nil {
mlog.Critical("Failed to create column", mlog.Err(err))
@@ -803,7 +803,7 @@ func (ss *SqlStore) CreateColumnIfNotExistsNoDefault(tableName string, columnNam
return false
}
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
_, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + postgresColType)
if err != nil {
mlog.Critical("Failed to create column", mlog.Err(err))
@@ -813,7 +813,7 @@ func (ss *SqlStore) CreateColumnIfNotExistsNoDefault(tableName string, columnNam
return true
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
_, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + mySqlColType)
if err != nil {
mlog.Critical("Failed to create column", mlog.Err(err))
@@ -868,9 +868,9 @@ func (ss *SqlStore) RenameColumnIfExists(tableName string, oldColumnName string,
}
var err error
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
_, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " CHANGE " + oldColumnName + " " + newColumnName + " " + colType)
} else if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
} else if ss.DriverName() == model.DatabaseDriverPostgres {
_, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " RENAME COLUMN " + oldColumnName + " TO " + newColumnName)
}
@@ -890,9 +890,9 @@ func (ss *SqlStore) GetMaxLengthOfColumnIfExists(tableName string, columnName st
var result string
var err error
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
result, err = ss.GetMaster().SelectStr("SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.columns WHERE table_name = '" + tableName + "' AND COLUMN_NAME = '" + columnName + "'")
} else if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
} else if ss.DriverName() == model.DatabaseDriverPostgres {
result, err = ss.GetMaster().SelectStr("SELECT character_maximum_length FROM information_schema.columns WHERE table_name = '" + strings.ToLower(tableName) + "' AND column_name = '" + strings.ToLower(columnName) + "'")
}
@@ -911,9 +911,9 @@ func (ss *SqlStore) AlterColumnTypeIfExists(tableName string, columnName string,
}
var err error
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
_, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " MODIFY " + columnName + " " + mySqlColType)
} else if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
} else if ss.DriverName() == model.DatabaseDriverPostgres {
_, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + strings.ToLower(tableName) + " ALTER COLUMN " + strings.ToLower(columnName) + " TYPE " + postgresColType)
}
@@ -948,14 +948,14 @@ func (ss *SqlStore) AlterDefaultIfColumnExists(tableName string, columnName stri
}
var defaultValue string
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
// Some column types in MySQL cannot have defaults, so don't try to configure anything.
if mySqlColDefault == nil {
return true
}
defaultValue = *mySqlColDefault
} else if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
} else if ss.DriverName() == model.DatabaseDriverPostgres {
// Postgres doesn't have the same limitation, but preserve the interface.
if postgresColDefault == nil {
return true
@@ -992,7 +992,7 @@ func (ss *SqlStore) AlterPrimaryKey(tableName string, columnNames []string) bool
var err error
// get the current primary key as a comma separated list of columns
switch ss.DriverName() {
case model.DATABASE_DRIVER_MYSQL:
case model.DatabaseDriverMysql:
query := `
SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index) AS PK
FROM
@@ -1004,7 +1004,7 @@ func (ss *SqlStore) AlterPrimaryKey(tableName string, columnNames []string) bool
GROUP BY
index_name`
currentPrimaryKey, err = ss.GetMaster().SelectStr(query, tableName)
case model.DATABASE_DRIVER_POSTGRES:
case model.DatabaseDriverPostgres:
query := `
SELECT string_agg(a.attname, ',') AS pk
FROM
@@ -1031,9 +1031,9 @@ func (ss *SqlStore) AlterPrimaryKey(tableName string, columnNames []string) bool
}
// alter primary key
var alterQuery string
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
alterQuery = "ALTER TABLE " + tableName + " DROP PRIMARY KEY, ADD PRIMARY KEY (" + primaryKey + ")"
} else if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
} else if ss.DriverName() == model.DatabaseDriverPostgres {
alterQuery = "ALTER TABLE " + tableName + " DROP CONSTRAINT " + strings.ToLower(tableName) + "_pkey, ADD PRIMARY KEY (" + strings.ToLower(primaryKey) + ")"
}
_, err = ss.GetMaster().ExecNoTimeout(alterQuery)
@@ -1076,7 +1076,7 @@ func (ss *SqlStore) createIndexIfNotExists(indexName string, tableName string, c
uniqueStr = "UNIQUE "
}
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
_, errExists := ss.GetMaster().SelectStr("SELECT $1::regclass", indexName)
// It should fail if the index does not exist
if errExists == nil {
@@ -1109,7 +1109,7 @@ func (ss *SqlStore) createIndexIfNotExists(indexName string, tableName string, c
time.Sleep(time.Second)
os.Exit(ExitCreateIndexPostgres)
}
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
count, err := ss.GetMaster().SelectInt("SELECT COUNT(0) AS index_exists FROM information_schema.statistics WHERE TABLE_SCHEMA = DATABASE() and table_name = ? AND index_name = ?", tableName, indexName)
if err != nil {
@@ -1168,7 +1168,7 @@ func (ss *SqlStore) CreateForeignKeyIfNotExists(
func (ss *SqlStore) RemoveIndexIfExists(indexName string, tableName string) bool {
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
_, err := ss.GetMaster().SelectStr("SELECT $1::regclass", indexName)
// It should fail if the index does not exist
if err != nil {
@@ -1183,7 +1183,7 @@ func (ss *SqlStore) RemoveIndexIfExists(indexName string, tableName string) bool
}
return true
} else if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
} else if ss.DriverName() == model.DatabaseDriverMysql {
count, err := ss.GetMaster().SelectInt("SELECT COUNT(0) AS index_exists FROM information_schema.statistics WHERE TABLE_SCHEMA = DATABASE() and table_name = ? AND index_name = ?", tableName, indexName)
if err != nil {
@@ -1443,7 +1443,7 @@ func (ss *SqlStore) DropAllTables() {
func (ss *SqlStore) getQueryBuilder() sq.StatementBuilderType {
builder := sq.StatementBuilder.PlaceholderFormat(sq.Question)
if ss.DriverName() == model.DATABASE_DRIVER_POSTGRES {
if ss.DriverName() == model.DatabaseDriverPostgres {
builder = builder.PlaceholderFormat(sq.Dollar)
}
return builder
@@ -1478,7 +1478,7 @@ func (ss *SqlStore) migrate(direction migrationDirection) error {
conn := setupConnection("migrations", dataSource, ss.settings)
defer conn.Db.Close()
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
driver, err = mysqlmigrate.WithInstance(conn.Db, &mysqlmigrate.Config{})
if err != nil {
return err
@@ -1535,7 +1535,7 @@ func (ss *SqlStore) migrate(direction migrationDirection) error {
func (ss *SqlStore) appendMultipleStatementsFlag(dataSource string) (string, error) {
// We need to tell the MySQL driver that we want to use multiStatements
// in order to make migrations work.
if ss.DriverName() == model.DATABASE_DRIVER_MYSQL {
if ss.DriverName() == model.DatabaseDriverMysql {
config, err := mysql.ParseDSN(dataSource)
if err != nil {
return "", err