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

Reply via email to