diff options
author | Eric Hartmann <hartmann.eric@gmail.com> | 2018-08-29 19:05:01 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-09-07 20:20:56 +0200 |
commit | 1c7800cc1eb2efb6cdace6c25e149c9eb0021c51 (patch) | |
tree | 65391152c462a984adb78ab970a50fe0dea9b4af /server/sonar-db-core/src/main/java | |
parent | 8a2e91102485cb8737352b49bc0c8750e068bd79 (diff) | |
download | sonarqube-1c7800cc1eb2efb6cdace6c25e149c9eb0021c51.tar.gz sonarqube-1c7800cc1eb2efb6cdace6c25e149c9eb0021c51.zip |
Use the underlying connection to determine schema
Diffstat (limited to 'server/sonar-db-core/src/main/java')
-rw-r--r-- | server/sonar-db-core/src/main/java/org/sonar/db/DatabaseUtils.java | 26 | ||||
-rw-r--r-- | server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java | 3 |
2 files changed, 15 insertions, 14 deletions
diff --git a/server/sonar-db-core/src/main/java/org/sonar/db/DatabaseUtils.java b/server/sonar-db-core/src/main/java/org/sonar/db/DatabaseUtils.java index eaca483020b..79ba984c3fe 100644 --- a/server/sonar-db-core/src/main/java/org/sonar/db/DatabaseUtils.java +++ b/server/sonar-db-core/src/main/java/org/sonar/db/DatabaseUtils.java @@ -317,21 +317,21 @@ public class DatabaseUtils { } private static boolean doTableExists(String table, Connection connection) { + String schema = null; + + try { + // Using H2 with a JDBC TCP connection is throwing an exception + // See org.h2.engine.SessionRemote#getCurrentSchemaName() + if (!"H2 JDBC Driver".equals(connection.getMetaData().getDriverName())) { + schema = connection.getSchema(); + } + } catch (SQLException e) { + Loggers.get(DatabaseUtils.class).warn("Fail to determine schema. Keeping it null for searching tables", e); + } + // table type is used to speed-up Oracle by removing introspection of system tables and aliases. - try (ResultSet rs = connection.getMetaData().getTables(connection.getCatalog(), connection.getSchema(), table, TABLE_TYPE)) { - System.out.println("****>> " + rs.getMetaData().getSchemaName(1)); - System.out.println("****>>> " + connection.getSchema()); + try (ResultSet rs = connection.getMetaData().getTables(connection.getCatalog(), schema, table, TABLE_TYPE)) { while (rs.next()) { - System.out.println("TABLE_CAT = " + rs.getString("TABLE_CAT")); - System.out.println("TABLE_SCHEM = " + rs.getString("TABLE_SCHEM")); - System.out.println("TABLE_NAME = " + rs.getString("TABLE_NAME")); - System.out.println("TABLE_TYPE = " + rs.getString("TABLE_TYPE")); - System.out.println("REMARKS = " + rs.getString("REMARKS")); - //System.out.println("TYPE_CAT = " + rs.getString("TYPE_CAT")); - //System.out.println("TYPE_SCHEM = " + rs.getString("TYPE_SCHEM")); - //System.out.println("TYPE_NAME = " + rs.getString("TYPE_NAME")); - System.out.println("SELF_REFERENCING_COL_NAME = " + rs.getString("SELF_REFERENCING_COL_NAME")); - System.out.println("REF_GENERATION = " + rs.getString("REF_GENERATION")); String name = rs.getString("TABLE_NAME"); if (table.equalsIgnoreCase(name)) { return true; diff --git a/server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java b/server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java index 90ad11a5789..59d8541fccc 100644 --- a/server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java +++ b/server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java @@ -93,7 +93,7 @@ public class DefaultDatabase implements Database { private void initDataSource() throws Exception { // but it's correctly caught by start() LOG.info("Create JDBC data source for {}", properties.getProperty(JDBC_URL.getKey()), DEFAULT_URL); - BasicDataSource basicDataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(extractCommonsDbcpProperties(properties)); + BasicDataSource basicDataSource = BasicDataSourceFactory.createDataSource(extractCommonsDbcpProperties(properties)); datasource = new ProfiledDataSource(basicDataSource, NullConnectionInterceptor.INSTANCE); datasource.setConnectionInitSqls(dialect.getConnectionInitStatements()); datasource.setValidationQuery(dialect.getValidationQuery()); @@ -163,6 +163,7 @@ public class DefaultDatabase implements Database { @VisibleForTesting static Properties extractCommonsDbcpProperties(Properties properties) { Properties result = new Properties(); + result.setProperty("accessToUnderlyingConnectionAllowed", "true"); for (Map.Entry<Object, Object> entry : properties.entrySet()) { String key = (String) entry.getKey(); if (StringUtils.startsWith(key, SONAR_JDBC)) { |