This is an automated email from the ASF dual-hosted git repository. arjansh pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 16a91c9d0bedba3873401d118a9b2ee6ba7dbd13 Author: Gerard Dellemann <[email protected]> AuthorDate: Wed Sep 4 10:05:12 2019 +0200 MM-1219 Returning schemas SQL Server - Refactoring based on comments in PR 3 --- CHANGES.md | 1 + .../org/apache/metamodel/jdbc/JdbcDataContext.java | 21 ++++++++------------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 511f40e..6af1328 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ ### Apache MetaModel _WIP_ + * [METAMODEL-1219] - Improved returning schemas for SQL Server * [METAMODEL-1217] - Fixes dropping JDBC Tables with view as TableType * [METAMODEL-1215] - Removed deprecated code from pre-Java 8 times. * [METAMODEL-1214] - CompositeDataContext uses wrappedSchema for comparison when searching for it in the cache. diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java index 09cd3d9..d8bbf20 100644 --- a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java +++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java @@ -101,7 +101,8 @@ public class JdbcDataContext extends AbstractDataContext implements UpdateableDa public static final String DATABASE_PRODUCT_IMPALA = "Impala"; private static final String DEFAULT_SCHEMA_NAME_SQLSERVER = "dbo"; - private static final String RESULT_SET_COLUMN_NAME_SCHEMA_SQLSERVER = "TABLE_SCHEM"; + + private static final String SCHEMA_NAME_IDENTIFIER = "TABLE_SCHEM"; public static final ColumnType COLUMN_TYPE_CLOB_AS_STRING = new ColumnTypeImpl("CLOB", SuperColumnType.LITERAL_TYPE, String.class, true); @@ -784,35 +785,29 @@ public class JdbcDataContext extends AbstractDataContext implements UpdateableDa // Distinct schema names. metaData.getTables() is a denormalized resultset final Set<String> schemas = new HashSet<>(); + // Add the default schema (if present) even though it can have no tables if (hasDefaultSQLServerSchema(metaData)) { schemas.add(DEFAULT_SCHEMA_NAME_SQLSERVER); } // Find other schemas from tables - ResultSet tables = null; - try { - tables = metaData.getTables(_catalogName, null, null, JdbcUtils.getTableTypesAsStrings(_tableTypes)); + try (ResultSet tables = metaData + .getTables(_catalogName, null, null, JdbcUtils.getTableTypesAsStrings(_tableTypes))) { while (tables.next()) { - schemas.add(tables.getString(RESULT_SET_COLUMN_NAME_SCHEMA_SQLSERVER)); + schemas.add(tables.getString(SCHEMA_NAME_IDENTIFIER)); } - } finally { - FileHelper.safeClose(tables); } return schemas; } private static boolean hasDefaultSQLServerSchema(final DatabaseMetaData metaData) throws SQLException { - ResultSet schemas = null; - try { - schemas = metaData.getSchemas(); + try (ResultSet schemas = metaData.getSchemas()) { while (schemas.next()) { - if (schemas.getString(RESULT_SET_COLUMN_NAME_SCHEMA_SQLSERVER).equals(DEFAULT_SCHEMA_NAME_SQLSERVER)) { + if (schemas.getString(SCHEMA_NAME_IDENTIFIER).equals(DEFAULT_SCHEMA_NAME_SQLSERVER)) { return true; } } - } finally { - FileHelper.safeClose(schemas); } return false; }
