public override string Generate(AlterDefaultConstraintExpression expression) { return(string.Format( "ALTER TABLE {0} ALTER {1} DROP DEFAULT, ALTER {1} {2};", Quoter.QuoteTableName(expression.TableName, expression.SchemaName), Quoter.QuoteColumnName(expression.ColumnName), ((PostgresColumn)Column).FormatAlterDefaultValue(expression.ColumnName, expression.DefaultValue))); }
public override string Generate(AlterDefaultConstraintExpression expression) { return(string.Format(AlterColumn, Quoter.QuoteTableName(expression.TableName, expression.SchemaName), Column.Generate(new ColumnDefinition { ModificationType = ColumnModificationType.Alter, Name = expression.ColumnName, DefaultValue = expression.DefaultValue }))); }
#pragma warning restore 618 public override string Generate(AlterDefaultConstraintExpression expression) { Truncator.Truncate(expression); return(String.Format("ALTER TABLE {0} ALTER COLUMN {1} SET DEFAULT {2}", Quoter.QuoteTableName(expression.TableName), Quoter.QuoteColumnName(expression.ColumnName), Quoter.QuoteValue(expression.DefaultValue) )); }
public void WhenDefaultSchemaConventionIsAppliedAndSchemaIsSetThenSchemaShouldNotBeChanged() { var expression = new AlterDefaultConstraintExpression { SchemaName = "testschema", TableName = "test", ColumnName = "Column1", DefaultValue = SystemMethods.CurrentDateTime }; var processed = expression.Apply(ConventionSets.WithSchemaName); Assert.That(processed.SchemaName, Is.EqualTo("testschema")); }
public void WhenDefaultSchemaConventionIsAppliedAndSchemaIsNotSetThenSchemaShouldBeNull() { var expression = new AlterDefaultConstraintExpression { TableName = "test", ColumnName = "Column1", DefaultValue = SystemMethods.CurrentDateTime }; var processed = expression.Apply(ConventionSets.NoSchemaName); Assert.That(processed.SchemaName, Is.Null); }
public void ErrorIsReturnedWhenColumnNameIsNull() { var expression = new AlterDefaultConstraintExpression { TableName = "test", ColumnName = "", DefaultValue = SystemMethods.CurrentDateTime }; var errors = ValidationHelper.CollectErrors(expression); errors.ShouldContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty); }
public void ErrorIsReturnedWhenDefaultValueIsNull() { var expression = new AlterDefaultConstraintExpression { TableName = "test", ColumnName = "Column1", DefaultValue = null }; var errors = ValidationHelper.CollectErrors(expression); errors.ShouldContain(ErrorMessages.DefaultValueCannotBeNull); }
public void ErrorIsNotReturnedWhenTableNameAndColumnNameAndDefaultValueAreSet() { var expression = new AlterDefaultConstraintExpression { TableName = "test", ColumnName = "Column1", DefaultValue = SystemMethods.CurrentDateTime }; var errors = ValidationHelper.CollectErrors(expression); Assert.That(errors.Count, Is.EqualTo(0)); }
public override string Generate(AlterDefaultConstraintExpression expression) { // Available since MySQL 4.0.22 (2005) var defaultValue = ((MySqlColumn)Column).FormatDefaultValue(expression.DefaultValue); return(string.Format( "ALTER TABLE {0} ALTER {1} SET {2}", Quoter.QuoteTableName(expression.TableName), Quoter.QuoteColumnName(expression.ColumnName), defaultValue)); }
public static AlterDefaultConstraintExpression GetAlterDefaultConstraintExpression() { var expression = new AlterDefaultConstraintExpression { ColumnName = TestColumnName1, DefaultValue = 1, TableName = TestTableName1 }; return(expression); }
public void WhenDefaultSchemaConventionIsChangedAndSchemaIsNotSetThenSetSchema() { var expression = new AlterDefaultConstraintExpression { TableName = "test", ColumnName = "Column1", DefaultValue = SystemMethods.CurrentDateTime }; var migrationConventions = new MigrationConventions { GetDefaultSchema = () => "testdefault" }; expression.ApplyConventions(migrationConventions); Assert.That(expression.SchemaName, Is.EqualTo("testdefault")); }
public void CanAlterDefaultConstraintToNewGuid() { var expression = new AlterDefaultConstraintExpression { SchemaName = "Schema1", TableName = "Table1", ColumnName = "Col1", DefaultValue = SystemMethods.NewGuid }; var sql = generator.Generate(expression); sql.ShouldBe("ALTER TABLE \"Schema1\".\"Table1\" ALTER \"Col1\" DROP DEFAULT, ALTER \"Col1\" SET DEFAULT uuid_generate_v4()"); }
public void CanAlterDefaultConstraintToCurrentUtcDateTime() { var expression = new AlterDefaultConstraintExpression { SchemaName = "Schema1", TableName = "Table1", ColumnName = "Col1", DefaultValue = SystemMethods.CurrentUTCDateTime }; var sql = generator.Generate(expression); sql.ShouldBe("ALTER TABLE \"Schema1\".\"Table1\" ALTER \"Col1\" DROP DEFAULT, ALTER \"Col1\" SET DEFAULT (now() at time zone 'UTC')"); }
public void CanAlterDefaultConstraintToCurrentUser() { var expression = new AlterDefaultConstraintExpression { SchemaName = "Schema1", TableName = "Table1", ColumnName = "Col1", DefaultValue = SystemMethods.CurrentUser }; var sql = generator.Generate(expression); sql.ShouldBe("ALTER TABLE \"Schema1\".\"Table1\" ALTER \"Col1\" DROP DEFAULT, ALTER \"Col1\" SET DEFAULT current_user"); }
/// <inheritdoc /> public IAlterColumnOptionSyntax WithDefaultValue(object value) { // we need to do a drop constraint and then add constraint to change the default value var dc = new AlterDefaultConstraintExpression { TableName = Expression.TableName, SchemaName = Expression.SchemaName, ColumnName = Expression.Column.Name, DefaultValue = value }; _context.Expressions.Add(dc); Expression.Column.DefaultValue = value; return(this); }
public IAlterColumnOptionSyntax WithDefaultValue(object value) { var dc = new AlterDefaultConstraintExpression { TableName = Expression.TableName, SchemaName = Expression.SchemaName, ColumnName = Expression.Column.Name, DefaultValue = value }; _context.Expressions.Add(dc); Expression.Column.DefaultValue = value; return(this); }
public IAlterColumnOptionSyntax WithDefault(SystemMethods method) { var dc = new AlterDefaultConstraintExpression { TableName = Expression.TableName, SchemaName = Expression.SchemaName, ColumnName = Expression.Column.Name, DefaultValue = method }; _context.Expressions.Add(dc); Expression.Column.DefaultValue = method; return(this); }
public IAlterColumnOptionSyntax WithDefaultValue(object value) { var dc = new AlterDefaultConstraintExpression(_context.CurrentDatabaseProvider, _databaseProviders, Expression.SqlSyntax) { TableName = Expression.TableName, SchemaName = Expression.SchemaName, ColumnName = Expression.Column.Name, DefaultValue = value }; _context.Expressions.Add(dc); Expression.Column.DefaultValue = value; return(this); }
public IAlterTableColumnOptionBuilder WithDefaultValue(object value) { if (CurrentColumn.ModificationType == ModificationType.Alter) { var dc = new AlterDefaultConstraintExpression(_context) { TableName = Expression.TableName, ColumnName = CurrentColumn.Name, DefaultValue = value }; Expression.Expressions.Add(dc); } CurrentColumn.DefaultValue = value; return(this); }
public IAlterTableColumnOptionOrAddColumnOrAlterColumnSyntax WithDefaultValue(object value) { if (CurrentColumn.ModificationType == ColumnModificationType.Alter) { // TODO: This is code duplication from the AlterColumnExpressionBuilder // we need to do a drop constraint and then add constraint to change the defualt value var dc = new AlterDefaultConstraintExpression { TableName = Expression.TableName, SchemaName = Expression.SchemaName, ColumnName = CurrentColumn.Name, DefaultValue = value }; _context.Expressions.Add(dc); } CurrentColumn.DefaultValue = value; return(this); }
public override string Generate(AlterDefaultConstraintExpression expression) { // before we alter a default constraint on a column, we have to drop any default value constraints in SQL Anywhere var builder = new StringBuilder(); var deleteDefault = Generate(new DeleteDefaultConstraintExpression { ColumnName = expression.ColumnName, SchemaName = expression.SchemaName, TableName = expression.TableName }) + ";"; builder.AppendLine(deleteDefault); builder.Append(String.Format("-- create alter table command to create new default constraint as string and run it" + Environment.NewLine + "ALTER TABLE {0} ALTER {1} DEFAULT {2};", Quoter.QuoteTableName(expression.TableName, expression.SchemaName), Quoter.QuoteColumnName(expression.ColumnName), Quoter.QuoteValue(expression.DefaultValue))); return(builder.ToString()); }
public override string Generate(AlterDefaultConstraintExpression expression) { // before we alter a default constraint on a column, we have to drop any default value constraints in SQL Server var builder = new StringBuilder(); builder.AppendLine(Generate(new DeleteDefaultConstraintExpression { ColumnName = expression.ColumnName, SchemaName = expression.SchemaName, TableName = expression.TableName })); builder.AppendLine(); builder.AppendFormat( "-- create alter table command to create new default constraint as string and run it" + Environment.NewLine + "ALTER TABLE {0} WITH NOCHECK ADD CONSTRAINT {3} DEFAULT({2}) FOR {1};", Quoter.QuoteTableName(expression.TableName, expression.SchemaName), Quoter.QuoteColumnName(expression.ColumnName), SqlServer2000Column.FormatDefaultValue(expression.DefaultValue, Quoter), Quoter.QuoteConstraintName( SqlServer2000Column.GetDefaultConstraintName(expression.TableName, expression.ColumnName))); return(builder.ToString()); }
public override string Generate(AlterDefaultConstraintExpression expression) { throw new NotImplementedException(); }
public virtual void Process(AlterDefaultConstraintExpression expression) { Process(Generator.Generate(expression)); }
public override string Generate(AlterDefaultConstraintExpression expression) { throw new DatabaseOperationNotSupportedException(); }
public override string Generate(AlterDefaultConstraintExpression expression) { return(CompatibilityMode.HandleCompatibilty("SQLite does not support altering of default constraints")); }
public override void Process(Expressions.AlterColumnExpression expression) { truncator.Truncate(expression); CheckColumn(expression.TableName, expression.Column.Name); FirebirdSchemaProvider schema = new FirebirdSchemaProvider(this); FirebirdTableSchema table = schema.GetTableSchema(expression.TableName); ColumnDefinition colDef = table.Definition.Columns.First(x => x.Name == quoter.ToFbObjectName(expression.Column.Name)); //Change nullable constraint if (colDef.IsNullable != expression.Column.IsNullable) { PerformDBOperationExpression unSet = new PerformDBOperationExpression(); unSet.Operation = (connection, transaction) => { string sql = (Generator as FirebirdGenerator).GenerateSetNull(colDef); Announcer.Sql(sql); using (var cmd = Factory.CreateCommand(sql, connection, transaction)) { cmd.CommandTimeout = Options.Timeout; cmd.ExecuteNonQuery(); } }; FirebirdProcessedExpressionBase fbExpression = new FirebirdProcessedExpression <AlterColumnExpression>(expression, this); if (this.FBOptions.UndoEnabled) { fbExpression.AddUndoExpression(unSet); } RegisterExpression(fbExpression); InternalProcess((Generator as FirebirdGenerator).GenerateSetNull(expression.Column)); } //Change default value if (!FirebirdGenerator.DefaultValuesMatch(colDef, expression.Column)) { IMigrationExpression defaultConstraint; IMigrationExpression unsetDefaultConstraint; if (expression.Column.DefaultValue is ColumnDefinition.UndefinedDefaultValue) { defaultConstraint = new DeleteDefaultConstraintExpression() { SchemaName = expression.SchemaName, TableName = expression.TableName, ColumnName = expression.Column.Name }; } else { defaultConstraint = new AlterDefaultConstraintExpression() { ColumnName = expression.Column.Name, DefaultValue = expression.Column.DefaultValue, TableName = expression.TableName, SchemaName = expression.SchemaName }; } if (colDef.DefaultValue is ColumnDefinition.UndefinedDefaultValue) { unsetDefaultConstraint = new DeleteDefaultConstraintExpression() { ColumnName = colDef.Name, TableName = expression.TableName, SchemaName = expression.SchemaName }; } else { unsetDefaultConstraint = new AlterDefaultConstraintExpression() { ColumnName = colDef.Name, DefaultValue = colDef.DefaultValue, TableName = expression.TableName, SchemaName = expression.SchemaName }; } FirebirdProcessedExpressionBase fbExpression = new FirebirdProcessedExpression(defaultConstraint, defaultConstraint.GetType(), this); if (this.FBOptions.UndoEnabled) { fbExpression.AddUndoExpression(unsetDefaultConstraint); } RegisterExpression(fbExpression); if (defaultConstraint is DeleteDefaultConstraintExpression) { InternalProcess(Generator.Generate(defaultConstraint as DeleteDefaultConstraintExpression)); } else if (defaultConstraint is AlterDefaultConstraintExpression) { InternalProcess(Generator.Generate(defaultConstraint as AlterDefaultConstraintExpression)); } else { throw new InvalidOperationException("No expression generated for alter default constraint"); } } //Change type if (!FirebirdGenerator.ColumnTypesMatch(colDef, expression.Column)) { PerformDBOperationExpression unSet = new PerformDBOperationExpression(); unSet.Operation = (connection, transaction) => { string sql = (Generator as FirebirdGenerator).GenerateSetType(colDef); Announcer.Sql(sql); using (var cmd = Factory.CreateCommand(sql, connection, transaction)) { cmd.CommandTimeout = Options.Timeout; cmd.ExecuteNonQuery(); } }; FirebirdProcessedExpressionBase fbExpression = new FirebirdProcessedExpression <AlterColumnExpression>(expression, this); if (this.FBOptions.UndoEnabled) { fbExpression.AddUndoExpression(unSet); } RegisterExpression(fbExpression); InternalProcess((Generator as FirebirdGenerator).GenerateSetType(expression.Column)); } bool identitySequenceExists; try { identitySequenceExists = SequenceExists(String.Empty, GetSequenceName(expression.TableName, expression.Column.Name)); } catch (ArgumentException) { identitySequenceExists = false; } //Adjust identity generators if (expression.Column.IsIdentity) { if (!identitySequenceExists) { CreateSequenceForIdentity(expression.TableName, expression.Column.Name); } } else { if (identitySequenceExists) { DeleteSequenceForIdentity(expression.TableName, expression.Column.Name); } } }
public abstract string Generate(AlterDefaultConstraintExpression expression);
public override string Generate(AlterDefaultConstraintExpression expression) { return compatabilityMode.HandleCompatabilty("Altering of default constraints is not supporteed for MySql"); }
public override void Process(AlterColumnExpression expression) { Truncator.Truncate(expression); CheckColumn(expression.TableName, expression.Column.Name); FirebirdSchemaProvider schema = new FirebirdSchemaProvider(this, _quoter); FirebirdTableSchema table = schema.GetTableSchema(expression.TableName); ColumnDefinition colDef = table.Definition.Columns.FirstOrDefault(x => x.Name == _quoter.ToFbObjectName(expression.Column.Name)); var generator = (FirebirdGenerator)Generator; var tableName = expression.Column.TableName ?? expression.TableName; //Change nullable constraint if (colDef == null || colDef.IsNullable != expression.Column.IsNullable) { string nullConstraintCommand; if (IsFirebird3) { nullConstraintCommand = generator.GenerateSetNull3(tableName, expression.Column); } else { nullConstraintCommand = generator.GenerateSetNullPre3(tableName, expression.Column); } InternalProcess(nullConstraintCommand); } //Change default value if (colDef == null || !FirebirdGenerator.DefaultValuesMatch(colDef, expression.Column)) { IMigrationExpression defaultConstraint; if (expression.Column.DefaultValue is ColumnDefinition.UndefinedDefaultValue) { defaultConstraint = new DeleteDefaultConstraintExpression() { SchemaName = expression.SchemaName, TableName = expression.TableName, ColumnName = expression.Column.Name }; } else { defaultConstraint = new AlterDefaultConstraintExpression() { ColumnName = expression.Column.Name, DefaultValue = expression.Column.DefaultValue, TableName = expression.TableName, SchemaName = expression.SchemaName }; } if (defaultConstraint is DeleteDefaultConstraintExpression deleteDefaultConstraintExpression) { InternalProcess(Generator.Generate(deleteDefaultConstraintExpression)); } else { InternalProcess(Generator.Generate((AlterDefaultConstraintExpression)defaultConstraint)); } } //Change type if (colDef == null || !FirebirdGenerator.ColumnTypesMatch(colDef, expression.Column)) { InternalProcess(generator.GenerateSetType(tableName, expression.Column)); } bool identitySequenceExists; try { identitySequenceExists = SequenceExists(string.Empty, GetSequenceName(expression.TableName, expression.Column.Name)); } catch (ArgumentException) { identitySequenceExists = false; } //Adjust identity generators if (expression.Column.IsIdentity) { if (!identitySequenceExists) { CreateSequenceForIdentity(expression.TableName, expression.Column.Name); } } else { if (identitySequenceExists) { DeleteSequenceForIdentity(expression.TableName, expression.Column.Name); } } }
public override string Generate(AlterDefaultConstraintExpression expression) { return(compatabilityMode.HandleCompatabilty("Altering of default constraints is not supporteed for MySql")); }