This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 8aa9fef Remove duplicated static resps(column header) (#2164)
8aa9fef is described below
commit 8aa9feffccdd8c3ec803bc22efbd77fd8932a98e
Author: Boris <[email protected]>
AuthorDate: Thu Dec 3 20:00:49 2020 +0800
Remove duplicated static resps(column header) (#2164)
---
.../org/apache/iotdb/db/service/StaticResps.java | 98 +------------------
.../org/apache/iotdb/db/service/TSServiceImpl.java | 108 ++++++---------------
2 files changed, 29 insertions(+), 177 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/service/StaticResps.java
b/server/src/main/java/org/apache/iotdb/db/service/StaticResps.java
index ac45067..f261469 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/StaticResps.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/StaticResps.java
@@ -19,30 +19,10 @@
package org.apache.iotdb.db.service;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CANCELLED;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CHILD_PATHS;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_COLUMN;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_COUNT;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CREATED_TIME;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_DEVICES;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_DONE;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_ITEM;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_PRIVILEGE;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_PROGRESS;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_ROLE;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_STORAGE_GROUP;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_TASK_NAME;
import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_TIMESERIES;
-import static
org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_TIMESERIES_COMPRESSION;
-import static
org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_TIMESERIES_DATATYPE;
-import static
org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_TIMESERIES_ENCODING;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_TTL;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_USER;
import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_VALUE;
-import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_VERSION;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
@@ -58,88 +38,12 @@ class StaticResps {
// enum-like class
}
- static final TSExecuteStatementResp TTL_RESP = getNoTimeExecuteResp(
- Arrays.asList(COLUMN_STORAGE_GROUP, COLUMN_TTL),
- Arrays.asList(TSDataType.TEXT.toString(), TSDataType.INT64.toString()));
-
- static final TSExecuteStatementResp FLUSH_INFO_RESP = getNoTimeExecuteResp(
- Arrays.asList(COLUMN_ITEM, COLUMN_VALUE),
- Arrays.asList(TSDataType.TEXT.toString(), TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp SHOW_VERSION_RESP = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_VERSION),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp SHOW_TIMESERIES_RESP =
getNoTimeExecuteResp(
- Arrays.asList(COLUMN_TIMESERIES, COLUMN_STORAGE_GROUP,
COLUMN_TIMESERIES_DATATYPE,
- COLUMN_TIMESERIES_ENCODING, COLUMN_TIMESERIES_COMPRESSION),
- Arrays.asList(TSDataType.TEXT.toString(),
- TSDataType.TEXT.toString(),
- TSDataType.TEXT.toString(),
- TSDataType.TEXT.toString(),
- TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp SHOW_DEVICES = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_DEVICES),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp SHOW_STORAGE_GROUP =
getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_STORAGE_GROUP),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp SHOW_CHILD_PATHS = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_CHILD_PATHS),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp COUNT_TIMESERIES = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_COUNT),
- Collections.singletonList(TSDataType.INT32.toString()));
-
- static final TSExecuteStatementResp COUNT_NODE_TIMESERIES =
getNoTimeExecuteResp(
- Arrays.asList(COLUMN_COLUMN, COLUMN_COUNT),
- Arrays.asList(TSDataType.TEXT.toString(), TSDataType.INT32.toString()));
-
- static final TSExecuteStatementResp COUNT_DEVICES = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_COUNT),
- Collections.singletonList(TSDataType.INT32.toString()));
-
- static final TSExecuteStatementResp COUNT_STORAGE_GROUP =
getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_COUNT),
- Collections.singletonList(TSDataType.INT32.toString()));
-
- static final TSExecuteStatementResp COUNT_NODES = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_COUNT),
- Collections.singletonList(TSDataType.INT32.toString()));
-
- static final TSExecuteStatementResp LIST_ROLE_RESP = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_ROLE),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp LIST_USER_RESP = getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_USER),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp LIST_USER_PRIVILEGE_RESP =
getNoTimeExecuteResp(
- Arrays.asList(COLUMN_ROLE, COLUMN_PRIVILEGE),
- Arrays.asList(TSDataType.TEXT.toString(), TSDataType.TEXT.toString()));
-
- static final TSExecuteStatementResp LIST_ROLE_PRIVILEGE_RESP =
getNoTimeExecuteResp(
- Collections.singletonList(COLUMN_PRIVILEGE),
- Collections.singletonList(TSDataType.TEXT.toString()));
-
static final TSExecuteStatementResp LAST_RESP = getExecuteResp(
Arrays.asList(COLUMN_TIMESERIES, COLUMN_VALUE),
Arrays.asList(TSDataType.TEXT.toString(), TSDataType.TEXT.toString()),
false
);
- static final TSExecuteStatementResp MERGE_STATUS_RESP = getNoTimeExecuteResp(
- Arrays.asList(COLUMN_STORAGE_GROUP, COLUMN_TASK_NAME,
COLUMN_CREATED_TIME, COLUMN_PROGRESS,
- COLUMN_CANCELLED, COLUMN_DONE),
- Arrays.asList(TSDataType.TEXT.toString(), TSDataType.TEXT.toString(),
- TSDataType.TEXT.toString(),
- TSDataType.TEXT.toString(), TSDataType.BOOLEAN.toString(),
TSDataType.BOOLEAN.toString()));
-
- private static TSExecuteStatementResp getNoTimeExecuteResp(List<String>
columns,
+ public static TSExecuteStatementResp getNoTimeExecuteResp(List<String>
columns,
List<String> dataTypes) {
return getExecuteResp(columns, dataTypes, true);
}
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 9145e51..a075813 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
@@ -18,8 +18,6 @@
*/
package org.apache.iotdb.db.service;
-import static
org.apache.iotdb.db.qp.physical.sys.ShowPlan.ShowContentType.TIMESERIES;
-
import java.io.IOException;
import java.nio.ByteBuffer;
import java.sql.SQLException;
@@ -650,7 +648,6 @@ public class TSServiceImpl implements TSIService.Iface,
ServerContext {
long startTime = System.currentTimeMillis();
long queryId = -1;
try {
- TSExecuteStatementResp resp = getQueryResp(plan, username); // column
headers
// In case users forget to set this field in query, use the default value
if (fetchSize == 0) {
@@ -678,10 +675,9 @@ public class TSServiceImpl implements TSIService.Iface,
ServerContext {
}
}
if (plan.getOperatorType() == OperatorType.AGGREGATION) {
- resp.setIgnoreTimeStamp(true);
// the actual row number of aggregation query is 1
fetchSize = 1;
- } // else default ignoreTimeStamp is false
+ }
if (plan instanceof GroupByTimePlan) {
GroupByTimePlan groupByTimePlan = (GroupByTimePlan) plan;
@@ -691,8 +687,6 @@ public class TSServiceImpl implements TSIService.Iface,
ServerContext {
.getInterval()), fetchSize);
}
- resp.setOperationType(plan.getOperatorType().toString());
-
// get deduplicated path num
int deduplicatedPathNum = -1;
if (plan instanceof AlignByDevicePlan) {
@@ -725,19 +719,31 @@ public class TSServiceImpl implements TSIService.Iface,
ServerContext {
if (plan instanceof AuthorPlan) {
plan.setLoginUserName(username);
}
+
+ TSExecuteStatementResp resp = null;
+
+ // execute it before createDataSet since it may change the content of
query plan
+ if (plan instanceof QueryPlan) {
+ resp = getQueryColumnHeaders(plan, username);
+ }
// create and cache dataset
QueryDataSet newDataSet = createQueryDataSet(queryId, plan);
+
+ if (plan instanceof ShowPlan || plan instanceof AuthorPlan) {
+ resp = getListDataSetHeaders(newDataSet);
+ }
+
+ resp.setOperationType(plan.getOperatorType().toString());
+
+ if (plan.getOperatorType() == OperatorType.AGGREGATION) {
+ resp.setIgnoreTimeStamp(true);
+ } // else default ignoreTimeStamp is false
+
if (plan instanceof QueryPlan && !((QueryPlan) plan).isAlignByTime()
&& newDataSet instanceof NonAlignEngineDataSet) {
TSQueryNonAlignDataSet result = fillRpcNonAlignReturnData(fetchSize,
newDataSet, username);
resp.setNonAlignQueryDataSet(result);
} else {
- if (plan instanceof ShowPlan && ((ShowPlan) plan).getShowContentType()
== TIMESERIES) {
- resp.setColumns(
-
newDataSet.getPaths().stream().map(Path::getFullPath).collect(Collectors.toList()));
- resp.setDataTypeList(
-
newDataSet.getDataTypes().stream().map(Enum::toString).collect(Collectors.toList()));
- }
TSQueryDataSet result = fillRpcReturnData(fetchSize, newDataSet,
username);
resp.setQueryDataSet(result);
}
@@ -791,71 +797,11 @@ public class TSServiceImpl implements TSIService.Iface,
ServerContext {
}
}
- private TSExecuteStatementResp getQueryResp(PhysicalPlan plan, String
username)
- throws QueryProcessException, AuthException, TException,
MetadataException {
- if (plan instanceof AuthorPlan) {
- return getAuthQueryColumnHeaders(plan);
- } else if (plan instanceof ShowPlan) {
- return getShowQueryColumnHeaders((ShowPlan) plan);
- } else {
- return getQueryColumnHeaders(plan, username);
- }
- }
-
- private TSExecuteStatementResp getShowQueryColumnHeaders(ShowPlan showPlan)
- throws QueryProcessException {
- switch (showPlan.getShowContentType()) {
- case TTL:
- return StaticResps.TTL_RESP;
- case FLUSH_TASK_INFO:
- return StaticResps.FLUSH_INFO_RESP;
- case VERSION:
- return StaticResps.SHOW_VERSION_RESP;
- case TIMESERIES:
- return StaticResps.SHOW_TIMESERIES_RESP;
- case STORAGE_GROUP:
- return StaticResps.SHOW_STORAGE_GROUP;
- case CHILD_PATH:
- return StaticResps.SHOW_CHILD_PATHS;
- case DEVICES:
- return StaticResps.SHOW_DEVICES;
- case COUNT_NODE_TIMESERIES:
- return StaticResps.COUNT_NODE_TIMESERIES;
- case COUNT_NODES:
- return StaticResps.COUNT_NODES;
- case COUNT_TIMESERIES:
- return StaticResps.COUNT_TIMESERIES;
- case COUNT_DEVICES:
- return StaticResps.COUNT_DEVICES;
- case COUNT_STORAGE_GROUP:
- return StaticResps.COUNT_STORAGE_GROUP;
- case MERGE_STATUS:
- return StaticResps.MERGE_STATUS_RESP;
- default:
- logger.warn("Unsupported show content type: {}",
showPlan.getShowContentType());
- throw new QueryProcessException(
- "Unsupported show content type:" + showPlan.getShowContentType());
- }
- }
-
- private TSExecuteStatementResp getAuthQueryColumnHeaders(PhysicalPlan plan) {
- AuthorPlan authorPlan = (AuthorPlan) plan;
- switch (authorPlan.getAuthorType()) {
- case LIST_ROLE:
- case LIST_USER_ROLES:
- return StaticResps.LIST_ROLE_RESP;
- case LIST_USER:
- case LIST_ROLE_USERS:
- return StaticResps.LIST_USER_RESP;
- case LIST_ROLE_PRIVILEGE:
- return StaticResps.LIST_ROLE_PRIVILEGE_RESP;
- case LIST_USER_PRIVILEGE:
- return StaticResps.LIST_USER_PRIVILEGE_RESP;
- default:
- return RpcUtils.getTSExecuteStatementResp(
- RpcUtils.getStatus(TSStatusCode.SQL_PARSE_ERROR,
- String.format("%s is not an auth query",
authorPlan.getAuthorType())));
- }
+ private TSExecuteStatementResp getListDataSetHeaders(QueryDataSet dataSet) {
+ return StaticResps
+
.getNoTimeExecuteResp(dataSet.getPaths().stream().map(Path::getFullPath).collect(
+ Collectors.toList()),
dataSet.getDataTypes().stream().map(Enum::toString).collect(
+ Collectors.toList()));
}
/**
@@ -887,9 +833,11 @@ public class TSServiceImpl implements TSIService.Iface,
ServerContext {
return StaticResps.LAST_RESP.deepCopy();
} else if (plan instanceof AggregationPlan && ((AggregationPlan)
plan).getLevel() >= 0) {
Map<Integer, String> pathIndex = new HashMap<>();
- Map<String, AggregateResult> finalPaths =
FilePathUtils.getPathByLevel((AggregationPlan) plan, pathIndex);
+ Map<String, AggregateResult> finalPaths = FilePathUtils
+ .getPathByLevel((AggregationPlan) plan, pathIndex);
for (Map.Entry<String, AggregateResult> entry : finalPaths.entrySet()) {
- respColumns.add(entry.getValue().getAggregationType().toString() + "("
+ entry.getKey() + ")");
+ respColumns
+ .add(entry.getValue().getAggregationType().toString() + "(" +
entry.getKey() + ")");
columnsTypes.add(entry.getValue().getResultDataType().toString());
}
} else {