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 2023/03/23 14:15:49 UTC

[iotdb] branch lmh/fixPlanVisitor created (now 077be482ff)

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

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


      at 077be482ff add test

This branch includes the following new commits:

     new 5d00d9fac4 fix plan visitor
     new 077be482ff add test

The 2 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] 02/02: add test

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

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

commit 077be482ff0d534b296d6242ae0a54a562682436
Author: liuminghui233 <54...@qq.com>
AuthorDate: Thu Mar 23 22:15:09 2023 +0800

    add test
---
 .../db/it/alignbydevice/IoTDBAlignByDeviceIT.java  | 108 +++++++++++++++++++++
 1 file changed, 108 insertions(+)

diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java
index e9fa955cf9..90ad82e5a2 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/alignbydevice/IoTDBAlignByDeviceIT.java
@@ -192,6 +192,114 @@ public class IoTDBAlignByDeviceIT {
     }
   }
 
+  @Test
+  public void selectTestWithLimitOffset1() {
+    String[] retArray =
+        new String[] {
+          "1,root.vehicle.d1,999,null,null,null,null,",
+          "2,root.vehicle.d0,10000,40000,2.22,null,null,",
+          "3,root.vehicle.d0,null,null,3.33,null,null,",
+          "4,root.vehicle.d0,null,null,4.44,null,null,",
+          "50,root.vehicle.d0,10000,50000,null,null,null,"
+        };
+
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select * from root.vehicle.** order by time asc limit 5 offset 1 align by device")) {
+        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+        List<Integer> actualIndexToExpectedIndexList =
+            checkHeader(
+                resultSetMetaData,
+                "Time,Device,s0,s1,s2,s3,s4",
+                new int[] {
+                  Types.TIMESTAMP,
+                  Types.VARCHAR,
+                  Types.INTEGER,
+                  Types.BIGINT,
+                  Types.FLOAT,
+                  Types.VARCHAR,
+                  Types.BOOLEAN
+                });
+
+        int cnt = 0;
+        while (resultSet.next()) {
+          String[] expectedStrings = retArray[cnt].split(",");
+          StringBuilder expectedBuilder = new StringBuilder();
+          StringBuilder actualBuilder = new StringBuilder();
+          for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+            actualBuilder.append(resultSet.getString(i)).append(",");
+            expectedBuilder
+                .append(expectedStrings[actualIndexToExpectedIndexList.get(i - 1)])
+                .append(",");
+          }
+          Assert.assertEquals(expectedBuilder.toString(), actualBuilder.toString());
+          cnt++;
+        }
+        Assert.assertEquals(retArray.length, cnt);
+      }
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+  }
+
+  @Test
+  public void selectTestWithLimitOffset2() {
+    String[] retArray =
+        new String[] {
+          "1,root.vehicle.d1,999,null,null,null,null,",
+          "946684800000,root.vehicle.d0,null,100,null,good,null,",
+          "1000,root.vehicle.d0,22222,55555,1000.11,null,null,",
+          "106,root.vehicle.d0,99,null,null,null,null,",
+          "105,root.vehicle.d0,99,199,11.11,null,null,",
+        };
+
+    try (Connection connection = EnvFactory.getEnv().getConnection();
+        Statement statement = connection.createStatement()) {
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select * from root.vehicle.** order by device desc, time desc limit 5 offset 1 align by device")) {
+        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+        List<Integer> actualIndexToExpectedIndexList =
+            checkHeader(
+                resultSetMetaData,
+                "Time,Device,s0,s1,s2,s3,s4",
+                new int[] {
+                  Types.TIMESTAMP,
+                  Types.VARCHAR,
+                  Types.INTEGER,
+                  Types.BIGINT,
+                  Types.FLOAT,
+                  Types.VARCHAR,
+                  Types.BOOLEAN
+                });
+
+        int cnt = 0;
+        while (resultSet.next()) {
+          String[] expectedStrings = retArray[cnt].split(",");
+          StringBuilder expectedBuilder = new StringBuilder();
+          StringBuilder actualBuilder = new StringBuilder();
+          for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+            actualBuilder.append(resultSet.getString(i)).append(",");
+            expectedBuilder
+                .append(expectedStrings[actualIndexToExpectedIndexList.get(i - 1)])
+                .append(",");
+          }
+          Assert.assertEquals(expectedBuilder.toString(), actualBuilder.toString());
+          cnt++;
+        }
+        Assert.assertEquals(retArray.length, cnt);
+      }
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
+  }
+
   @Test
   public void selectWithDuplicatedPathsTest() {
     String[] retArray =


[iotdb] 01/02: fix plan visitor

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

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

commit 5d00d9fac418278d2796c29ca174a87dfcfcaa98
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu Mar 23 16:04:18 2023 +0800

    fix plan visitor
---
 .../db/mpp/plan/planner/plan/node/PlanVisitor.java | 188 ++++++++++++---------
 1 file changed, 104 insertions(+), 84 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
index cf3fbe02af..d9430963ff 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
@@ -97,15 +97,13 @@ public abstract class PlanVisitor<R, C> {
 
   public abstract R visitPlan(PlanNode node, C context);
 
-  public R visitSourceNode(SourceNode node, C context) {
-    return visitPlan(node, context);
-  }
+  /////////////////////////////////////////////////////////////////////////////////////////////////
+  // Data Query Node
+  /////////////////////////////////////////////////////////////////////////////////////////////////
 
-  public R visitSingleChildProcess(SingleChildProcessNode node, C context) {
-    return visitPlan(node, context);
-  }
+  // source --------------------------------------------------------------------------------------
 
-  public R visitMultiChildProcess(MultiChildProcessNode node, C context) {
+  public R visitSourceNode(SourceNode node, C context) {
     return visitPlan(node, context);
   }
 
@@ -125,12 +123,18 @@ public abstract class PlanVisitor<R, C> {
     return visitSourceNode(node, context);
   }
 
-  public R visitDeviceView(DeviceViewNode node, C context) {
-    return visitMultiChildProcess(node, context);
+  public R visitLastQueryScan(LastQueryScanNode node, C context) {
+    return visitSourceNode(node, context);
   }
 
-  public R visitDeviceMerge(DeviceMergeNode node, C context) {
-    return visitMultiChildProcess(node, context);
+  public R visitAlignedLastQueryScan(AlignedLastQueryScanNode node, C context) {
+    return visitSourceNode(node, context);
+  }
+
+  // single child --------------------------------------------------------------------------------
+
+  public R visitSingleChildProcess(SingleChildProcessNode node, C context) {
+    return visitPlan(node, context);
   }
 
   public R visitFill(FillNode node, C context) {
@@ -141,239 +145,255 @@ public abstract class PlanVisitor<R, C> {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitGroupByLevel(GroupByLevelNode node, C context) {
-    return visitMultiChildProcess(node, context);
+  public R visitSlidingWindowAggregation(SlidingWindowAggregationNode node, C context) {
+    return visitSingleChildProcess(node, context);
   }
 
-  public R visitGroupByTag(GroupByTagNode node, C context) {
-    return visitMultiChildProcess(node, context);
+  public R visitLimit(LimitNode node, C context) {
+    return visitSingleChildProcess(node, context);
   }
 
-  public R visitSlidingWindowAggregation(SlidingWindowAggregationNode node, C context) {
+  public R visitOffset(OffsetNode node, C context) {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitLimit(LimitNode node, C context) {
+  public R visitSort(SortNode node, C context) {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitOffset(OffsetNode node, C context) {
+  public R visitProject(ProjectNode node, C context) {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitAggregation(AggregationNode node, C context) {
-    return visitMultiChildProcess(node, context);
+  public R visitExchange(ExchangeNode node, C context) {
+    return visitSingleChildProcess(node, context);
   }
 
-  public R visitSort(SortNode node, C context) {
+  public R visitTransform(TransformNode node, C context) {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitProject(ProjectNode node, C context) {
+  public R visitInto(IntoNode node, C context) {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitTimeJoin(TimeJoinNode node, C context) {
-    return visitMultiChildProcess(node, context);
+  public R visitDeviceViewInto(DeviceViewIntoNode node, C context) {
+    return visitSingleChildProcess(node, context);
   }
 
-  public R visitExchange(ExchangeNode node, C context) {
+  public R visitSingleDeviceView(SingleDeviceViewNode node, C context) {
     return visitSingleChildProcess(node, context);
   }
 
-  public R visitSchemaQueryMerge(SchemaQueryMergeNode node, C context) {
+  // multi child --------------------------------------------------------------------------------
+
+  public R visitMultiChildProcess(MultiChildProcessNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitSchemaQueryScan(SchemaQueryScanNode node, C context) {
-    return visitPlan(node, context);
+  public R visitDeviceView(DeviceViewNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitSchemaQueryOrderByHeat(SchemaQueryOrderByHeatNode node, C context) {
-    return visitPlan(node, context);
+  public R visitDeviceMerge(DeviceMergeNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitTimeSeriesSchemaScan(TimeSeriesSchemaScanNode node, C context) {
-    return visitPlan(node, context);
+  public R visitGroupByLevel(GroupByLevelNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitDevicesSchemaScan(DevicesSchemaScanNode node, C context) {
-    return visitPlan(node, context);
+  public R visitGroupByTag(GroupByTagNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitDevicesCount(DevicesCountNode node, C context) {
-    return visitPlan(node, context);
+  public R visitAggregation(AggregationNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitTimeSeriesCount(TimeSeriesCountNode node, C context) {
-    return visitPlan(node, context);
+  public R visitTimeJoin(TimeJoinNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitLevelTimeSeriesCount(LevelTimeSeriesCountNode node, C context) {
-    return visitPlan(node, context);
+  public R visitLastQuery(LastQueryNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitCountMerge(CountSchemaMergeNode node, C context) {
-    return visitPlan(node, context);
+  public R visitLastQueryMerge(LastQueryMergeNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitCreateTimeSeries(CreateTimeSeriesNode node, C context) {
-    return visitPlan(node, context);
+  public R visitLastQueryCollect(LastQueryCollectNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitSchemaFetchMerge(SchemaFetchMergeNode node, C context) {
-    return visitPlan(node, context);
+  public R visitMergeSort(MergeSortNode node, C context) {
+    return visitMultiChildProcess(node, context);
   }
 
-  public R visitSchemaFetchScan(SchemaFetchScanNode node, C context) {
+  public R visitHorizontallyConcat(HorizontallyConcatNode node, C context) {
+    return visitMultiChildProcess(node, context);
+  }
+
+  // others -----------------------------------------------------------------------------------
+
+  public R visitShowQueries(ShowQueriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitCreateAlignedTimeSeries(CreateAlignedTimeSeriesNode node, C context) {
+  public R visitIdentitySink(IdentitySinkNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitCreateMultiTimeSeries(CreateMultiTimeSeriesNode node, C context) {
+  public R visitShuffleSink(ShuffleSinkNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitAlterTimeSeries(AlterTimeSeriesNode node, C context) {
+  /////////////////////////////////////////////////////////////////////////////////////////////////
+  // Schema Write & Query Node
+  /////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public R visitSchemaQueryMerge(SchemaQueryMergeNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitTransform(TransformNode node, C context) {
+  public R visitSchemaQueryScan(SchemaQueryScanNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInsertRow(InsertRowNode node, C context) {
+  public R visitSchemaQueryOrderByHeat(SchemaQueryOrderByHeatNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInsertTablet(InsertTabletNode node, C context) {
+  public R visitTimeSeriesSchemaScan(TimeSeriesSchemaScanNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInsertRows(InsertRowsNode node, C context) {
+  public R visitDevicesSchemaScan(DevicesSchemaScanNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInsertMultiTablets(InsertMultiTabletsNode node, C context) {
+  public R visitDevicesCount(DevicesCountNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInsertRowsOfOneDevice(InsertRowsOfOneDeviceNode node, C context) {
+  public R visitTimeSeriesCount(TimeSeriesCountNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitNodePathsSchemaScan(NodePathsSchemaScanNode node, C context) {
+  public R visitLevelTimeSeriesCount(LevelTimeSeriesCountNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitNodeManagementMemoryMerge(NodeManagementMemoryMergeNode node, C context) {
+  public R visitCountMerge(CountSchemaMergeNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitNodePathConvert(NodePathsConvertNode node, C context) {
+  public R visitCreateTimeSeries(CreateTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitNodePathsCount(NodePathsCountNode node, C context) {
+  public R visitSchemaFetchMerge(SchemaFetchMergeNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitLastQueryScan(LastQueryScanNode node, C context) {
+  public R visitSchemaFetchScan(SchemaFetchScanNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitAlignedLastQueryScan(AlignedLastQueryScanNode node, C context) {
+  public R visitCreateAlignedTimeSeries(CreateAlignedTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitLastQuery(LastQueryNode node, C context) {
+  public R visitCreateMultiTimeSeries(CreateMultiTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitLastQueryMerge(LastQueryMergeNode node, C context) {
+  public R visitAlterTimeSeries(AlterTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitLastQueryCollect(LastQueryCollectNode node, C context) {
+  public R visitInternalCreateTimeSeries(InternalCreateTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitDeleteTimeseries(DeleteTimeSeriesNode node, C context) {
+  public R visitActivateTemplate(ActivateTemplateNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitConstructSchemaBlackList(ConstructSchemaBlackListNode node, C context) {
+  public R visitPreDeactivateTemplate(PreDeactivateTemplateNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitRollbackSchemaBlackList(RollbackSchemaBlackListNode node, C context) {
+  public R visitRollbackPreDeactivateTemplate(RollbackPreDeactivateTemplateNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitDeleteData(DeleteDataNode node, C context) {
+  public R visitDeactivateTemplate(DeactivateTemplateNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInternalCreateTimeSeries(InternalCreateTimeSeriesNode node, C context) {
+  public R visitInternalBatchActivateTemplate(InternalBatchActivateTemplateNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitActivateTemplate(ActivateTemplateNode node, C context) {
+  public R visitInternalCreateMultiTimeSeries(InternalCreateMultiTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitPreDeactivateTemplate(PreDeactivateTemplateNode node, C context) {
+  public R visitNodePathsSchemaScan(NodePathsSchemaScanNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitRollbackPreDeactivateTemplate(RollbackPreDeactivateTemplateNode node, C context) {
+  public R visitNodeManagementMemoryMerge(NodeManagementMemoryMergeNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitDeactivateTemplate(DeactivateTemplateNode node, C context) {
+  public R visitNodePathConvert(NodePathsConvertNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInto(IntoNode node, C context) {
+  public R visitNodePathsCount(NodePathsCountNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitDeviceViewInto(DeviceViewIntoNode node, C context) {
+  public R visitDeleteTimeseries(DeleteTimeSeriesNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitSingleDeviceView(SingleDeviceViewNode node, C context) {
+  public R visitConstructSchemaBlackList(ConstructSchemaBlackListNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitMergeSort(MergeSortNode node, C context) {
+  public R visitRollbackSchemaBlackList(RollbackSchemaBlackListNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitHorizontallyConcat(HorizontallyConcatNode node, C context) {
+  /////////////////////////////////////////////////////////////////////////////////////////////////
+  // Data Write Node
+  /////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public R visitInsertRow(InsertRowNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitShowQueries(ShowQueriesNode node, C context) {
+  public R visitInsertTablet(InsertTabletNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInternalBatchActivateTemplate(InternalBatchActivateTemplateNode node, C context) {
+  public R visitInsertRows(InsertRowsNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitInternalCreateMultiTimeSeries(InternalCreateMultiTimeSeriesNode node, C context) {
+  public R visitInsertMultiTablets(InsertMultiTabletsNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitIdentitySink(IdentitySinkNode node, C context) {
+  public R visitInsertRowsOfOneDevice(InsertRowsOfOneDeviceNode node, C context) {
     return visitPlan(node, context);
   }
 
-  public R visitShuffleSink(ShuffleSinkNode node, C context) {
+  public R visitDeleteData(DeleteDataNode node, C context) {
     return visitPlan(node, context);
   }
 }