Commit 5de67e9b authored by Andy Wilkinson's avatar Andy Wilkinson

Merge pull request #22120 from kedar-joshi

* gh-22120:
  Upgrade to Flyway 6.5.0 and support createSchemas

Closes gh-22120
parents f6400e95 6c29b29b
...@@ -178,6 +178,7 @@ public class FlywayAutoConfiguration { ...@@ -178,6 +178,7 @@ public class FlywayAutoConfiguration {
// No method reference for compatibility with Flyway 5.x // No method reference for compatibility with Flyway 5.x
map.from(properties.getDefaultSchema()).to((schema) -> configuration.defaultSchema(schema)); map.from(properties.getDefaultSchema()).to((schema) -> configuration.defaultSchema(schema));
map.from(properties.getSchemas()).as(StringUtils::toStringArray).to(configuration::schemas); map.from(properties.getSchemas()).as(StringUtils::toStringArray).to(configuration::schemas);
configureCreateSchemas(configuration, properties.isCreateSchemas());
map.from(properties.getTable()).to(configuration::table); map.from(properties.getTable()).to(configuration::table);
// No method reference for compatibility with Flyway 5.x // No method reference for compatibility with Flyway 5.x
map.from(properties.getTablespace()).whenNonNull().to((tablespace) -> configuration.tablespace(tablespace)); map.from(properties.getTablespace()).whenNonNull().to((tablespace) -> configuration.tablespace(tablespace));
...@@ -221,6 +222,15 @@ public class FlywayAutoConfiguration { ...@@ -221,6 +222,15 @@ public class FlywayAutoConfiguration {
map.from(properties.getUndoSqlMigrationPrefix()).whenNonNull().to(configuration::undoSqlMigrationPrefix); map.from(properties.getUndoSqlMigrationPrefix()).whenNonNull().to(configuration::undoSqlMigrationPrefix);
} }
private void configureCreateSchemas(FluentConfiguration configuration, boolean createSchemas) {
try {
configuration.createSchemas(createSchemas);
}
catch (NoSuchMethodError ex) {
// Flyway < 6.5
}
}
private void configureValidateMigrationNaming(FluentConfiguration configuration, private void configureValidateMigrationNaming(FluentConfiguration configuration,
boolean validateMigrationNaming) { boolean validateMigrationNaming) {
try { try {
......
...@@ -74,6 +74,12 @@ public class FlywayProperties { ...@@ -74,6 +74,12 @@ public class FlywayProperties {
*/ */
private List<String> schemas = new ArrayList<>(); private List<String> schemas = new ArrayList<>();
/**
* Whether Flyway should attempt to create the schemas specified in the schemas
* property.
*/
private boolean createSchemas = true;
/** /**
* Name of the schema history table that will be used by Flyway. * Name of the schema history table that will be used by Flyway.
*/ */
...@@ -343,6 +349,14 @@ public class FlywayProperties { ...@@ -343,6 +349,14 @@ public class FlywayProperties {
this.schemas = schemas; this.schemas = schemas;
} }
public boolean isCreateSchemas() {
return this.createSchemas;
}
public void setCreateSchemas(boolean createSchemas) {
this.createSchemas = createSchemas;
}
public String getTable() { public String getTable() {
return this.table; return this.table;
} }
......
...@@ -53,6 +53,7 @@ class FlywayPropertiesTests { ...@@ -53,6 +53,7 @@ class FlywayPropertiesTests {
assertThat(properties.getConnectRetries()).isEqualTo(configuration.getConnectRetries()); assertThat(properties.getConnectRetries()).isEqualTo(configuration.getConnectRetries());
assertThat(properties.getDefaultSchema()).isEqualTo(configuration.getDefaultSchema()); assertThat(properties.getDefaultSchema()).isEqualTo(configuration.getDefaultSchema());
assertThat(properties.getSchemas()).isEqualTo(Arrays.asList(configuration.getSchemas())); assertThat(properties.getSchemas()).isEqualTo(Arrays.asList(configuration.getSchemas()));
assertThat(properties.isCreateSchemas()).isEqualTo(configuration.getCreateSchemas());
assertThat(properties.getTable()).isEqualTo(configuration.getTable()); assertThat(properties.getTable()).isEqualTo(configuration.getTable());
assertThat(properties.getBaselineDescription()).isEqualTo(configuration.getBaselineDescription()); assertThat(properties.getBaselineDescription()).isEqualTo(configuration.getBaselineDescription());
assertThat(MigrationVersion.fromVersion(properties.getBaselineVersion())) assertThat(MigrationVersion.fromVersion(properties.getBaselineVersion()))
...@@ -98,7 +99,8 @@ class FlywayPropertiesTests { ...@@ -98,7 +99,8 @@ class FlywayPropertiesTests {
ignoreProperties(properties, "url", "user", "password", "enabled", "checkLocation", "createDataSource"); ignoreProperties(properties, "url", "user", "password", "enabled", "checkLocation", "createDataSource");
// High level object we can't set with properties // High level object we can't set with properties
ignoreProperties(configuration, "callbacks", "classLoader", "dataSource", "javaMigrations", "resolvers"); ignoreProperties(configuration, "callbacks", "classLoader", "dataSource", "javaMigrations",
"javaMigrationClassProvider", "resourceProvider", "resolvers");
// Properties we don't want to expose // Properties we don't want to expose
ignoreProperties(configuration, "resolversAsClassNames", "callbacksAsClassNames"); ignoreProperties(configuration, "resolversAsClassNames", "callbacksAsClassNames");
// Handled by the conversion service // Handled by the conversion service
...@@ -109,6 +111,8 @@ class FlywayPropertiesTests { ...@@ -109,6 +111,8 @@ class FlywayPropertiesTests {
ignoreProperties(properties, "initSqls"); ignoreProperties(properties, "initSqls");
// Handled as dryRunOutput // Handled as dryRunOutput
ignoreProperties(configuration, "dryRunOutputAsFile", "dryRunOutputAsFileName"); ignoreProperties(configuration, "dryRunOutputAsFile", "dryRunOutputAsFileName");
// Handled as createSchemas
ignoreProperties(configuration, "shouldCreateSchemas");
List<String> configurationKeys = new ArrayList<>(configuration.keySet()); List<String> configurationKeys = new ArrayList<>(configuration.keySet());
Collections.sort(configurationKeys); Collections.sort(configurationKeys);
List<String> propertiesKeys = new ArrayList<>(properties.keySet()); List<String> propertiesKeys = new ArrayList<>(properties.keySet());
......
...@@ -310,7 +310,7 @@ bom { ...@@ -310,7 +310,7 @@ bom {
] ]
} }
} }
library("Flyway", "6.4.4") { library("Flyway", "6.5.0") {
group("org.flywaydb") { group("org.flywaydb") {
modules = [ modules = [
"flyway-core" "flyway-core"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment