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

caogaofei pushed a commit to branch ty/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/ty/TableModelGrammar by this 
push:
     new eeb76bb421f add mock partition fetcher in IndexScan.java
eeb76bb421f is described below

commit eeb76bb421f43daa4923ad7540f92176225f329c
Author: Beyyes <[email protected]>
AuthorDate: Thu Apr 18 15:40:12 2024 +0800

    add mock partition fetcher in IndexScan.java
---
 .../planner/optimizations/IndexScan.java           |  22 ++++
 .../relational/planner/optimizations/Util.java     | 124 +++++++++++++++++++++
 .../plan/relational/analyzer/TestMatadata.java     |   4 +-
 3 files changed, 149 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
index b1e4ca0fb2c..55c9218d943 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/IndexScan.java
@@ -14,6 +14,8 @@
 
 package org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations;
 
+import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
+import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
 import org.apache.iotdb.commons.partition.DataPartition;
@@ -54,6 +56,8 @@ public class IndexScan implements RelationalPlanOptimizer {
 
   static final IoTDBConfig CONFIG = IoTDBDescriptor.getInstance().getConfig();
 
+  private MPPQueryContext mppQueryContext;
+
   @Override
   public PlanNode optimize(
       PlanNode planNode,
@@ -61,6 +65,7 @@ public class IndexScan implements RelationalPlanOptimizer {
       Metadata metadata,
       SessionInfo sessionInfo,
       MPPQueryContext context) {
+
     return planNode.accept(
         new Rewriter(), new RewriterContext(null, metadata, sessionInfo, 
analysis));
   }
@@ -159,6 +164,15 @@ public class IndexScan implements RelationalPlanOptimizer {
       sgNameToQueryParamsMap.computeIfAbsent(database, key -> new 
ArrayList<>()).add(queryParam);
     }
 
+    //    Map<String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot, 
List<TRegionReplicaSet>>>>
+    //            dataPartitionMap = new HashMap<>();
+    //    dataPartitionMap.put("root.db", Collections.singletonMap(new 
TSeriesPartitionSlot(1),
+    //            Collections.singletonMap(new TTimePartitionSlot(1),
+    //                    Collections.singletonList(new TRegionReplicaSet(
+    //                            new 
TConsensusGroupId(TConsensusGroupType.DataRegion, 1),
+    //                            Arrays.asList(genDataNodeLocation(1, 
"127.0.0.1")))))));
+    //    return new DataPartition(dataPartitionMap, "hkb", 1);
+
     if (res.right.left || res.right.right) {
       return 
partitionFetcher.getDataPartitionWithUnclosedTimeRange(sgNameToQueryParamsMap);
     } else {
@@ -166,6 +180,14 @@ public class IndexScan implements RelationalPlanOptimizer {
     }
   }
 
+  private static TDataNodeLocation genDataNodeLocation(int dataNodeId, String 
ip) {
+    return new TDataNodeLocation()
+        .setDataNodeId(dataNodeId)
+        .setClientRpcEndPoint(new TEndPoint(ip, 9000))
+        .setMPPDataExchangeEndPoint(new TEndPoint(ip, 9001))
+        .setInternalEndPoint(new TEndPoint(ip, 9002));
+  }
+
   private static class RewriterContext {
     private Expression predicate;
     private Metadata metadata;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/Util.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/Util.java
new file mode 100644
index 00000000000..d78cd73c356
--- /dev/null
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/Util.java
@@ -0,0 +1,124 @@
+package org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations;
+
+public class Util {
+  //    public static final Analysis ANALYSIS = constructAnalysis();
+
+  //    public static Analysis constructAnalysis() {
+  //        try {
+  //            SeriesPartitionExecutor executor =
+  //                    SeriesPartitionExecutor.getSeriesPartitionExecutor(
+  //
+  // 
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionExecutorClass(),
+  //
+  // IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionSlotNum());
+  //            Analysis analysis = new Analysis();
+  //
+  //            String device1 = "root.sg.d1";
+  //            String device2 = "root.sg.d22";
+  //            String device3 = "root.sg.d333";
+  //            String device4 = "root.sg.d4444";
+  //            String device5 = "root.sg.d55555";
+  //            String device6 = "root.sg.d666666";
+  //
+  //            TRegionReplicaSet dataRegion1 =
+  //                    new TRegionReplicaSet(
+  //                            new 
TConsensusGroupId(TConsensusGroupType.DataRegion, 1),
+  //                            Arrays.asList(
+  //                                    genDataNodeLocation(11, "192.0.1.1"),
+  // genDataNodeLocation(12, "192.0.1.2")));
+  //
+  //            DataPartition dataPartition =
+  //                    new DataPartition(
+  //
+  // 
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionExecutorClass(),
+  //
+  // IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionSlotNum());
+  //
+  //            Map<String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot,
+  // List<TRegionReplicaSet>>>>
+  //                    dataPartitionMap = new HashMap<>();
+  //            Map<TSeriesPartitionSlot, Map<TTimePartitionSlot, 
List<TRegionReplicaSet>>>
+  // sgPartitionMap =
+  //                    new HashMap<>();
+  //
+  //            List<TRegionReplicaSet> d1DataRegions = new ArrayList<>();
+  //            d1DataRegions.add(dataRegion1);
+  //            Map<TTimePartitionSlot, List<TRegionReplicaSet>> 
d1DataRegionMap = new HashMap<>();
+  //            d1DataRegionMap.put(new TTimePartitionSlot(), d1DataRegions);
+  //
+  //
+  //            sgPartitionMap.put(executor.getSeriesPartitionSlot(device1), 
d1DataRegionMap);
+  //            sgPartitionMap.put(executor.getSeriesPartitionSlot(device2), 
d2DataRegionMap);
+  //            sgPartitionMap.put(executor.getSeriesPartitionSlot(device3), 
d3DataRegionMap);
+  //            sgPartitionMap.put(executor.getSeriesPartitionSlot(device4), 
d4DataRegionMap);
+  //            sgPartitionMap.put(executor.getSeriesPartitionSlot(device5), 
d5DataRegionMap);
+  //            sgPartitionMap.put(executor.getSeriesPartitionSlot(device6), 
d6DataRegionMap);
+  //
+  //            dataPartitionMap.put("root.sg", sgPartitionMap);
+  //
+  //            dataPartition.setDataPartitionMap(dataPartitionMap);
+  //
+  //            analysis.setDataPartitionInfo(dataPartition);
+  //
+  //            // construct AggregationExpression for GroupByLevel
+  //            Map<String, Set<Expression>> aggregationExpression = new 
HashMap<>();
+  //            Set<Expression> s1Expression = new HashSet<>();
+  //            s1Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d1.s1")));
+  //            s1Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d22.s1")));
+  //            s1Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d333.s1")));
+  //            s1Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d4444.s1")));
+  //
+  //            Set<Expression> s2Expression = new HashSet<>();
+  //            s2Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d1.s2")));
+  //            s2Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d22.s2")));
+  //            s2Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d333.s2")));
+  //            s2Expression.add(new TimeSeriesOperand(new 
PartialPath("root.sg.d4444.s2")));
+  //
+  //            aggregationExpression.put("root.sg.*.s1", s1Expression);
+  //            aggregationExpression.put("root.sg.*.s2", s2Expression);
+  //            // analysis.setAggregationExpressions(aggregationExpression);
+  //
+  //            // construct schema partition
+  //            SchemaPartition schemaPartition =
+  //                    new SchemaPartition(
+  //
+  // 
IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionExecutorClass(),
+  //
+  // IoTDBDescriptor.getInstance().getConfig().getSeriesPartitionSlotNum());
+  //            Map<String, Map<TSeriesPartitionSlot, TRegionReplicaSet>> 
schemaPartitionMap =
+  //                    new HashMap<>();
+  //
+  //            TRegionReplicaSet schemaRegion1 =
+  //                    new TRegionReplicaSet(
+  //                            new 
TConsensusGroupId(TConsensusGroupType.SchemaRegion, 11),
+  //                            Arrays.asList(
+  //                                    genDataNodeLocation(11, "192.0.1.1"),
+  // genDataNodeLocation(12, "192.0.1.2")));
+  //
+  //            TRegionReplicaSet schemaRegion2 =
+  //                    new TRegionReplicaSet(
+  //                            new 
TConsensusGroupId(TConsensusGroupType.SchemaRegion, 21),
+  //                            Arrays.asList(
+  //                                    genDataNodeLocation(21, "192.0.2.1"),
+  // genDataNodeLocation(22, "192.0.2.2")));
+  //
+  //            Map<TSeriesPartitionSlot, TRegionReplicaSet> schemaRegionMap = 
new HashMap<>();
+  //            schemaRegionMap.put(executor.getSeriesPartitionSlot(device1), 
schemaRegion1);
+  //            schemaRegionMap.put(executor.getSeriesPartitionSlot(device2), 
schemaRegion2);
+  //            schemaRegionMap.put(executor.getSeriesPartitionSlot(device3), 
schemaRegion2);
+  //            schemaPartitionMap.put("root.sg", schemaRegionMap);
+  //            schemaPartition.setSchemaPartitionMap(schemaPartitionMap);
+  //
+  //            analysis.setDataPartitionInfo(dataPartition);
+  //            analysis.setSchemaPartitionInfo(schemaPartition);
+  //            analysis.setSchemaTree(genSchemaTree());
+  //            // to avoid some special case which is not the point of test
+  //            analysis.setStatement(Mockito.mock(QueryStatement.class));
+  //            
Mockito.when(analysis.getStatement().isQuery()).thenReturn(false);
+  //            return analysis;
+  //        } catch (IllegalPathException e) {
+  //            return new Analysis();
+  //        }
+  //    }
+
+}
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
index 3ef17b1a2b0..575da0e55eb 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java
@@ -20,6 +20,7 @@ import 
org.apache.iotdb.db.queryengine.plan.relational.type.TypeNotFoundExceptio
 import org.apache.iotdb.db.queryengine.plan.relational.type.TypeSignature;
 import org.apache.iotdb.db.relational.sql.tree.Expression;
 import org.apache.iotdb.db.utils.constant.SqlConstant;
+import org.apache.iotdb.tsfile.file.metadata.StringArrayDeviceID;
 import org.apache.iotdb.tsfile.read.common.type.BinaryType;
 import org.apache.iotdb.tsfile.read.common.type.Type;
 
@@ -266,7 +267,8 @@ public class TestMatadata implements Metadata {
       QualifiedObjectName tableName,
       List<Expression> expressionList,
       List<String> attributeColumns) {
-    return null;
+    return Arrays.asList(
+        new DeviceEntry(new StringArrayDeviceID("t1", "t2", "t3"), 
Arrays.asList("a1", "a2")));
   }
 
   public static boolean isTwoNumericType(List<? extends Type> argumentTypes) {

Reply via email to