Search in sources :

Example 1 with H2Database

use of liquibase.database.core.H2Database in project liquibase by liquibase.

the class ChangeMetaDataTest method getRequiredParameters.

@Test
public void getRequiredParameters() {
    HashSet<ChangeParameterMetaData> parameters = new HashSet<ChangeParameterMetaData>();
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "noneRequired", "x", null, null, null, Integer.class, new String[] { "none" }, null, null, null));
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "allRequired", "x", null, null, null, Integer.class, new String[] { "all" }, null, null, null));
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "h2Required", "x", null, null, null, Integer.class, new String[] { "h2" }, null, null, null));
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "oracleRequired", "x", null, null, null, Integer.class, new String[] { "oracle" }, null, null, null));
    ChangeMetaData changeMetaData = new ChangeMetaData("x", "y", 1, null, null, parameters);
    assertSetsEqual(new String[] { "allRequired", "h2Required" }, changeMetaData.getRequiredParameters(new H2Database()).keySet());
    assertSetsEqual(new String[] { "allRequired", "oracleRequired" }, changeMetaData.getRequiredParameters(new OracleDatabase()).keySet());
    assertSetsEqual(new String[] { "allRequired" }, changeMetaData.getRequiredParameters(new MySQLDatabase()).keySet());
}
Also used : OracleDatabase(liquibase.database.core.OracleDatabase) MySQLDatabase(liquibase.database.core.MySQLDatabase) H2Database(liquibase.database.core.H2Database) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 2 with H2Database

use of liquibase.database.core.H2Database in project liquibase by liquibase.

the class ChangeMetaDataTest method getOptionalParameters.

@Test
public void getOptionalParameters() {
    HashSet<ChangeParameterMetaData> parameters = new HashSet<ChangeParameterMetaData>();
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "noneRequired", "x", null, null, null, Integer.class, new String[] { "none" }, null, null, null));
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "allRequired", "x", null, null, null, Integer.class, new String[] { "all" }, null, null, null));
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "h2Required", "x", null, null, null, Integer.class, new String[] { "h2" }, null, null, null));
    parameters.add(new ChangeParameterMetaData(new ExampleAbstractChange(), "oracleRequired", "x", null, null, null, Integer.class, new String[] { "oracle" }, null, null, null));
    ChangeMetaData changeMetaData = new ChangeMetaData("x", "y", 1, null, null, parameters);
    assertSetsEqual(new String[] { "noneRequired", "oracleRequired" }, changeMetaData.getOptionalParameters(new H2Database()).keySet());
    assertSetsEqual(new String[] { "noneRequired", "h2Required" }, changeMetaData.getOptionalParameters(new OracleDatabase()).keySet());
    assertSetsEqual(new String[] { "noneRequired", "h2Required", "oracleRequired" }, changeMetaData.getOptionalParameters(new MySQLDatabase()).keySet());
}
Also used : OracleDatabase(liquibase.database.core.OracleDatabase) MySQLDatabase(liquibase.database.core.MySQLDatabase) H2Database(liquibase.database.core.H2Database) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with H2Database

use of liquibase.database.core.H2Database in project liquibase by liquibase.

the class ChangeMetaDataTest method getRequiredParameters_empty.

@Test
public void getRequiredParameters_empty() {
    ChangeMetaData changeMetaData = new ChangeMetaData("x", "y", 1, null, null, null);
    assertEquals(0, changeMetaData.getRequiredParameters(new H2Database()).size());
}
Also used : H2Database(liquibase.database.core.H2Database) Test(org.junit.Test)

Example 4 with H2Database

use of liquibase.database.core.H2Database in project liquibase by liquibase.

the class CreateTableGeneratorTest method testDefaultValueCurrentTimestampDB2Database.

// @Test
// public void createTable_standard() throws Exception {
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int", null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("username", "varchar(255)", "'NEWUSER'")) {
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// assertNotNull(table.getColumn("id"));
// assertNotNull(table.getColumn("name"));
// assertNotNull(table.getColumn("username"));
// 
// assertTrue(table.getColumn("id").isPrimaryKey());
// 
// assertNull(table.getColumn("name").getDefaultValue());
// assertTrue(table.getColumn("username").getDefaultValue().toString().indexOf("NEWUSER") >= 0);
// 
// assertFalse(table.getColumn("id").isAutoIncrement());
// }
// 
// });
// }
// 
// @Test
// public void createTable_autoincrementPK() throws Exception {
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int",null,  null)
// .addColumn("name", "varchar(255)")
// .addColumn("username", "varchar(255)", "'NEWUSER'")
// .addColumnConstraint(new AutoIncrementConstraint("id"))) {
// 
// protected boolean supportsTest(Database database) {
// return database.supportsAutoIncrement();
// }
// 
// protected boolean expectedException(Database database, DatabaseException exception) {
// return !database.supportsAutoIncrement();
// }
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// assertNotNull(table.getColumn("id"));
// assertTrue(table.getColumn("id").isPrimaryKey());
// assertTrue(table.getColumn("id").isAutoIncrement());
// }
// });
// }
// 
// @Test
// public void createTable_foreignKeyColumn() throws Exception {
// final String foreignKeyName = "fk_test_parent";
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int", null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("parent_id", "int", new ForeignKeyConstraint(foreignKeyName, TABLE_NAME + "(id)"))) {
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// assertNotNull(table.getColumn("id"));
// 
// ForeignKey foundForeignKey = snapshot.getForeignKey(foreignKeyName);
// assertNotNull(foundForeignKey);
// assertEquals(TABLE_NAME, foundForeignKey.getPrimaryKeyTable().getName().toUpperCase());
// assertEquals("ID", foundForeignKey.getPrimaryKeyColumns().toUpperCase());
// assertEquals(TABLE_NAME, foundForeignKey.getForeignKeyTable().getName().toUpperCase());
// assertEquals("PARENT_ID", foundForeignKey.getForeignKeyColumns().toUpperCase());
// 
// }
// 
// });
// }
// 
// @Test
// public void createTable_deferrableForeignKeyColumn() throws Exception {
// final String foreignKeyName = "fk_test_parent";
// 
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int", null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("parent_id", "int",
// new ForeignKeyConstraint(foreignKeyName, TABLE_NAME + "(id)")
// .setDeferrable(true)
// .setInitiallyDeferred(true))) {
// 
// protected boolean expectedException(Database database, DatabaseException exception) {
// return !database.supportsInitiallyDeferrableColumns();
// }
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// assertNotNull(table.getColumn("id"));
// 
// ForeignKey foundForeignKey = snapshot.getForeignKey(foreignKeyName);
// assertNotNull(foundForeignKey);
// assertEquals(TABLE_NAME, foundForeignKey.getPrimaryKeyTable().getName().toUpperCase());
// assertEquals("ID", foundForeignKey.getPrimaryKeyColumns().toUpperCase());
// assertEquals(TABLE_NAME, foundForeignKey.getForeignKeyTable().getName().toUpperCase());
// assertEquals("PARENT_ID", foundForeignKey.getForeignKeyColumns().toUpperCase());
// assertTrue(foundForeignKey.isDeferrable());
// assertTrue(foundForeignKey.isInitiallyDeferred());
// }
// 
// });
// }
// 
// @Test
// public void createTable_deleteCascadeForeignKeyColumn() throws Exception {
// final String foreignKeyName = "fk_test_parent";
// 
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int", null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("parent_id", "int", new ForeignKeyConstraint(foreignKeyName, FK_TABLE_NAME + "(id)").setDeleteCascade(true))) {
// 
// protected void setup(Database database) throws Exception {
// new Executor(database).execute(new CreateTableStatement(null, FK_TABLE_NAME)
// .addPrimaryKeyColumn("id", "int",null,  null)
// .addColumn("name", "varchar(255)"));
// super.setup(database);
// }
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// assertNotNull(table.getColumn("id"));
// 
// ForeignKey foundForeignKey = snapshot.getForeignKey(foreignKeyName);
// assertNotNull(foundForeignKey);
// assertEquals(FK_TABLE_NAME, foundForeignKey.getPrimaryKeyTable().getName().toUpperCase());
// assertEquals("ID", foundForeignKey.getPrimaryKeyColumns().toUpperCase());
// assertEquals(TABLE_NAME, foundForeignKey.getForeignKeyTable().getName().toUpperCase());
// assertEquals("PARENT_ID", foundForeignKey.getForeignKeyColumns().toUpperCase());
// //TODO: test when tested by diff                assertTrue(foundForeignKey.isDeleteCascade());
// }
// 
// });
// }
// 
// @Test
// public void createTable_uniqueColumn() throws Exception {
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int",null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("username", "int", new UniqueConstraint("UQ_TESTCT_ID"), new NotNullConstraint())) {
// 
// protected boolean expectedException(Database database) {
// return !(database instanceof HsqlDatabase) || database  instanceof H2Database;
// }
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// assertNotNull(table.getColumn("id"));
// 
// //todo: actually test for uniqueness when diff can check for it assertTrue(table.getColumn("username").isUnique());
// }
// 
// });
// }
// 
// @Test
// public void addPrimaryKeyColumn_oneColumn() {
// CreateTableStatement statement = new CreateTableStatement(null, "tableName");
// statement.addPrimaryKeyColumn("id", "int", null, null);
// 
// assertEquals(1, statement.getPrimaryKeyConstraint().getColumns().size());
// }
// 
// @Test
// public void addPrimaryKeyColumn_multiColumn() {
// CreateTableStatement statement = new CreateTableStatement(null, "tableName");
// statement.addPrimaryKeyColumn("id1", "int", null, null);
// statement.addPrimaryKeyColumn("id2", "int", null, null);
// 
// assertEquals(2, statement.getPrimaryKeyConstraint().getColumns().size());
// }
// 
// @Test
// public void addColumnConstraint_notNullConstraint() {
// CreateTableStatement statement = new CreateTableStatement(null, "tableName");
// statement.addColumn("id", "int");
// 
// assertFalse(statement.getNotNullColumns().contains("id"));
// 
// statement.addColumnConstraint(new NotNullConstraint("id"));
// 
// assertTrue(statement.getNotNullColumns().contains("id"));
// }
// 
// @Test
// public void addColumnConstraint_ForeignKeyConstraint() {
// CreateTableStatement statement = new CreateTableStatement(null, "tableName");
// statement.addColumn("id", "int");
// 
// assertEquals(0, statement.getForeignKeyConstraints().size());
// 
// statement.addColumnConstraint(new ForeignKeyConstraint("fk_test", "fkTable(id)").setColumns("id"));
// 
// assertEquals(1, statement.getForeignKeyConstraints().size());
// assertEquals("fk_test", statement.getForeignKeyConstraints().iterator().next().getForeignKeyName());
// }
// 
// @Test
// public void addColumnConstraint_UniqueConstraint() {
// CreateTableStatement statement = new CreateTableStatement(null, "tableName");
// statement.addColumn("id", "int");
// 
// assertEquals(0, statement.getUniqueConstraints().size());
// 
// statement.addColumnConstraint(new UniqueConstraint("uq_test").addColumns("id"));
// 
// assertEquals(1, statement.getUniqueConstraints().size());
// assertEquals("uq_test", statement.getUniqueConstraints().iterator().next().getConstraintName());
// }
// 
// @Test
// public void createTable_tablespace() throws Exception {
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(null, new CreateTableStatement(null, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int", null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("username", "varchar(255)", "'NEWUSER'")
// .setTablespace("liquibase2")) {
// 
// protected boolean expectedException(Database database, DatabaseException exception) {
// return !database.supportsTablespaces();
// }
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// 
// //todo: test that tablespace is correct when diff returns it
// }
// });
// }
// 
// @Test
// public void createTable_altSchema() throws Exception {
// new DatabaseTestTemplate().testOnAvailableDatabases(
// new SqlStatementDatabaseTest(TestContext.ALT_SCHEMA, new CreateTableStatement(TestContext.ALT_SCHEMA, TABLE_NAME)
// .addPrimaryKeyColumn("id", "int", null, null)
// .addColumn("name", "varchar(255)")
// .addColumn("username", "varchar(255)", "'NEWUSER'")) {
// 
// protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// assertNull(snapshot.getTable(TABLE_NAME));
// }
// 
// protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) {
// Table table = snapshot.getTable(TABLE_NAME);
// assertNotNull(table);
// assertEquals(TABLE_NAME.toUpperCase(), table.getName().toUpperCase());
// }
// });
// }
@Test
public void testDefaultValueCurrentTimestampDB2Database() throws Exception {
    for (Database database : TestContext.getInstance().getAllDatabases()) {
        if (database instanceof AbstractDb2Database) {
            CreateTableStatement statement = new CreateTableStatement(CATALOG_NAME, SCHEMA_NAME, TABLE_NAME);
            statement.addColumn(COLUMN_NAME1, DataTypeFactory.getInstance().fromDescription("datetime", database), new DatabaseFunction("current_timestamp"));
            Sql[] generatedSql = this.generatorUnderTest.generateSql(statement, database, null);
            assertEquals("CREATE TABLE \"CATALOG_NAME\".TABLE_NAME (COLUMN1_NAME TIMESTAMP DEFAULT CURRENT TIMESTAMP)", generatedSql[0].toSql());
        }
    }
}
Also used : AbstractDb2Database(liquibase.database.core.AbstractDb2Database) CreateTableStatement(liquibase.statement.core.CreateTableStatement) SQLiteDatabase(liquibase.database.core.SQLiteDatabase) DerbyDatabase(liquibase.database.core.DerbyDatabase) H2Database(liquibase.database.core.H2Database) MSSQLDatabase(liquibase.database.core.MSSQLDatabase) MySQLDatabase(liquibase.database.core.MySQLDatabase) PostgresDatabase(liquibase.database.core.PostgresDatabase) OracleDatabase(liquibase.database.core.OracleDatabase) SybaseDatabase(liquibase.database.core.SybaseDatabase) SybaseASADatabase(liquibase.database.core.SybaseASADatabase) Database(liquibase.database.Database) AbstractDb2Database(liquibase.database.core.AbstractDb2Database) HsqlDatabase(liquibase.database.core.HsqlDatabase) Sql(liquibase.sql.Sql) AbstractSqlGeneratorTest(liquibase.sqlgenerator.AbstractSqlGeneratorTest) Test(org.junit.Test)

Example 5 with H2Database

use of liquibase.database.core.H2Database in project liquibase by liquibase.

the class CreateTableGeneratorTest method testAutoIncrementStartWithIncrementByH2Database.

@Test
public void testAutoIncrementStartWithIncrementByH2Database() throws Exception {
    for (Database database : TestContext.getInstance().getAllDatabases()) {
        if (database instanceof H2Database) {
            CreateTableStatement statement = new CreateTableStatement(CATALOG_NAME, SCHEMA_NAME, TABLE_NAME);
            statement.addColumn(COLUMN_NAME1, DataTypeFactory.getInstance().fromDescription("BIGINT{autoIncrement:true}", database), new AutoIncrementConstraint(COLUMN_NAME1, BigInteger.ZERO, BigInteger.TEN));
            Sql[] generatedSql = this.generatorUnderTest.generateSql(statement, database, null);
            assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT GENERATED BY DEFAULT AS IDENTITY (0, 10))", generatedSql[0].toSql());
        }
    }
}
Also used : CreateTableStatement(liquibase.statement.core.CreateTableStatement) SQLiteDatabase(liquibase.database.core.SQLiteDatabase) DerbyDatabase(liquibase.database.core.DerbyDatabase) H2Database(liquibase.database.core.H2Database) MSSQLDatabase(liquibase.database.core.MSSQLDatabase) MySQLDatabase(liquibase.database.core.MySQLDatabase) PostgresDatabase(liquibase.database.core.PostgresDatabase) OracleDatabase(liquibase.database.core.OracleDatabase) SybaseDatabase(liquibase.database.core.SybaseDatabase) SybaseASADatabase(liquibase.database.core.SybaseASADatabase) Database(liquibase.database.Database) AbstractDb2Database(liquibase.database.core.AbstractDb2Database) HsqlDatabase(liquibase.database.core.HsqlDatabase) H2Database(liquibase.database.core.H2Database) Sql(liquibase.sql.Sql) AbstractSqlGeneratorTest(liquibase.sqlgenerator.AbstractSqlGeneratorTest) Test(org.junit.Test)

Aggregations

H2Database (liquibase.database.core.H2Database)25 Test (org.junit.Test)23 Database (liquibase.database.Database)7 MySQLDatabase (liquibase.database.core.MySQLDatabase)7 OracleDatabase (liquibase.database.core.OracleDatabase)7 MSSQLDatabase (liquibase.database.core.MSSQLDatabase)5 PostgresDatabase (liquibase.database.core.PostgresDatabase)5 Sql (liquibase.sql.Sql)5 AbstractSqlGeneratorTest (liquibase.sqlgenerator.AbstractSqlGeneratorTest)5 AbstractDb2Database (liquibase.database.core.AbstractDb2Database)4 DerbyDatabase (liquibase.database.core.DerbyDatabase)4 HsqlDatabase (liquibase.database.core.HsqlDatabase)4 SQLiteDatabase (liquibase.database.core.SQLiteDatabase)4 SybaseASADatabase (liquibase.database.core.SybaseASADatabase)4 SybaseDatabase (liquibase.database.core.SybaseDatabase)4 CreateTableStatement (liquibase.statement.core.CreateTableStatement)4 ContextExpression (liquibase.ContextExpression)3 Labels (liquibase.Labels)3 ColumnConfig (liquibase.change.ColumnConfig)3 SqlGeneratorChain (liquibase.sqlgenerator.SqlGeneratorChain)3