From 238b85fabc43f9ba4160a6c1d387165777e00069 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 6 Feb 2023 13:17:50 +0000 Subject: [PATCH] Upgrade to Flyway 9.14.1 Closes gh-34080 --- .../flyway/FlywayAutoConfiguration.java | 1 + .../autoconfigure/flyway/FlywayProperties.java | 15 ++++++++++++++- .../flyway/FlywayPropertiesTests.java | 5 +++-- .../spring-boot-dependencies/build.gradle | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java index 4b76b0fe06..2accc33bd1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java @@ -247,6 +247,7 @@ public class FlywayAutoConfiguration { map.from(properties.getIgnoreMigrationPatterns()).whenNot(List::isEmpty) .as((patterns) -> patterns.toArray(new String[0])).to(configuration::ignoreMigrationPatterns); map.from(properties.getDetectEncoding()).to(configuration::detectEncoding); + map.from(properties.isExecuteInTransaction()).to(configuration::executeInTransaction); } private void configureSqlServerKerberosLoginFile(FluentConfiguration configuration, diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java index 6a370be73f..47c3e86fea 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java @@ -171,7 +171,7 @@ public class FlywayProperties { /** * Target version up to which migrations should be considered. */ - private String target; + private String target = "latest"; /** * Login user of the database to migrate. @@ -362,6 +362,11 @@ public class FlywayProperties { */ private String scriptPlaceholderSuffix = "__"; + /** + * Whether Flyway should execute SQL within a transaction. + */ + private boolean executeInTransaction; + public boolean isEnabled() { return this.enabled; } @@ -842,4 +847,12 @@ public class FlywayProperties { this.scriptPlaceholderSuffix = scriptPlaceholderSuffix; } + public boolean isExecuteInTransaction() { + return this.executeInTransaction; + } + + public void setExecuteInTransaction(boolean executeInTransaction) { + this.executeInTransaction = executeInTransaction; + } + } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java index 8c2dbc40be..1f25663e48 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java @@ -74,7 +74,7 @@ class FlywayPropertiesTests { assertThat(properties.getSqlMigrationSeparator()).isEqualTo(configuration.getSqlMigrationSeparator()); assertThat(properties.getRepeatableSqlMigrationPrefix()) .isEqualTo(configuration.getRepeatableSqlMigrationPrefix()); - assertThat(properties.getTarget()).isEqualTo(configuration.getTarget()); + assertThat(MigrationVersion.fromVersion(properties.getTarget())).isEqualTo(configuration.getTarget()); assertThat(configuration.getInitSql()).isNull(); assertThat(properties.getInitSqls()).isEmpty(); assertThat(properties.isBaselineOnMigrate()).isEqualTo(configuration.isBaselineOnMigrate()); @@ -107,7 +107,8 @@ class FlywayPropertiesTests { ignoreProperties(configuration, "callbacks", "classLoader", "dataSource", "javaMigrations", "javaMigrationClassProvider", "pluginRegister", "resourceProvider", "resolvers"); // Properties we don't want to expose - ignoreProperties(configuration, "resolversAsClassNames", "callbacksAsClassNames", "loggers", "driver"); + ignoreProperties(configuration, "resolversAsClassNames", "callbacksAsClassNames", "loggers", "driver", + "modernConfig", "resolvedEnvironments"); // Handled by the conversion service ignoreProperties(configuration, "baselineVersionAsString", "encodingAsString", "locationsAsStrings", "targetAsString"); diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index ed0786a795..2747a72f9e 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -243,7 +243,7 @@ bom { ] } } - library("Flyway", "9.5.1") { + library("Flyway", "9.14.1") { group("org.flywaydb") { modules = [ "flyway-core",