Repository: hive Updated Branches: refs/heads/master bd6b086b2 -> 7a35c75bc
HIVE-10732: Hive JDBC driver does not close operation for metadata queries (Chaoyu via Xuefu) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/7a35c75b Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/7a35c75b Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/7a35c75b Branch: refs/heads/master Commit: 7a35c75bcc5c9dca56e5ea97c0c9d94cf824086b Parents: bd6b086 Author: Xuefu Zhang <[email protected]> Authored: Wed May 20 11:14:33 2015 -0700 Committer: Xuefu Zhang <[email protected]> Committed: Wed May 20 11:14:33 2015 -0700 ---------------------------------------------------------------------- .../apache/hive/jdbc/HiveQueryResultSet.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/7a35c75b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java ---------------------------------------------------------------------- diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java index 0cef509..e93795a 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java @@ -38,6 +38,8 @@ import org.apache.hive.service.cli.RowSetFactory; import org.apache.hive.service.cli.TableSchema; import org.apache.hive.service.cli.thrift.TCLIService; import org.apache.hive.service.cli.thrift.TCLIServiceConstants; +import org.apache.hive.service.cli.thrift.TCloseOperationReq; +import org.apache.hive.service.cli.thrift.TCloseOperationResp; import org.apache.hive.service.cli.thrift.TColumnDesc; import org.apache.hive.service.cli.thrift.TFetchOrientation; import org.apache.hive.service.cli.thrift.TFetchResultsReq; @@ -316,7 +318,11 @@ public class HiveQueryResultSet extends HiveBaseResultSet { if (this.statement != null && (this.statement instanceof HiveStatement)) { HiveStatement s = (HiveStatement) this.statement; s.closeClientOperation(); + } else { + // for those stmtHandle passed from HiveDatabaseMetaData instead of Statement + closeOperationHandle(stmtHandle); } + // Need reset during re-open when needed client = null; stmtHandle = null; @@ -324,6 +330,20 @@ public class HiveQueryResultSet extends HiveBaseResultSet { isClosed = true; } + private void closeOperationHandle(TOperationHandle stmtHandle) throws SQLException { + try { + if (stmtHandle != null) { + TCloseOperationReq closeReq = new TCloseOperationReq(stmtHandle); + TCloseOperationResp closeResp = client.CloseOperation(closeReq); + Utils.verifySuccessWithInfo(closeResp.getStatus()); + } + } catch (SQLException e) { + throw e; + } catch (Exception e) { + throw new SQLException(e.toString(), "08S01", e); + } + } + /** * Moves the cursor down one row from its current position. *
