From 509f49c8139c81162337f03077534a73251f5ba1 Mon Sep 17 00:00:00 2001 From: Ibrahim Serdar Acikgoz Date: Tue, 18 Jan 2022 09:00:58 +0300 Subject: [PATCH] Remove unused store/sqlstore functions (#19354) --- store/sqlstore/emoji_store.go | 6 - store/sqlstore/group_store.go | 5 - store/sqlstore/store.go | 461 ------------------------ store/sqlstore/store_test.go | 135 ------- store/sqlstore/system_store.go | 3 - store/sqlstore/user_terms_of_service.go | 3 - 6 files changed, 613 deletions(-) diff --git a/store/sqlstore/emoji_store.go b/store/sqlstore/emoji_store.go index 5772a06599..60b54a7f28 100644 --- a/store/sqlstore/emoji_store.go +++ b/store/sqlstore/emoji_store.go @@ -39,12 +39,6 @@ func newSqlEmojiStore(sqlStore *SqlStore, metrics einterfaces.MetricsInterface) return s } -func (es SqlEmojiStore) createIndexesIfNotExists() { - es.CreateIndexIfNotExists("idx_emoji_update_at", "Emoji", "UpdateAt") - es.CreateIndexIfNotExists("idx_emoji_create_at", "Emoji", "CreateAt") - es.CreateIndexIfNotExists("idx_emoji_delete_at", "Emoji", "DeleteAt") -} - func (es SqlEmojiStore) Save(emoji *model.Emoji) (*model.Emoji, error) { emoji.PreSave() if err := emoji.IsValid(); err != nil { diff --git a/store/sqlstore/group_store.go b/store/sqlstore/group_store.go index b9b45688dd..248a997e6f 100644 --- a/store/sqlstore/group_store.go +++ b/store/sqlstore/group_store.go @@ -77,11 +77,6 @@ func newSqlGroupStore(sqlStore *SqlStore) store.GroupStore { return s } -func (s *SqlGroupStore) createIndexesIfNotExists() { - s.CreateColumnIfNotExistsNoDefault("Channels", "GroupConstrained", "tinyint(1)", "boolean") - s.CreateColumnIfNotExistsNoDefault("Teams", "GroupConstrained", "tinyint(1)", "boolean") -} - func (s *SqlGroupStore) Create(group *model.Group) (*model.Group, error) { if group.Id != "" { return nil, store.NewErrInvalidInput("Group", "id", group.Id) diff --git a/store/sqlstore/store.go b/store/sqlstore/store.go index a48c329121..04f11cc096 100644 --- a/store/sqlstore/store.go +++ b/store/sqlstore/store.go @@ -132,13 +132,6 @@ type SqlStore struct { metrics einterfaces.MetricsInterface } -// ColumnInfo holds information about a column. -type ColumnInfo struct { - DataType string - DefaultValue string - CharMaximumLength int -} - func New(settings model.SqlSettings, metrics einterfaces.MetricsInterface) *SqlStore { store := &SqlStore{ rrCounter: 0, @@ -201,25 +194,12 @@ func New(settings model.SqlSettings, metrics einterfaces.MetricsInterface) *SqlS store.stores.scheme = newSqlSchemeStore(store) store.stores.group = newSqlGroupStore(store) store.stores.productNotices = newSqlProductNoticesStore(store) - err = store.GetMaster().CreateTablesIfNotExists() - - if err != nil { - if IsDuplicate(err) { - mlog.Warn("Duplicate key error occurred; assuming table already created and proceeding.", mlog.Err(err)) - } else { - mlog.Fatal("Error creating database tables.", mlog.Err(err)) - } - } err = upgradeDatabase(store, model.CurrentVersion) if err != nil { mlog.Fatal("Failed to upgrade database.", mlog.Err(err)) } - store.stores.system.(*SqlSystemStore).createIndexesIfNotExists() - store.stores.emoji.(*SqlEmojiStore).createIndexesIfNotExists() - store.stores.UserTermsOfService.(SqlUserTermsOfServiceStore).createIndexesIfNotExists() - store.stores.group.(*SqlGroupStore).createIndexesIfNotExists() store.stores.preference.(*SqlPreferenceStore).deleteUnusedFeatures() return store @@ -646,73 +626,6 @@ func (ss *SqlStore) DoesColumnExist(tableName string, columnName string) bool { } } -func (ss *SqlStore) DoesIndexExist(indexName string, tableName string) bool { - if ss.DriverName() == model.DatabaseDriverPostgres { - _, err := ss.GetMaster().SelectStr("SELECT $1::regclass", indexName) - // It should fail if the index does not exist - return err == nil - } 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 { - mlog.Fatal("Failed to check index", mlog.Err(err)) - } - - if count <= 0 { - return false - } - } else { - mlog.Fatal("Failed to check if index exists because of missing driver") - } - - return true -} - -// 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.DatabaseDriverPostgres { - err := ss.GetMaster().SelectOne(&columnInfo, - `SELECT data_type as DataType, COALESCE(column_default, '') as DefaultValue, - 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.DatabaseDriverMysql { - err := ss.GetMaster().SelectOne(&columnInfo, - `SELECT data_type as DataType, COALESCE(column_default, '') as DefaultValue, - 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.DatabaseDriverPostgres && columnType == "character varying" { - return true - } - - if ss.DriverName() == model.DatabaseDriverMysql && columnType == "varchar" { - return true - } - - return false -} - func (ss *SqlStore) DoesTriggerExist(triggerName string) bool { if ss.DriverName() == model.DatabaseDriverPostgres { count, err := ss.GetMaster().SelectInt(` @@ -781,48 +694,6 @@ func (ss *SqlStore) CreateColumnIfNotExists(tableName string, columnName string, } } -func (ss *SqlStore) CreateColumnIfNotExistsNoDefault(tableName string, columnName string, mySqlColType string, postgresColType string) bool { - - if ss.DoesColumnExist(tableName, columnName) { - return false - } - - if ss.DriverName() == model.DatabaseDriverPostgres { - _, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + postgresColType) - if err != nil { - mlog.Fatal("Failed to create column", mlog.Err(err)) - } - - return true - - } else if ss.DriverName() == model.DatabaseDriverMysql { - _, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ADD " + columnName + " " + mySqlColType) - if err != nil { - mlog.Fatal("Failed to create column", mlog.Err(err)) - } - - return true - - } else { - mlog.Fatal("Failed to create column because of missing driver") - return false - } -} - -func (ss *SqlStore) RemoveColumnIfExists(tableName string, columnName string) bool { - - if !ss.DoesColumnExist(tableName, columnName) { - return false - } - - _, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " DROP COLUMN " + columnName) - if err != nil { - mlog.Fatal("Failed to drop column", mlog.Err(err)) - } - - return true -} - func (ss *SqlStore) RemoveTableIfExists(tableName string) bool { if !ss.DoesTableExist(tableName) { return false @@ -836,335 +707,6 @@ func (ss *SqlStore) RemoveTableIfExists(tableName string) bool { return true } -func (ss *SqlStore) RenameColumnIfExists(tableName string, oldColumnName string, newColumnName string, colType string) bool { - if !ss.DoesColumnExist(tableName, oldColumnName) { - return false - } - - var err error - if ss.DriverName() == model.DatabaseDriverMysql { - _, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " CHANGE " + oldColumnName + " " + newColumnName + " " + colType) - } else if ss.DriverName() == model.DatabaseDriverPostgres { - _, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " RENAME COLUMN " + oldColumnName + " TO " + newColumnName) - } - - if err != nil { - mlog.Fatal("Failed to rename column", mlog.Err(err)) - } - - return true -} - -func (ss *SqlStore) GetMaxLengthOfColumnIfExists(tableName string, columnName string) string { - if !ss.DoesColumnExist(tableName, columnName) { - return "" - } - - var result string - var err error - 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.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) + "'") - } - - if err != nil { - mlog.Fatal("Failed to get max length of column", mlog.Err(err)) - } - - return result -} - -func (ss *SqlStore) AlterColumnTypeIfExists(tableName string, columnName string, mySqlColType string, postgresColType string) bool { - if !ss.DoesColumnExist(tableName, columnName) { - return false - } - - var err error - if ss.DriverName() == model.DatabaseDriverMysql { - _, err = ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " MODIFY " + columnName + " " + mySqlColType) - } else if ss.DriverName() == model.DatabaseDriverPostgres { - query := "ALTER TABLE " + strings.ToLower(tableName) + " ALTER COLUMN " + strings.ToLower(columnName) + " TYPE " + postgresColType - // We need to explicitly cast when moving from text based to jsonb datatypes. - if postgresColType == "jsonb" { - query += " USING " + strings.ToLower(columnName) + "::jsonb" - } - _, err = ss.GetMaster().ExecNoTimeout(query) - } - - if err != nil { - msg := "Failed to alter column type." - fields := []mlog.Field{mlog.Err(err)} - if mySqlColType == "JSON" && postgresColType == "jsonb" { - msg += " It is likely you have invalid JSON values in the column. Please fix the values manually and run the migration again." - fields = append(fields, - mlog.String("tableName", tableName), - mlog.String("columnName", columnName), - ) - } - mlog.Fatal(msg, fields...) - } - - return true -} - -func (ss *SqlStore) RemoveDefaultIfColumnExists(tableName, columnName string) bool { - if !ss.DoesColumnExist(tableName, columnName) { - return false - } - - _, err := ss.GetMaster().ExecNoTimeout("ALTER TABLE " + tableName + " ALTER COLUMN " + columnName + " DROP DEFAULT") - if err != nil { - mlog.Fatal("Failed to drop column default", mlog.String("table", tableName), mlog.String("column", columnName), mlog.Err(err)) - return false - } - - return true -} - -func (ss *SqlStore) AlterDefaultIfColumnExists(tableName string, columnName string, mySqlColDefault *string, postgresColDefault *string) bool { - if !ss.DoesColumnExist(tableName, columnName) { - return false - } - - var defaultValue string - 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.DatabaseDriverPostgres { - // Postgres doesn't have the same limitation, but preserve the interface. - if postgresColDefault == nil { - return true - } - - tableName = strings.ToLower(tableName) - columnName = strings.ToLower(columnName) - defaultValue = *postgresColDefault - } else { - mlog.Fatal("Failed to alter column default because of missing driver") - return false - } - - if defaultValue == "" { - defaultValue = "''" - } - - query := "ALTER TABLE " + tableName + " ALTER COLUMN " + columnName + " SET DEFAULT " + defaultValue - _, err := ss.GetMaster().ExecNoTimeout(query) - if err != nil { - mlog.Fatal("Failed to alter column default", mlog.String("table", tableName), mlog.String("column", columnName), mlog.String("default value", defaultValue), mlog.Err(err)) - return false - } - - return true -} - -func (ss *SqlStore) AlterPrimaryKey(tableName string, columnNames []string) bool { - var currentPrimaryKey string - var err error - // get the current primary key as a comma separated list of columns - switch ss.DriverName() { - case model.DatabaseDriverMysql: - query := ` - SELECT GROUP_CONCAT(column_name ORDER BY seq_in_index) AS PK - FROM - information_schema.statistics - WHERE - table_schema = DATABASE() - AND table_name = ? - AND index_name = 'PRIMARY' - GROUP BY - index_name` - currentPrimaryKey, err = ss.GetMaster().SelectStr(query, tableName) - case model.DatabaseDriverPostgres: - query := ` - SELECT string_agg(a.attname, ',') AS pk - FROM - pg_constraint AS c - CROSS JOIN - (SELECT unnest(conkey) FROM pg_constraint WHERE conrelid='` + strings.ToLower(tableName) + `'::REGCLASS AND contype='p') AS cols(colnum) - INNER JOIN - pg_attribute AS a ON a.attrelid = c.conrelid - AND cols.colnum = a.attnum - WHERE - c.contype = 'p' - AND c.conrelid = '` + strings.ToLower(tableName) + `'::REGCLASS` - currentPrimaryKey, err = ss.GetMaster().SelectStr(query) - } - if err != nil { - mlog.Fatal("Failed to get current primary key", mlog.String("table", tableName), mlog.Err(err)) - } - - primaryKey := strings.Join(columnNames, ",") - if strings.EqualFold(currentPrimaryKey, primaryKey) { - return false - } - // alter primary key - var alterQuery string - if ss.DriverName() == model.DatabaseDriverMysql { - alterQuery = "ALTER TABLE " + tableName + " DROP PRIMARY KEY, ADD PRIMARY KEY (" + primaryKey + ")" - } 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) - if err != nil { - mlog.Fatal("Failed to alter primary key", mlog.String("table", tableName), mlog.Err(err)) - } - return true -} - -func (ss *SqlStore) CreateUniqueIndexIfNotExists(indexName string, tableName string, columnName string) bool { - return ss.createIndexIfNotExists(indexName, tableName, []string{columnName}, IndexTypeDefault, true) -} - -func (ss *SqlStore) CreateIndexIfNotExists(indexName string, tableName string, columnName string) bool { - return ss.createIndexIfNotExists(indexName, tableName, []string{columnName}, IndexTypeDefault, false) -} - -func (ss *SqlStore) CreateCompositeIndexIfNotExists(indexName string, tableName string, columnNames []string) bool { - return ss.createIndexIfNotExists(indexName, tableName, columnNames, IndexTypeDefault, false) -} - -func (ss *SqlStore) CreateUniqueCompositeIndexIfNotExists(indexName string, tableName string, columnNames []string) bool { - return ss.createIndexIfNotExists(indexName, tableName, columnNames, IndexTypeDefault, true) -} - -func (ss *SqlStore) CreateFullTextIndexIfNotExists(indexName string, tableName string, columnName string) bool { - return ss.createIndexIfNotExists(indexName, tableName, []string{columnName}, IndexTypeFullText, false) -} - -func (ss *SqlStore) CreateFullTextFuncIndexIfNotExists(indexName string, tableName string, function string) bool { - return ss.createIndexIfNotExists(indexName, tableName, []string{function}, IndexTypeFullTextFunc, false) -} - -func (ss *SqlStore) createIndexIfNotExists(indexName string, tableName string, columnNames []string, indexType string, unique bool) bool { - - uniqueStr := "" - if unique { - uniqueStr = "UNIQUE " - } - - 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 { - return false - } - - query := "" - if indexType == IndexTypeFullText { - if len(columnNames) != 1 { - mlog.Fatal("Unable to create multi column full text index") - } - columnName := columnNames[0] - postgresColumnNames := convertMySQLFullTextColumnsToPostgres(columnName) - query = "CREATE INDEX " + indexName + " ON " + tableName + " USING gin(to_tsvector('english', " + postgresColumnNames + "))" - } else if indexType == IndexTypeFullTextFunc { - if len(columnNames) != 1 { - mlog.Fatal("Unable to create multi column full text index") - } - columnName := columnNames[0] - query = "CREATE INDEX " + indexName + " ON " + tableName + " USING gin(to_tsvector('english', " + columnName + "))" - } else { - query = "CREATE " + uniqueStr + "INDEX " + indexName + " ON " + tableName + " (" + strings.Join(columnNames, ", ") + ")" - } - - _, err := ss.GetMaster().ExecNoTimeout(query) - if err != nil { - mlog.Fatal("Failed to create index", mlog.Err(errExists), mlog.Err(err)) - } - } 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 { - mlog.Fatal("Failed to check index", mlog.Err(err)) - } - - if count > 0 { - return false - } - - fullTextIndex := "" - if indexType == IndexTypeFullText { - fullTextIndex = " FULLTEXT " - } - - _, err = ss.GetMaster().ExecNoTimeout("CREATE " + uniqueStr + fullTextIndex + " INDEX " + indexName + " ON " + tableName + " (" + strings.Join(columnNames, ", ") + ")") - if err != nil { - mlog.Fatal("Failed to create index", mlog.String("table", tableName), mlog.String("index_name", indexName), mlog.Err(err)) - } - } else { - mlog.Fatal("Failed to create index because of missing driver") - } - - return true -} - -func (ss *SqlStore) CreateForeignKeyIfNotExists( - tableName, columnName, refTableName, refColumnName string, - onDeleteCascade bool, -) (err error) { - deleteClause := "" - if onDeleteCascade { - deleteClause = "ON DELETE CASCADE" - } - constraintName := "FK_" + tableName + "_" + refTableName - sQuery := ` - ALTER TABLE ` + tableName + ` - ADD CONSTRAINT ` + constraintName + ` - FOREIGN KEY (` + columnName + `) REFERENCES ` + refTableName + ` (` + refColumnName + `) - ` + deleteClause + `;` - _, err = ss.GetMaster().ExecNoTimeout(sQuery) - if IsConstraintAlreadyExistsError(err) { - err = nil - } - if err != nil { - mlog.Warn("Could not create foreign key: " + err.Error()) - } - return -} - -func (ss *SqlStore) RemoveIndexIfExists(indexName string, tableName string) bool { - - 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 { - return false - } - - _, err = ss.GetMaster().ExecNoTimeout("DROP INDEX " + indexName) - if err != nil { - mlog.Fatal("Failed to remove index", mlog.Err(err)) - } - - return true - } 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 { - mlog.Fatal("Failed to check index", mlog.Err(err)) - } - - if count <= 0 { - return false - } - - _, err = ss.GetMaster().ExecNoTimeout("DROP INDEX " + indexName + " ON " + tableName) - if err != nil { - mlog.Fatal("Failed to remove index", mlog.Err(err)) - } - } else { - mlog.Fatal("Failed to create index because of missing driver") - } - - return true -} - func IsConstraintAlreadyExistsError(err error) bool { switch dbErr := err.(type) { case *pq.Error: @@ -1420,9 +962,6 @@ func (ss *SqlStore) GetLicense() *model.License { } func (ss *SqlStore) migrate(direction migrationDirection) error { - // we need to compute missing migrations (if any) and manually save unnecessary migrations - // to the db_migrations table. So that previous migrations won't get applied - var assetNamesForDriver []string for _, assetName := range migrations.AssetNames() { if strings.HasPrefix(assetName, ss.DriverName()) { diff --git a/store/sqlstore/store_test.go b/store/sqlstore/store_test.go index 0ccc564116..856da8182e 100644 --- a/store/sqlstore/store_test.go +++ b/store/sqlstore/store_test.go @@ -784,138 +784,3 @@ func TestMySQLReadTimeout(t *testing.T) { _, err = store.GetMaster().ExecNoTimeout(`SELECT SLEEP(3)`) require.NoError(t, err) } - -func TestRemoveIndexIfExists(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { - sqlStore := ss.(*SqlStore) - - _, err := sqlStore.GetMaster().ExecNoTimeout(`CREATE INDEX idx_posts_create_at ON Posts (CreateAt)`) - require.Error(t, err) - - ok := sqlStore.RemoveIndexIfExists("idx_posts_create_at", "Posts") - require.True(t, ok) - - ok = sqlStore.RemoveIndexIfExists("idx_posts_create_at", "Posts") - require.False(t, ok) - - _, err = sqlStore.GetMaster().ExecNoTimeout(`CREATE INDEX idx_posts_create_at ON Posts (CreateAt)`) - require.NoError(t, err) - - ok = sqlStore.RemoveIndexIfExists("idx_posts_create_at", "Posts") - require.True(t, ok) - - ok = sqlStore.RemoveIndexIfExists("idx_posts_create_at", "Posts") - require.False(t, ok) - }) -} - -func TestAlterDefaultIfColumnExists(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { - var query string - def := new(string) - sqlStore := ss.(*SqlStore) - - t.Run("non existent table", func(t *testing.T) { - ok := sqlStore.AlterDefaultIfColumnExists("NotExistent", "NotExistent", nil, nil) - require.False(t, ok) - }) - - t.Run("non existent column", func(t *testing.T) { - ok := sqlStore.AlterDefaultIfColumnExists("Posts", "NotExistent", nil, nil) - require.False(t, ok) - }) - - t.Run("empty string", func(t *testing.T) { - ok := sqlStore.AlterDefaultIfColumnExists("Posts", "Id", model.NewString(""), model.NewString("")) - require.True(t, ok) - - if sqlStore.DriverName() == model.DatabaseDriverMysql { - query = `SELECT column_default - FROM information_schema.columns - WHERE table_schema = DATABASE() - AND table_name = 'Posts' - AND column_name = 'Id'` - } else if sqlStore.DriverName() == model.DatabaseDriverPostgres { - query = `SELECT column_default - FROM information_schema.columns - WHERE table_name = 'posts' - AND column_name = 'id'` - } - - err := sqlStore.GetMaster().SelectOne(&def, query) - require.NoError(t, err) - require.NotNil(t, def) - if sqlStore.DriverName() == model.DatabaseDriverMysql { - require.Equal(t, "", *def) - } else if sqlStore.DriverName() == model.DatabaseDriverPostgres { - require.Equal(t, "''::character varying", *def) - } - }) - - t.Run("nil input", func(t *testing.T) { - ok := sqlStore.AlterDefaultIfColumnExists("Posts", "Id", nil, nil) - require.True(t, ok) - - err := sqlStore.GetMaster().SelectOne(&def, query) - require.NoError(t, err) - require.NotNil(t, def) - if sqlStore.DriverName() == model.DatabaseDriverMysql { - require.Equal(t, "", *def) - } else if sqlStore.DriverName() == model.DatabaseDriverPostgres { - require.Equal(t, "''::character varying", *def) - } - }) - - t.Run("remove", func(t *testing.T) { - ok := sqlStore.RemoveDefaultIfColumnExists("Posts", "Id") - require.True(t, ok) - - err := sqlStore.GetMaster().SelectOne(&def, query) - require.NoError(t, err) - require.Nil(t, def) - }) - - t.Run("string default", func(t *testing.T) { - ok := sqlStore.AlterDefaultIfColumnExists("Posts", "Id", model.NewString("'test'"), model.NewString("'test'")) - require.True(t, ok) - - err := sqlStore.GetMaster().SelectOne(&def, query) - require.NoError(t, err) - require.NotNil(t, def) - if sqlStore.DriverName() == model.DatabaseDriverMysql { - require.Equal(t, "test", *def) - } else if sqlStore.DriverName() == model.DatabaseDriverPostgres { - require.Equal(t, "'test'::character varying", *def) - } - - ok = sqlStore.RemoveDefaultIfColumnExists("Posts", "Id") - require.True(t, ok) - }) - - t.Run("int default", func(t *testing.T) { - ok := sqlStore.AlterDefaultIfColumnExists("Posts", "UpdateAt", model.NewString("0"), model.NewString("0")) - require.True(t, ok) - - if sqlStore.DriverName() == model.DatabaseDriverMysql { - query = `SELECT column_default - FROM information_schema.columns - WHERE table_schema = DATABASE() - AND table_name = 'Posts' - AND column_name = 'UpdateAt'` - } else if sqlStore.DriverName() == model.DatabaseDriverPostgres { - query = `SELECT column_default - FROM information_schema.columns - WHERE table_name = 'posts' - AND column_name = 'updateat'` - } - - err := sqlStore.GetMaster().SelectOne(&def, query) - require.NoError(t, err) - require.NotNil(t, def) - require.Equal(t, "0", *def) - - ok = sqlStore.RemoveDefaultIfColumnExists("Posts", "UpdateAt") - require.True(t, ok) - }) - }) -} diff --git a/store/sqlstore/system_store.go b/store/sqlstore/system_store.go index 520ffc6ed3..56edc5bcd9 100644 --- a/store/sqlstore/system_store.go +++ b/store/sqlstore/system_store.go @@ -34,9 +34,6 @@ func newSqlSystemStore(sqlStore *SqlStore) store.SystemStore { return s } -func (s SqlSystemStore) createIndexesIfNotExists() { -} - func (s SqlSystemStore) Save(system *model.System) error { query := "INSERT INTO Systems (Name, Value) VALUES (:Name, :Value)" if _, err := s.GetMasterX().NamedExec(query, system); err != nil { diff --git a/store/sqlstore/user_terms_of_service.go b/store/sqlstore/user_terms_of_service.go index 173c4ea2e3..0e8688113a 100644 --- a/store/sqlstore/user_terms_of_service.go +++ b/store/sqlstore/user_terms_of_service.go @@ -28,9 +28,6 @@ func newSqlUserTermsOfServiceStore(sqlStore *SqlStore) store.UserTermsOfServiceS return s } -func (s SqlUserTermsOfServiceStore) createIndexesIfNotExists() { -} - func (s SqlUserTermsOfServiceStore) GetByUser(userId string) (*model.UserTermsOfService, error) { var userTermsOfService model.UserTermsOfService query := `