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/05/26 09:40:52 UTC

[iotdb] branch lmh/LastPointFetch created (now 38dea3256b)

This is an automated email from the ASF dual-hosted git repository.

hui pushed a change to branch lmh/LastPointFetch
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at 38dea3256b add LastPointFetchStatement

This branch includes the following new commits:

     new cb374a9229 add LastPointFetchStatement
     new 381b8f0768 analyze LastPointFetchStatement
     new 95bacef712 plan LastPointFetchStatement
     new 38dea3256b add LastPointFetchStatement

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 04/04: add LastPointFetchStatement

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/LastPointFetch
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 38dea3256bced94f16b38909fa137101c8635a09
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu May 26 17:39:18 2022 +0800

    add LastPointFetchStatement
---
 .../src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java  | 4 ++--
 .../org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java    | 2 +-
 .../java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java     | 4 ++--
 .../java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java | 4 ++--
 .../plan/statement/{crud => internal}/LastPointFetchStatement.java    | 2 +-
 .../plan/statement/{metadata => internal}/SchemaFetchStatement.java   | 2 +-
 6 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index 26d3bcd95c..2e2bca5fbf 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -55,8 +55,9 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatemen
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
-import org.apache.iotdb.db.mpp.plan.statement.crud.LastPointFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.LastPointFetchStatement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.literal.Literal;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
@@ -68,7 +69,6 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateMultiTimeSeriesStat
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesByDeviceStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteTimeSeriesStatement;
-import org.apache.iotdb.db.mpp.plan.statement.metadata.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildNodesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildPathsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDevicesStatement;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java
index 49b57c79b5..e92d9b0cbe 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ClusterSchemaFetcher.java
@@ -32,9 +32,9 @@ import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
 import org.apache.iotdb.db.mpp.plan.Coordinator;
 import org.apache.iotdb.db.mpp.plan.execution.ExecutionResult;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateAlignedTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesByDeviceStatement;
-import org.apache.iotdb.db.mpp.plan.statement.metadata.SchemaFetchStatement;
 import org.apache.iotdb.db.query.control.SessionManager;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
index 5423d543bf..20cbd19ae6 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
@@ -45,8 +45,9 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
-import org.apache.iotdb.db.mpp.plan.statement.crud.LastPointFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.LastPointFetchStatement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountLevelTimeSeriesStatement;
@@ -56,7 +57,6 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateMultiTimeSeriesStat
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesByDeviceStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteTimeSeriesStatement;
-import org.apache.iotdb.db.mpp.plan.statement.metadata.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildNodesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildPathsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDevicesStatement;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index daf1f44b3f..e279ba9cb5 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@ -25,8 +25,9 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatemen
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
-import org.apache.iotdb.db.mpp.plan.statement.crud.LastPointFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.LastPointFetchStatement;
+import org.apache.iotdb.db.mpp.plan.statement.internal.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountLevelTimeSeriesStatement;
@@ -39,7 +40,6 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesByDeviceS
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteTimeSeriesStatement;
-import org.apache.iotdb.db.mpp.plan.statement.metadata.SchemaFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.SetStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.SetTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowChildNodesStatement;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/LastPointFetchStatement.java
similarity index 96%
rename from server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
rename to server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/LastPointFetchStatement.java
index 7a26b042c5..58347a68e4 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/LastPointFetchStatement.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.mpp.plan.statement.crud;
+package org.apache.iotdb.db.mpp.plan.statement.internal;
 
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.metadata.path.MeasurementPath;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/SchemaFetchStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/SchemaFetchStatement.java
similarity index 97%
rename from server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/SchemaFetchStatement.java
rename to server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/SchemaFetchStatement.java
index f8c1bbbe70..9ab133be35 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/SchemaFetchStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/internal/SchemaFetchStatement.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.mpp.plan.statement.metadata;
+package org.apache.iotdb.db.mpp.plan.statement.internal;
 
 import org.apache.iotdb.commons.partition.SchemaPartition;
 import org.apache.iotdb.commons.path.PartialPath;


[iotdb] 01/04: add LastPointFetchStatement

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/LastPointFetch
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit cb374a922904e96d20f67d7774060e37c48ec301
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu May 26 17:18:26 2022 +0800

    add LastPointFetchStatement
---
 .../db/mpp/plan/statement/StatementVisitor.java    |  5 ++
 .../statement/crud/LastPointFetchStatement.java    | 63 ++++++++++++++++++++++
 2 files changed, 68 insertions(+)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index 650d15d160..daf1f44b3f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatemen
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
+import org.apache.iotdb.db.mpp.plan.statement.crud.LastPointFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
@@ -139,6 +140,10 @@ public abstract class StatementVisitor<R, C> {
     return visitStatement(queryStatement, context);
   }
 
+  public R visitLastPointFetch(LastPointFetchStatement lastPointFetchStatement, C context) {
+    return visitStatement(lastPointFetchStatement, context);
+  }
+
   // Insert Statement
   public R visitInsert(InsertStatement insertStatement, C context) {
     return visitStatement(insertStatement, context);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
new file mode 100644
index 0000000000..06265e5f8e
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
@@ -0,0 +1,63 @@
+/*
+ * 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.metadata.path.MeasurementPath;
+import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
+
+import java.util.List;
+
+public class LastPointFetchStatement extends Statement {
+
+  private final List<MeasurementPath> selectedPaths;
+
+  // used for fetch data partition
+  private final List<String> storageGroups;
+
+  public LastPointFetchStatement(List<MeasurementPath> selectedPaths, List<String> storageGroups) {
+    this.selectedPaths = selectedPaths;
+    this.storageGroups = storageGroups;
+  }
+
+  public List<MeasurementPath> getSelectedPaths() {
+    return selectedPaths;
+  }
+
+  public String getBelongedStorageGroup(String pathName) {
+    for (String storageGroup : storageGroups) {
+      if (pathName.startsWith(storageGroup + ".")) {
+        return storageGroup;
+      }
+    }
+    throw new RuntimeException("No matched storage group. Please check the path " + pathName);
+  }
+
+  @Override
+  public List<? extends PartialPath> getPaths() {
+    return selectedPaths;
+  }
+
+  @Override
+  public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+    return visitor.visitLastPointFetch(this, context);
+  }
+}


[iotdb] 02/04: analyze LastPointFetchStatement

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/LastPointFetch
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 381b8f0768bfc2cffe6fde2080c8b7a6955a79f0
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu May 26 17:32:45 2022 +0800

    analyze LastPointFetchStatement
---
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java | 71 +++++++++++++++-------
 .../statement/crud/LastPointFetchStatement.java    |  9 +--
 2 files changed, 51 insertions(+), 29 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index dc168a55a7..26d3bcd95c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -55,6 +55,7 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatemen
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
+import org.apache.iotdb.db.mpp.plan.statement.crud.LastPointFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.mpp.plan.statement.literal.Literal;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
@@ -167,27 +168,7 @@ public class Analyzer {
             throw new SemanticException("Only time filters are supported in LAST query");
           }
 
-          List<MeasurementPath> allSelectedPath = schemaTree.getAllMeasurement();
-          Set<Expression> sourceExpressions =
-              allSelectedPath.stream()
-                  .map(TimeSeriesOperand::new)
-                  .collect(Collectors.toCollection(LinkedHashSet::new));
-          sourceExpressions.forEach(
-              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);
-
-          Set<String> deviceSet =
-              sourceExpressions.stream()
-                  .map(ExpressionAnalyzer::getDeviceNameInSourceExpression)
-                  .collect(Collectors.toSet());
-          DataPartition dataPartition = fetchDataPartitionByDevices(deviceSet, schemaTree);
-          analysis.setDataPartitionInfo(dataPartition);
-          return analysis;
+          return analyzeLast(analysis, schemaTree.getAllMeasurement(), schemaTree);
         }
 
         // Example 1: select s1, s1 + s2 as t, udf(udf(s1)) from root.sg.d1
@@ -376,7 +357,7 @@ public class Analyzer {
           FilterNullParameter filterNullParameter = new FilterNullParameter();
           filterNullParameter.setFilterNullPolicy(
               queryStatement.getFilterNullComponent().getWithoutPolicyType());
-          List<Expression> resultFilterNullColumns = new ArrayList<>();
+          List<Expression> resultFilterNullColumns;
           if (queryStatement.isAlignByDevice()) {
             resultFilterNullColumns =
                 analyzeWithoutNullAlignByDevice(
@@ -793,6 +774,38 @@ public class Analyzer {
       return new DatasetHeader(columnHeaders, isIgnoreTimestamp);
     }
 
+    private Analysis analyzeLast(
+        Analysis analysis, List<MeasurementPath> allSelectedPath, SchemaTree schemaTree) {
+      Set<Expression> sourceExpressions =
+          allSelectedPath.stream()
+              .map(TimeSeriesOperand::new)
+              .collect(Collectors.toCollection(LinkedHashSet::new));
+      sourceExpressions.forEach(
+          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);
+
+      Set<String> deviceSet =
+          allSelectedPath.stream().map(MeasurementPath::getDevice).collect(Collectors.toSet());
+      Map<String, List<DataPartitionQueryParam>> sgNameToQueryParamsMap = new HashMap<>();
+      for (String devicePath : deviceSet) {
+        DataPartitionQueryParam queryParam = new DataPartitionQueryParam();
+        queryParam.setDevicePath(devicePath);
+        sgNameToQueryParamsMap
+            .computeIfAbsent(
+                schemaTree.getBelongedStorageGroup(devicePath), key -> new ArrayList<>())
+            .add(queryParam);
+      }
+      DataPartition dataPartition = partitionFetcher.getDataPartition(sgNameToQueryParamsMap);
+      analysis.setDataPartitionInfo(dataPartition);
+
+      return analysis;
+    }
+
     private DataPartition fetchDataPartitionByDevices(
         Set<String> deviceSet, SchemaTree schemaTree) {
       Map<String, List<DataPartitionQueryParam>> sgNameToQueryParamsMap = new HashMap<>();
@@ -845,6 +858,20 @@ public class Analyzer {
       }
     }
 
+    @Override
+    public Analysis visitLastPointFetch(
+        LastPointFetchStatement statement, MPPQueryContext context) {
+      context.setQueryType(QueryType.READ);
+
+      Analysis analysis = new Analysis();
+      analysis.setStatement(statement);
+
+      SchemaTree schemaTree = new SchemaTree();
+      schemaTree.setStorageGroups(schemaTree.getStorageGroups());
+
+      return analyzeLast(analysis, statement.getSelectedPaths(), schemaTree);
+    }
+
     @Override
     public Analysis visitInsert(InsertStatement insertStatement, MPPQueryContext context) {
       context.setQueryType(QueryType.WRITE);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
index 06265e5f8e..7a26b042c5 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/LastPointFetchStatement.java
@@ -42,13 +42,8 @@ public class LastPointFetchStatement extends Statement {
     return selectedPaths;
   }
 
-  public String getBelongedStorageGroup(String pathName) {
-    for (String storageGroup : storageGroups) {
-      if (pathName.startsWith(storageGroup + ".")) {
-        return storageGroup;
-      }
-    }
-    throw new RuntimeException("No matched storage group. Please check the path " + pathName);
+  public List<String> getStorageGroups() {
+    return storageGroups;
   }
 
   @Override


[iotdb] 03/04: plan LastPointFetchStatement

Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/LastPointFetch
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 95bacef712e70f45e7935d25eb8c33bed11ef161
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu May 26 17:34:45 2022 +0800

    plan LastPointFetchStatement
---
 .../org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java     | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
index 0e6da8c705..5423d543bf 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanner.java
@@ -45,6 +45,7 @@ import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsOfOneDeviceStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertRowsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.InsertTabletStatement;
+import org.apache.iotdb.db.mpp.plan.statement.crud.LastPointFetchStatement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.AlterTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountDevicesStatement;
@@ -277,6 +278,14 @@ public class LogicalPlanner {
       return planBuilder.getRoot();
     }
 
+    public PlanNode visitLastPointFetch(
+        LastPointFetchStatement lastPointFetchStatement, MPPQueryContext context) {
+      LogicalPlanBuilder planBuilder = new LogicalPlanBuilder(context);
+      return planBuilder
+          .planLast(analysis.getSourceExpressions(), analysis.getGlobalTimeFilter())
+          .getRoot();
+    }
+
     @Override
     public PlanNode visitCreateTimeseries(
         CreateTimeSeriesStatement createTimeSeriesStatement, MPPQueryContext context) {