Upgrade to Flyway 9.0.1

See gh-31723
This commit is contained in:
Vedran Pavic
2022-07-14 15:15:12 +02:00
committed by Andy Wilkinson
parent 785588826e
commit f1bf80f5e1
9 changed files with 23 additions and 179 deletions

View File

@@ -32,7 +32,6 @@ import org.flywaydb.core.api.MigrationVersion;
import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.migration.JavaMigration;
import org.flywaydb.core.internal.plugin.PluginRegister;
import org.flywaydb.database.sqlserver.SQLServerConfigurationExtension;
import org.springframework.beans.factory.ObjectProvider;
@@ -202,7 +201,6 @@ public class FlywayAutoConfiguration {
map.from(properties.isCleanDisabled()).to(configuration::cleanDisabled);
map.from(properties.isCleanOnValidationError()).to(configuration::cleanOnValidationError);
map.from(properties.isGroup()).to(configuration::group);
configureIgnoredMigrations(configuration, properties, map);
map.from(properties.isMixed()).to(configuration::mixed);
map.from(properties.isOutOfOrder()).to(configuration::outOfOrder);
map.from(properties.isSkipDefaultCallbacks()).to(configuration::skipDefaultCallbacks);
@@ -242,7 +240,8 @@ public class FlywayAutoConfiguration {
map.from(properties.getOutputQueryResults())
.to((outputQueryResults) -> configuration.outputQueryResults(outputQueryResults));
map.from(properties.getSqlServerKerberosLoginFile()).whenNonNull()
.to(this::configureSqlServerKerberosLoginFile);
.to((sqlServerKerberosLoginFile) -> configureSqlServerKerberosLoginFile(configuration,
sqlServerKerberosLoginFile));
// No method reference for compatibility with Flyway 6.x
map.from(properties.getSkipExecutingMigrations())
.to((skipExecutingMigrations) -> configuration.skipExecutingMigrations(skipExecutingMigrations));
@@ -253,18 +252,6 @@ public class FlywayAutoConfiguration {
// No method reference for compatibility with Flyway version < 7.9
map.from(properties.getDetectEncoding())
.to((detectEncoding) -> configuration.detectEncoding(detectEncoding));
// No method reference for compatibility with Flyway version < 8.0
map.from(properties.getBaselineMigrationPrefix())
.to((baselineMigrationPrefix) -> configuration.baselineMigrationPrefix(baselineMigrationPrefix));
}
@SuppressWarnings("deprecation")
private void configureIgnoredMigrations(FluentConfiguration configuration, FlywayProperties properties,
PropertyMapper map) {
map.from(properties.isIgnoreMissingMigrations()).to(configuration::ignoreMissingMigrations);
map.from(properties.isIgnoreIgnoredMigrations()).to(configuration::ignoreIgnoredMigrations);
map.from(properties.isIgnorePendingMigrations()).to(configuration::ignorePendingMigrations);
map.from(properties.isIgnoreFutureMigrations()).to(configuration::ignoreFutureMigrations);
}
private void configureFailOnMissingLocations(FluentConfiguration configuration,
@@ -286,9 +273,11 @@ public class FlywayAutoConfiguration {
}
}
private void configureSqlServerKerberosLoginFile(String sqlServerKerberosLoginFile) {
SQLServerConfigurationExtension sqlServerConfigurationExtension = PluginRegister
private void configureSqlServerKerberosLoginFile(FluentConfiguration configuration,
String sqlServerKerberosLoginFile) {
SQLServerConfigurationExtension sqlServerConfigurationExtension = configuration.getPluginRegister()
.getPlugin(SQLServerConfigurationExtension.class);
Assert.state(sqlServerConfigurationExtension != null, "Flyway SQL Server extension missing");
sqlServerConfigurationExtension.setKerberosLoginFile(sqlServerKerberosLoginFile);
}

View File

@@ -28,7 +28,6 @@ import java.util.List;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
import org.springframework.boot.convert.DurationUnit;
/**
@@ -209,7 +208,7 @@ public class FlywayProperties {
/**
* Whether to disable cleaning of the database.
*/
private boolean cleanDisabled;
private boolean cleanDisabled = true;
/**
* Whether to automatically call clean when a validation error occurs.
@@ -222,30 +221,6 @@ public class FlywayProperties {
*/
private boolean group;
/**
* Whether to ignore missing migrations when reading the schema history table.
*/
@Deprecated
private boolean ignoreMissingMigrations;
/**
* Whether to ignore ignored migrations when reading the schema history table.
*/
@Deprecated
private boolean ignoreIgnoredMigrations;
/**
* Whether to ignore pending migrations when reading the schema history table.
*/
@Deprecated
private boolean ignorePendingMigrations;
/**
* Whether to ignore future migrations when reading the schema history table.
*/
@Deprecated
private boolean ignoreFutureMigrations = true;
/**
* Whether to allow mixing transactional and non-transactional statements within the
* same migration.
@@ -377,11 +352,6 @@ public class FlywayProperties {
*/
private Boolean detectEncoding;
/**
* Filename prefix for baseline migrations. Requires Flyway Teams.
*/
private String baselineMigrationPrefix;
/**
* Prefix of placeholders in migration scripts.
*/
@@ -664,50 +634,6 @@ public class FlywayProperties {
this.group = group;
}
@Deprecated
@DeprecatedConfigurationProperty(replacement = "spring.flyway.ignore-migration-patterns")
public boolean isIgnoreMissingMigrations() {
return this.ignoreMissingMigrations;
}
@Deprecated
public void setIgnoreMissingMigrations(boolean ignoreMissingMigrations) {
this.ignoreMissingMigrations = ignoreMissingMigrations;
}
@Deprecated
@DeprecatedConfigurationProperty(replacement = "spring.flyway.ignore-migration-patterns")
public boolean isIgnoreIgnoredMigrations() {
return this.ignoreIgnoredMigrations;
}
@Deprecated
public void setIgnoreIgnoredMigrations(boolean ignoreIgnoredMigrations) {
this.ignoreIgnoredMigrations = ignoreIgnoredMigrations;
}
@Deprecated
@DeprecatedConfigurationProperty(replacement = "spring.flyway.ignore-migration-patterns")
public boolean isIgnorePendingMigrations() {
return this.ignorePendingMigrations;
}
@Deprecated
public void setIgnorePendingMigrations(boolean ignorePendingMigrations) {
this.ignorePendingMigrations = ignorePendingMigrations;
}
@Deprecated
@DeprecatedConfigurationProperty(replacement = "spring.flyway.ignore-migration-patterns")
public boolean isIgnoreFutureMigrations() {
return this.ignoreFutureMigrations;
}
@Deprecated
public void setIgnoreFutureMigrations(boolean ignoreFutureMigrations) {
this.ignoreFutureMigrations = ignoreFutureMigrations;
}
public boolean isMixed() {
return this.mixed;
}
@@ -860,17 +786,6 @@ public class FlywayProperties {
this.oracleKerberosCacheFile = oracleKerberosCacheFile;
}
@DeprecatedConfigurationProperty(replacement = "spring.flyway.kerberos-config-file")
@Deprecated
public String getOracleKerberosConfigFile() {
return getKerberosConfigFile();
}
@Deprecated
public void setOracleKerberosConfigFile(String oracleKerberosConfigFile) {
setKerberosConfigFile(oracleKerberosConfigFile);
}
public Boolean getOutputQueryResults() {
return this.outputQueryResults;
}
@@ -911,14 +826,6 @@ public class FlywayProperties {
this.detectEncoding = detectEncoding;
}
public String getBaselineMigrationPrefix() {
return this.baselineMigrationPrefix;
}
public void setBaselineMigrationPrefix(String baselineMigrationPrefix) {
this.baselineMigrationPrefix = baselineMigrationPrefix;
}
public String getScriptPlaceholderPrefix() {
return this.scriptPlaceholderPrefix;
}

View File

@@ -103,11 +103,6 @@ class Flyway5xAutoConfigurationTests {
return 1;
}
@Override
public boolean isUndo() {
return false;
}
@Override
public boolean canExecuteInTransaction() {
return true;
@@ -118,11 +113,6 @@ class Flyway5xAutoConfigurationTests {
}
@Override
public boolean isBaselineMigration() {
return false;
}
}
}

View File

@@ -33,8 +33,6 @@ import org.flywaydb.core.api.callback.Context;
import org.flywaydb.core.api.callback.Event;
import org.flywaydb.core.api.migration.JavaMigration;
import org.flywaydb.core.internal.license.FlywayTeamsUpgradeRequiredException;
import org.flywaydb.core.internal.plugin.PluginRegister;
import org.flywaydb.database.sqlserver.SQLServerConfigurationExtension;
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
@@ -493,8 +491,8 @@ class FlywayAutoConfigurationTests {
void licenseKeyIsCorrectlyMapped(CapturedOutput output) {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.flyway.license-key=<<secret>>")
.run((context) -> assertThat(output).contains(
"Flyway Teams Edition upgrade required: licenseKey is not supported by Flyway Community Edition."));
.run((context) -> assertThat(output).contains("License key detected - in order to use Teams or "
+ "Enterprise features, download Flyway Teams Edition & Flyway Enterprise Edition"));
}
@Test
@@ -573,14 +571,6 @@ class FlywayAutoConfigurationTests {
.run(validateFlywayTeamsPropertyOnly("kerberosConfigFile"));
}
@Test
@Deprecated
void oracleKerberosConfigFileIsCorrectlyMappedToReplacementProperty() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.flyway.oracle-kerberos-config-file=/tmp/config")
.run(validateFlywayTeamsPropertyOnly("kerberosConfigFile"));
}
@Test
void oracleKerberosCacheFileIsCorrectlyMapped() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
@@ -597,15 +587,9 @@ class FlywayAutoConfigurationTests {
@Test
void sqlServerKerberosLoginFileIsCorrectlyMapped() {
try {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.flyway.sql-server-kerberos-login-file=/tmp/config")
.run(validateFlywayTeamsPropertyOnly("sqlserver.kerberos.login.file"));
}
finally {
// Reset to default value
PluginRegister.getPlugin(SQLServerConfigurationExtension.class).setKerberosLoginFile(null);
}
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.flyway.sql-server-kerberos-login-file=/tmp/config")
.run(validateFlywayTeamsPropertyOnly("sqlserver.kerberos.login.file"));
}
@Test
@@ -643,13 +627,6 @@ class FlywayAutoConfigurationTests {
});
}
@Test
void baselineMigrationPrefixIsCorrectlyMapped() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.flyway.baseline-migration-prefix=BL")
.run(validateFlywayTeamsPropertyOnly("baselineMigrationPrefix"));
}
@Test
void scriptPlaceholderPrefixIsCorrectlyMapped() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
@@ -1003,11 +980,6 @@ class FlywayAutoConfigurationTests {
return 1;
}
@Override
public boolean isUndo() {
return false;
}
@Override
public boolean canExecuteInTransaction() {
return true;
@@ -1018,11 +990,6 @@ class FlywayAutoConfigurationTests {
}
@Override
public boolean isBaselineMigration() {
return false;
}
}
}

View File

@@ -44,7 +44,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class FlywayPropertiesTests {
@SuppressWarnings("deprecation")
@Test
void defaultValuesAreConsistent() {
FlywayProperties properties = new FlywayProperties();
@@ -86,10 +85,6 @@ class FlywayPropertiesTests {
assertThat(configuration.isCleanDisabled()).isEqualTo(properties.isCleanDisabled());
assertThat(configuration.isCleanOnValidationError()).isEqualTo(properties.isCleanOnValidationError());
assertThat(configuration.isGroup()).isEqualTo(properties.isGroup());
assertThat(configuration.isIgnoreMissingMigrations()).isEqualTo(properties.isIgnoreMissingMigrations());
assertThat(configuration.isIgnoreIgnoredMigrations()).isEqualTo(properties.isIgnoreIgnoredMigrations());
assertThat(configuration.isIgnorePendingMigrations()).isEqualTo(properties.isIgnorePendingMigrations());
assertThat(configuration.isIgnoreFutureMigrations()).isEqualTo(properties.isIgnoreFutureMigrations());
assertThat(configuration.isMixed()).isEqualTo(properties.isMixed());
assertThat(configuration.isOutOfOrder()).isEqualTo(properties.isOutOfOrder());
assertThat(configuration.isSkipDefaultCallbacks()).isEqualTo(properties.isSkipDefaultCallbacks());
@@ -113,7 +108,7 @@ class FlywayPropertiesTests {
ignoreProperties(properties, "sqlServerKerberosLoginFile");
// High level object we can't set with properties
ignoreProperties(configuration, "callbacks", "classLoader", "dataSource", "javaMigrations",
"javaMigrationClassProvider", "resourceProvider", "resolvers");
"javaMigrationClassProvider", "pluginRegister", "resourceProvider", "resolvers");
// Properties we don't want to expose
ignoreProperties(configuration, "resolversAsClassNames", "callbacksAsClassNames", "loggers", "driver");
// Handled by the conversion service