From 405c2c300040d15d2e74c23e2e981e816ed56820 Mon Sep 17 00:00:00 2001 From: Nabil Fawwaz Elqayyim Date: Tue, 23 Sep 2025 07:03:06 +0700 Subject: [PATCH] Fix LiquibaseEndpoint to respect liquibase-schema property Closes gh-47290 Signed-off-by: Nabil Fawwaz Elqayyim --- .../liquibase/endpoint/LiquibaseEndpoint.java | 10 +++++++--- .../actuate/endpoint/LiquibaseEndpointTests.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java index f09c4b18cfe1..fb715f659e80 100644 --- a/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java +++ b/module/spring-boot-liquibase/src/main/java/org/springframework/boot/liquibase/endpoint/LiquibaseEndpoint.java @@ -44,6 +44,7 @@ * {@link Endpoint @Endpoint} to expose liquibase info. * * @author EddĂș MelĂ©ndez + * @author Nabil Fawwaz Elqayyim * @since 4.0.0 */ @Endpoint(id = "liquibase") @@ -80,9 +81,12 @@ private LiquibaseBeanDescriptor createReport(SpringLiquibase liquibase, Database Database database = null; try { database = factory.findCorrectDatabaseImplementation(connection); - String defaultSchema = liquibase.getDefaultSchema(); - if (StringUtils.hasText(defaultSchema)) { - database.setDefaultSchemaName(defaultSchema); + String schemaToUse = liquibase.getLiquibaseSchema(); + if (!StringUtils.hasText(schemaToUse)) { // Use liquibase-schema if set, otherwise fall back to default-schema + schemaToUse = liquibase.getDefaultSchema(); + } + if (StringUtils.hasText(schemaToUse)) { + database.setDefaultSchemaName(schemaToUse); } database.setDatabaseChangeLogTableName(liquibase.getDatabaseChangeLogTable()); database.setDatabaseChangeLogLockTableName(liquibase.getDatabaseChangeLogLockTable()); diff --git a/module/spring-boot-liquibase/src/test/java/org/springframework/boot/liquibase/actuate/endpoint/LiquibaseEndpointTests.java b/module/spring-boot-liquibase/src/test/java/org/springframework/boot/liquibase/actuate/endpoint/LiquibaseEndpointTests.java index 822649ed1971..45f2f4767c53 100644 --- a/module/spring-boot-liquibase/src/test/java/org/springframework/boot/liquibase/actuate/endpoint/LiquibaseEndpointTests.java +++ b/module/spring-boot-liquibase/src/test/java/org/springframework/boot/liquibase/actuate/endpoint/LiquibaseEndpointTests.java @@ -51,6 +51,7 @@ * @author Andy Wilkinson * @author Stephane Nicoll * @author Leo Li + * @author Nabil Fawwaz Elqayyim */ @WithResource(name = "db/changelog/db.changelog-master.yaml", content = """ databaseChangeLog: @@ -120,6 +121,21 @@ void invokeWithCustomTables() { }); } + @Test + @WithResource(name = "db/create-custom-schema.sql", content = "CREATE SCHEMA LIQUIBASE_SCHEMA;") + void invokeWithLiquibaseSchema() { + this.contextRunner.withUserConfiguration(Config.class, DataSourceWithSchemaConfiguration.class) + .withPropertyValues("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA") + .run((context) -> { + Map liquibaseBeans = context.getBean(LiquibaseEndpoint.class) + .liquibaseBeans() + .getContexts() + .get(context.getId()) + .getLiquibaseBeans(); + assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1); + }); + } + @Test void connectionAutoCommitPropertyIsReset() { this.contextRunner.withUserConfiguration(Config.class).run((context) -> {