From 4e538dd13847de19236c23b95f2e4c9c167e10c1 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Tue, 14 Jul 2015 14:33:45 +0200 Subject: [PATCH] KEYCLOAK-1530 Ability to specify default database schema --- .../updater/liquibase/LiquibaseJpaUpdaterProvider.java | 10 +++++++--- .../jpa/DefaultJpaConnectionProviderFactory.java | 2 +- .../connections/jpa/updater/JpaUpdaterProvider.java | 2 +- .../reference/en/en-US/modules/server-installation.xml | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/LiquibaseJpaUpdaterProvider.java b/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/LiquibaseJpaUpdaterProvider.java index 65e09dafd8..e205de6eb5 100644 --- a/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/LiquibaseJpaUpdaterProvider.java +++ b/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/LiquibaseJpaUpdaterProvider.java @@ -46,8 +46,8 @@ public class LiquibaseJpaUpdaterProvider implements JpaUpdaterProvider { private static final String CHANGELOG = "META-INF/jpa-changelog-master.xml"; @Override - public String getCurrentVersionSql() { - return "SELECT ID from DATABASECHANGELOG ORDER BY DATEEXECUTED DESC LIMIT 1"; + public String getCurrentVersionSql(String defaultSchema) { + return "SELECT ID from " + getTable("DATABASECHANGELOG", defaultSchema) + " ORDER BY DATEEXECUTED DESC LIMIT 1"; } @Override @@ -65,7 +65,7 @@ public class LiquibaseJpaUpdaterProvider implements JpaUpdaterProvider { if (changeSets.get(0).getId().equals(FIRST_VERSION)) { Statement statement = connection.createStatement(); try { - statement.executeQuery("SELECT id FROM REALM"); + statement.executeQuery("SELECT id FROM " + getTable("REALM", defaultSchema)); logger.infov("Updating database from {0} to {1}", FIRST_VERSION, changeSets.get(changeSets.size() - 1).getId()); liquibase.markNextChangeSetRan(null); @@ -231,4 +231,8 @@ public class LiquibaseJpaUpdaterProvider implements JpaUpdaterProvider { } + private String getTable(String table, String defaultSchema) { + return defaultSchema != null ? defaultSchema + "." + table : table; + } + } diff --git a/connections/jpa/src/main/java/org/keycloak/connections/jpa/DefaultJpaConnectionProviderFactory.java b/connections/jpa/src/main/java/org/keycloak/connections/jpa/DefaultJpaConnectionProviderFactory.java index 06c1bdca5a..61bbafa6bf 100755 --- a/connections/jpa/src/main/java/org/keycloak/connections/jpa/DefaultJpaConnectionProviderFactory.java +++ b/connections/jpa/src/main/java/org/keycloak/connections/jpa/DefaultJpaConnectionProviderFactory.java @@ -133,7 +133,7 @@ public class DefaultJpaConnectionProviderFactory implements JpaConnectionProvide if (databaseSchema.equals("update")) { String currentVersion = null; try { - ResultSet resultSet = connection.createStatement().executeQuery(updater.getCurrentVersionSql()); + ResultSet resultSet = connection.createStatement().executeQuery(updater.getCurrentVersionSql(schema)); if (resultSet.next()) { currentVersion = resultSet.getString(1); } diff --git a/connections/jpa/src/main/java/org/keycloak/connections/jpa/updater/JpaUpdaterProvider.java b/connections/jpa/src/main/java/org/keycloak/connections/jpa/updater/JpaUpdaterProvider.java index 4c67adad55..dbcc833245 100755 --- a/connections/jpa/src/main/java/org/keycloak/connections/jpa/updater/JpaUpdaterProvider.java +++ b/connections/jpa/src/main/java/org/keycloak/connections/jpa/updater/JpaUpdaterProvider.java @@ -14,7 +14,7 @@ public interface JpaUpdaterProvider extends Provider { public String LAST_VERSION = "1.4.0"; - public String getCurrentVersionSql(); + public String getCurrentVersionSql(String defaultSchema); public void update(KeycloakSession session, Connection connection, String defaultSchema); diff --git a/docbook/reference/en/en-US/modules/server-installation.xml b/docbook/reference/en/en-US/modules/server-installation.xml index fd75be0067..ddc5f33ee8 100755 --- a/docbook/reference/en/en-US/modules/server-installation.xml +++ b/docbook/reference/en/en-US/modules/server-installation.xml @@ -196,7 +196,7 @@ schema - Specify the default database schema to use + Specify the database schema to use