use of liquibase.snapshot.DatabaseSnapshot in project liquibase by liquibase.
the class CockroachDBIntegrationTest method snapshot.
@Test
public void snapshot() throws Exception {
if (getDatabase() == null) {
return;
}
runCompleteChangeLog();
DatabaseSnapshot snapshot = SnapshotGeneratorFactory.getInstance().createSnapshot(getDatabase().getDefaultSchema(), getDatabase(), new SnapshotControl(getDatabase()));
System.out.println(snapshot);
}
use of liquibase.snapshot.DatabaseSnapshot in project liquibase by liquibase.
the class MariaDBIntegrationTest method dateDefaultValue.
@Test
public void dateDefaultValue() throws Exception {
if (getDatabase() == null) {
return;
}
Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", getDatabase()).execute(new RawSqlStatement("DROP TABLE IF " + "EXISTS ad"));
try {
Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", getDatabase()).execute(new RawSqlStatement("CREATE TABLE ad (\n" + "ad_id int(10) unsigned NOT NULL AUTO_INCREMENT,\n" + "advertiser_id int(10) unsigned NOT NULL,\n" + "ad_type_id int(10) unsigned NOT NULL,\n" + "name varchar(155) NOT NULL DEFAULT '',\n" + "label varchar(155)NOT NULL DEFAULT '',\n" + "description text NOT NULL,\n" + "active tinyint(1) NOT NULL DEFAULT '0',\n" + "created datetime NOT NULL DEFAULT '0000-00-00 00:00:00',\n" + "updated datetime DEFAULT '0000-00-00 00:00:00',\n" + "PRIMARY KEY (ad_id),\n" + "KEY active (active)\n" + ")"));
} catch (DatabaseException e) {
if (e.getCause() instanceof SQLSyntaxErrorException) {
Scope.getCurrentScope().getLog(getClass()).warning("MariaDB returned DatabaseException", e);
assumeTrue("MariaDB seems to run in strict mode (no datetime literals with 0000-00-00 allowed). " + "Cannot run this test", false);
} else {
throw e;
}
}
DatabaseSnapshot snapshot = SnapshotGeneratorFactory.getInstance().createSnapshot(CatalogAndSchema.DEFAULT, getDatabase(), new SnapshotControl(getDatabase()));
Column createdColumn = snapshot.get(new Column().setRelation(new Table().setName("ad").setSchema(new Schema())).setName("created"));
Object defaultValue = createdColumn.getDefaultValue();
assertNotNull(defaultValue);
assertEquals("0000-00-00 00:00:00", defaultValue);
}
use of liquibase.snapshot.DatabaseSnapshot in project liquibase by liquibase.
the class H2IntegrationTest method snapshot.
@Test
public void snapshot() throws Exception {
if (getDatabase() == null) {
return;
}
runCompleteChangeLog();
DatabaseSnapshot snapshot = SnapshotGeneratorFactory.getInstance().createSnapshot(getDatabase().getDefaultSchema(), getDatabase(), new SnapshotControl(getDatabase()));
System.out.println(snapshot);
}
use of liquibase.snapshot.DatabaseSnapshot in project liquibase by liquibase.
the class MssqlIntegrationTest method dataTypeParamsTest.
@Test
public /**
* When snapshotting an MSSQL database, size information is included for
* XML, SMALLMONEY, HIERARCHYID, DATETIME2, IMAGE, and DATETIMEOFFSET even when the default precisions (if
* applicable at all) are used. Default sizes/precisions should not be transferred into resulting ChangeLogs/
* snapshots.
*
* Reference: https://liquibase.jira.com/browse/CORE-1515
*/
void dataTypeParamsTest() throws Exception {
assumeNotNull(this.getDatabase());
clearDatabase();
Liquibase liquibase = createLiquibase("changelogs/mssql/issues/data.type.params.xml");
liquibase.update((String) null);
DatabaseSnapshot snapshot = SnapshotGeneratorFactory.getInstance().createSnapshot(CatalogAndSchema.DEFAULT, this.getDatabase(), new SnapshotControl(getDatabase()));
for (Table table : snapshot.get(Table.class)) {
if (getDatabase().isLiquibaseObject(table)) {
continue;
}
for (Column column : table.getColumns()) {
String expectedType = column.getName().split("_")[0];
String foundTypeDefinition = DataTypeFactory.getInstance().from(column.getType(), new MSSQLDatabase()).toDatabaseDataType(getDatabase()).toString();
assertFalse("Parameter found in " + table.getName() + "." + column.getName(), foundTypeDefinition.contains("("));
}
}
}
use of liquibase.snapshot.DatabaseSnapshot in project liquibase by liquibase.
the class MssqlIntegrationTest method defaultValuesTests.
@Test
public void defaultValuesTests() throws Exception {
clearDatabase();
assumeNotNull(this.getDatabase());
Liquibase liquibase = createLiquibase("changelogs/mssql/issues/default.values.xml");
liquibase.update((String) null);
DatabaseSnapshot snapshot = SnapshotGeneratorFactory.getInstance().createSnapshot(CatalogAndSchema.DEFAULT, this.getDatabase(), new SnapshotControl(getDatabase()));
for (Table table : snapshot.get(Table.class)) {
for (Column column : table.getColumns()) {
if (column.getName().toLowerCase().endsWith("_default")) {
Object defaultValue = column.getDefaultValue();
assertNotNull("Null default value for " + table.getName() + "." + column.getName(), defaultValue);
if (column.getName().toLowerCase().contains("date") || column.getName().toLowerCase().contains("time")) {
if (defaultValue instanceof String) {
assertTrue(defaultValue.equals("2017-12-09 23:52:39.1234567 +01:00"));
} else if (defaultValue instanceof DatabaseFunction) {
((DatabaseFunction) defaultValue).getValue().contains("type datetimeoffset");
} else if (defaultValue instanceof Time) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(((Date) defaultValue));
assertEquals(23, calendar.get(Calendar.HOUR_OF_DAY));
assertEquals(52, calendar.get(Calendar.MINUTE));
assertEquals(39, calendar.get(Calendar.SECOND));
} else {
assertTrue("Unexpected default type " + defaultValue.getClass().getName() + " for " + table.getName() + "." + column.getName(), defaultValue instanceof Date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(((Date) defaultValue));
assertEquals(9, calendar.get(Calendar.DAY_OF_MONTH));
assertEquals(11, calendar.get(Calendar.MONTH));
assertEquals(2017, calendar.get(Calendar.YEAR));
}
} else if (column.getName().toLowerCase().contains("char_")) {
assertTrue("Unexpected default type " + defaultValue.getClass().getName() + " for " + table.getName() + "." + column.getName(), defaultValue instanceof String);
} else if (column.getName().toLowerCase().contains("binary_")) {
assertTrue("Unexpected default type " + defaultValue.getClass().getName() + " for " + table.getName() + "." + column.getName(), defaultValue instanceof DatabaseFunction);
} else if (column.getName().toLowerCase().contains("bit_")) {
// todo: test better. Bits are handled odd
} else {
assertTrue("Unexpected default type " + defaultValue.getClass().getName() + " for " + table.getName() + "." + column.getName(), defaultValue instanceof Number);
assertEquals(1, ((Number) defaultValue).intValue());
}
}
}
}
}
Aggregations