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 <[email protected]> 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; + } +}
