in old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/JdbcIntermediateFacade.java [262:302]
protected ConnectionInfo getConnectionInfoSmartly(final String envQuery,
final Pattern serverVersionPattern,
final int serverVersionGroupIndex,
final Pattern driverVersionPattern,
final int driverVersionGroupIndex) {
String[] env;
Version serverVersion, driverVersion;
final JdbcIntermediateSession session = openSession();
try {
// environment
env = session.queryOneRow(envQuery, 3, String.class);
if (env == null) env = new String[] {null,null,null};
assert env.length == 3 : "Session info should contain 3 components";
// versions
String rdbmsName, serverVersionStr, driverVersionStr;
try {
DatabaseMetaData md = session.getConnection().getMetaData();
rdbmsName = md.getDatabaseProductName();
if (rdbmsName == null) rdbmsName = session.getConnection().getClass().getName();
serverVersionStr = md.getDatabaseProductVersion();
driverVersionStr = md.getDriverVersion();
}
catch (SQLException sqle) {
throw getExceptionRecognizer().recognizeException(sqle, "getting versions using JDBC metadata");
}
serverVersion =
extractVersion(serverVersionStr, serverVersionPattern, serverVersionGroupIndex);
driverVersion =
extractVersion(driverVersionStr, driverVersionPattern, driverVersionGroupIndex);
// ok
return new ConnectionInfo(rdbmsName, env[0], env[1], env[2], serverVersion, driverVersion);
}
finally {
session.close();
}
}