You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2019/12/03 07:58:49 UTC

[incubator-iotdb] 01/01: remove some unnecessary codes

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

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

commit 547993aea31b34781cce5ab2a2ae7892ef72a05d
Author: qiaojialin <64...@qq.com>
AuthorDate: Tue Dec 3 15:58:39 2019 +0800

    remove some unnecessary codes
---
 .../org/apache/iotdb/jdbc/IoTDBQueryResultSet.java |  8 +--
 .../org/apache/iotdb/db/service/TSServiceImpl.java | 66 +++++++++-------------
 2 files changed, 29 insertions(+), 45 deletions(-)

diff --git a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBQueryResultSet.java b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBQueryResultSet.java
index 886fb84..c42595c 100644
--- a/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBQueryResultSet.java
+++ b/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBQueryResultSet.java
@@ -81,7 +81,7 @@ public class IoTDBQueryResultSet implements ResultSet {
   private List<String> columnTypeDeduplicatedList; // deduplicated from columnTypeList
   private RowRecord record;
   private int rowsFetched = 0;
-  private int maxRows; // defined in TsfileStatement
+  private int maxRows; // defined in IoTDBStatement
   private int fetchSize;
   private boolean emptyResultSet = false;
   
@@ -154,7 +154,7 @@ public class IoTDBQueryResultSet implements ResultSet {
       if (posLimit != -1) {
         rowsLimit = Integer.parseInt(splited[posLimit + 1]);
 
-        // NOTE that maxRows=0 in TsfileStatement means it is not constrained
+        // NOTE that maxRows=0 in IoTDBStatement means it is not constrained
         // NOTE that LIMIT <N>: N is ensured to be a positive integer by the server side
         if (maxRows == 0) {
           maxRowsOrRowsLimit = rowsLimit;
@@ -787,10 +787,6 @@ public class IoTDBQueryResultSet implements ResultSet {
   // the next record rule considering both the maxRows constraint and the LIMIT&OFFSET constraint
   public boolean next() throws SQLException {
     if (maxRowsOrRowsLimit > 0 && rowsFetched >= maxRowsOrRowsLimit) {
-      // The constraint of maxRows instead of rowsLimit is embodied
-      if (rowsLimit == 0 || (maxRows > 0 && maxRows < rowsLimit)) {
-        logger.debug("Reach max rows " + maxRows);
-      }
       return false;
     }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index b762609..56fe4df 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -55,7 +55,6 @@ import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.path.PathException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.exception.storageGroup.StorageGroupException;
 import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.metrics.server.SqlArgument;
 import org.apache.iotdb.db.qp.QueryProcessor;
@@ -141,8 +140,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
   // The statementId is unique in one session for each statement.
   private ThreadLocal<Long> statementIdGenerator = new ThreadLocal<>();
-  // The queryId is unique in one session for each operation.
-  private ThreadLocal<Long> queryIdGenerator = new ThreadLocal<>();
+  // The operationIdGenerator is unique in one session for each operation.
+  private ThreadLocal<Long> operationIdGenerator = new ThreadLocal<>();
   // (statement -> Set(queryId))
   private ThreadLocal<Map<Long, Set<Long>>> statementId2QueryId = new ThreadLocal<>();
   // (queryId -> PhysicalPlan)
@@ -238,7 +237,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
   private void initForOneSession() {
     operationStatus.set(new HashMap<>());
     queryDataSets.set(new HashMap<>());
-    queryIdGenerator.set(0L);
+    operationIdGenerator.set(0L);
     statementIdGenerator.set(0L);
     contextMapLocal.set(new HashMap<>());
     statementId2QueryId.set(new HashMap<>());
@@ -262,8 +261,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
       statementIdGenerator.remove();
     }
     // clear the queryId counter
-    if (queryIdGenerator.get() != null) {
-      queryIdGenerator.remove();
+    if (operationIdGenerator.get() != null) {
+      operationIdGenerator.remove();
     }
     // clear all cached physical plans of the connection
     if (operationStatus.get() != null) {
@@ -614,9 +613,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
         sqlArgument = new SqlArgument(resp, physicalPlan, statement, startTime, endTime);
         sqlArgumentsList.add(sqlArgument);
         if (sqlArgumentsList.size() > MAX_SIZE) {
-          for (int i = 0; i < DELETE_SIZE; i++) {
-            sqlArgumentsList.remove(0);
-          }
+          sqlArgumentsList.subList(0, DELETE_SIZE).clear();
         }
         return resp;
       } else {
@@ -637,23 +634,26 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
     }
   }
 
+  /**
+   * @param plan must be a plan for Query: FillQueryPlan, AggregationPlan, GroupByPlan, some AuthorPlan
+   */
   private TSExecuteStatementResp executeQueryStatement(long statementId, PhysicalPlan plan) {
     long t1 = System.currentTimeMillis();
     try {
-      TSExecuteStatementResp resp;
+      TSExecuteStatementResp resp; // column headers
       if (plan instanceof AuthorPlan) {
-        resp = executeAuthQuery(plan);
+        resp = getAuthQueryColumnHeaders(plan);
       } else if (plan instanceof ShowPlan) {
-        resp = executeShow((ShowPlan) plan);
+        resp = getShowQueryColumnHeaders((ShowPlan) plan);
       } else {
-        resp = executeDataQuery(plan);
+        resp = getQueryColumnHeaders(plan);
       }
       if (plan.getOperatorType() == OperatorType.AGGREGATION) {
         resp.setIgnoreTimeStamp(true);
       } // else default ignoreTimeStamp is false
       resp.setOperationType(plan.getOperatorType().toString());
       // generate the queryId for the operation
-      long queryId = generateQueryId();
+      long queryId = generateOperationId();
       // put it into the corresponding Set
       Set<Long> queryIdSet = statementId2QueryId.get()
           .computeIfAbsent(statementId, k -> new HashSet<>());
@@ -707,7 +707,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
     return columnTypes;
   }
 
-  private TSExecuteStatementResp executeShow(ShowPlan showPlan) throws Exception {
+  private TSExecuteStatementResp getShowQueryColumnHeaders(ShowPlan showPlan) throws Exception {
     switch (showPlan.getShowContentType()) {
       case TTL:
         return executeShowTTL();
@@ -766,7 +766,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
     return resp;
   }
 
-  private TSExecuteStatementResp executeAuthQuery(PhysicalPlan plan) {
+  private TSExecuteStatementResp getAuthQueryColumnHeaders(PhysicalPlan plan) {
     TSExecuteStatementResp resp = getTSExecuteStatementResp(getStatus(TSStatusCode.SUCCESS_STATUS));
     resp.setIgnoreTimeStamp(true);
     AuthorPlan authorPlan = (AuthorPlan) plan;
@@ -802,25 +802,15 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
     return resp;
   }
 
-  private TSExecuteStatementResp executeDataQuery(PhysicalPlan plan)
+
+  /**
+   * get ResultSet schema
+   */
+  private TSExecuteStatementResp getQueryColumnHeaders(PhysicalPlan plan)
       throws AuthException, TException, QueryProcessException {
     List<Path> paths = plan.getPaths();
     List<String> respColumns = new ArrayList<>();
 
-    // check seriesPath exists
-    if (paths.isEmpty()) {
-      return getTSExecuteStatementResp(getStatus(TSStatusCode.TIMESERIES_NOT_EXIST_ERROR));
-    }
-
-    // check file level set
-    try {
-      checkFileLevelSet(paths);
-    } catch (StorageGroupException e) {
-      logger.error("meet error while checking file level.", e);
-      return getTSExecuteStatementResp(
-          getStatus(TSStatusCode.CHECK_FILE_LEVEL_ERROR, e.getMessage()));
-    }
-
     // check permissions
     if (!checkAuthorization(paths, plan)) {
       return getTSExecuteStatementResp(getStatus(TSStatusCode.NO_PERMISSION_ERROR));
@@ -828,6 +818,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
     TSExecuteStatementResp resp = getTSExecuteStatementResp(getStatus(TSStatusCode.SUCCESS_STATUS));
 
+    // group by device query
     if (((QueryPlan) plan).isGroupByDevice()) {
       // set columns in TSExecuteStatementResp. Note this is without deduplication.
       List<String> measurementColumns = ((QueryPlan) plan).getMeasurementColumnList();
@@ -899,9 +890,6 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
     return resp;
   }
 
-  private void checkFileLevelSet(List<Path> paths) throws StorageGroupException {
-    MManager.getInstance().checkFileLevel(paths);
-  }
 
   @Override
   public TSFetchResultsResp fetchResults(TSFetchResultsReq req) {
@@ -1008,7 +996,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
 
     status = executePlan(plan);
     TSExecuteStatementResp resp = getTSExecuteStatementResp(status);
-    long queryId = generateQueryId();
+    long queryId = generateOperationId();
     TSHandleIdentifier operationId = new TSHandleIdentifier(
         ByteBuffer.wrap(username.get().getBytes()),
         ByteBuffer.wrap("PASS".getBytes()), queryId);
@@ -1071,7 +1059,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
     resp.setStatus(tsStatus);
     TSHandleIdentifier operationId = new TSHandleIdentifier(
         ByteBuffer.wrap(username.get().getBytes()),
-        ByteBuffer.wrap("PASS".getBytes()), generateQueryId());
+        ByteBuffer.wrap("PASS".getBytes()), generateOperationId());
     TSOperationHandle operationHandle = new TSOperationHandle(operationId, false);
     resp.setOperationHandle(operationHandle);
     return resp;
@@ -1393,9 +1381,9 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
         : getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR);
   }
 
-  private long generateQueryId() {
-    long queryId = queryIdGenerator.get();
-    queryIdGenerator.set(queryId + 1);
+  private long generateOperationId() {
+    long queryId = operationIdGenerator.get();
+    operationIdGenerator.set(queryId + 1);
     return queryId;
   }
 }