public void TestDropForeignKeyOperation() { var operations = new List<MigrationOperation>(); var operation = new DropForeignKeyOperation(); operation.Name = "someFK"; operation.DependentTable = "someTable"; operations.Add(operation); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); if (BackendVersion.Major > 8) Assert.AreEqual("ALTER TABLE \"someTable\" DROP CONSTRAINT IF EXISTS \"someFK\"", statments.ElementAt(0).Sql); else Assert.AreEqual("ALTER TABLE \"someTable\" DROP CONSTRAINT \"someFK\"", statments.ElementAt(0).Sql); }
public void TestDefaultTypes() { var operations = new List<MigrationOperation>(); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Binary) { Name = "someByteaColumn", DefaultValue = new byte[6] { 1, 2, 127, 128, 254, 255 } }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Boolean) { Name = "someFalseBooleanColumn", DefaultValue = false }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Boolean) { Name = "someTrueBooleanColumn", DefaultValue = true }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Byte) { Name = "someByteColumn", DefaultValue = 15 }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.DateTime) { Name = "someDateTimeColumn", DefaultValue = new DateTime(2014, 1, 31, 5, 15, 23, 435) }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.DateTimeOffset) { Name = "someDateTimeOffsetColumn", DefaultValue = new DateTimeOffset(new DateTime(2014, 1, 31, 5, 18, 43, 186), TimeSpan.FromHours(1)) }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Decimal) { Name = "someDecimalColumn", DefaultValue = 23432423.534534m }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Double) { Name = "someDoubleColumn", DefaultValue = 44.66 }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Guid) { Name = "someGuidColumn", DefaultValue = new Guid("de303070-afb8-4ec1-bcb0-c637f3316501") }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Int16) { Name = "someInt16Column", DefaultValue = 16 }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Int32) { Name = "someInt32Column", DefaultValue = 32 }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Int64) { Name = "someInt64Column", DefaultValue = 64 }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.SByte) { Name = "someSByteColumn", DefaultValue = -24 }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Single) { Name = "someSingleColumn", DefaultValue = 12.4f }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.String) { Name = "someStringColumn", DefaultValue = "Hello EF" }, false) ); operations.Add(new AddColumnOperation("someTable", new ColumnModel(PrimitiveTypeKind.Time) { Name = "someColumn", DefaultValue = new TimeSpan(937840050067)//1 day, 2 hours, 3 minutes, 4 seconds, 5 miliseconds, 6 microseconds, 700 nanoseconds }, false) ); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(16, statments.Count()); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someByteaColumn\" bytea DEFAULT E'\\\\01027F80FEFF'", statments.ElementAt(0).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someFalseBooleanColumn\" boolean DEFAULT FALSE", statments.ElementAt(1).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someTrueBooleanColumn\" boolean DEFAULT TRUE", statments.ElementAt(2).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someByteColumn\" int2 DEFAULT 15", statments.ElementAt(3).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someDateTimeColumn\" timestamp DEFAULT '2014-01-31 05:15:23.435'", statments.ElementAt(4).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someDateTimeOffsetColumn\" timestamptz DEFAULT '2014-01-31 05:18:43.186+01'", statments.ElementAt(5).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someDecimalColumn\" numeric DEFAULT 23432423.534534", statments.ElementAt(6).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someDoubleColumn\" float8 DEFAULT 44.66", statments.ElementAt(7).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someGuidColumn\" uuid DEFAULT 'de303070-afb8-4ec1-bcb0-c637f3316501'", statments.ElementAt(8).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someInt16Column\" int2 DEFAULT 16", statments.ElementAt(9).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someInt32Column\" int4 DEFAULT 32", statments.ElementAt(10).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someInt64Column\" int8 DEFAULT 64", statments.ElementAt(11).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someSByteColumn\" int2 DEFAULT -24", statments.ElementAt(12).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someSingleColumn\" float4 DEFAULT 12.4", statments.ElementAt(13).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someStringColumn\" text DEFAULT 'Hello EF'", statments.ElementAt(14).Sql); Assert.AreEqual("ALTER TABLE \"someTable\" ADD \"someColumn\" interval DEFAULT '26:03:04.005007'", statments.ElementAt(15).Sql); }
public void TestSqlOperation() { var operations = new List<MigrationOperation>(); operations.Add(new SqlOperation("SELECT someColumn FROM someTable")); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("SELECT someColumn FROM someTable", statments.ElementAt(0).Sql); }
public void TestAddForeignKeyOperationCascadeDelete() { var operations = new List<MigrationOperation>(); var operation = new AddForeignKeyOperation(); operation.Name = "someFK"; operation.PrincipalTable = "somePrincipalTable"; operation.DependentTable = "someDependentTable"; operation.DependentColumns.Add("column1"); operation.DependentColumns.Add("column2"); operation.DependentColumns.Add("column3"); operation.CascadeDelete = true; operations.Add(operation); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("ALTER TABLE \"someDependentTable\" ADD CONSTRAINT \"someFK\" FOREIGN KEY (\"column1\",\"column2\",\"column3\") REFERENCES \"somePrincipalTable\" ) ON DELETE CASCADE", statments.ElementAt(0).Sql); }
public void TestDropPrimaryKeyOperation() { var operations = new List<MigrationOperation>(); var operation = new DropPrimaryKeyOperation(); operation.Table = "someTable"; operation.Name = "somePKName"; operations.Add(operation); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("ALTER TABLE \"someTable\" DROP CONSTRAINT \"somePKName\"", statments.ElementAt(0).Sql); }
public void TestRenameColumnOperation() { var operations = new List<MigrationOperation>(); operations.Add(new RenameColumnOperation("someTable", "someOldColumnName", "someNewColumnName")); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("ALTER TABLE \"someTable\" RENAME COLUMN \"someOldColumnName\" TO \"someNewColumnName\"", statments.ElementAt(0).Sql); }
public void TestMoveTableOperationNewSchemaIsNull() { var operations = new List<MigrationOperation>(); operations.Add(new MoveTableOperation("someOldSchema.someTable", null)); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(2, statments.Count()); if (BackendVersion.Major > 9 || (BackendVersion.Major == 9 && BackendVersion.Minor > 2)) Assert.AreEqual("CREATE SCHEMA IF NOT EXISTS dbo", statments.ElementAt(0).Sql); else Assert.AreEqual("CREATE SCHEMA dbo", statments.ElementAt(0).Sql); Assert.AreEqual("ALTER TABLE \"someOldSchema\".\"someTable\" SET SCHEMA dbo", statments.ElementAt(1).Sql); }
public void TestAddPrimaryKeyOperationClustered() { var operations = new List<MigrationOperation>(); var operation = new AddPrimaryKeyOperation(); operation.Table = "someTable"; operation.Name = "somePKName"; operation.Columns.Add("column1"); operation.Columns.Add("column2"); operation.Columns.Add("column3"); operation.IsClustered = true; //TODO: PostgreSQL support something like IsClustered? operations.Add(operation); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("ALTER TABLE \"someTable\" ADD CONSTRAINT \"somePKName\" PRIMARY KEY (\"column1\",\"column2\",\"column3\")", statments.ElementAt(0).Sql); }
public void TestDropIndexOperationTableNameWithSchema() { var operations = new List<MigrationOperation>(); operations.Add(new DropIndexOperation() { Name = "someIndex", Table = "someSchema.someTable" }); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("DROP INDEX IF EXISTS someSchema.\"someTable_someIndex\"", statments.ElementAt(0).Sql); }
public void TestCreateIndexOperationUnique() { var operations = new List<MigrationOperation>(); var operation = new CreateIndexOperation(); operation.Table = "someTable"; operation.Name = "someIndex"; operation.Columns.Add("column1"); operation.Columns.Add("column2"); operation.Columns.Add("column3"); operation.IsUnique = true; operations.Add(operation); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("CREATE UNIQUE INDEX \"someTable_someIndex\" ON \"someTable\" (\"column1\",\"column2\",\"column3\")", statments.ElementAt(0).Sql); }
public void TestDropTableOperation() { var operations = new List<MigrationOperation>(); operations.Add(new DropTableOperation("someTable")); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("DROP TABLE \"someTable\"", statments.ElementAt(0).Sql); }
public void TestCreateTableOperation() { var operations = new List<MigrationOperation>(); var operation = new CreateTableOperation("someSchema.someTable"); operation.Columns.Add( new ColumnModel(PrimitiveTypeKind.String) { Name = "SomeString", MaxLength = 233, IsNullable = false }); operation.Columns.Add( new ColumnModel(PrimitiveTypeKind.String) { Name = "AnotherString", IsNullable = true }); operation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Binary) { Name = "SomeBytes" }); operation.Columns.Add( new ColumnModel(PrimitiveTypeKind.Int64) { Name = "SomeLong", IsIdentity = true }); operation.Columns.Add( new ColumnModel(PrimitiveTypeKind.DateTime) { Name = "SomeDateTime" }); operations.Add(operation); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(2, statments.Count()); if (BackendVersion.Major > 9 || (BackendVersion.Major == 9 && BackendVersion.Minor > 2)) Assert.AreEqual("CREATE SCHEMA IF NOT EXISTS someSchema", statments.ElementAt(0).Sql); else Assert.AreEqual("CREATE SCHEMA someSchema", statments.ElementAt(0).Sql); Assert.AreEqual("CREATE TABLE \"someSchema\".\"someTable\"(\"SomeString\" text NOT NULL DEFAULT '',\"AnotherString\" text,\"SomeBytes\" bytea,\"SomeLong\" serial8,\"SomeDateTime\" timestamp)", statments.ElementAt(1).Sql); }
public void TestAlterColumnOperationDefaultAndNullable() { var operations = new List<MigrationOperation>(); operations.Add(new AlterColumnOperation("tableName", new ColumnModel(PrimitiveTypeKind.Double) { Name = "columnName", DefaultValue = 2.3, IsNullable = false }, false)); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(3, statments.Count()); Assert.AreEqual("ALTER TABLE \"tableName\" ALTER COLUMN \"columnName\" TYPE float8", statments.ElementAt(0).Sql); Assert.AreEqual("ALTER TABLE \"tableName\" ALTER COLUMN \"columnName\" SET NOT NULL", statments.ElementAt(1).Sql); Assert.AreEqual("ALTER TABLE \"tableName\" ALTER COLUMN \"columnName\" SET DEFAULT 2.3", statments.ElementAt(2).Sql); }
public void TestAddColumnOperationDefaultValueSql() { var operations = new List<MigrationOperation>(); operations.Add(new AddColumnOperation("tableName", new ColumnModel(PrimitiveTypeKind.Single) { Name = "columnName", DefaultValueSql = "4.6" })); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("ALTER TABLE \"tableName\" ADD \"columnName\" float4 DEFAULT 4.6", statments.ElementAt(0).Sql); }
public void RenameTableOperation() { var operations = new List<MigrationOperation>(); operations.Add(new RenameTableOperation("schema.someOldTableName", "someNewTablename")); var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, BackendVersion.ToString()); Assert.AreEqual(1, statments.Count()); Assert.AreEqual("ALTER TABLE \"schema\".\"someOldTableName\" RENAME TO \"someNewTablename\"", statments.ElementAt(0).Sql); }