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/11/01 12:31:30 UTC
[iotdb] 01/07: add FetchWindowSetStatement
This is an automated email from the ASF dual-hosted git repository.
hui pushed a commit to branch ml/windowSet
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 62c0983673878e42914ce181f601aeffa9881910
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Nov 1 10:12:14 2022 +0800
add FetchWindowSetStatement
---
.../iotdb/db/mpp/plan/constant/StatementType.java | 2 +
.../db/mpp/plan/parser/StatementGenerator.java | 35 ++++++++++
.../statement/crud/FetchWindowSetStatement.java | 77 ++++++++++++++++++++++
3 files changed, 114 insertions(+)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/constant/StatementType.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/constant/StatementType.java
index 411fbc5bbd..bb6f9d9d64 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/constant/StatementType.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/constant/StatementType.java
@@ -152,4 +152,6 @@ public enum StatementType {
SHOW_TRIGGERS,
DEACTIVATE_TEMPLATE,
+
+ FETCH_WINDOW_SET
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
index 1ee50674ec..dadd1b3466 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
@@ -30,12 +30,14 @@ import org.apache.iotdb.db.mpp.plan.expression.binary.LogicAndExpression;
import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand;
import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
import org.apache.iotdb.db.mpp.plan.expression.leaf.TimestampOperand;
+import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
import org.apache.iotdb.db.mpp.plan.statement.Statement;
import org.apache.iotdb.db.mpp.plan.statement.component.FromComponent;
import org.apache.iotdb.db.mpp.plan.statement.component.ResultColumn;
import org.apache.iotdb.db.mpp.plan.statement.component.SelectComponent;
import org.apache.iotdb.db.mpp.plan.statement.component.WhereCondition;
import org.apache.iotdb.db.mpp.plan.statement.crud.DeleteDataStatement;
+import org.apache.iotdb.db.mpp.plan.statement.crud.FetchWindowSetStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.InsertMultiTabletsStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowStatement;
import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatement;
@@ -61,12 +63,14 @@ import org.apache.iotdb.db.qp.sql.IoTDBSqlParser;
import org.apache.iotdb.db.qp.sql.SqlLexer;
import org.apache.iotdb.db.qp.strategy.SQLParseError;
import org.apache.iotdb.db.utils.QueryDataSetUtils;
+import org.apache.iotdb.service.rpc.thrift.TGroupByTimeParameter;
import org.apache.iotdb.service.rpc.thrift.TSCreateAlignedTimeseriesReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateMultiTimeseriesReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateSchemaTemplateReq;
import org.apache.iotdb.service.rpc.thrift.TSCreateTimeseriesReq;
import org.apache.iotdb.service.rpc.thrift.TSDeleteDataReq;
import org.apache.iotdb.service.rpc.thrift.TSDropSchemaTemplateReq;
+import org.apache.iotdb.service.rpc.thrift.TSFetchWindowSetReq;
import org.apache.iotdb.service.rpc.thrift.TSInsertRecordReq;
import org.apache.iotdb.service.rpc.thrift.TSInsertRecordsOfOneDeviceReq;
import org.apache.iotdb.service.rpc.thrift.TSInsertRecordsReq;
@@ -175,6 +179,37 @@ public class StatementGenerator {
return lastQueryStatement;
}
+ public static Statement createStatement(TSFetchWindowSetReq fetchWindowSetReq, ZoneId zoneId)
+ throws IllegalPathException {
+ FetchWindowSetStatement statement = new FetchWindowSetStatement();
+
+ // set queryPaths
+ List<PartialPath> queryPaths = new ArrayList<>();
+ for (String pathStr : fetchWindowSetReq.getQueryPaths()) {
+ queryPaths.add(new PartialPath(pathStr));
+ }
+ statement.setQueryPaths(queryPaths);
+
+ // set functionName
+ statement.setFunctionName(fetchWindowSetReq.getFunctionName());
+
+ // set groupByTimeParameter
+ TGroupByTimeParameter tGroupByTimeParameter = fetchWindowSetReq.getGroupByTimeParameter();
+ GroupByTimeParameter groupByTimeParameter =
+ new GroupByTimeParameter(
+ tGroupByTimeParameter.getStartTime(),
+ tGroupByTimeParameter.getEndTime(),
+ tGroupByTimeParameter.getInterval(),
+ tGroupByTimeParameter.getSlidingStep(),
+ true);
+ statement.setGroupByTimeParameter(groupByTimeParameter);
+
+ // set samplingIndexes
+ statement.setSamplingIndexes(tGroupByTimeParameter.getIndexes());
+
+ return statement;
+ }
+
public static Statement createStatement(TSInsertRecordReq insertRecordReq)
throws IllegalPathException, QueryProcessException {
// construct insert statement
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/FetchWindowSetStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/FetchWindowSetStatement.java
new file mode 100644
index 0000000000..f7cb723474
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/FetchWindowSetStatement.java
@@ -0,0 +1,77 @@
+/*
+ * 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.plan.statement.crud;
+
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.mpp.plan.constant.StatementType;
+import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
+import org.apache.iotdb.db.mpp.plan.statement.Statement;
+
+import java.util.List;
+
+public class FetchWindowSetStatement extends Statement {
+
+ private List<PartialPath> queryPaths;
+ private String functionName;
+ private GroupByTimeParameter groupByTimeParameter;
+ private List<Integer> samplingIndexes;
+
+ public FetchWindowSetStatement() {
+ super();
+ statementType = StatementType.FETCH_WINDOW_SET;
+ }
+
+ public List<PartialPath> getQueryPaths() {
+ return queryPaths;
+ }
+
+ public void setQueryPaths(List<PartialPath> queryPaths) {
+ this.queryPaths = queryPaths;
+ }
+
+ public String getFunctionName() {
+ return functionName;
+ }
+
+ public void setFunctionName(String functionName) {
+ this.functionName = functionName;
+ }
+
+ public GroupByTimeParameter getGroupByTimeParameter() {
+ return groupByTimeParameter;
+ }
+
+ public void setGroupByTimeParameter(GroupByTimeParameter groupByTimeParameter) {
+ this.groupByTimeParameter = groupByTimeParameter;
+ }
+
+ public List<Integer> getSamplingIndexes() {
+ return samplingIndexes;
+ }
+
+ public void setSamplingIndexes(List<Integer> samplingIndexes) {
+ this.samplingIndexes = samplingIndexes;
+ }
+
+ @Override
+ public List<? extends PartialPath> getPaths() {
+ return queryPaths;
+ }
+}