You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2022/10/13 10:57:35 UTC
[iotdb] 03/04: add header
This is an automated email from the ASF dual-hosted git repository.
hui pushed a commit to branch lmh/mppSelectInto
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 9113b516a6d306049e98c6d5bafb5028901ee111
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu Oct 13 16:39:37 2022 +0800
add header
---
.../db/mpp/common/header/ColumnHeaderConstant.java | 19 +++++++++++++++++++
.../db/mpp/common/header/DatasetHeaderFactory.java | 6 ++++++
.../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 6 ++++++
3 files changed, 31 insertions(+)
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
index d91eb57ca7..4b2738b8ad 100644
--- 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
@@ -115,6 +115,12 @@ public class ColumnHeaderConstant {
public static final String COLUMN_PIPE_STATUS = "status";
public static final String COLUMN_PIPE_MESSAGE = "message";
+ // column names for select into
+ public static final String COLUMN_SOURCE_DEVICE = "source device";
+ public static final String COLUMN_SOURCE_COLUMN = "source column";
+ public static final String COLUMN_TARGET_TIMESERIES = "target timeseries";
+ public static final String COLUMN_WRITTEN = "written";
+
public static final List<ColumnHeader> lastQueryColumnHeaders =
ImmutableList.of(
new ColumnHeader(COLUMN_TIMESERIES, TSDataType.TEXT),
@@ -275,4 +281,17 @@ public class ColumnHeaderConstant {
new ColumnHeader(COLUMN_PIPE_REMOTE, TSDataType.TEXT),
new ColumnHeader(COLUMN_PIPE_STATUS, TSDataType.TEXT),
new ColumnHeader(COLUMN_PIPE_MESSAGE, TSDataType.TEXT));
+
+ public static final List<ColumnHeader> selectIntoColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_SOURCE_COLUMN, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TARGET_TIMESERIES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_WRITTEN, TSDataType.INT32));
+
+ public static final List<ColumnHeader> selectIntoAlignByDeviceColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_SOURCE_DEVICE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_SOURCE_COLUMN, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_TARGET_TIMESERIES, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_WRITTEN, TSDataType.INT32));
}
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
index c8ccb8a1e8..9698d4370a 100644
--- 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
@@ -128,4 +128,10 @@ public class DatasetHeaderFactory {
public static DatasetHeader getShowPipeHeader() {
return new DatasetHeader(ColumnHeaderConstant.showPipeColumnHeaders, true);
}
+
+ public static DatasetHeader getSelectIntoHeader(boolean isAlignByDevice) {
+ return isAlignByDevice
+ ? new DatasetHeader(ColumnHeaderConstant.selectIntoAlignByDeviceColumnHeaders, true)
+ : new DatasetHeader(ColumnHeaderConstant.selectIntoColumnHeaders, true);
+ }
}
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 dcd90bf3fe..8837208abc 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
@@ -918,6 +918,12 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
Analysis analysis,
QueryStatement queryStatement,
List<Pair<Expression, String>> outputExpressions) {
+ if (queryStatement.isSelectInto()) {
+ analysis.setRespDatasetHeader(
+ DatasetHeaderFactory.getSelectIntoHeader(queryStatement.isAlignByDevice()));
+ return;
+ }
+
boolean isIgnoreTimestamp =
queryStatement.isAggregationQuery() && !queryStatement.isGroupByTime();
List<ColumnHeader> columnHeaders = new ArrayList<>();