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)) {