You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ge...@apache.org on 2020/02/08 15:57:04 UTC

[incubator-iotdb] 01/01: cache result in client.

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

geniuspig pushed a commit to branch client_chache
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 0e885bd1523fb27b0f350f69d91b55e33bdde2a9
Author: zhutianci <zh...@gmail.com>
AuthorDate: Sat Feb 8 23:56:41 2020 +0800

    cache result in client.
---
 .../org/apache/iotdb/client/AbstractClient.java    | 420 +++++----------------
 .../main/java/org/apache/iotdb/client/Client.java  |  15 +-
 .../java/org/apache/iotdb/client/WinClient.java    |  17 +-
 .../iotdb/jdbc/IoTDBNonAlignQueryResultSet.java    |   8 +-
 4 files changed, 113 insertions(+), 347 deletions(-)

diff --git a/client/src/main/java/org/apache/iotdb/client/AbstractClient.java b/client/src/main/java/org/apache/iotdb/client/AbstractClient.java
index df0d2c9..503355c 100644
--- a/client/src/main/java/org/apache/iotdb/client/AbstractClient.java
+++ b/client/src/main/java/org/apache/iotdb/client/AbstractClient.java
@@ -82,67 +82,17 @@ public abstract class AbstractClient {
   static final String TIMESTAMP_STR = "Time";
   static final int ISO_DATETIME_LEN = 35;
   private static final String IMPORT_CMD = "import";
-  private static final String NEED_NOT_TO_PRINT_TIMESTAMP = "AGGREGATION";
   private static final String DEFAULT_TIME_FORMAT = "default";
   private static String timeFormat = DEFAULT_TIME_FORMAT;
   static int maxPrintRowCount = 100000;
   private static int fetchSize = 10000;
   static int maxTimeLength = ISO_DATETIME_LEN;
   static int maxValueLength = 15;
-  private static int deviceColumnLength = 20; // for GROUP_BY_DEVICE sql
-  private static int measurementColumnLength = 10; // for GROUP_BY_DEVICE sql
-  // for GROUP_BY_DEVICE sql; this name should be the same as that used in server
-  private static String GROUPBY_DEVICE_COLUMN_NAME = "Device";
-  private static boolean isQuit = false;
   static String TIMESTAMP_PRECISION = "ms";
 
-  private static final int START_PRINT_INDEX = 2;
-  private static final int NO_ALIGN_PRINT_INTERVAL = 2;
-
-  /**
-   * control the width of columns for 'show timeseries path' and 'show storage group'.
-   * <p>
-   * for 'show timeseries path':
-   * <table>
-   * <tr>
-   * <th>Timeseries (width:75)</th>
-   * <th>Storage Group (width:45)</th>
-   * <th>DataType width:8)</th>
-   * <th>Encoding (width:8)</th>
-   * </tr>
-   * <tr>
-   * <td>root.vehicle.d1.s1</td>
-   * <td>root.vehicle</td>
-   * <td>INT32</td>
-   * <td>PLAIN</td>
-   * </tr>
-   * <tr>
-   * <td>...</td>
-   * <td>...</td>
-   * <td>...</td>
-   * <td>...</td>
-   * </tr>
-   * </table>
-   * </p>
-   * <p>
-   * for "show storage group path":
-   * <table>
-   * <tr>
-   * <th>STORAGE_GROUP (width:75)</th>
-   * </tr>
-   * <tr>
-   * <td>root.vehicle</td>
-   * </tr>
-   * <tr>
-   * <td>...</td>
-   * </tr>
-   * </table>
-   * </p>
-   */
-  private static int[] maxValueLengthForShow = new int[]{75, 45, 8, 8};
+  private static boolean isReachMaxLine = false;
+
   static String formatTime = "%" + maxTimeLength + "s|";
-  private static String formatValue = "%" + maxValueLength + "s|";
-  private static final int DIVIDING_LINE_LENGTH = 40;
   static String host = "127.0.0.1";
   static String port = "6667";
   static String username;
@@ -150,21 +100,11 @@ public abstract class AbstractClient {
   static String execute;
   static boolean hasExecuteSQL = false;
 
-  private static boolean printToConsole = true;
-
   static Set<String> keywordSet = new HashSet<>();
 
   static ServerProperties properties = null;
 
-  private static boolean printHeader = false;
-  private static int displayCnt = 0;
-
   private static final PrintStream SCREEN_PRINTER = new PrintStream(System.out);
-  /**
-   * showException is currently fixed to false because the display of exceptions is not elaborate.
-   * We can make it an option in future versions.
-   */
-  private static boolean showException = false;
 
   static void init() {
     keywordSet.add("-" + HOST_ARGS);
@@ -177,58 +117,6 @@ public abstract class AbstractClient {
     keywordSet.add("-" + MAX_PRINT_ROW_COUNT_ARGS);
   }
 
-  /**
-   * Client result output.
-   *
-   * @param res result set
-   * @param printToConsole print to console
-   * @param zoneId time-zone ID
-   * @throws SQLException SQLException
-   */
-  private static void output(ResultSet res, boolean printToConsole, ZoneId zoneId)
-      throws SQLException {
-    int cnt = 0;
-    boolean printTimestamp = true;
-    boolean align = true;
-    displayCnt = 0;
-    printHeader = false;
-    ResultSetMetaData resultSetMetaData = res.getMetaData();
-
-    int colCount = resultSetMetaData.getColumnCount();
-
-    if (res instanceof IoTDBQueryResultSet) {
-      printTimestamp = !((IoTDBQueryResultSet) res).isIgnoreTimeStamp();
-    }
-    else {
-      align = false;
-    }
-
-    // Output values
-    while (cnt < maxPrintRowCount && res.next()) {
-      printRow(printTimestamp, align, colCount, resultSetMetaData, res, zoneId);
-      cnt++;
-      if (!printToConsole && cnt % 10000 == 0) {
-        println(cnt);
-      }
-    }
-
-    if (printToConsole) {
-      if (!printHeader) {
-        printBlockLine(printTimestamp, align, colCount, resultSetMetaData);
-        printName(printTimestamp, align, colCount, resultSetMetaData);
-        printBlockLine(printTimestamp, align, colCount, resultSetMetaData);
-      } else {
-        printBlockLine(printTimestamp, align, colCount, resultSetMetaData);
-      }
-
-    }
-
-    if(!res.next()){
-        printCount(cnt);
-    } else {
-        println(String.format("Reach maxPrintRowCount = %s lines", maxPrintRowCount));
-    }
-  }
 
   private static String getTimestampPrecision() {
     return TIMESTAMP_PRECISION;
@@ -238,109 +126,6 @@ public abstract class AbstractClient {
       println("Total line number = " + cnt);
   }
 
-  private static void printRow(boolean printTimestamp, boolean align, int colCount,
-      ResultSetMetaData resultSetMetaData, ResultSet res, ZoneId zoneId)
-      throws SQLException {
-    // Output Labels
-    if (!printToConsole) {
-      return;
-    }
-    printHeader(printTimestamp, align, colCount, resultSetMetaData);
-    printRowData(printTimestamp, align, res, zoneId, resultSetMetaData, colCount);
-  }
-
-  private static void printHeader(boolean printTimestamp, boolean align, int colCount,
-      ResultSetMetaData resultSetMetaData) throws SQLException {
-    if (!printHeader) {
-      printBlockLine(printTimestamp, align, colCount, resultSetMetaData);
-      printName(printTimestamp, align, colCount, resultSetMetaData);
-      printBlockLine(printTimestamp, align, colCount, resultSetMetaData);
-      printHeader = true;
-    }
-  }
-
-  private static void printShow(int colCount, ResultSet res) throws SQLException {
-    print("|");
-    for (int i = 1; i <= colCount; i++) {
-      formatValue = "%" + maxValueLengthForShow[i - 1] + "s|";
-      printf(formatValue, res.getString(i));
-    }
-    println();
-  }
-
-  private static void printRowData(boolean printTimestamp, boolean align, ResultSet res, ZoneId zoneId,
-      ResultSetMetaData resultSetMetaData, int colCount)
-      throws SQLException {
-    if (displayCnt < maxPrintRowCount) { // NOTE displayCnt only works on queried data results
-      print("|");
-      if (align) {
-        if (printTimestamp) {
-          printf(formatTime, formatDatetime(res.getLong(TIMESTAMP_STR), zoneId));
-          for (int i = 2; i <= colCount; i++) {
-            printColumnData(resultSetMetaData, true, res, i, zoneId);
-          }
-        } else {
-          for (int i = 1; i <= colCount; i++) {
-            printColumnData(resultSetMetaData, true, res, i, zoneId);
-          }
-        }
-      }
-      else {
-        for (int i = START_PRINT_INDEX; i <= colCount / NO_ALIGN_PRINT_INTERVAL + 1; i++) {
-          if (printTimestamp) {
-            // timeLabel used for indicating the time column.
-            String timeLabel = TIMESTAMP_STR + resultSetMetaData.getColumnLabel(NO_ALIGN_PRINT_INTERVAL * i - START_PRINT_INDEX);
-            try {
-              printf(formatTime, formatDatetime(res.getLong(timeLabel), zoneId));
-            } catch (Exception e) {
-              printf(formatTime, "null");
-              handleException(e);
-            }
-          }
-          printColumnData(resultSetMetaData, false, res, i, zoneId);
-        }
-      }
-      println();
-      displayCnt++;
-    }
-  }
-
-  private static void printColumnData(ResultSetMetaData resultSetMetaData, boolean align,
-      ResultSet res, int i, ZoneId zoneId) throws SQLException {
-    boolean flag = false;
-    for (String timeStr : AGGREGRATE_TIME_LIST) {
-      if (resultSetMetaData.getColumnLabel(i).toUpperCase().contains(timeStr.toUpperCase())) {
-        flag = true;
-        break;
-      }
-    }
-    if (flag) {
-      try {
-        printf(formatValue, formatDatetime(res.getLong(i), zoneId));
-      } catch (Exception e) {
-        printf(formatValue, "null");
-        handleException(e);
-      }
-    } 
-    else if (align) {
-      if (i == 2 && resultSetMetaData.getColumnName(2).equals(GROUPBY_DEVICE_COLUMN_NAME)) {
-        printf("%" + deviceColumnLength + "s|", res.getString(i));
-      } else {
-        printf(formatValue, res.getString(i));
-      }
-    }
-    // for disable align clause
-    else {
-      if (res.getString(i * NO_ALIGN_PRINT_INTERVAL - START_PRINT_INDEX) == null) {
-        //blank space
-        printf(formatValue, "");
-      }
-      else {
-        printf(formatValue, res.getString(i * NO_ALIGN_PRINT_INTERVAL - START_PRINT_INDEX));
-      }
-    }
-  }
-
   static Options createOptions() {
     Options options = new Options();
     Option help = new Option(HELP_ARGS, false, "Display help information(optional)");
@@ -386,40 +171,40 @@ public abstract class AbstractClient {
       long timestamp, ZoneId zoneid, String timestampPrecision) {
     if (timestampPrecision.equals("ms")) {
       long integerofDate = timestamp / 1000;
-      String digits = Long.toString(timestamp % 1000);
+      StringBuilder digits = new StringBuilder(Long.toString(timestamp % 1000));
       ZonedDateTime dateTime = ZonedDateTime
           .ofInstant(Instant.ofEpochSecond(integerofDate), zoneid);
       String datetime = dateTime.format(formatter);
       int length = digits.length();
       if (length != 3) {
         for (int i = 0; i < 3 - length; i++) {
-          digits = "0" + digits;
+          digits.insert(0, "0");
         }
       }
       return datetime.substring(0, 19) + "." + digits + datetime.substring(19);
     } else if (timestampPrecision.equals("us")) {
       long integerofDate = timestamp / 1000_000;
-      String digits = Long.toString(timestamp % 1000_000);
+      StringBuilder digits = new StringBuilder(Long.toString(timestamp % 1000_000));
       ZonedDateTime dateTime = ZonedDateTime
           .ofInstant(Instant.ofEpochSecond(integerofDate), zoneid);
       String datetime = dateTime.format(formatter);
       int length = digits.length();
       if (length != 6) {
         for (int i = 0; i < 6 - length; i++) {
-          digits = "0" + digits;
+          digits.insert(0, "0");
         }
       }
       return datetime.substring(0, 19) + "." + digits + datetime.substring(19);
     } else {
       long integerofDate = timestamp / 1000_000_000L;
-      String digits = Long.toString(timestamp % 1000_000_000L);
+      StringBuilder digits = new StringBuilder(Long.toString(timestamp % 1000_000_000L));
       ZonedDateTime dateTime = ZonedDateTime
           .ofInstant(Instant.ofEpochSecond(integerofDate), zoneid);
       String datetime = dateTime.format(formatter);
       int length = digits.length();
       if (length != 9) {
         for (int i = 0; i < 9 - length; i++) {
-          digits = "0" + digits;
+          digits.insert(0, "0");
         }
       }
       return datetime.substring(0, 19) + "." + digits + datetime.substring(19);
@@ -505,87 +290,6 @@ public abstract class AbstractClient {
     }
   }
 
-  private static void printBlockLine(boolean printTimestamp, boolean align, int colCount,
-      ResultSetMetaData resultSetMetaData) throws SQLException {
-    StringBuilder blockLine = new StringBuilder();
-    if (align) {
-      if (printTimestamp) {
-        blockLine.append("+").append(StringUtils.repeat('-', maxTimeLength)).append("+");
-        if (resultSetMetaData.getColumnName(2).equals(GROUPBY_DEVICE_COLUMN_NAME)) {
-          maxValueLength = measurementColumnLength;
-        } else {
-          int tmp = Integer.MIN_VALUE;
-          for (int i = 1; i <= colCount; i++) {
-            int len = resultSetMetaData.getColumnLabel(i).length();
-            tmp = Math.max(tmp, len);
-          }
-          maxValueLength = tmp;
-        }
-        for (int i = 2; i <= colCount; i++) {
-          if (i == 2 && resultSetMetaData.getColumnName(2).equals(GROUPBY_DEVICE_COLUMN_NAME)) {
-            blockLine.append(StringUtils.repeat('-', deviceColumnLength)).append("+");
-          } else {
-            blockLine.append(StringUtils.repeat('-', maxValueLength)).append("+");
-          }
-        }
-      } else {
-        blockLine.append("+");
-        for (int i = 1; i <= colCount; i++) {
-          blockLine.append(StringUtils.repeat('-', maxValueLength)).append("+");
-        }
-      }
-    }
-    // for disable align clause
-    else {
-      int tmp = Integer.MIN_VALUE;
-      for (int i = 1; i <= colCount; i++) {
-        int len = resultSetMetaData.getColumnLabel(i).length();
-        tmp = Math.max(tmp, len);
-      }
-      maxValueLength = tmp;
-      blockLine.append("+");
-      for (int i = 2; i <= colCount / 2 + 1; i++) {
-        if (printTimestamp) {
-          blockLine.append(StringUtils.repeat('-', maxTimeLength)).append("+");
-        }
-        blockLine.append(StringUtils.repeat('-', maxValueLength)).append("+");
-      }
-    }
-    println(blockLine);
-  }
-
-  private static void printName(boolean printTimestamp, boolean align, int colCount,
-      ResultSetMetaData resultSetMetaData) throws SQLException {
-    print("|");
-    formatValue = "%" + maxValueLength + "s|";
-    if (align) {
-      if (printTimestamp) {
-        printf(formatTime, TIMESTAMP_STR);
-        for (int i = 2; i <= colCount; i++) {
-          if (i == 2 && resultSetMetaData.getColumnName(2).equals(GROUPBY_DEVICE_COLUMN_NAME)) {
-            printf("%" + deviceColumnLength + "s|", resultSetMetaData.getColumnLabel(i));
-          } else {
-            printf(formatValue, resultSetMetaData.getColumnLabel(i));
-          }
-        }
-      } else {
-        for (int i = 1; i <= colCount; i++) {
-          printf(formatValue, resultSetMetaData.getColumnLabel(i));
-        }
-      }
-    }
-    // for disable align
-    else {
-      for (int i = 2; i <= colCount; i += 2) {
-        if (printTimestamp) {
-          printf(formatTime, TIMESTAMP_STR);
-        }
-        printf(formatValue, resultSetMetaData.getColumnLabel(i));
-      }
-    }
-    println();
-  }
-
   static String[] removePasswordArgs(String[] args) {
     int index = -1;
     for (int i = 0; i < args.length; i++) {
@@ -647,7 +351,6 @@ public abstract class AbstractClient {
     String specialCmd = cmd.toLowerCase().trim();
 
     if (QUIT_COMMAND.equals(specialCmd) || EXIT_COMMAND.equals(specialCmd)) {
-      isQuit = true;
       return OperationResult.STOP_OPER;
     }
     if (HELP.equals(specialCmd)) {
@@ -725,7 +428,7 @@ public abstract class AbstractClient {
       setTimeFormat(cmd.split("=")[1]);
     } catch (Exception e) {
       println(String.format("time display format error, %s", e.getMessage()));
-      handleException(e);
+      handleException();
       return;
     }
     println("Time display type has set to " + cmd.split("=")[1].trim());
@@ -742,7 +445,7 @@ public abstract class AbstractClient {
       connection.setTimeZone(cmd.split("=")[1].trim());
     } catch (Exception e) {
       println(String.format("Time zone format error: %s", e.getMessage()));
-      handleException(e);
+      handleException();
       return;
     }
     println("Time zone has set to " + values[1].trim());
@@ -759,7 +462,7 @@ public abstract class AbstractClient {
       setFetchSize(cmd.split("=")[1]);
     } catch (Exception e) {
       println(String.format("Fetch size format error, %s", e.getMessage()));
-      handleException(e);
+      handleException();
       return;
     }
     println("Fetch size has set to " + values[1].trim());
@@ -776,7 +479,7 @@ public abstract class AbstractClient {
       setMaxDisplayNumber(cmd.split("=")[1]);
     } catch (Exception e) {
       println(String.format("Max display number format error, %s", e.getMessage()));
-      handleException(e);
+      handleException();
       return;
     }
     println("Max display number has set to " + values[1].trim());
@@ -787,7 +490,7 @@ public abstract class AbstractClient {
       println("Current time zone: " + connection.getTimeZone());
     } catch (Exception e) {
       println("Cannot get time zone from server side because: " + e.getMessage());
-      handleException(e);
+      handleException();
     }
   }
 
@@ -805,34 +508,102 @@ public abstract class AbstractClient {
     } catch (SQLException e) {
       println(String.format("Failed to import from %s because %s",
           cmd.split(" ")[1], e.getMessage()));
-      handleException(e);
+      handleException();
     } catch (TException e) {
       println("Cannot connect to server");
-      handleException(e);
+      handleException();
     }
   }
 
   private static void executeQuery(IoTDBConnection connection, String cmd) {
     long startTime = System.currentTimeMillis();
-    try (Statement statement = connection.createStatement();) {
+    try (Statement statement = connection.createStatement()) {
       ZoneId zoneId = ZoneId.of(connection.getTimeZone());
       statement.setFetchSize(fetchSize);
       boolean hasResultSet = statement.execute(cmd.trim());
       if (hasResultSet) {
         ResultSet resultSet = statement.getResultSet();
-        output(resultSet, printToConsole, zoneId);
-        if (resultSet != null) {
-          resultSet.close();
-        }
+        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+        int columnLength = resultSetMetaData.getColumnCount();
+        List<Integer> maxSizeList = new ArrayList<>(columnLength);
+        List<List<String>> lists = cacheResult(resultSet,maxSizeList, columnLength, resultSetMetaData, zoneId);
+        output(lists, maxSizeList);
+        resultSet.close();
       }
     } catch (Exception e) {
       println("Msg: " + e.getMessage());
-      handleException(e);
+      handleException();
     }
     long costTime = System.currentTimeMillis() - startTime;
     println(String.format("It costs %.3fs", costTime / 1000.0));
   }
 
+  private static List<List<String>> cacheResult(ResultSet resultSet, List<Integer> maxSizeList,
+      int columnLength, ResultSetMetaData resultSetMetaData, ZoneId zoneId)
+      throws SQLException {
+    boolean printTimestamp = !((IoTDBQueryResultSet) resultSet).isIgnoreTimeStamp();
+    List<List<String>> lists = new ArrayList<>(columnLength);
+    for(int i = 1; i <= columnLength; i++) {
+      List<String> list = new ArrayList<>(30);
+      list.add(resultSetMetaData.getColumnLabel(i));
+      lists.add(list);
+      maxSizeList.add(resultSetMetaData.getColumnLabel(i).length());
+    }
+    int j = 0;
+    while (resultSet.next()) {
+      if(j > maxPrintRowCount) {
+        break;
+      }
+      for(int i = 1; i <= columnLength; i++) {
+        String tmp;
+        if(printTimestamp && i == 1) {
+          tmp = formatDatetime(resultSet.getLong(TIMESTAMP_STR), zoneId);
+        } else {
+          tmp = resultSet.getString(i);
+        }
+        lists.get(i-1).add(tmp);
+        if(maxSizeList.get(i-1) < tmp.length()) {
+          maxSizeList.set(i-1 , tmp.length());
+        }
+      }
+      j++;
+    }
+    isReachMaxLine = resultSet.next();
+    return lists;
+  }
+
+  private static void output(List<List<String>> lists, List<Integer> maxSizeList) {
+    printBlockLine(maxSizeList);
+    printRow(lists,0, maxSizeList);
+    printBlockLine(maxSizeList);
+    for(int i = 1; i < lists.get(0).size(); i++) {
+      printRow(lists, i, maxSizeList);
+    }
+    printBlockLine(maxSizeList);
+    if(!isReachMaxLine) {
+      printCount(lists.get(0).size()-1);
+    } else {
+      println(String.format("Reach maxPrintRowCount = %s lines", maxPrintRowCount));
+    }
+  }
+
+  private static void printBlockLine(List<Integer> maxSizeList) {
+    StringBuilder blockLine = new StringBuilder();
+    for (Integer integer : maxSizeList) {
+      blockLine.append("+").append(StringUtils.repeat("-", integer));
+    }
+    blockLine.append("+");
+    println(blockLine.toString());
+  }
+
+  private static void printRow(List<List<String>> lists, int i, List<Integer> maxSizeList) {
+    printf("|");
+    for (int j = 0; j < maxSizeList.size(); j++) {
+      printf("%"+ maxSizeList.get(j) + "s|", lists.get(j).get(i));
+    }
+    println();
+  }
+
   enum OperationResult {
     STOP_OPER, CONTINUE_OPER, NO_OPER
   }
@@ -853,13 +624,10 @@ public abstract class AbstractClient {
     SCREEN_PRINTER.println(msg);
   }
 
-  private static void println(Object obj) {
-    SCREEN_PRINTER.println(obj);
-  }
-
-  static void handleException(Exception e) {
-    if (showException) {
-      e.printStackTrace(SCREEN_PRINTER);
-    }
+  static void handleException() {
+    /*
+     * showException is currently fixed to false because the display of exceptions is not elaborate.
+     * We can make it an option in future versions.
+     */
   }
 }
diff --git a/client/src/main/java/org/apache/iotdb/client/Client.java b/client/src/main/java/org/apache/iotdb/client/Client.java
index 4b44191..3f8e2fd 100644
--- a/client/src/main/java/org/apache/iotdb/client/Client.java
+++ b/client/src/main/java/org/apache/iotdb/client/Client.java
@@ -95,12 +95,12 @@ public class Client extends AbstractClient {
               + "-h xxx.xxx.xxx.xxx -p xxxx -u xxx.");
       println("For more information, please check the following hint.");
       hf.printHelp(IOTDB_CLI_PREFIX, options, true);
-      handleException(e);
+      handleException();
       return false;
     } catch (NumberFormatException e) {
       println(
           IOTDB_CLI_PREFIX + "> error format of max print row count, it should be number");
-      handleException(e);
+      handleException();
       return false;
     }
     return true;
@@ -126,17 +126,17 @@ public class Client extends AbstractClient {
           processCmd(execute, connection);
           return;
         } catch (SQLException e) {
-          handleException(e);
+          handleException();
         }
       }
 
       receiveCommands(reader);
     } catch (ArgsErrorException e) {
       println(IOTDB_CLI_PREFIX + "> input params error because" + e.getMessage());
-      handleException(e);
+      handleException();
     } catch (Exception e) {
       println(IOTDB_CLI_PREFIX + "> exit client with error " + e.getMessage());
-      handleException(e);
+      handleException();
     }
   }
 
@@ -162,7 +162,7 @@ public class Client extends AbstractClient {
       println(String
           .format("%s> %s Host is %s, port is %s.", IOTDB_CLI_PREFIX, e.getMessage(), host,
               port));
-      handleException(e);
+      handleException();
     }
   }
 
@@ -171,8 +171,7 @@ public class Client extends AbstractClient {
       return true;
     }
     String[] cmds = s.trim().split(";");
-    for (int i = 0; i < cmds.length; i++) {
-      String cmd = cmds[i];
+    for (String cmd : cmds) {
       if (cmd != null && !"".equals(cmd.trim())) {
         OperationResult result = handleInputCmd(cmd, connection);
         switch (result) {
diff --git a/client/src/main/java/org/apache/iotdb/client/WinClient.java b/client/src/main/java/org/apache/iotdb/client/WinClient.java
index e52ebf0..9ede7c8 100644
--- a/client/src/main/java/org/apache/iotdb/client/WinClient.java
+++ b/client/src/main/java/org/apache/iotdb/client/WinClient.java
@@ -42,7 +42,7 @@ public class WinClient extends AbstractClient {
    *
    * @param args -console args
    */
-  public static void main(String[] args) throws ClassNotFoundException, SQLException {
+  public static void main(String[] args) throws ClassNotFoundException {
     Class.forName(Config.JDBC_DRIVER_NAME);
     Options options = createOptions();
     HelpFormatter hf = new HelpFormatter();
@@ -92,7 +92,7 @@ public class WinClient extends AbstractClient {
         setTimeFormat("long");
       }
       if (commandLine.hasOption(MAX_PRINT_ROW_COUNT_ARGS)) {
-        maxPrintRowCount = Integer.valueOf(commandLine.getOptionValue(MAX_PRINT_ROW_COUNT_ARGS));
+        maxPrintRowCount = Integer.parseInt(commandLine.getOptionValue(MAX_PRINT_ROW_COUNT_ARGS));
         if (maxPrintRowCount < 0) {
           maxPrintRowCount = Integer.MAX_VALUE;
         }
@@ -100,12 +100,12 @@ public class WinClient extends AbstractClient {
     } catch (ParseException e) {
       println("Require more params input, please check the following hint.");
       hf.printHelp(IOTDB_CLI_PREFIX, options, true);
-      handleException(e);
+      handleException();
       return false;
     } catch (NumberFormatException e) {
       println(
           IOTDB_CLI_PREFIX + "> error format of max print row count, it should be number");
-      handleException(e);
+      handleException();
       return false;
     }
     return true;
@@ -123,10 +123,10 @@ public class WinClient extends AbstractClient {
       receiveCommands(scanner);
     } catch (ArgsErrorException e) {
       println(IOTDB_CLI_PREFIX + "> input params error because" + e.getMessage());
-      handleException(e);
+      handleException();
     } catch (Exception e) {
       println(IOTDB_CLI_PREFIX + "> exit client with error " + e.getMessage());
-      handleException(e);
+      handleException();
     }
   }
 
@@ -151,7 +151,7 @@ public class WinClient extends AbstractClient {
       println(String
           .format("%s> %s Host is %s, port is %s.", IOTDB_CLI_PREFIX, e.getMessage(), host,
               port));
-      handleException(e);
+      handleException();
     }
   }
 
@@ -160,8 +160,7 @@ public class WinClient extends AbstractClient {
       return true;
     }
     String[] cmds = s.trim().split(";");
-    for (int i = 0; i < cmds.length; i++) {
-      String cmd = cmds[i];
+    for (String cmd : cmds) {
       if (cmd != null && !"".equals(cmd.trim())) {
         OperationResult result = handleInputCmd(cmd, connection);
         switch (result) {
diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignQueryResultSet.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignQueryResultSet.java
index e71ccb9..8d3cb7d 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignQueryResultSet.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBNonAlignQueryResultSet.java
@@ -44,13 +44,13 @@ public class IoTDBNonAlignQueryResultSet extends AbstractIoTDBResultSet {
   private static final int TIMESTAMP_STR_LENGTH = 4;
   private static final String EMPTY_STR = "";
 
-  private TSQueryNonAlignDataSet tsQueryNonAlignDataSet = null;
+  private TSQueryNonAlignDataSet tsQueryNonAlignDataSet;
   private byte[][] times; // used for disable align
 
   // for disable align clause
-  public IoTDBNonAlignQueryResultSet(Statement statement, List<String> columnNameList,
-                                     List<String> columnTypeList, boolean ignoreTimeStamp, TSIService.Iface client,
-                                     String sql, long queryId, long sessionId, TSQueryNonAlignDataSet dataset)
+  IoTDBNonAlignQueryResultSet(Statement statement, List<String> columnNameList,
+      List<String> columnTypeList, boolean ignoreTimeStamp, TSIService.Iface client,
+      String sql, long queryId, long sessionId, TSQueryNonAlignDataSet dataset)
           throws SQLException {
     super(statement, columnNameList, columnTypeList, ignoreTimeStamp, client, sql, queryId, sessionId);