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) {