Beispiel #1
0
        public void UpdateSchema(IDatabaseAccess db, string tableName, string autoIncrementName,
                                 IDictionary <string, int> oldColumns, IDictionary <string, int> changedColumns,
                                 IDictionary <string, int> addedColumns)
        {
            CommonDatabaseDetails.FixLongToDoubleUpgrade(this, db, tableName, oldColumns, changedColumns,
                                                         RANK_INT64, RANK_DOUBLE, RANK_TEXT_36);

            var operations = changedColumns
                             .Select(entry =>
                                     $"CHANGE {QuoteName(entry.Key)} {QuoteName(entry.Key)} {GetSqlTypeFromRank(entry.Value)}")
                             .ToList();

            operations.AddRange(addedColumns.Select(entry =>
                                                    $"ADD {QuoteName(entry.Key)} {GetSqlTypeFromRank(entry.Value)}"));

            db.Exec("ALTER TABLE " + QuoteName(tableName) + " " + string.Join(", ", operations));
        }
Beispiel #2
0
        public void UpdateSchema(IDatabaseAccess db, string tableName, string autoIncrementName,
                                 IDictionary <string, int> oldColumns, IDictionary <string, int> changedColumns,
                                 IDictionary <string, int> addedColumns)
        {
            CommonDatabaseDetails.FixLongToDoubleUpgrade(this, db, tableName, oldColumns, changedColumns,
                                                         RANK_INT64, RANK_DOUBLE, RANK_TEXT_32);

            tableName = QuoteName(tableName);

            foreach (var entry in changedColumns)
            {
                db.Exec(
                    $"ALTER TABLE {tableName} ALTER COLUMN {QuoteName(entry.Key)} {GetSqlTypeFromRank(entry.Value)}");
            }

            foreach (var entry in addedColumns)
            {
                db.Exec($"ALTER TABLE {tableName} ADD {QuoteName(entry.Key)} {GetSqlTypeFromRank(entry.Value)}");
            }
        }
Beispiel #3
0
        public void UpdateSchema(IDatabaseAccess db, string tableName, string autoIncrementName,
                                 IDictionary <string, int> oldColumns, IDictionary <string, int> changedColumns,
                                 IDictionary <string, int> addedColumns)
        {
            var operations = new List <string>();

            CommonDatabaseDetails.FixLongToDoubleUpgrade(this, db, tableName, oldColumns, changedColumns,
                                                         RANK_INT64, RANK_DOUBLE, RANK_NUMERIC);

            foreach (var entry in changedColumns)
            {
                operations.Add(
                    $"ALTER {QuoteName(entry.Key)} TYPE {GetSqlTypeFromRank(entry.Value)} USING {QuoteName(entry.Key)}::{GetSqlTypeFromRank(entry.Value)}");
            }

            foreach (var entry in addedColumns)
            {
                operations.Add($"ADD {QuoteName(entry.Key)} {GetSqlTypeFromRank(entry.Value)}");
            }

            db.Exec("alter table " + QuoteName(tableName) + " " + string.Join(", ", operations));
        }