This is an automated email from the ASF dual-hosted git repository. hxd pushed a commit to branch patch/1380-0.12 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit c1c65fade3defb4f3154db1e2b9823256d879cda Author: Jackie Tien <[email protected]> AuthorDate: Sun May 16 14:18:27 2021 +0800 [IOTDB-1380] Automatically close the dataset while there is no more data (#3193) --- .../iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java | 9 ++++++++- .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 20 +++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java index c78644c..f293bad 100644 --- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java +++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java @@ -35,7 +35,11 @@ import org.apache.thrift.TException; import java.nio.ByteBuffer; import java.sql.SQLException; import java.sql.Statement; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import static org.apache.iotdb.rpc.IoTDBRpcDataSet.START_INDEX; import static org.apache.iotdb.rpc.IoTDBRpcDataSet.TIMESTAMP_STR; @@ -143,9 +147,12 @@ public class IoTDBNonAlignJDBCResultSet extends AbstractIoTDBJDBCResultSet { } if (!resp.hasResultSet) { ioTDBRpcDataSet.emptyResultSet = true; + close(); } else { tsQueryNonAlignDataSet = resp.getNonAlignQueryDataSet(); if (tsQueryNonAlignDataSet == null) { + ioTDBRpcDataSet.emptyResultSet = true; + close(); return false; } } diff --git a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java index 8895bf3..a85b21f 100644 --- a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java +++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java @@ -204,13 +204,26 @@ public class IoTDBRpcDataSet { return true; } if (emptyResultSet) { - return false; + try { + close(); + return false; + } catch (TException e) { + throw new IoTDBConnectionException( + "Cannot close dataset, because of network connection: {} ", e); + } } - if (fetchResults()) { + if (fetchResults() && hasCachedResults()) { constructOneRow(); return true; + } else { + try { + close(); + return false; + } catch (TException e) { + throw new IoTDBConnectionException( + "Cannot close dataset, because of network connection: {} ", e); + } } - return false; } public boolean fetchResults() throws StatementExecutionException, IoTDBConnectionException { @@ -223,6 +236,7 @@ public class IoTDBRpcDataSet { RpcUtils.verifySuccess(resp.getStatus()); if (!resp.hasResultSet) { emptyResultSet = true; + close(); } else { tsQueryDataSet = resp.getQueryDataSet(); }
