You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2020/04/18 19:26:56 UTC
[hive] branch master updated: HIVE-22698 : Support
Statement#closeOnCompletion() (Iwao Ave via Ashutosh Chauhan)
This is an automated email from the ASF dual-hosted git repository.
hashutosh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new bb95ad2 HIVE-22698 : Support Statement#closeOnCompletion() (Iwao Ave via Ashutosh Chauhan)
bb95ad2 is described below
commit bb95ad243cc0ab028deed516b5f36616d9fd3354
Author: Iwao AVE <ha...@gmail.com>
AuthorDate: Sat Apr 18 12:26:07 2020 -0700
HIVE-22698 : Support Statement#closeOnCompletion() (Iwao Ave via Ashutosh Chauhan)
Signed-off-by: Ashutosh Chauhan <ha...@apache.org>
---
.../java/org/apache/hive/jdbc/TestJdbcDriver2.java | 37 ++++++++++++++++++++++
.../org/apache/hive/jdbc/HiveQueryResultSet.java | 1 +
.../java/org/apache/hive/jdbc/HiveStatement.java | 12 +++++--
3 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
index dbe282d..ba1f39c 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
@@ -3250,4 +3250,41 @@ public class TestJdbcDriver2 {
public void testConnectInvalidDatabase() throws SQLException {
DriverManager.getConnection("jdbc:hive2:///databasedoesnotexist", "", "");
}
+
+ @Test
+ public void testStatementCloseOnCompletion() throws SQLException {
+ Statement stmt = con.createStatement();
+ stmt.closeOnCompletion();
+ ResultSet res = stmt.executeQuery("select under_col from " + tableName + " limit 1");
+ assertTrue(res.next());
+ assertFalse(stmt.isClosed());
+ assertFalse(res.next());
+ assertFalse(stmt.isClosed());
+ res.close();
+ assertTrue(stmt.isClosed());
+ }
+
+ @Test
+ public void testPreparedStatementCloseOnCompletion() throws SQLException {
+ PreparedStatement stmt = con.prepareStatement("select under_col from " + tableName + " limit 1");
+ stmt.closeOnCompletion();
+ ResultSet res = stmt.executeQuery();
+ assertTrue(res.next());
+ assertFalse(stmt.isClosed());
+ assertFalse(res.next());
+ assertFalse(stmt.isClosed());
+ res.close();
+ assertTrue(stmt.isClosed());
+ }
+
+ @Test
+ public void testCloseOnAlreadyOpenedResultSetCompletion() throws Exception {
+ PreparedStatement stmt = con.prepareStatement("select under_col from " + tableName + " limit 1");
+ ResultSet res = stmt.executeQuery();
+ assertTrue(res.next());
+ stmt.closeOnCompletion();
+ assertFalse(stmt.isClosed());
+ res.close();
+ assertTrue(stmt.isClosed());
+ }
}
diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java
index 8563cee..df31a25 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveQueryResultSet.java
@@ -276,6 +276,7 @@ public class HiveQueryResultSet extends HiveBaseResultSet {
if (this.statement != null && (this.statement instanceof HiveStatement)) {
HiveStatement s = (HiveStatement) this.statement;
s.closeClientOperation();
+ s.closeOnResultSetCompletion();
} else {
// for those stmtHandle passed from HiveDatabaseMetaData instead of Statement
closeOperationHandle(stmtHandle);
diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java b/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java
index 543bf8c..a74a3a8 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveStatement.java
@@ -76,6 +76,7 @@ public class HiveStatement implements java.sql.Statement {
private final int defaultFetchSize;
private boolean isScrollableResultset = false;
private boolean isOperationComplete = false;
+ private boolean closeOnResultSetCompletion = false;
/**
* We need to keep a reference to the result set to support the following:
* <code>
@@ -233,6 +234,13 @@ public class HiveStatement implements java.sql.Statement {
stmtHandle = null;
}
+ void closeOnResultSetCompletion() throws SQLException {
+ if (closeOnResultSetCompletion) {
+ resultSet = null;
+ close();
+ }
+ }
+
/*
* (non-Javadoc)
*
@@ -254,7 +262,7 @@ public class HiveStatement implements java.sql.Statement {
// JDK 1.7
public void closeOnCompletion() throws SQLException {
- throw new SQLFeatureNotSupportedException("Method not supported");
+ closeOnResultSetCompletion = true;
}
/*
@@ -752,7 +760,7 @@ public class HiveStatement implements java.sql.Statement {
// JDK 1.7
public boolean isCloseOnCompletion() throws SQLException {
- return false;
+ return closeOnResultSetCompletion;
}
/*