You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/05/20 20:14:36 UTC

hive git commit: HIVE-10732: Hive JDBC driver does not close operation for metadata queries (Chaoyu via Xuefu)

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 <xz...@Cloudera.com>
Authored: Wed May 20 11:14:33 2015 -0700
Committer: Xuefu Zhang <xz...@Cloudera.com>
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.
    *