From b5cb074219eb72b41228b102cc9e6f036038d044 Mon Sep 17 00:00:00 2001 From: Miguel Gomes Date: Sun, 1 Jul 2018 01:17:47 +0100 Subject: [PATCH 1/2] Upgrade to Liquibase 3.6.2 See gh-13625 --- .../liquibase/LiquibaseAutoConfiguration.java | 6 +++ .../liquibase/LiquibaseProperties.java | 52 +++++++++++++++++++ .../spring-boot-dependencies/pom.xml | 2 +- .../appendix-application-properties.adoc | 4 ++ 4 files changed, 63 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java index f847e7cb0f..32a8915e30 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java @@ -126,6 +126,12 @@ public class LiquibaseAutoConfiguration { liquibase.setChangeLog(this.properties.getChangeLog()); liquibase.setContexts(this.properties.getContexts()); liquibase.setDefaultSchema(this.properties.getDefaultSchema()); + liquibase.setLiquibaseSchema(this.properties.getLiquibaseSchema()); + liquibase.setLiquibaseTablespace(this.properties.getLiquibaseTablespace()); + liquibase.setDatabaseChangeLogTable( + this.properties.getDatabaseChangeLogTable()); + liquibase.setDatabaseChangeLogLockTable( + this.properties.getDatabaseChangeLogLockTable()); liquibase.setDropFirst(this.properties.isDropFirst()); liquibase.setShouldRun(this.properties.isEnabled()); liquibase.setLabels(this.properties.getLabels()); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java index 62f906c165..ef3f2d195b 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java @@ -53,6 +53,26 @@ public class LiquibaseProperties { */ private String defaultSchema; + /** + * Schema to use for Liquibase objects. + */ + private String liquibaseSchema; + + /** + * Tablespace to use for Liquibase objects. + */ + private String liquibaseTablespace; + + /** + * Name of table to use for tracking change history. + */ + private String databaseChangeLogTable; + + /** + * Name of table to use for tracking concurrent Liquibase usage. + */ + private String databaseChangeLogLockTable; + /** * Whether to first drop the database schema. */ @@ -132,6 +152,38 @@ public class LiquibaseProperties { this.defaultSchema = defaultSchema; } + public String getLiquibaseSchema() { + return this.liquibaseSchema; + } + + public void setLiquibaseSchema(String liquibaseSchema) { + this.liquibaseSchema = liquibaseSchema; + } + + public String getLiquibaseTablespace() { + return this.liquibaseTablespace; + } + + public void setLiquibaseTablespace(String liquibaseTablespace) { + this.liquibaseTablespace = liquibaseTablespace; + } + + public String getDatabaseChangeLogTable() { + return this.databaseChangeLogTable; + } + + public void setDatabaseChangeLogTable(String databaseChangeLogTable) { + this.databaseChangeLogTable = databaseChangeLogTable; + } + + public String getDatabaseChangeLogLockTable() { + return this.databaseChangeLogLockTable; + } + + public void setDatabaseChangeLogLockTable(String databaseChangeLogLockTable) { + this.databaseChangeLogLockTable = databaseChangeLogLockTable; + } + public boolean isDropFirst() { return this.dropFirst; } diff --git a/spring-boot-project/spring-boot-dependencies/pom.xml b/spring-boot-project/spring-boot-dependencies/pom.xml index 402c87a802..f227e4658e 100644 --- a/spring-boot-project/spring-boot-dependencies/pom.xml +++ b/spring-boot-project/spring-boot-dependencies/pom.xml @@ -118,7 +118,7 @@ 1.1.0 1.2.51 5.1.0.M1 - 3.6.1 + 3.6.2 2.11.0 1.2.3 1.18.0 diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 432ac27ab7..fe2a1b305b 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -566,6 +566,10 @@ content into your application. Rather, pick only the properties that you need. spring.liquibase.check-change-log-location=true # Whether to check that the change log location exists. spring.liquibase.contexts= # Comma-separated list of runtime contexts to use. spring.liquibase.default-schema= # Default database schema. + spring.liquibase.liquibase-schema= # Schema to use for Liquibase objects. + spring.liquibase.liquibase-tablespace= # Tablespace to use for Liquibase objects. + spring.liquibase.database-change-log-table= # Name of table to use for tracking change history. + spring.liquibase.database-change-log-lock-table= # Name of table to use for tracking concurrent Liquibase usage. spring.liquibase.drop-first=false # Whether to first drop the database schema. spring.liquibase.enabled=true # Whether to enable Liquibase support. spring.liquibase.labels= # Comma-separated list of runtime labels to use. From 4c7c328972c4a7d762d92e66fd3189ca7d28d3e9 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Fri, 13 Jul 2018 11:40:45 +0200 Subject: [PATCH 2/2] Polish "Upgrade to Liquibase 3.6.2" Closes gh-13625 --- .../LiquibaseAutoConfigurationTests.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java index 137ea6da09..847b8ff1c6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java @@ -46,6 +46,7 @@ import org.springframework.boot.testsupport.Assume; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.FileCopyUtils; @@ -143,6 +144,32 @@ public class LiquibaseAutoConfigurationTests { .isEqualTo("public"))); } + @Test + public void overrideLiquibaseInfrastructure() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.liquibase.liquibase-schema:public", + "spring.liquibase.liquibase-tablespace:infra", + "spring.liquibase.database-change-log-table:LIQUI_LOG", + "spring.liquibase.database-change-log-lock-table:LIQUI_LOCK") + .run((context) -> { + SpringLiquibase liquibase = context.getBean(SpringLiquibase.class); + assertThat(liquibase.getLiquibaseSchema()).isEqualTo("public"); + assertThat(liquibase.getLiquibaseTablespace()).isEqualTo("infra"); + assertThat(liquibase.getDatabaseChangeLogTable()) + .isEqualTo("LIQUI_LOG"); + assertThat(liquibase.getDatabaseChangeLogLockTable()) + .isEqualTo("LIQUI_LOCK"); + JdbcTemplate jdbcTemplate = new JdbcTemplate( + context.getBean(DataSource.class)); + assertThat(jdbcTemplate.queryForObject( + "SELECT COUNT(*) FROM public.LIQUI_LOG", Integer.class)) + .isEqualTo(1); + assertThat(jdbcTemplate.queryForObject( + "SELECT COUNT(*) FROM public.LIQUI_LOCK", Integer.class)) + .isEqualTo(1); + }); + } + @Test public void overrideDropFirst() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)