Repository: metamodel
Updated Branches:
  refs/heads/master f45f7e2b1 -> d825b79fe


METAMODEL-1208: Fixed closing of JDBC ResultSets when getting metadata.

Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/d825b79f
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/d825b79f
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/d825b79f

Branch: refs/heads/master
Commit: d825b79fe73c7aa3379cba874bcf0f72d35a762c
Parents: f45f7e2
Author: lixiaobao <lixiaobao0...@gmail.com>
Authored: Mon Jan 7 09:04:40 2019 -0800
Committer: Kasper Sørensen <i.am.kasper.soren...@gmail.com>
Committed: Mon Jan 7 09:04:40 2019 -0800

----------------------------------------------------------------------
 CHANGES.md                                      |  4 +++
 .../apache/metamodel/jdbc/JdbcDataContext.java  | 30 +++++++++++++-------
 2 files changed, 24 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metamodel/blob/d825b79f/CHANGES.md
----------------------------------------------------------------------
diff --git a/CHANGES.md b/CHANGES.md
index 2cf3249..4c12dbf 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,7 @@
+### Apache MetaModel 5.2.1 (WIP)
+
+ * [METAMODEL-1208] - Fixed closing of JDBC ResultSets when getting certain 
metadata.
+
 ### Apache MetaModel 5.2.0
 
  * [METAMODEL-1205] - Support for Java / JDK versions 8, 9, 10 and 11.

http://git-wip-us.apache.org/repos/asf/metamodel/blob/d825b79f/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
----------------------------------------------------------------------
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 f49c0ba..1668438 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/JdbcDataContext.java
@@ -289,7 +289,7 @@ public class JdbcDataContext extends AbstractDataContext 
implements UpdateableDa
         } catch (SQLException e) {
             throw JdbcUtils.wrapException(e, "retrieve schema and catalog 
metadata", JdbcActionType.METADATA);
         } finally {
-            close(null);
+            FileHelper.safeClose(rs);
         }
         return result;
     }
@@ -580,6 +580,7 @@ public class JdbcDataContext extends AbstractDataContext 
implements UpdateableDa
         } catch (SQLException e) {
             logger.error("Error retrieving catalog metadata", e);
         } finally {
+            FileHelper.safeClose(rs);
             close(connection);
             logger.debug("Retrieved {} catalogs", catalogs.size());
         }
@@ -752,9 +753,14 @@ public class JdbcDataContext extends AbstractDataContext 
implements UpdateableDa
         // Distinct schema names. metaData.getTables() is a denormalized
         // resultset
         Set<String> schemas = new HashSet<>();
-        ResultSet rs = metaData.getTables(_catalogName, null, null, 
JdbcUtils.getTableTypesAsStrings(_tableTypes));
-        while (rs.next()) {
-            schemas.add(rs.getString("TABLE_SCHEM"));
+        ResultSet rs = null;
+        try {
+            rs = metaData.getTables(_catalogName, null, null, 
JdbcUtils.getTableTypesAsStrings(_tableTypes));
+            while (rs.next()) {
+                schemas.add(rs.getString("TABLE_SCHEM"));
+            }
+        } finally {
+            FileHelper.safeClose(rs);
         }
         return schemas;
     }
@@ -791,13 +797,17 @@ public class JdbcDataContext extends AbstractDataContext 
implements UpdateableDa
                     result.add(name);
                 }
             } else {
-                ResultSet rs = metaData.getSchemas();
-                while (rs.next()) {
-                    String schemaName = rs.getString(1);
-                    logger.debug("Found schemaName: {}", schemaName);
-                    result.add(schemaName);
+                ResultSet rs = null;
+                try {
+                    rs = metaData.getSchemas();
+                    while (rs.next()) {
+                        String schemaName = rs.getString(1);
+                        logger.debug("Found schemaName: {}", schemaName);
+                        result.add(schemaName);
+                    }
+                } finally {
+                    FileHelper.safeClose(rs);
                 }
-                rs.close();
             }
 
             if (DATABASE_PRODUCT_MYSQL.equals(_databaseProductName)) {

Reply via email to