public ConnectionInfo obtainConnectionInfoNatively()

in old/dekaf-mssql/src/main/java/org/jetbrains/dekaf/jdbc/MssqlIntermediateFacade.java [47:86]


  public ConnectionInfo obtainConnectionInfoNatively() {
    String[] env;
    Version serverVersion, driverVersion;

    final JdbcIntermediateSession session = openSession();
    try {
      // environment
      env = session.queryOneRow(CONNECTION_INFO_QUERY, 4, String.class);
      if (env == null) env = new String[] {null, null, null, null};

      // versions
      String rdbmsName, serverVersionStr, driverVersionStr;
      try {
        DatabaseMetaData md = session.getConnection().getMetaData();
        if (env[3] != null && env[3].contains("Azure")) {
          rdbmsName = Mssql.AZURE_FLAVOUR;
        }
        else {
          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, SIMPLE_VERSION_PATTERN, 1);
      driverVersion =
          extractVersion(driverVersionStr, SIMPLE_VERSION_PATTERN, 1);

      // ok
      return new ConnectionInfo(rdbmsName, env[0], env[1], env[2], serverVersion, driverVersion);
    }
    finally {
      session.close();
    }
  }