You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ch...@apache.org on 2020/12/02 09:30:19 UTC

[iotdb] branch cluster_new updated: fix the cache leader error in iotdb statement

This is an automated email from the ASF dual-hosted git repository.

chaow pushed a commit to branch cluster_new
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/cluster_new by this push:
     new 90892d3  fix the cache leader error in iotdb statement
     new 6560337  Merge pull request #2149 from neuyilan/apache_cluster_new_1130_fix_statement
90892d3 is described below

commit 90892d361d541be5c3a5fe1d1ce727ba22ff3493
Author: HouliangQi <ne...@163.com>
AuthorDate: Mon Nov 30 19:15:03 2020 +0800

    fix the cache leader error in iotdb statement
---
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java | 57 +++++++++++-----------
 1 file changed, 29 insertions(+), 28 deletions(-)

diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
index f4b7502..92be83e 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBStatement.java
@@ -192,8 +192,8 @@ public class IoTDBStatement implements Statement {
         throw new SQLException(String.format("Fail to execute %s", sql), e);
       } else {
         throw new SQLException(String
-                .format("Fail to reconnect to server when executing %s. please check server status",
-                        sql), e);
+            .format("Fail to reconnect to server when executing %s. please check server status",
+                sql), e);
       }
     }
   }
@@ -215,8 +215,8 @@ public class IoTDBStatement implements Statement {
 
   /**
    * There are two kinds of sql here: (1) query sql (2) update sql.
-   * (1) return IoTDBJDBCResultSet or IoTDBNonAlignJDBCResultSet
-   * (2) simply get executed
+   * <p>
+   * (1) return IoTDBJDBCResultSet or IoTDBNonAlignJDBCResultSet (2) simply get executed
    */
   private boolean executeSQL(String sql) throws TException, SQLException {
     isCancelled = false;
@@ -234,13 +234,12 @@ public class IoTDBStatement implements Statement {
       queryId = execResp.getQueryId();
       if (execResp.queryDataSet == null) {
         this.resultSet = new IoTDBNonAlignJDBCResultSet(this, execResp.getColumns(),
-            execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp, client, sql, queryId,
-            sessionId, execResp.nonAlignQueryDataSet);
-      }
-      else {
+            execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp,
+            client, sql, queryId, sessionId, execResp.nonAlignQueryDataSet);
+      } else {
         this.resultSet = new IoTDBJDBCResultSet(this, execResp.getColumns(),
-            execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp, client, sql, queryId,
-            sessionId, execResp.queryDataSet);
+            execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp,
+            client, sql, queryId, sessionId, execResp.queryDataSet);
       }
       return true;
     }
@@ -278,13 +277,15 @@ public class IoTDBStatement implements Statement {
     for (int i = 0; i < result.length; i++) {
       if (execResp.getCode() == TSStatusCode.MULTIPLE_ERROR.getStatusCode()) {
         result[i] = execResp.getSubStatus().get(i).code;
-        if (result[i] != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        if (result[i] != TSStatusCode.SUCCESS_STATUS.getStatusCode()
+            && result[i] != TSStatusCode.NEED_REDIRECTION.getStatusCode()) {
           allSuccess = false;
           message = execResp.getSubStatus().get(i).message;
         }
       } else {
         allSuccess =
-            allSuccess && execResp.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode();
+            allSuccess && (execResp.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()
+                || execResp.getCode() == TSStatusCode.NEED_REDIRECTION.getStatusCode());
         result[i] = execResp.getCode();
         message = execResp.getMessage();
       }
@@ -335,12 +336,12 @@ public class IoTDBStatement implements Statement {
 
     if (execResp.queryDataSet == null) {
       this.resultSet = new IoTDBNonAlignJDBCResultSet(this, execResp.getColumns(),
-          execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp, client, sql, queryId,
-          sessionId, execResp.nonAlignQueryDataSet);
+          execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp, client,
+          sql, queryId, sessionId, execResp.nonAlignQueryDataSet);
     } else {
       this.resultSet = new IoTDBJDBCResultSet(this, execResp.getColumns(),
-          execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp, client, sql, queryId,
-          sessionId, execResp.queryDataSet);
+          execResp.getDataTypeList(), execResp.columnNameIndexMap, execResp.ignoreTimeStamp, client,
+          sql, queryId, sessionId, execResp.queryDataSet);
     }
     return resultSet;
   }
@@ -362,14 +363,14 @@ public class IoTDBStatement implements Statement {
     }
 
     final List<ByteBuffer> valueList = nonAlignDataSet.valueList
-            .stream()
-            .map(ReadWriteIOUtils::clone)
-            .collect(Collectors.toList());
+        .stream()
+        .map(ReadWriteIOUtils::clone)
+        .collect(Collectors.toList());
 
     final List<ByteBuffer> timeList = nonAlignDataSet.timeList
-            .stream()
-            .map(ReadWriteIOUtils::clone)
-            .collect(Collectors.toList());
+        .stream()
+        .map(ReadWriteIOUtils::clone)
+        .collect(Collectors.toList());
 
     nonAlignDataSet.setTimeList(timeList);
     nonAlignDataSet.setValueList(valueList);
@@ -378,14 +379,14 @@ public class IoTDBStatement implements Statement {
   private void deepCopyTsQueryDataSet(TSQueryDataSet tsQueryDataSet) {
     final ByteBuffer time = ReadWriteIOUtils.clone(tsQueryDataSet.time);
     final List<ByteBuffer> valueList = tsQueryDataSet.valueList
-            .stream()
-            .map(ReadWriteIOUtils::clone)
-            .collect(Collectors.toList());
+        .stream()
+        .map(ReadWriteIOUtils::clone)
+        .collect(Collectors.toList());
 
     final List<ByteBuffer> bitmapList = tsQueryDataSet.bitmapList
-            .stream()
-            .map(ReadWriteIOUtils::clone)
-            .collect(Collectors.toList());
+        .stream()
+        .map(ReadWriteIOUtils::clone)
+        .collect(Collectors.toList());
 
     tsQueryDataSet.setBitmapList(bitmapList);
     tsQueryDataSet.setValueList(valueList);