Example #1
0
 public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     var colSpec = GetColumnSpec(column, options);
       var tbl = column.Table;
       var scriptType = options.IsSet(DbScriptOptions.CompleteColumnSetup) ? DbScriptType.ColumnSetupComplete : DbScriptType.ColumnModify;
       change.AddScript(scriptType, "ALTER TABLE {0} MODIFY COLUMN {1};", tbl.FullName, colSpec);
 }
Example #2
0
        protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options)
        {
            var  typeStr    = column.TypeInfo.DbTypeSpec;
            var  nullable   = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
            var  nullStr    = nullable ? "NULL" : "NOT NULL";
            var  strAutoInc = string.Empty;
            bool isNew      = options.IsSet(DbScriptOptions.NewColumn);

            if (isNew && column.Flags.IsSet(DbColumnFlags.Identity))
            {
                // MySql requires that auto-incr column is supported by a key - either a primary key, or an index
                var strKeyType = column.Flags.IsSet(DbColumnFlags.PrimaryKey) ? "PRIMARY KEY" : "KEY";
                strAutoInc = $"AUTO_INCREMENT, {strKeyType}({column.ColumnNameQuoted})";
            }
            string defaultStr = null;

            //Default constraint can be set only on new columns
            if (!string.IsNullOrWhiteSpace(column.DefaultExpression) && options.IsSet(DbScriptOptions.NewColumn))
            {
                defaultStr = "DEFAULT " + column.DefaultExpression;
            }
            var spec = $" {column.ColumnNameQuoted} {typeStr} {nullStr} {strAutoInc}";

            return(spec);
        }
Example #3
0
 //ALTER TABLE employees ALTER COLUMN [employee_name] nvarchar(100) Null;
 public virtual void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     var scriptType = options.IsSet(DbScriptOptions.CompleteColumnSetup) ? DbScriptType.ColumnSetupComplete : DbScriptType.ColumnModify;
       if(ShouldResetNullsToDefault(column)) {
     BuildColumnSetDefaultValuesSql(change, column);
     scriptType = DbScriptType.ColumnSetupComplete;
       }
       var colSpec = GetColumnSpec(column);
       change.AddScript(scriptType,
     "ALTER TABLE {0} ALTER COLUMN {1};", column.Table.FullName, colSpec);
 }
Example #4
0
 public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     //SqlCe does not allow any modification of 'ntext'/memo columns
       var dbType = column.TypeInfo.VendorDbType.DbType;
       bool isNText = column.TypeInfo.Size < 0 && (dbType == DbType.String || dbType == DbType.Binary);
       if(isNText) {
     change.NotSupported("Modifying ntext column not supported in SqlCE. Column: {0}.{1}", column.Table.TableName, column.ColumnName);
     return;
       }
       base.BuildColumnModifySql(change, column, options);
 }
Example #5
0
 public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     if(ShouldResetNullsToDefault(column))
     BuildColumnSetDefaultValuesSql(change, column);
       // In Pg you modify column one aspect at a time; setting TYPE and Nullable requires 2 calls
       change.AddScript(DbScriptType.ColumnModify, "ALTER TABLE {0} ALTER COLUMN \"{1}\" TYPE {2};",
     column.Table.FullName, column.ColumnName, column.TypeInfo.SqlTypeSpec);
       var nullStr = column.Flags.IsSet(DbColumnFlags.Nullable) ? "DROP NOT NULL" : "SET NOT NULL";
       change.AddScript(DbScriptType.ColumnSetupComplete, "ALTER TABLE {0} ALTER COLUMN \"{1}\" {2};",
     column.Table.FullName, column.ColumnName, nullStr);
 }
Example #6
0
        protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            // See https://www.sqlite.org/autoinc.html
            // auto-inc columns is always INT64, but s
            if (column.Flags.IsSet(DbColumnFlags.Identity))
            {
                return(column.ColumnName + " INTEGER PRIMARY KEY NOT NULL"); //
            }
            var spec = base.GetColumnSpec(column, options);

            return(spec);
        }
Example #7
0
        protected virtual string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            var    typeStr    = column.TypeInfo.DbTypeSpec;
            var    nullable   = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
            var    nullStr    = nullable ? "NULL" : "NOT NULL";
            string defaultStr = null;

            if (!string.IsNullOrWhiteSpace(column.DefaultExpression))
            {
                defaultStr = "DEFAULT " + column.DefaultExpression;
            }
            var spec = $" {column.ColumnNameQuoted} {typeStr} {defaultStr} {nullStr}";

            return(spec);
        }
Example #8
0
        protected virtual string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            var    typeStr    = column.TypeInfo.SqlTypeSpec;
            var    nullable   = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
            var    nullStr    = nullable ? "NULL" : "NOT NULL";
            string defaultStr = null;

            if (!string.IsNullOrWhiteSpace(column.DefaultExpression))
            {
                defaultStr = "DEFAULT " + column.DefaultExpression;
            }
            var spec = string.Format(" \"{0}\" {1} {2} {3}", column.ColumnName, typeStr, defaultStr, nullStr);

            return(spec);
        }
Example #9
0
        }//method

        protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options)
        {
            if (column.Flags.IsSet(DbColumnFlags.Identity))
            {
                if (column.TypeInfo.SqlTypeSpec == "bigint")
                {
                    return(string.Format(@"""{0}"" BIGSERIAL ", column.ColumnName));
                }
                else
                {
                    return(string.Format(@"""{0}"" SERIAL ", column.ColumnName));
                }
            }
            return(base.GetColumnSpec(column, options));
        }
Example #10
0
        }//method

        protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options)
        {
            if (column.Flags.IsSet(DbColumnFlags.Identity))
            {
                if (column.TypeInfo.DbTypeSpec == "bigint")
                {
                    return($"{column.ColumnNameQuoted} BIGSERIAL ");
                }
                else
                {
                    return($"{column.ColumnNameQuoted} SERIAL ");
                }
            }
            return(base.GetColumnSpec(column, options));
        }
Example #11
0
        public override void BuildColumnAddSql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options)
        {
            var colSpec = GetColumnSpec(column, options);
              if(!column.Flags.IsSet(DbColumnFlags.Nullable)) {
            var dft = column.TypeInfo.VendorDbType.DefaultColumnInit;
            if (string.IsNullOrWhiteSpace(dft))
              dft = column.TypeInfo.ToLiteral(new byte[] {0});
            colSpec += " DEFAULT " + dft;

              }
              //workaround for unit test with renaming table - ignore rename, use old table
              var tbl = column.Table;
              if (tbl.Peer != null)
            tbl = tbl.Peer; //use old table name
              change.AddScript(DbScriptType.ColumnAdd, "ALTER TABLE {0} ADD {1};", tbl.FullName, colSpec);
        }
Example #12
0
 protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     var typeStr = column.TypeInfo.SqlTypeSpec;
       var nullable = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
       var nullStr = nullable ? "NULL" : "NOT NULL";
       var idStr = string.Empty;
       bool isNew = column.Peer == null;
       if(isNew && column.Flags.IsSet(DbColumnFlags.Identity)) {
     idStr = "IDENTITY(1,1)";
       }
       string defaultStr = null;
       //Default constraint can be set only on new columns in SQL server
       if(!string.IsNullOrWhiteSpace(column.DefaultExpression) && isNew)
     defaultStr = "DEFAULT " + column.DefaultExpression;
       var spec = string.Format(" \"{0}\" {1} {2} {3} {4}", column.ColumnName, typeStr, idStr, defaultStr, nullStr);
       return spec;
 }
Example #13
0
 protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options)
 {
     var typeStr = column.TypeInfo.SqlTypeSpec;
       var nullable = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
       var nullStr = nullable ? "NULL" : "NOT NULL";
       var strAutoInc = string.Empty;
       bool isNew = column.Peer == null;
       if(isNew && column.Flags.IsSet(DbColumnFlags.Identity)) {
     // MySql requires that auto-incr column is supported by a key - either a primary key, or an index
     var strKeyType = column.Flags.IsSet(DbColumnFlags.PrimaryKey) ? "PRIMARY KEY" : "KEY";
     strAutoInc = string.Format("AUTO_INCREMENT, {0}(\"{1}\")", strKeyType, column.ColumnName);
       }
       string defaultStr = null;
       //Default constraint can be set only on new columns
       if(!string.IsNullOrWhiteSpace(column.DefaultExpression) && options.IsSet(DbScriptOptions.NewColumn))
     defaultStr = "DEFAULT " + column.DefaultExpression;
       var spec = string.Format(@" ""{0}"" {1} {2} {3}", column.ColumnName, typeStr, nullStr, strAutoInc);
       return spec;
 }
Example #14
0
        protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            var  typeStr  = column.TypeInfo.DbTypeSpec;
            var  nullable = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
            var  nullStr  = nullable ? "NULL" : "NOT NULL";
            var  idStr    = string.Empty;
            bool isNew    = column.Peer == null;

            if (isNew && column.Flags.IsSet(DbColumnFlags.Identity))
            {
                idStr = "IDENTITY(1,1)";
            }
            string defaultStr = null;

            //Default constraint can be set only on new columns in SQL server
            if (!string.IsNullOrWhiteSpace(column.DefaultExpression) && isNew)
            {
                defaultStr = "DEFAULT " + column.DefaultExpression;
            }
            var spec = $" {column.ColumnNameQuoted} {typeStr} {idStr} {defaultStr} {nullStr}";

            return(spec);
        }
Example #15
0
 //not supported
 public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
 }
Example #16
0
 protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options)
 {
     if(column.Flags.IsSet(DbColumnFlags.Identity)) {
     if(column.TypeInfo.SqlTypeSpec == "bigint")
       return string.Format(@"""{0}"" BIGSERIAL ", column.ColumnName);
     else
       return string.Format(@"""{0}"" SERIAL ", column.ColumnName);
       }
       return base.GetColumnSpec(column, options);
 }
Example #17
0
        public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            if (ShouldResetNullsToDefault(column))
            {
                BuildColumnSetDefaultValuesSql(change, column);
            }
            // In Pg you modify column one aspect at a time; setting TYPE and Nullable requires 2 calls
            change.AddScript(DbScriptType.ColumnModify, "ALTER TABLE {0} ALTER COLUMN \"{1}\" TYPE {2};",
                             column.Table.FullName, column.ColumnName, column.TypeInfo.SqlTypeSpec);
            var nullStr = column.Flags.IsSet(DbColumnFlags.Nullable) ? "DROP NOT NULL" : "SET NOT NULL";

            change.AddScript(DbScriptType.ColumnSetupComplete, "ALTER TABLE {0} ALTER COLUMN \"{1}\" {2};",
                             column.Table.FullName, column.ColumnName, nullStr);
        }
Example #18
0
        public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            var colSpec    = GetColumnSpec(column, options);
            var tbl        = column.Table;
            var scriptType = options.IsSet(DbScriptOptions.CompleteColumnSetup) ? DbScriptType.ColumnSetupComplete : DbScriptType.ColumnModify;

            change.AddScript(scriptType, $"ALTER TABLE {tbl.FullName} MODIFY COLUMN {colSpec};");
        }
Example #19
0
 public static bool IsSet(this DbScriptOptions flags, DbScriptOptions flag)
 {
     return((flags & flag) != 0);
 }
Example #20
0
        //ALTER TABLE employees ALTER COLUMN [employee_name] nvarchar(100) Null;
        public virtual void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            var scriptType = options.IsSet(DbScriptOptions.CompleteColumnSetup) ? DbScriptType.ColumnSetupComplete : DbScriptType.ColumnModify;

            if (ShouldResetNullsToDefault(column))
            {
                BuildColumnSetDefaultValuesSql(change, column);
                scriptType = DbScriptType.ColumnSetupComplete;
            }
            var colSpec = GetColumnSpec(column);

            change.AddScript(scriptType, $"ALTER TABLE {column.Table.FullName} ALTER COLUMN {colSpec};");
        }
Example #21
0
 protected override string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     // See https://www.sqlite.org/autoinc.html
       // auto-inc columns is always INT64, but s
       if(column.Flags.IsSet(DbColumnFlags.Identity))
     return column.ColumnName +  " INTEGER PRIMARY KEY NOT NULL"; //
       var spec = base.GetColumnSpec(column, options);
       return spec;
 }
Example #22
0
        public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
        {
            //SqlCe does not allow any modification of 'ntext'/memo columns
            var  dbType  = column.TypeInfo.DbType;
            bool isNText = column.TypeInfo.Size < 0 && (dbType == DbType.String || dbType == DbType.Binary);

            if (isNText)
            {
                change.NotSupported("Modifying ntext column not supported in SqlCE. Column: {0}.{1}", column.Table.TableName, column.ColumnName);
                return;
            }
            base.BuildColumnModifySql(change, column, options);
        }
Example #23
0
        // ALTER TABLE employees ADD [employee_pwd] nvarchar(20) Null;
        // All columns are added as nullable, to allow for existing rows be filled with nulls
        // Then extra step columnInit sets default values for types (zeros), and then column is modified to NOT NULL
        public virtual void BuildColumnAddSql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options)
        {
            var colSpec = GetColumnSpec(column, options);

            change.AddScript(DbScriptType.ColumnAdd, $"ALTER TABLE {column.Table.FullName} ADD {colSpec};");
        }
Example #24
0
 //not supported
 public override void BuildColumnModifySql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
 }
Example #25
0
 protected virtual string GetColumnSpec(DbColumnInfo column, DbScriptOptions options = DbScriptOptions.None)
 {
     var typeStr = column.TypeInfo.SqlTypeSpec;
       var nullable = options.IsSet(DbScriptOptions.ForceNull) || column.Flags.IsSet(DbColumnFlags.Nullable);
       var nullStr = nullable ? "NULL" : "NOT NULL";
       string defaultStr = null;
       if(!string.IsNullOrWhiteSpace(column.DefaultExpression))
     defaultStr = "DEFAULT " + column.DefaultExpression;
       var spec = string.Format(" \"{0}\" {1} {2} {3}", column.ColumnName, typeStr, defaultStr, nullStr);
       return spec;
 }
Example #26
0
 // ALTER TABLE employees ADD [employee_pwd] nvarchar(20) Null;
 // All columns are added as nullable, to allow for existing rows be filled with nulls
 // Then extra step columnInit sets default values for types (zeros), and then column is modified to NOT NULL
 public virtual void BuildColumnAddSql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options)
 {
     var colSpec = GetColumnSpec(column, options);
       change.AddScript(DbScriptType.ColumnAdd, "ALTER TABLE {0} ADD {1};", column.Table.FullName, colSpec);
 }
Example #27
0
        public override void BuildColumnAddSql(DbObjectChange change, DbColumnInfo column, DbScriptOptions options)
        {
            var colSpec = GetColumnSpec(column, options);

            if (!column.Flags.IsSet(DbColumnFlags.Nullable))
            {
                var dft = column.TypeInfo.VendorDbType.DefaultColumnInit;
                if (string.IsNullOrWhiteSpace(dft))
                {
                    dft = column.TypeInfo.ToLiteral(new byte[] { 0 });
                }
                colSpec += " DEFAULT " + dft;
            }
            //workaround for unit test with renaming table - ignore rename, use old table
            var tbl = column.Table;

            if (tbl.Peer != null)
            {
                tbl = tbl.Peer; //use old table name
            }
            change.AddScript(DbScriptType.ColumnAdd, "ALTER TABLE {0} ADD {1};", tbl.FullName, colSpec);
        }
Example #28
0
 public static bool IsSet(this DbScriptOptions flags, DbScriptOptions flag)
 {
     return (flags & flag) != 0;
 }