You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/08/19 01:54:38 UTC
[iotdb] branch master updated: [IOTDB-4132] Fix concurrent bug caused by sharing same DatasetHeader (#7011)
This is an automated email from the ASF dual-hosted git repository.
jackietien 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 4f9db18561 [IOTDB-4132] Fix concurrent bug caused by sharing same DatasetHeader (#7011)
4f9db18561 is described below
commit 4f9db185615fe41917acc5cbb90d1bed9380a566
Author: liuminghui233 <36...@users.noreply.github.com>
AuthorDate: Fri Aug 19 09:54:33 2022 +0800
[IOTDB-4132] Fix concurrent bug caused by sharing same DatasetHeader (#7011)
---
.../db/mpp/common/header/ColumnHeaderConstant.java | 218 +++++++++++++++
.../db/mpp/common/header/DatasetHeaderFactory.java | 115 ++++++++
.../iotdb/db/mpp/common/header/HeaderConstant.java | 311 ---------------------
.../operator/schema/DevicesCountOperator.java | 16 +-
.../operator/schema/DevicesSchemaScanOperator.java | 19 +-
.../schema/LevelTimeSeriesCountOperator.java | 15 +-
.../schema/NodeManageMemoryMergeOperator.java | 13 +-
.../operator/schema/NodePathsConvertOperator.java | 16 +-
.../operator/schema/NodePathsCountOperator.java | 15 +-
.../schema/NodePathsSchemaScanOperator.java | 14 +-
.../schema/PathsUsingTemplateScanOperator.java | 18 +-
.../schema/SchemaQueryOrderByHeatOperator.java | 21 +-
.../operator/schema/TimeSeriesCountOperator.java | 16 +-
.../schema/TimeSeriesSchemaScanOperator.java | 24 +-
.../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 52 ++--
.../execution/config/metadata/ShowClusterTask.java | 17 +-
.../config/metadata/ShowConfigNodesTask.java | 17 +-
.../config/metadata/ShowDataNodesTask.java | 17 +-
.../config/metadata/ShowFunctionsTask.java | 17 +-
.../execution/config/metadata/ShowRegionTask.java | 16 +-
.../config/metadata/ShowStorageGroupTask.java | 18 +-
.../execution/config/metadata/ShowTTLTask.java | 17 +-
.../template/ShowNodesInSchemaTemplateTask.java | 18 +-
.../metadata/template/ShowPathSetTemplateTask.java | 15 +-
.../metadata/template/ShowSchemaTemplateTask.java | 18 +-
.../memory/StatementMemorySourceVisitor.java | 60 ++--
.../iotdb/db/mpp/plan/expression/Expression.java | 9 +-
.../plan/node/metedata/read/DevicesCountNode.java | 8 +-
.../node/metedata/read/DevicesSchemaScanNode.java | 12 +-
.../metedata/read/LevelTimeSeriesCountNode.java | 8 +-
.../metedata/read/NodePathsSchemaScanNode.java | 8 +-
.../metedata/read/PathsUsingTemplateScanNode.java | 8 +-
.../metedata/read/SchemaQueryOrderByHeatNode.java | 4 +-
.../node/metedata/read/TimeSeriesCountNode.java | 8 +-
.../metedata/read/TimeSeriesSchemaScanNode.java | 10 +-
.../db/mpp/plan/plan/QueryLogicalPlanUtil.java | 8 +-
36 files changed, 725 insertions(+), 471 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
new file mode 100644
index 0000000000..b90626b6b3
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -0,0 +1,218 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.common.header;
+
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+public class ColumnHeaderConstant {
+
+ // column names for query statement
+ public static final String COLUMN_TIME = "Time";
+ public static final String COLUMN_VALUE = "value";
+ public static final String COLUMN_DEVICE = "Device";
+
+ // column names for schema statement
+ public static final String COLUMN_STORAGE_GROUP = "storage group";
+ public static final String COLUMN_TIMESERIES = "timeseries";
+ public static final String COLUMN_TIMESERIES_ALIAS = "alias";
+ public static final String COLUMN_TIMESERIES_DATATYPE = "dataType";
+ public static final String COLUMN_TIMESERIES_ENCODING = "encoding";
+ public static final String COLUMN_TIMESERIES_COMPRESSION = "compression";
+ public static final String COLUMN_DEVICES = "devices";
+ public static final String COLUMN_TAGS = "tags";
+ public static final String COLUMN_ATTRIBUTES = "attributes";
+ public static final String COLUMN_IS_ALIGNED = "isAligned";
+ public static final String COLUMN_COUNT = "count";
+ public static final String COLUMN_TTL = "ttl";
+ public static final String COLUMN_SCHEMA_REPLICATION_FACTOR = "schema_replication_factor";
+ public static final String COLUMN_DATA_REPLICATION_FACTOR = "data_replication_factor";
+ public static final String COLUMN_TIME_PARTITION_INTERVAL = "time_partition_interval";
+ public static final String COLUMN_CHILDPATHS = "child paths";
+ public static final String COLUMN_NODETYPES = "node types";
+ public static final String COLUMN_CHILDNODES = "child nodes";
+ public static final String COLUMN_VERSION = "version";
+ public static final String COLUMN_PATHS = "paths";
+
+ // column names for count statement
+ public static final String COLUMN_COLUMN = "column";
+ public static final String COLUMN_COUNT_DEVICES = "count(devices)";
+ public static final String COLUMN_COUNT_NODES = "count(nodes)";
+ public static final String COLUMN_COUNT_TIMESERIES = "count(timeseries)";
+ public static final String COLUMN_COUNT_STORAGE_GROUP = "count(storage group)";
+
+ // column names for show cluster statement
+ public static final String COLUMN_NODE_ID = "NodeID";
+ public static final String COLUMN_NODE_TYPE = "NodeType";
+ public static final String COLUMN_STATUS = "Status";
+ public static final String COLUMN_HOST = "Host";
+ public static final String COLUMN_PORT = "Port";
+
+ // column names for show functions statement
+ public static final String COLUMN_FUNCTION_NAME = "function name";
+ public static final String COLUMN_FUNCTION_TYPE = "function type";
+ public static final String COLUMN_FUNCTION_CLASS = "class name (UDF)";
+
+ // column names for show region statement
+ public static final String COLUMN_REGION_ID = "RegionId";
+ public static final String COLUMN_TYPE = "Type";
+ public static final String COLUMN_DATANODE_ID = "DataNodeId";
+ public static final String COLUMN_SERIES_SLOTS = "Series Slots";
+ public static final String COLUMN_TIME_SLOTS = "Time Slots";
+ public static final String COLUMN_ROLE = "Role";
+
+ // column names for show datanodes
+ public static final String COLUMN_DATA_REGION_NUM = "DataRegionNum";
+ public static final String COLUMN_SCHEMA_REGION_NUM = "SchemaRegionNum";
+
+ // column names for show schema template statement
+ public static final String COLUMN_TEMPLATE_NAME = "template name";
+
+ public static final List<ColumnHeader> lastQueryColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_TIMESERIES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_VALUE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showTimeSeriesColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_TIMESERIES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_ALIAS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_ENCODING, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_COMPRESSION, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TAGS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_ATTRIBUTES, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showDevicesWithSgColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_DEVICES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_IS_ALIGNED, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showDevicesColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_DEVICES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_IS_ALIGNED, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showTTLColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TTL, TSDataType.INT64));
+
+ public static final List<ColumnHeader> showStorageGroupColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TTL, TSDataType.INT64),
+ new ColumnHeader(COLUMN_SCHEMA_REPLICATION_FACTOR, TSDataType.INT32),
+ new ColumnHeader(COLUMN_DATA_REPLICATION_FACTOR, TSDataType.INT32),
+ new ColumnHeader(COLUMN_TIME_PARTITION_INTERVAL, TSDataType.INT64));
+
+ public static final List<ColumnHeader> showChildPathsColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_CHILDPATHS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_NODETYPES, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showNodesInSchemaTemplateHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_CHILDNODES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_ENCODING, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TIMESERIES_COMPRESSION, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showChildNodesColumnHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_CHILDNODES, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showVersionColumnHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_VERSION, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showPathsUsingTemplateHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_PATHS, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showPathSetTemplateHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_PATHS, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> countDevicesColumnHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_COUNT_DEVICES, TSDataType.INT32));
+
+ public static final List<ColumnHeader> countNodesColumnHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_COUNT_NODES, TSDataType.INT32));
+
+ public static final List<ColumnHeader> countLevelTimeSeriesColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_COLUMN, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_COUNT_TIMESERIES, TSDataType.INT32));
+
+ public static final List<ColumnHeader> countTimeSeriesColumnHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_COUNT_TIMESERIES, TSDataType.INT32));
+
+ public static final List<ColumnHeader> countStorageGroupColumnHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_COUNT_STORAGE_GROUP, TSDataType.INT32));
+
+ public static final List<ColumnHeader> showRegionColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_REGION_ID, TSDataType.INT32),
+ new ColumnHeader(COLUMN_TYPE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_SERIES_SLOTS, TSDataType.INT64),
+ new ColumnHeader(COLUMN_TIME_SLOTS, TSDataType.INT64),
+ new ColumnHeader(COLUMN_DATANODE_ID, TSDataType.INT32),
+ new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_PORT, TSDataType.INT32),
+ new ColumnHeader(COLUMN_ROLE, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showDataNodesColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
+ new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_PORT, TSDataType.INT32),
+ new ColumnHeader(COLUMN_DATA_REGION_NUM, TSDataType.INT32),
+ new ColumnHeader(COLUMN_SCHEMA_REGION_NUM, TSDataType.INT32));
+
+ public static final List<ColumnHeader> showConfigNodesColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
+ new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_PORT, TSDataType.INT32));
+
+ public static final List<ColumnHeader> showClusterColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
+ new ColumnHeader(COLUMN_NODE_TYPE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_PORT, TSDataType.INT32));
+
+ public static final List<ColumnHeader> showFunctionsColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_FUNCTION_NAME, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_FUNCTION_TYPE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_FUNCTION_CLASS, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> showSchemaTemplateHeaders =
+ ImmutableList.of(new ColumnHeader(COLUMN_TEMPLATE_NAME, TSDataType.TEXT));
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
new file mode 100644
index 0000000000..a30b06242d
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.common.header;
+
+public class DatasetHeaderFactory {
+
+ public static DatasetHeader getCountStorageGroupHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.countStorageGroupColumnHeaders, true);
+ }
+
+ public static DatasetHeader getCountNodesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.countNodesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getCountDevicesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.countDevicesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getCountTimeSeriesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.countTimeSeriesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getCountLevelTimeSeriesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.countLevelTimeSeriesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowTimeSeriesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showTimeSeriesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowDevicesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showDevicesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowDevicesWithSgHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showDevicesWithSgColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowStorageGroupHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showStorageGroupColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowTTLHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showTTLColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowChildPathsHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showChildPathsColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowChildNodesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showChildNodesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowVersionHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showVersionColumnHeaders, true);
+ }
+
+ public static DatasetHeader getLastQueryHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.lastQueryColumnHeaders, false);
+ }
+
+ public static DatasetHeader getShowClusterHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showClusterColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowFunctionsHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showFunctionsColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowRegionHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showRegionColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowDataNodesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showDataNodesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowConfigNodesHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showConfigNodesColumnHeaders, true);
+ }
+
+ public static DatasetHeader getShowSchemaTemplateHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showSchemaTemplateHeaders, true);
+ }
+
+ public static DatasetHeader getShowNodesInSchemaTemplateHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showNodesInSchemaTemplateHeaders, true);
+ }
+
+ public static DatasetHeader getShowPathSetTemplateHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showPathSetTemplateHeaders, true);
+ }
+
+ public static DatasetHeader getShowPathsUsingTemplateHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showPathsUsingTemplateHeaders, true);
+ }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java
deleted file mode 100644
index b3ab46d8a2..0000000000
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/HeaderConstant.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.mpp.common.header;
-
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-public class HeaderConstant {
-
- // column names for query statement
- public static final String COLUMN_TIME = "Time";
- public static final String COLUMN_VALUE = "value";
- public static final String COLUMN_DEVICE = "Device";
-
- // column names for schema statement
- public static final String COLUMN_STORAGE_GROUP = "storage group";
- public static final String COLUMN_TIMESERIES = "timeseries";
- public static final String COLUMN_TIMESERIES_ALIAS = "alias";
- public static final String COLUMN_TIMESERIES_DATATYPE = "dataType";
- public static final String COLUMN_TIMESERIES_ENCODING = "encoding";
- public static final String COLUMN_TIMESERIES_COMPRESSION = "compression";
- public static final String COLUMN_DEVICES = "devices";
- public static final String COLUMN_TAGS = "tags";
- public static final String COLUMN_ATTRIBUTES = "attributes";
- public static final String COLUMN_IS_ALIGNED = "isAligned";
- public static final String COLUMN_COUNT = "count";
- public static final String COLUMN_TTL = "ttl";
- public static final String COLUMN_SCHEMA_REPLICATION_FACTOR = "schema_replication_factor";
- public static final String COLUMN_DATA_REPLICATION_FACTOR = "data_replication_factor";
- public static final String COLUMN_TIME_PARTITION_INTERVAL = "time_partition_interval";
- public static final String COLUMN_CHILDPATHS = "child paths";
- public static final String COLUMN_NODETYPES = "node types";
- public static final String COLUMN_CHILDNODES = "child nodes";
- public static final String COLUMN_VERSION = "version";
- public static final String COLUMN_PATHS = "paths";
-
- // column names for count statement
- public static final String COLUMN_COLUMN = "column";
- public static final String COLUMN_COUNT_DEVICES = "count(devices)";
- public static final String COLUMN_COUNT_NODES = "count(nodes)";
- public static final String COLUMN_COUNT_TIMESERIES = "count(timeseries)";
- public static final String COLUMN_COUNT_STORAGE_GROUP = "count(storage group)";
-
- // column names for show cluster statement
- public static final String COLUMN_NODE_ID = "NodeID";
- public static final String COLUMN_NODE_TYPE = "NodeType";
- public static final String COLUMN_STATUS = "Status";
- public static final String COLUMN_HOST = "Host";
- public static final String COLUMN_PORT = "Port";
-
- // column names for show functions statement
- public static final String COLUMN_FUNCTION_NAME = "function name";
- public static final String COLUMN_FUNCTION_TYPE = "function type";
- public static final String COLUMN_FUNCTION_CLASS = "class name (UDF)";
-
- // column names for show region statement
- public static final String COLUMN_REGION_ID = "RegionId";
- public static final String COLUMN_TYPE = "Type";
- public static final String COLUMN_DATANODE_ID = "DataNodeId";
- public static final String COLUMN_SERIES_SLOTS = "Series Slots";
- public static final String COLUMN_TIME_SLOTS = "Time Slots";
- public static final String COLUMN_ROLE = "Role";
-
- // column names for show datanodes
- public static final String COLUMN_DATA_REGION_NUM = "DataRegionNum";
- public static final String COLUMN_SCHEMA_REGION_NUM = "SchemaRegionNum";
-
- // column names for show schema template statement
- public static final String COLUMN_TEMPLATE_NAME = "template name";
-
- // dataset header for schema statement
- public static final DatasetHeader showTimeSeriesHeader;
- public static final DatasetHeader showDevicesHeader;
- public static final DatasetHeader showDevicesWithSgHeader;
- public static final DatasetHeader showStorageGroupHeader;
- public static final DatasetHeader showTTLHeader;
- public static final DatasetHeader showChildPathsHeader;
- public static final DatasetHeader showChildNodesHeader;
- public static final DatasetHeader showVersionHeader;
-
- // dataset header for count statement
- public static final DatasetHeader countStorageGroupHeader;
- public static final DatasetHeader countNodesHeader;
- public static final DatasetHeader countDevicesHeader;
- public static final DatasetHeader countTimeSeriesHeader;
- public static final DatasetHeader countLevelTimeSeriesHeader;
-
- // dataset header for show cluster statement
- public static final DatasetHeader showClusterHeader;
-
- // dataset header for last query
- public static final DatasetHeader LAST_QUERY_HEADER;
-
- // dataset header for show functions
- public static final DatasetHeader SHOW_FUNCTIONS_HEADER;
-
- // dataset header for show region
- public static final DatasetHeader showRegionHeader;
-
- // dataset header for show datanodes
- public static final DatasetHeader showDataNodesHeader;
-
- // dataset header for show nodes in schema template
- public static final DatasetHeader showNodesInSchemaTemplate;
-
- // dataset header for show schma template
- public static final DatasetHeader showSchemaTemplate;
-
- // dataset header for show path set template
- public static final DatasetHeader showPathSetTemplate;
-
- // dataset header for show paths using template
- public static final DatasetHeader showPathsUsingTemplate;
-
- // dataset header for show confignodes
- public static final DatasetHeader showConfigNodesHeader;
-
- static {
- countStorageGroupHeader =
- new DatasetHeader(
- Collections.singletonList(
- new ColumnHeader(COLUMN_COUNT_STORAGE_GROUP, TSDataType.INT32)),
- true);
- countNodesHeader =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_COUNT_NODES, TSDataType.INT32)),
- true);
- countDevicesHeader =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_COUNT_DEVICES, TSDataType.INT32)),
- true);
- countTimeSeriesHeader =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_COUNT_TIMESERIES, TSDataType.INT32)),
- true);
- countLevelTimeSeriesHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_COLUMN, TSDataType.TEXT),
- new ColumnHeader(COLUMN_COUNT_TIMESERIES, TSDataType.INT32)),
- true);
- }
-
- static {
- showTimeSeriesHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_TIMESERIES, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_ALIAS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_ENCODING, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_COMPRESSION, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TAGS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_ATTRIBUTES, TSDataType.TEXT)),
- true);
- showDevicesHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_DEVICES, TSDataType.TEXT),
- new ColumnHeader(COLUMN_IS_ALIGNED, TSDataType.TEXT)),
- true);
- showDevicesWithSgHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_DEVICES, TSDataType.TEXT),
- new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
- new ColumnHeader(COLUMN_IS_ALIGNED, TSDataType.TEXT)),
- true);
- showStorageGroupHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TTL, TSDataType.INT64),
- new ColumnHeader(COLUMN_SCHEMA_REPLICATION_FACTOR, TSDataType.INT32),
- new ColumnHeader(COLUMN_DATA_REPLICATION_FACTOR, TSDataType.INT32),
- new ColumnHeader(COLUMN_TIME_PARTITION_INTERVAL, TSDataType.INT64)),
- true);
- showTTLHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TTL, TSDataType.INT64)),
- true);
- showChildPathsHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_CHILDPATHS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_NODETYPES, TSDataType.TEXT)),
- true);
- showChildNodesHeader =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_CHILDNODES, TSDataType.TEXT)), true);
- showVersionHeader =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_VERSION, TSDataType.TEXT)), true);
- }
-
- static {
- LAST_QUERY_HEADER =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_TIMESERIES, TSDataType.TEXT),
- new ColumnHeader(COLUMN_VALUE, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT)),
- false);
- }
-
- static {
- showClusterHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
- new ColumnHeader(COLUMN_NODE_TYPE, TSDataType.TEXT),
- new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
- new ColumnHeader(COLUMN_PORT, TSDataType.INT32)),
- true);
- }
-
- static {
- SHOW_FUNCTIONS_HEADER =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_FUNCTION_NAME, TSDataType.TEXT),
- new ColumnHeader(COLUMN_FUNCTION_TYPE, TSDataType.TEXT),
- new ColumnHeader(COLUMN_FUNCTION_CLASS, TSDataType.TEXT)),
- true);
- }
-
- static {
- showRegionHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_REGION_ID, TSDataType.INT32),
- new ColumnHeader(COLUMN_TYPE, TSDataType.TEXT),
- new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
- new ColumnHeader(COLUMN_SERIES_SLOTS, TSDataType.INT64),
- new ColumnHeader(COLUMN_TIME_SLOTS, TSDataType.INT64),
- new ColumnHeader(COLUMN_DATANODE_ID, TSDataType.INT32),
- new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
- new ColumnHeader(COLUMN_PORT, TSDataType.INT32),
- new ColumnHeader(COLUMN_ROLE, TSDataType.TEXT)),
- true);
- }
-
- static {
- showDataNodesHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
- new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
- new ColumnHeader(COLUMN_PORT, TSDataType.INT32),
- new ColumnHeader(COLUMN_DATA_REGION_NUM, TSDataType.INT32),
- new ColumnHeader(COLUMN_SCHEMA_REGION_NUM, TSDataType.INT32)),
- true);
- }
-
- static {
- showConfigNodesHeader =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
- new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_HOST, TSDataType.TEXT),
- new ColumnHeader(COLUMN_PORT, TSDataType.INT32)),
- true);
- }
-
- static {
- showSchemaTemplate =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_TEMPLATE_NAME, TSDataType.TEXT)),
- true);
- showNodesInSchemaTemplate =
- new DatasetHeader(
- Arrays.asList(
- new ColumnHeader(COLUMN_CHILDNODES, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_ENCODING, TSDataType.TEXT),
- new ColumnHeader(COLUMN_TIMESERIES_COMPRESSION, TSDataType.TEXT)),
- true);
- showPathSetTemplate =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_PATHS, TSDataType.TEXT)), true);
- showPathsUsingTemplate =
- new DatasetHeader(
- Collections.singletonList(new ColumnHeader(COLUMN_PATHS, TSDataType.TEXT)), true);
- }
-}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesCountOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesCountOperator.java
index 28c6cd268e..ca69fef36f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesCountOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesCountOperator.java
@@ -21,14 +21,19 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.source.SourceOperator;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class DevicesCountOperator implements SourceOperator {
private final PlanNodeId sourceId;
private final OperatorContext operatorContext;
@@ -37,6 +42,8 @@ public class DevicesCountOperator implements SourceOperator {
private boolean isFinished;
+ private final List<TSDataType> outputDataTypes;
+
@Override
public PlanNodeId getSourceId() {
return sourceId;
@@ -51,6 +58,10 @@ public class DevicesCountOperator implements SourceOperator {
this.operatorContext = operatorContext;
this.partialPath = partialPath;
this.isPrefixPath = isPrefixPath;
+ this.outputDataTypes =
+ ColumnHeaderConstant.countDevicesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -61,8 +72,7 @@ public class DevicesCountOperator implements SourceOperator {
@Override
public TsBlock next() {
isFinished = true;
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countDevicesHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
int count = 0;
try {
count =
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesSchemaScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesSchemaScanOperator.java
index 17c700f4ae..fc8a3993e5 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesSchemaScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/DevicesSchemaScanOperator.java
@@ -20,18 +20,24 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.qp.physical.sys.ShowDevicesPlan;
import org.apache.iotdb.db.query.dataset.ShowDevicesResult;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class DevicesSchemaScanOperator extends SchemaQueryScanOperator {
private final boolean hasSgCol;
+ private final List<TSDataType> outputDataTypes;
public DevicesSchemaScanOperator(
PlanNodeId sourceId,
@@ -43,15 +49,16 @@ public class DevicesSchemaScanOperator extends SchemaQueryScanOperator {
boolean hasSgCol) {
super(sourceId, operatorContext, limit, offset, partialPath, isPrefixPath);
this.hasSgCol = hasSgCol;
+ this.outputDataTypes =
+ (hasSgCol
+ ? ColumnHeaderConstant.showDevicesWithSgColumnHeaders
+ : ColumnHeaderConstant.showDevicesColumnHeaders)
+ .stream().map(ColumnHeader::getColumnType).collect(Collectors.toList());
}
@Override
protected TsBlock createTsBlock() {
- TsBlockBuilder builder =
- new TsBlockBuilder(
- hasSgCol
- ? HeaderConstant.showDevicesWithSgHeader.getRespDataTypes()
- : HeaderConstant.showDevicesHeader.getRespDataTypes());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
try {
((SchemaDriverContext) operatorContext.getInstanceContext().getDriverContext())
.getSchemaRegion()
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/LevelTimeSeriesCountOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/LevelTimeSeriesCountOperator.java
index 9389035065..1630af74a2 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/LevelTimeSeriesCountOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/LevelTimeSeriesCountOperator.java
@@ -21,16 +21,20 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.source.SourceOperator;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
public class LevelTimeSeriesCountOperator implements SourceOperator {
private final PlanNodeId sourceId;
@@ -44,6 +48,8 @@ public class LevelTimeSeriesCountOperator implements SourceOperator {
private boolean isFinished;
+ private final List<TSDataType> outputDataTypes;
+
public LevelTimeSeriesCountOperator(
PlanNodeId sourceId,
OperatorContext operatorContext,
@@ -61,6 +67,10 @@ public class LevelTimeSeriesCountOperator implements SourceOperator {
this.key = key;
this.value = value;
this.isContains = isContains;
+ this.outputDataTypes =
+ ColumnHeaderConstant.countLevelTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -76,8 +86,7 @@ public class LevelTimeSeriesCountOperator implements SourceOperator {
@Override
public TsBlock next() {
isFinished = true;
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countLevelTimeSeriesHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
Map<PartialPath, Integer> countMap;
try {
if (key != null && value != null) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodeManageMemoryMergeOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodeManageMemoryMergeOperator.java
index f97f299279..a4510ed53c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodeManageMemoryMergeOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodeManageMemoryMergeOperator.java
@@ -21,10 +21,12 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.common.rpc.thrift.TSchemaNode;
import org.apache.iotdb.db.metadata.mnode.MNodeType;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.operator.Operator;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.process.ProcessOperator;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
@@ -32,6 +34,7 @@ import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
@@ -44,6 +47,7 @@ public class NodeManageMemoryMergeOperator implements ProcessOperator {
private final Set<String> nameSet;
private final Operator child;
private boolean isReadingMemory;
+ private final List<TSDataType> outputDataTypes;
public NodeManageMemoryMergeOperator(
OperatorContext operatorContext, Set<TSchemaNode> data, Operator child) {
@@ -52,6 +56,10 @@ public class NodeManageMemoryMergeOperator implements ProcessOperator {
nameSet = data.stream().map(schemaNode -> schemaNode.getNodeName()).collect(Collectors.toSet());
this.child = requireNonNull(child, "child operator is null");
isReadingMemory = true;
+ this.outputDataTypes =
+ ColumnHeaderConstant.showChildPathsColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -91,8 +99,7 @@ public class NodeManageMemoryMergeOperator implements ProcessOperator {
}
private TsBlock transferToTsBlock(Set<TSchemaNode> nodePaths) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showChildPathsHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
// sort by node type
Set<TSchemaNode> sortSet =
new TreeSet<>(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsConvertOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsConvertOperator.java
index 2af62ce754..76ec17b585 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsConvertOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsConvertOperator.java
@@ -21,10 +21,12 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.operator.Operator;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.process.ProcessOperator;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
@@ -33,6 +35,9 @@ import com.google.common.util.concurrent.ListenableFuture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.List;
+import java.util.stream.Collectors;
+
import static java.util.Objects.requireNonNull;
public class NodePathsConvertOperator implements ProcessOperator {
@@ -42,9 +47,15 @@ public class NodePathsConvertOperator implements ProcessOperator {
private final OperatorContext operatorContext;
private final Operator child;
+ private final List<TSDataType> outputDataTypes;
+
public NodePathsConvertOperator(OperatorContext operatorContext, Operator child) {
this.operatorContext = requireNonNull(operatorContext, "operatorContext is null");
this.child = requireNonNull(child, "child operator is null");
+ this.outputDataTypes =
+ ColumnHeaderConstant.showChildPathsColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -63,8 +74,7 @@ public class NodePathsConvertOperator implements ProcessOperator {
if (block == null || block.isEmpty()) {
return null;
}
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showChildNodesHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
for (int i = 0; i < block.getPositionCount(); i++) {
String path = block.getColumn(0).getBinary(i).toString();
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsCountOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsCountOperator.java
index 98df95be4a..79b3af2c41 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsCountOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsCountOperator.java
@@ -19,17 +19,21 @@
package org.apache.iotdb.db.mpp.execution.operator.schema;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.operator.Operator;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.process.ProcessOperator;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import static java.util.Objects.requireNonNull;
@@ -40,11 +44,17 @@ public class NodePathsCountOperator implements ProcessOperator {
private boolean isFinished;
private final Set<String> nodePaths;
+ private final List<TSDataType> outputDataTypes;
+
public NodePathsCountOperator(OperatorContext operatorContext, Operator child) {
this.operatorContext = requireNonNull(operatorContext, "operatorContext is null");
this.child = requireNonNull(child, "child operator is null");
this.isFinished = false;
this.nodePaths = new HashSet<>();
+ this.outputDataTypes =
+ ColumnHeaderConstant.countNodesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -55,8 +65,7 @@ public class NodePathsCountOperator implements ProcessOperator {
@Override
public TsBlock next() {
isFinished = true;
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countNodesHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
tsBlockBuilder.getColumnBuilder(0).writeInt(nodePaths.size());
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsSchemaScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsSchemaScanOperator.java
index 2db64f704c..1daade8dc3 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsSchemaScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/NodePathsSchemaScanOperator.java
@@ -23,15 +23,18 @@ import org.apache.iotdb.common.rpc.thrift.TSchemaNode;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.mnode.MNodeType;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.source.SourceOperator;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
+import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -46,12 +49,18 @@ public class NodePathsSchemaScanOperator implements SourceOperator {
private boolean isFinished;
+ private final List<TSDataType> outputDataTypes;
+
public NodePathsSchemaScanOperator(
PlanNodeId sourceId, OperatorContext operatorContext, PartialPath partialPath, int level) {
this.sourceId = sourceId;
this.operatorContext = operatorContext;
this.partialPath = partialPath;
this.level = level;
+ this.outputDataTypes =
+ ColumnHeaderConstant.showChildPathsColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -62,8 +71,7 @@ public class NodePathsSchemaScanOperator implements SourceOperator {
@Override
public TsBlock next() {
isFinished = true;
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showChildPathsHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
try {
if (-1 == level) {
// show child paths and show child nodes
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/PathsUsingTemplateScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/PathsUsingTemplateScanOperator.java
index bb4c58b445..b65dade6de 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/PathsUsingTemplateScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/PathsUsingTemplateScanOperator.java
@@ -20,28 +20,38 @@
package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class PathsUsingTemplateScanOperator extends SchemaQueryScanOperator {
- private int templateId;
+ private final int templateId;
+
+ private final List<TSDataType> outputDataTypes;
public PathsUsingTemplateScanOperator(
PlanNodeId planNodeId, OperatorContext context, int templateId) {
super(planNodeId, context, 0, 0, null, false);
this.templateId = templateId;
+ this.outputDataTypes =
+ ColumnHeaderConstant.showPathsUsingTemplateHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
protected TsBlock createTsBlock() {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showPathsUsingTemplate.getRespDataTypes());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
try {
((SchemaDriverContext) operatorContext.getInstanceContext().getDriverContext())
.getSchemaRegion()
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryOrderByHeatOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryOrderByHeatOperator.java
index 5b65e10cc8..f52cbf62a4 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryOrderByHeatOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/SchemaQueryOrderByHeatOperator.java
@@ -19,10 +19,12 @@
package org.apache.iotdb.db.mpp.execution.operator.schema;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.operator.Operator;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.process.ProcessOperator;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
@@ -34,6 +36,7 @@ import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static java.util.Objects.requireNonNull;
@@ -45,6 +48,9 @@ public class SchemaQueryOrderByHeatOperator implements ProcessOperator {
private final List<TsBlock> showTimeSeriesResult;
private final List<TsBlock> lastQueryResult;
+ private final List<TSDataType> outputDataTypes;
+ private final int columnCount;
+
private int currentIndex;
public SchemaQueryOrderByHeatOperator(OperatorContext operatorContext, List<Operator> operators) {
@@ -52,6 +58,11 @@ public class SchemaQueryOrderByHeatOperator implements ProcessOperator {
this.operators = operators;
this.showTimeSeriesResult = new ArrayList<>();
this.lastQueryResult = new ArrayList<>();
+ this.outputDataTypes =
+ ColumnHeaderConstant.showTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ this.columnCount = outputDataTypes.size();
currentIndex = 0;
}
@@ -60,8 +71,7 @@ public class SchemaQueryOrderByHeatOperator implements ProcessOperator {
public TsBlock next() {
isFinished = true;
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showTimeSeriesHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
// Step 1: get last point result
Map<String, Long> timeseriesToLastTimestamp = new HashMap<>();
@@ -97,7 +107,7 @@ public class SchemaQueryOrderByHeatOperator implements ProcessOperator {
List<Object[]> rows = lastTimestampToTsSchema.get(time);
for (Object[] row : rows) {
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
- for (int i = 0; i < HeaderConstant.showTimeSeriesHeader.getRespDataTypes().size(); i++) {
+ for (int i = 0; i < columnCount; i++) {
Object value = row[i];
if (null == value) {
tsBlockBuilder.getColumnBuilder(i).appendNull();
@@ -157,8 +167,7 @@ public class SchemaQueryOrderByHeatOperator implements ProcessOperator {
}
private boolean isShowTimeSeriesBlock(TsBlock tsBlock) {
- return tsBlock.getValueColumnCount()
- == HeaderConstant.showTimeSeriesHeader.getOutputValueColumnCount();
+ return tsBlock.getValueColumnCount() == columnCount;
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesCountOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesCountOperator.java
index 0fac3e052a..c87f2ee765 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesCountOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesCountOperator.java
@@ -21,14 +21,19 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.execution.operator.source.SourceOperator;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class TimeSeriesCountOperator implements SourceOperator {
private final PlanNodeId sourceId;
private final OperatorContext operatorContext;
@@ -40,6 +45,8 @@ public class TimeSeriesCountOperator implements SourceOperator {
private boolean isFinished;
+ private final List<TSDataType> outputDataTypes;
+
@Override
public PlanNodeId getSourceId() {
return sourceId;
@@ -60,6 +67,10 @@ public class TimeSeriesCountOperator implements SourceOperator {
this.key = key;
this.value = value;
this.isContains = isContains;
+ this.outputDataTypes =
+ ColumnHeaderConstant.countTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
@Override
@@ -70,8 +81,7 @@ public class TimeSeriesCountOperator implements SourceOperator {
@Override
public TsBlock next() {
isFinished = true;
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countTimeSeriesHeader.getRespDataTypes());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
int count = 0;
try {
if (key != null && value != null) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java
index 0580200fe5..ab8a49e1b8 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java
@@ -21,27 +21,32 @@ package org.apache.iotdb.db.mpp.execution.operator.schema;
import org.apache.iotdb.commons.exception.MetadataException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.template.Template;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.execution.driver.SchemaDriverContext;
import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan;
import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TimeSeriesSchemaScanOperator extends SchemaQueryScanOperator {
- private String key;
- private String value;
- private boolean isContains;
+ private final String key;
+ private final String value;
+ private final boolean isContains;
// if is true, the result will be sorted according to the inserting frequency of the timeseries
- private boolean orderByHeat;
+ private final boolean orderByHeat;
- private Map<Integer, Template> templateMap;
+ private final Map<Integer, Template> templateMap;
+
+ private final List<TSDataType> outputDataTypes;
public TimeSeriesSchemaScanOperator(
PlanNodeId planNodeId,
@@ -61,6 +66,10 @@ public class TimeSeriesSchemaScanOperator extends SchemaQueryScanOperator {
this.value = value;
this.orderByHeat = orderByHeat;
this.templateMap = templateMap;
+ this.outputDataTypes =
+ ColumnHeaderConstant.showTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
}
public String getKey() {
@@ -81,8 +90,7 @@ public class TimeSeriesSchemaScanOperator extends SchemaQueryScanOperator {
@Override
protected TsBlock createTsBlock() {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showTimeSeriesHeader.getRespDataTypes());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
try {
((SchemaDriverContext) operatorContext.getInstanceContext().getDriverContext())
.getSchemaRegion()
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index 3145724708..284201d0db 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -33,8 +33,9 @@ import org.apache.iotdb.db.metadata.path.MeasurementPath;
import org.apache.iotdb.db.metadata.template.Template;
import org.apache.iotdb.db.mpp.common.MPPQueryContext;
import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.common.schematree.DeviceSchemaInfo;
import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
@@ -934,8 +935,9 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
queryStatement.isAggregationQuery() && !queryStatement.isGroupByTime();
List<ColumnHeader> columnHeaders = new ArrayList<>();
if (queryStatement.isAlignByDevice()) {
- columnHeaders.add(new ColumnHeader(HeaderConstant.COLUMN_DEVICE, TSDataType.TEXT, null));
- typeProvider.setType(HeaderConstant.COLUMN_DEVICE, TSDataType.TEXT);
+ columnHeaders.add(
+ new ColumnHeader(ColumnHeaderConstant.COLUMN_DEVICE, TSDataType.TEXT, null));
+ typeProvider.setType(ColumnHeaderConstant.COLUMN_DEVICE, TSDataType.TEXT);
}
columnHeaders.addAll(
outputExpressions.stream()
@@ -978,10 +980,10 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
expression -> ExpressionAnalyzer.updateTypeProvider(expression, typeProvider));
analysis.setSourceExpressions(sourceExpressions);
- analysis.setRespDatasetHeader(HeaderConstant.LAST_QUERY_HEADER);
- typeProvider.setType(HeaderConstant.COLUMN_TIMESERIES, TSDataType.TEXT);
- typeProvider.setType(HeaderConstant.COLUMN_VALUE, TSDataType.TEXT);
- typeProvider.setType(HeaderConstant.COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getLastQueryHeader());
+ typeProvider.setType(ColumnHeaderConstant.COLUMN_TIMESERIES, TSDataType.TEXT);
+ typeProvider.setType(ColumnHeaderConstant.COLUMN_VALUE, TSDataType.TEXT);
+ typeProvider.setType(ColumnHeaderConstant.COLUMN_TIMESERIES_DATATYPE, TSDataType.TEXT);
Set<String> deviceSet =
allSelectedPath.stream().map(MeasurementPath::getDevice).collect(Collectors.toSet());
@@ -1406,7 +1408,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
analysis.setDataPartitionInfo(dataPartition);
}
- analysis.setRespDatasetHeader(HeaderConstant.showTimeSeriesHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowTimeSeriesHeader());
return analysis;
}
@@ -1415,7 +1417,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowStorageGroupStatement showStorageGroupStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showStorageGroupStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showStorageGroupHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowStorageGroupHeader());
return analysis;
}
@@ -1423,7 +1425,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
public Analysis visitShowTTL(ShowTTLStatement showTTLStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showTTLStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showTTLHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowTTLHeader());
return analysis;
}
@@ -1441,8 +1443,8 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
analysis.setSchemaPartitionInfo(schemaPartitionInfo);
analysis.setRespDatasetHeader(
showDevicesStatement.hasSgCol()
- ? HeaderConstant.showDevicesWithSgHeader
- : HeaderConstant.showDevicesHeader);
+ ? DatasetHeaderFactory.getShowDevicesWithSgHeader()
+ : DatasetHeaderFactory.getShowDevicesHeader());
return analysis;
}
@@ -1451,7 +1453,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowClusterStatement showClusterStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showClusterStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showClusterHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowClusterHeader());
return analysis;
}
@@ -1460,7 +1462,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
CountStorageGroupStatement countStorageGroupStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(countStorageGroupStatement);
- analysis.setRespDatasetHeader(HeaderConstant.countStorageGroupHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getCountStorageGroupHeader());
return analysis;
}
@@ -1493,7 +1495,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
SchemaPartition schemaPartitionInfo = partitionFetcher.getSchemaPartition(patternTree);
analysis.setSchemaPartitionInfo(schemaPartitionInfo);
- analysis.setRespDatasetHeader(HeaderConstant.countDevicesHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getCountDevicesHeader());
return analysis;
}
@@ -1508,7 +1510,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
SchemaPartition schemaPartitionInfo = partitionFetcher.getSchemaPartition(patternTree);
analysis.setSchemaPartitionInfo(schemaPartitionInfo);
- analysis.setRespDatasetHeader(HeaderConstant.countTimeSeriesHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getCountTimeSeriesHeader());
return analysis;
}
@@ -1523,7 +1525,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
SchemaPartition schemaPartitionInfo = partitionFetcher.getSchemaPartition(patternTree);
analysis.setSchemaPartitionInfo(schemaPartitionInfo);
- analysis.setRespDatasetHeader(HeaderConstant.countLevelTimeSeriesHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getCountLevelTimeSeriesHeader());
return analysis;
}
@@ -1547,7 +1549,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
}
analysis.setMatchedNodes(schemaNodeManagementPartition.getMatchedNode());
analysis.setSchemaPartitionInfo(schemaNodeManagementPartition.getSchemaPartition());
- analysis.setRespDatasetHeader(HeaderConstant.countNodesHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getCountNodesHeader());
return analysis;
}
@@ -1557,7 +1559,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
return visitSchemaNodeManagementPartition(
showChildPathsStatement,
showChildPathsStatement.getPartialPath(),
- HeaderConstant.showChildPathsHeader);
+ DatasetHeaderFactory.getShowChildPathsHeader());
}
@Override
@@ -1566,7 +1568,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
return visitSchemaNodeManagementPartition(
showChildNodesStatement,
showChildNodesStatement.getPartialPath(),
- HeaderConstant.showChildNodesHeader);
+ DatasetHeaderFactory.getShowChildNodesHeader());
}
@Override
@@ -1574,7 +1576,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowVersionStatement showVersionStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showVersionStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showVersionHeader);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowVersionHeader());
analysis.setFinishQueryAfterAnalyze(true);
return analysis;
}
@@ -1666,7 +1668,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showNodesInSchemaTemplateStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showNodesInSchemaTemplate);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowNodesInSchemaTemplateHeader());
return analysis;
}
@@ -1675,7 +1677,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowSchemaTemplateStatement showSchemaTemplateStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showSchemaTemplateStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showSchemaTemplate);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowSchemaTemplateHeader());
return analysis;
}
@@ -1720,7 +1722,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowPathSetTemplateStatement showPathSetTemplateStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showPathSetTemplateStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showPathSetTemplate);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowPathSetTemplateHeader());
return analysis;
}
@@ -1757,7 +1759,7 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowPathsUsingTemplateStatement showPathsUsingTemplateStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showPathsUsingTemplateStatement);
- analysis.setRespDatasetHeader(HeaderConstant.showPathsUsingTemplate);
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowPathsUsingTemplateHeader());
Pair<Template, List<PartialPath>> templateSetInfo =
schemaFetcher.getAllPathsSetTemplate(showPathsUsingTemplateStatement.getTemplateName());
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
index 257e3d824b..50b6d3fa85 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
@@ -20,19 +20,25 @@
package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
import org.apache.iotdb.confignode.rpc.thrift.TShowClusterResp;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowClusterStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
+import java.util.stream.Collectors;
+
import static org.apache.iotdb.commons.conf.IoTDBConstant.NODE_TYPE_CONFIG_NODE;
import static org.apache.iotdb.commons.conf.IoTDBConstant.NODE_TYPE_DATA_NODE;
@@ -64,8 +70,11 @@ public class ShowClusterTask implements IConfigTask {
public static void buildTSBlock(
TShowClusterResp clusterNodeInfos, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showClusterHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showClusterColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
clusterNodeInfos
.getConfigNodeList()
@@ -91,7 +100,7 @@ public class ShowClusterTask implements IConfigTask {
e.getInternalEndPoint().getIp(),
e.getInternalEndPoint().getPort()));
- DatasetHeader datasetHeader = HeaderConstant.showClusterHeader;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowClusterHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java
index ad82988420..6d47e3a605 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowConfigNodesTask.java
@@ -21,19 +21,25 @@ package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
import org.apache.iotdb.confignode.rpc.thrift.TConfigNodeInfo;
import org.apache.iotdb.confignode.rpc.thrift.TShowConfigNodesResp;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowConfigNodesStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class ShowConfigNodesTask implements IConfigTask {
private ShowConfigNodesStatement showConfigNodesStatement;
@@ -52,8 +58,11 @@ public class ShowConfigNodesTask implements IConfigTask {
public static void buildTSBlock(
TShowConfigNodesResp showConfigNodesResp, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showConfigNodesHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showConfigNodesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
if (showConfigNodesResp.getConfigNodesInfoList() != null) {
for (TConfigNodeInfo configNodeInfo : showConfigNodesResp.getConfigNodesInfoList()) {
builder.getTimeColumnBuilder().writeLong(0L);
@@ -66,7 +75,7 @@ public class ShowConfigNodesTask implements IConfigTask {
builder.declarePosition();
}
}
- DatasetHeader datasetHeader = HeaderConstant.showConfigNodesHeader;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowConfigNodesHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowDataNodesTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowDataNodesTask.java
index 76fc64de91..b72a5eb312 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowDataNodesTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowDataNodesTask.java
@@ -21,19 +21,25 @@ package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
import org.apache.iotdb.confignode.rpc.thrift.TDataNodeInfo;
import org.apache.iotdb.confignode.rpc.thrift.TShowDataNodesResp;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDataNodesStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class ShowDataNodesTask implements IConfigTask {
private ShowDataNodesStatement showDataNodesStatement;
@@ -52,8 +58,11 @@ public class ShowDataNodesTask implements IConfigTask {
public static void buildTSBlock(
TShowDataNodesResp showDataNodesResp, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showDataNodesHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showDataNodesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
if (showDataNodesResp.getDataNodesInfoList() != null) {
for (TDataNodeInfo dataNodeInfo : showDataNodesResp.getDataNodesInfoList()) {
builder.getTimeColumnBuilder().writeLong(0L);
@@ -71,7 +80,7 @@ public class ShowDataNodesTask implements IConfigTask {
builder.declarePosition();
}
}
- DatasetHeader datasetHeader = HeaderConstant.showDataNodesHeader;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowDataNodesHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java
index 714739d010..5f41aabbbf 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowFunctionsTask.java
@@ -23,7 +23,9 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.udf.builtin.BuiltinAggregationFunction;
import org.apache.iotdb.commons.udf.service.UDFRegistrationInformation;
import org.apache.iotdb.commons.udf.service.UDFRegistrationService;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
@@ -42,6 +44,8 @@ import org.slf4j.LoggerFactory;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
import static org.apache.iotdb.commons.conf.IoTDBConstant.COLUMN_FUNCTION_CLASS;
import static org.apache.iotdb.commons.conf.IoTDBConstant.COLUMN_FUNCTION_NAME;
@@ -62,8 +66,11 @@ public class ShowFunctionsTask implements IConfigTask {
final SettableFuture<ConfigTaskResult> future = SettableFuture.create();
try {
- final TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.SHOW_FUNCTIONS_HEADER.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showFunctionsColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
final QueryDataSet showDataSet = generateShowFunctionsListDataSet();
while (showDataSet.hasNextWithoutConstraint()) {
@@ -78,7 +85,9 @@ public class ShowFunctionsTask implements IConfigTask {
future.set(
new ConfigTaskResult(
- TSStatusCode.SUCCESS_STATUS, builder.build(), HeaderConstant.SHOW_FUNCTIONS_HEADER));
+ TSStatusCode.SUCCESS_STATUS,
+ builder.build(),
+ DatasetHeaderFactory.getShowFunctionsHeader()));
} catch (Exception e) {
LOGGER.error("Failed to get functions.", e);
future.setException(e);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java
index 8b1c2459f6..0c16fcfcd1 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowRegionTask.java
@@ -22,19 +22,25 @@ package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
import org.apache.iotdb.confignode.rpc.thrift.TRegionInfo;
import org.apache.iotdb.confignode.rpc.thrift.TShowRegionResp;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class ShowRegionTask implements IConfigTask {
private ShowRegionStatement showRegionStatement;
@@ -53,7 +59,11 @@ public class ShowRegionTask implements IConfigTask {
public static void buildTSBlock(
TShowRegionResp showRegionResp, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder = new TsBlockBuilder(HeaderConstant.showRegionHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showRegionColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
if (showRegionResp.getRegionInfoList() != null) {
for (TRegionInfo regionInfo : showRegionResp.getRegionInfoList()) {
builder.getTimeColumnBuilder().writeLong(0L);
@@ -83,7 +93,7 @@ public class ShowRegionTask implements IConfigTask {
builder.declarePosition();
}
}
- DatasetHeader datasetHeader = HeaderConstant.showRegionHeader;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowRegionHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowStorageGroupTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowStorageGroupTask.java
index be486f3a9d..a0557c58bd 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowStorageGroupTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowStorageGroupTask.java
@@ -20,24 +20,29 @@
package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
import org.apache.iotdb.confignode.rpc.thrift.TStorageGroupSchema;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
public class ShowStorageGroupTask implements IConfigTask {
- private ShowStorageGroupStatement showStorageGroupStatement;
+ private final ShowStorageGroupStatement showStorageGroupStatement;
public ShowStorageGroupTask(ShowStorageGroupStatement showStorageGroupStatement) {
this.showStorageGroupStatement = showStorageGroupStatement;
@@ -52,8 +57,11 @@ public class ShowStorageGroupTask implements IConfigTask {
public static void buildTSBlock(
Map<String, TStorageGroupSchema> storageGroupSchemaMap,
SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showStorageGroupHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showStorageGroupColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
for (Map.Entry<String, TStorageGroupSchema> entry : storageGroupSchemaMap.entrySet()) {
String storageGroup = entry.getKey();
TStorageGroupSchema storageGroupSchema = entry.getValue();
@@ -69,7 +77,7 @@ public class ShowStorageGroupTask implements IConfigTask {
builder.getColumnBuilder(4).writeLong(storageGroupSchema.getTimePartitionInterval());
builder.declarePosition();
}
- DatasetHeader datasetHeader = HeaderConstant.showStorageGroupHeader;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowStorageGroupHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTTLTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTTLTask.java
index 3e83fb1e07..6d87d2c279 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTTLTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowTTLTask.java
@@ -19,24 +19,29 @@
package org.apache.iotdb.db.mpp.plan.execution.config.metadata;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
public class ShowTTLTask implements IConfigTask {
- private ShowTTLStatement showTTLStatement;
+ private final ShowTTLStatement showTTLStatement;
public ShowTTLTask(ShowTTLStatement showTTLStatement) {
this.showTTLStatement = showTTLStatement;
@@ -50,7 +55,11 @@ public class ShowTTLTask implements IConfigTask {
public static void buildTSBlock(
Map<String, Long> storageGroupToTTL, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder = new TsBlockBuilder(HeaderConstant.showTTLHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showTTLColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
for (Map.Entry<String, Long> entry : storageGroupToTTL.entrySet()) {
builder.getTimeColumnBuilder().writeLong(0);
builder.getColumnBuilder(0).writeBinary(new Binary(entry.getKey()));
@@ -61,7 +70,7 @@ public class ShowTTLTask implements IConfigTask {
}
builder.declarePosition();
}
- DatasetHeader datasetHeader = HeaderConstant.showTTLHeader;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowTTLHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java
index 348571163f..7a3e66a99b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowNodesInSchemaTemplateTask.java
@@ -20,13 +20,16 @@
package org.apache.iotdb.db.mpp.plan.execution.config.metadata.template;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.template.ShowNodesInSchemaTemplateStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
@@ -34,7 +37,9 @@ import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
public class ShowNodesInSchemaTemplateTask implements IConfigTask {
@@ -52,8 +57,11 @@ public class ShowNodesInSchemaTemplateTask implements IConfigTask {
}
public static void buildTSBlock(Template template, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showNodesInSchemaTemplate.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showNodesInSchemaTemplateHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
try {
if (template != null) {
// template.get
@@ -73,9 +81,9 @@ public class ShowNodesInSchemaTemplateTask implements IConfigTask {
}
}
} catch (Exception e) {
-
+ e.printStackTrace();
}
- DatasetHeader datasetHeader = HeaderConstant.showNodesInSchemaTemplate;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowNodesInSchemaTemplateHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java
index b21091b13f..c975b8c193 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowPathSetTemplateTask.java
@@ -20,13 +20,16 @@
package org.apache.iotdb.db.mpp.plan.execution.config.metadata.template;
import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.template.ShowPathSetTemplateStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
@@ -34,6 +37,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import java.util.List;
+import java.util.stream.Collectors;
public class ShowPathSetTemplateTask implements IConfigTask {
@@ -51,8 +55,11 @@ public class ShowPathSetTemplateTask implements IConfigTask {
public static void buildTSBlock(
List<PartialPath> listPath, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showPathSetTemplate.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showPathSetTemplateHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
try {
if (listPath != null) {
// template.get
@@ -65,7 +72,7 @@ public class ShowPathSetTemplateTask implements IConfigTask {
} catch (Exception e) {
e.printStackTrace();
}
- DatasetHeader datasetHeader = HeaderConstant.showPathSetTemplate;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowPathSetTemplateHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java
index 5d5d8e9c50..272142ca6d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/template/ShowSchemaTemplateTask.java
@@ -20,13 +20,16 @@
package org.apache.iotdb.db.mpp.plan.execution.config.metadata.template;
import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
import org.apache.iotdb.db.mpp.plan.statement.metadata.template.ShowSchemaTemplateStatement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
@@ -36,6 +39,7 @@ import com.google.common.util.concurrent.SettableFuture;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
+import java.util.stream.Collectors;
public class ShowSchemaTemplateTask implements IConfigTask {
@@ -53,17 +57,21 @@ public class ShowSchemaTemplateTask implements IConfigTask {
public static void buildTSBlock(
List<Template> templateList, SettableFuture<ConfigTaskResult> future) {
- TsBlockBuilder builder =
- new TsBlockBuilder(HeaderConstant.showSchemaTemplate.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showSchemaTemplateHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
Optional<List<Template>> optional = Optional.ofNullable(templateList);
- optional.orElse(new ArrayList<>()).stream()
+ optional
+ .orElse(new ArrayList<>())
.forEach(
template -> {
builder.getTimeColumnBuilder().writeLong(0L);
builder.getColumnBuilder(0).writeBinary(new Binary(template.getName()));
builder.declarePosition();
});
- DatasetHeader datasetHeader = HeaderConstant.showSchemaTemplate;
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowSchemaTemplateHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java
index ced65edd67..41d291533b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/memory/StatementMemorySourceVisitor.java
@@ -25,8 +25,8 @@ import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.mnode.MNodeType;
import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.LogicalPlanner;
import org.apache.iotdb.db.mpp.plan.planner.distribution.DistributionPlanner;
import org.apache.iotdb.db.mpp.plan.planner.plan.LogicalQueryPlan;
@@ -97,8 +97,11 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitShowChildPaths(
ShowChildPathsStatement showChildPathsStatement, StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showChildPathsHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showChildPathsColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
Set<TSchemaNode> matchedChildPaths = context.getAnalysis().getMatchedNodes();
// sort by node type
@@ -128,13 +131,15 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitShowChildNodes(
ShowChildNodesStatement showChildNodesStatement, StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showChildNodesHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showChildNodesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
Set<String> matchedChildNodes =
- new TreeSet<>(
- context.getAnalysis().getMatchedNodes().stream()
- .map(node -> node.getNodeName())
- .collect(Collectors.toSet()));
+ context.getAnalysis().getMatchedNodes().stream()
+ .map(TSchemaNode::getNodeName)
+ .collect(Collectors.toCollection(TreeSet::new));
matchedChildNodes.forEach(
node -> {
try {
@@ -154,8 +159,11 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitShowVersion(
ShowVersionStatement showVersionStatement, StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showVersionHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showVersionColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
tsBlockBuilder.getColumnBuilder(0).writeBinary(new Binary(IoTDBConstant.VERSION));
tsBlockBuilder.declarePosition();
@@ -166,11 +174,14 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitCountNodes(
CountNodesStatement countStatement, StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countNodesHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.countNodesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
Set<String> matchedChildNodes =
context.getAnalysis().getMatchedNodes().stream()
- .map(node -> node.getNodeName())
+ .map(TSchemaNode::getNodeName)
.collect(Collectors.toSet());
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
tsBlockBuilder.getColumnBuilder(0).writeInt(matchedChildNodes.size());
@@ -182,8 +193,11 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitCountDevices(
CountDevicesStatement countStatement, StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countDevicesHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.countDevicesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
tsBlockBuilder.getColumnBuilder(0).writeInt(0);
tsBlockBuilder.declarePosition();
@@ -194,8 +208,11 @@ public class StatementMemorySourceVisitor
@Override
public StatementMemorySource visitCountTimeSeries(
CountTimeSeriesStatement countStatement, StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.countTimeSeriesHeader.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.countTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
tsBlockBuilder.getTimeColumnBuilder().writeLong(0L);
tsBlockBuilder.getColumnBuilder(0).writeInt(0);
tsBlockBuilder.declarePosition();
@@ -207,8 +224,11 @@ public class StatementMemorySourceVisitor
public StatementMemorySource visitShowPathsUsingTemplate(
ShowPathsUsingTemplateStatement showPathsUsingTemplateStatement,
StatementMemorySourceContext context) {
- TsBlockBuilder tsBlockBuilder =
- new TsBlockBuilder(HeaderConstant.showPathsUsingTemplate.getRespDataTypes());
+ List<TSDataType> outputDataTypes =
+ ColumnHeaderConstant.showPathsUsingTemplateHeaders.stream()
+ .map(ColumnHeader::getColumnType)
+ .collect(Collectors.toList());
+ TsBlockBuilder tsBlockBuilder = new TsBlockBuilder(outputDataTypes);
return new StatementMemorySource(
tsBlockBuilder.build(), context.getAnalysis().getRespDatasetHeader());
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java
index 829873d941..59bb10c7b3 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java
@@ -71,19 +71,16 @@ import java.util.Set;
public abstract class Expression {
/////////////////////////////////////////////////////////////////////////////////////////////////
- // Operations that Class Expression is not responsible for should be done through a visitor ////
+ // Operations that Class Expression is not responsible for should be done through a visitor
/////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Accessible for {@link ExpressionVisitor}, use {@link ExpressionVisitor#process(Expression)}
- * instead.
- */
+ /** Accessible for {@link ExpressionVisitor}, use {@link ExpressionVisitor#process} instead. */
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
return visitor.visitExpression(this, context);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
- // Expression type inferring for execution plan generation //////////////////////////////////////
+ // Expression type inferring for execution plan generation
/////////////////////////////////////////////////////////////////////////////////////////////////
public abstract ExpressionType getExpressionType();
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesCountNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesCountNode.java
index f0161a28da..f0522fca65 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesCountNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesCountNode.java
@@ -21,7 +21,8 @@ package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -31,6 +32,7 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.stream.Collectors;
public class DevicesCountNode extends SchemaQueryScanNode {
@@ -45,7 +47,9 @@ public class DevicesCountNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
- return HeaderConstant.countDevicesHeader.getRespColumns();
+ return ColumnHeaderConstant.countDevicesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
index 7672e61296..2dae4bd591 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/DevicesSchemaScanNode.java
@@ -20,7 +20,8 @@ package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -31,6 +32,7 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
public class DevicesSchemaScanNode extends SchemaQueryScanNode {
@@ -59,9 +61,13 @@ public class DevicesSchemaScanNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
if (hasSgCol) {
- return HeaderConstant.showDevicesWithSgHeader.getRespColumns();
+ return ColumnHeaderConstant.showDevicesWithSgColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
- return HeaderConstant.showDevicesHeader.getRespColumns();
+ return ColumnHeaderConstant.showDevicesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
index d450d765b7..2c43b6626c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java
@@ -21,7 +21,8 @@ package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -32,6 +33,7 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
public class LevelTimeSeriesCountNode extends SchemaQueryScanNode {
private final int level;
@@ -78,7 +80,9 @@ public class LevelTimeSeriesCountNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
- return HeaderConstant.countLevelTimeSeriesHeader.getRespColumns();
+ return ColumnHeaderConstant.countLevelTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/NodePathsSchemaScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/NodePathsSchemaScanNode.java
index 51b22f296b..7faac2b387 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/NodePathsSchemaScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/NodePathsSchemaScanNode.java
@@ -21,7 +21,8 @@ package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.path.PathDeserializeUtil;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -31,6 +32,7 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
public class NodePathsSchemaScanNode extends SchemaQueryScanNode {
// the path could be a prefix path with wildcard
@@ -58,7 +60,9 @@ public class NodePathsSchemaScanNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
- return HeaderConstant.showChildPathsHeader.getRespColumns();
+ return ColumnHeaderConstant.showChildPathsColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java
index ee005728c1..235863687c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/PathsUsingTemplateScanNode.java
@@ -19,7 +19,8 @@
package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -29,6 +30,7 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.stream.Collectors;
public class PathsUsingTemplateScanNode extends SchemaQueryScanNode {
@@ -50,7 +52,9 @@ public class PathsUsingTemplateScanNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
- return HeaderConstant.showPathsUsingTemplate.getRespColumns();
+ return ColumnHeaderConstant.showPathsUsingTemplateHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/SchemaQueryOrderByHeatNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/SchemaQueryOrderByHeatNode.java
index e72a2e3dd7..68cdf909cd 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/SchemaQueryOrderByHeatNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/SchemaQueryOrderByHeatNode.java
@@ -18,7 +18,7 @@
*/
package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -60,7 +60,7 @@ public class SchemaQueryOrderByHeatNode extends MultiChildNode {
public List<String> getOutputColumnNames() {
for (PlanNode child : children) {
if (child.getOutputColumnNames().size()
- == HeaderConstant.showTimeSeriesHeader.getOutputValueColumnCount() + 1) {
+ == ColumnHeaderConstant.showTimeSeriesColumnHeaders.size() + 1) {
return child.getOutputColumnNames();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
index 34b5827412..429ff4beab 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesCountNode.java
@@ -21,7 +21,8 @@ package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -31,6 +32,7 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.stream.Collectors;
public class TimeSeriesCountNode extends SchemaQueryScanNode {
@@ -70,7 +72,9 @@ public class TimeSeriesCountNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
- return HeaderConstant.countTimeSeriesHeader.getRespColumns();
+ return ColumnHeaderConstant.countTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
index b6adb16773..683abeabb8 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java
@@ -21,7 +21,8 @@ package org.apache.iotdb.db.mpp.plan.planner.plan.node.metedata.read;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.template.Template;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
@@ -35,6 +36,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.stream.Collectors;
public class TimeSeriesSchemaScanNode extends SchemaQueryScanNode {
@@ -45,7 +47,7 @@ public class TimeSeriesSchemaScanNode extends SchemaQueryScanNode {
// if is true, the result will be sorted according to the inserting frequency of the timeseries
private final boolean orderByHeat;
- private Map<Integer, Template> templateMap;
+ private final Map<Integer, Template> templateMap;
public TimeSeriesSchemaScanNode(
PlanNodeId id,
@@ -197,7 +199,9 @@ public class TimeSeriesSchemaScanNode extends SchemaQueryScanNode {
@Override
public List<String> getOutputColumnNames() {
- return HeaderConstant.showTimeSeriesHeader.getRespColumns();
+ return ColumnHeaderConstant.showTimeSeriesColumnHeaders.stream()
+ .map(ColumnHeader::getColumnName)
+ .collect(Collectors.toList());
}
@Override
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
index a410aa33d6..7f9c71940b 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.metadata.path.AlignedPath;
import org.apache.iotdb.db.metadata.path.MeasurementPath;
import org.apache.iotdb.db.mpp.common.QueryId;
-import org.apache.iotdb.db.mpp.common.header.HeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
import org.apache.iotdb.db.mpp.plan.expression.Expression;
import org.apache.iotdb.db.mpp.plan.expression.binary.GreaterThanExpression;
import org.apache.iotdb.db.mpp.plan.expression.binary.LogicAndExpression;
@@ -341,7 +341,7 @@ public class QueryLogicalPlanUtil {
Arrays.asList(
new SortItem(SortKey.DEVICE, Ordering.ASC),
new SortItem(SortKey.TIME, Ordering.DESC))),
- Arrays.asList(HeaderConstant.COLUMN_DEVICE, "s3", "s1", "s2", "s4"),
+ Arrays.asList(ColumnHeaderConstant.COLUMN_DEVICE, "s3", "s1", "s2", "s4"),
deviceToMeasurementIndexesMap);
deviceViewNode.addChildDeviceNode("root.sg.d1", filterNode1);
deviceViewNode.addChildDeviceNode("root.sg.d2", filterNode2);
@@ -721,7 +721,7 @@ public class QueryLogicalPlanUtil {
new SortItem(SortKey.DEVICE, Ordering.ASC),
new SortItem(SortKey.TIME, Ordering.DESC))),
Arrays.asList(
- HeaderConstant.COLUMN_DEVICE, "count(s1)", "max_value(s2)", "last_value(s1)"),
+ ColumnHeaderConstant.COLUMN_DEVICE, "count(s1)", "max_value(s2)", "last_value(s1)"),
deviceToMeasurementIndexesMap);
deviceViewNode.addChildDeviceNode("root.sg.d1", timeJoinNode1);
deviceViewNode.addChildDeviceNode("root.sg.d2", timeJoinNode2);
@@ -1001,7 +1001,7 @@ public class QueryLogicalPlanUtil {
new SortItem(SortKey.DEVICE, Ordering.ASC),
new SortItem(SortKey.TIME, Ordering.DESC))),
Arrays.asList(
- HeaderConstant.COLUMN_DEVICE, "count(s1)", "max_value(s2)", "last_value(s1)"),
+ ColumnHeaderConstant.COLUMN_DEVICE, "count(s1)", "max_value(s2)", "last_value(s1)"),
deviceToMeasurementIndexesMap);
deviceViewNode.addChildDeviceNode("root.sg.d1", aggregationNode1);
deviceViewNode.addChildDeviceNode("root.sg.d2", aggregationNode2);