This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch AutoClose in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6d1c6270f13d1eac3f12ac587e823fd2e158b240 Author: JackieTien97 <[email protected]> AuthorDate: Fri May 14 15:07:17 2021 +0800 auto close the dataset while there is no more data --- .../iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java | 23 +++++++++++++--------- .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 20 ++++++++++++++++--- 2 files changed, 31 insertions(+), 12 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..6cb2336 100644 --- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java +++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java @@ -19,6 +19,17 @@ package org.apache.iotdb.jdbc; +import static org.apache.iotdb.rpc.IoTDBRpcDataSet.START_INDEX; +import static org.apache.iotdb.rpc.IoTDBRpcDataSet.TIMESTAMP_STR; + +import java.nio.ByteBuffer; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; import org.apache.iotdb.rpc.RpcUtils; import org.apache.iotdb.rpc.StatementExecutionException; import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq; @@ -29,17 +40,8 @@ import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.BytesUtils; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; - import org.apache.thrift.TException; -import java.nio.ByteBuffer; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.*; - -import static org.apache.iotdb.rpc.IoTDBRpcDataSet.START_INDEX; -import static org.apache.iotdb.rpc.IoTDBRpcDataSet.TIMESTAMP_STR; - public class IoTDBNonAlignJDBCResultSet extends AbstractIoTDBJDBCResultSet { private static final int TIMESTAMP_STR_LENGTH = 4; @@ -143,9 +145,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(); }
