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;
}
}