Merge pull request #2124 from mposolda/master
KEYCLOAK-1402 Postgresplus 9.4 support
This commit is contained in:
commit
1618d9250a
3 changed files with 61 additions and 0 deletions
|
@ -109,6 +109,10 @@ public class LiquibaseJpaUpdaterProvider implements JpaUpdaterProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
LogFactory.setInstance(new LogWrapper());
|
LogFactory.setInstance(new LogWrapper());
|
||||||
|
|
||||||
|
// Adding PostgresPlus support to liquibase
|
||||||
|
DatabaseFactory.getInstance().register(new PostgresPlusDatabase());
|
||||||
|
|
||||||
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
|
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
|
||||||
if (defaultSchema != null) {
|
if (defaultSchema != null) {
|
||||||
database.setDefaultSchemaName(defaultSchema);
|
database.setDefaultSchemaName(defaultSchema);
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package org.keycloak.connections.jpa.updater.liquibase;
|
||||||
|
|
||||||
|
import liquibase.database.DatabaseConnection;
|
||||||
|
import liquibase.database.core.PostgresDatabase;
|
||||||
|
import liquibase.exception.DatabaseException;
|
||||||
|
import liquibase.executor.ExecutorService;
|
||||||
|
import liquibase.statement.core.RawSqlStatement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||||
|
*/
|
||||||
|
public class PostgresPlusDatabase extends PostgresDatabase {
|
||||||
|
|
||||||
|
public static final String POSTGRESPLUS_PRODUCT_NAME = "EnterpriseDB";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getShortName() {
|
||||||
|
return "postgresplus";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDefaultDatabaseProductName() {
|
||||||
|
return POSTGRESPLUS_PRODUCT_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException {
|
||||||
|
return POSTGRESPLUS_PRODUCT_NAME.equalsIgnoreCase(conn.getDatabaseProductName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDefaultDriver(String url) {
|
||||||
|
String defaultDriver = super.getDefaultDriver(url);
|
||||||
|
|
||||||
|
if (defaultDriver == null) {
|
||||||
|
if (url.startsWith("jdbc:edb:")) {
|
||||||
|
defaultDriver = "com.edb.Driver";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultDriver;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getConnectionSchemaName() {
|
||||||
|
try {
|
||||||
|
String currentSchema = ExecutorService.getInstance().getExecutor(this)
|
||||||
|
.queryForObject(new RawSqlStatement("select current_schema"), String.class);
|
||||||
|
return currentSchema;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Failed to get current schema", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -502,6 +502,7 @@
|
||||||
<password>${keycloak.connectionsJpa.password}</password>
|
<password>${keycloak.connectionsJpa.password}</password>
|
||||||
|
|
||||||
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
|
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
|
||||||
|
<databaseClass>${keycloak.connectionsJpa.liquibaseDatabaseClass}</databaseClass>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
|
|
Loading…
Reference in a new issue