KEYCLOAK-1402 Postgresplus 9.4 support

This commit is contained in:
mposolda 2016-01-27 22:01:35 +01:00
parent 1b0ccae4ac
commit e1416b658f
3 changed files with 61 additions and 0 deletions

View file

@ -109,6 +109,10 @@ public class LiquibaseJpaUpdaterProvider implements JpaUpdaterProvider {
}
LogFactory.setInstance(new LogWrapper());
// Adding PostgresPlus support to liquibase
DatabaseFactory.getInstance().register(new PostgresPlusDatabase());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
if (defaultSchema != null) {
database.setDefaultSchemaName(defaultSchema);

View file

@ -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);
}
}
}

View file

@ -502,6 +502,7 @@
<password>${keycloak.connectionsJpa.password}</password>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
<databaseClass>${keycloak.connectionsJpa.liquibaseDatabaseClass}</databaseClass>
</configuration>
<executions>
<execution>