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 991a8111b46 only support one data region in table model
991a8111b46 is described below
commit 991a8111b46e158d3aeab88be1d180302641b95a
Author: Beyyes <[email protected]>
AuthorDate: Fri Apr 19 12:23:30 2024 +0800
only support one data region in table model
---
.../plan/relational/metadata/TableMetadataImpl.java | 6 ++++--
.../plan/relational/planner/optimizations/IndexScan.java | 13 +++++++------
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
index 52ae6220dba..b9825f09e3b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
@@ -239,8 +239,10 @@ public class TableMetadataImpl implements Metadata {
List<String> attributeColumns) {
// fixme, perfect the real metadata impl
List<DeviceEntry> result = new ArrayList<>();
- IDeviceID deviceID = new StringArrayDeviceID("db", "table1", "beijing",
"a_1");
- result.add(new DeviceEntry(deviceID, Arrays.asList("new", "low")));
+ IDeviceID deviceID1 = new StringArrayDeviceID("db", "table1", "beijing",
"a_1");
+ IDeviceID deviceID2 = new StringArrayDeviceID("db", "table1", "beijing",
"b_1");
+ result.add(new DeviceEntry(deviceID1, Arrays.asList("old", "low")));
+ result.add(new DeviceEntry(deviceID2, Arrays.asList("new", "high")));
return result;
}
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 55c9218d943..afde03f20ff 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
@@ -106,22 +106,23 @@ public class IndexScan implements RelationalPlanOptimizer
{
node.setDeviceEntries(deviceEntries);
// TODO getDataPartition, Change globalTimeFilter to Filter
+ String database = "root." +
context.getSessionInfo().getDatabaseName().get();
IPartitionFetcher partitionFetcher =
ClusterPartitionFetcher.getInstance();
Filter globalTimeFilter = null;
Set<String> deviceSet = new HashSet<>();
for (DeviceEntry deviceEntry : deviceEntries) {
StringArrayDeviceID arrayDeviceID = (StringArrayDeviceID)
deviceEntry.getDeviceID();
String device = arrayDeviceID.toString();
- deviceSet.add(device);
+ deviceSet.add("root." + device);
}
- String database = "root." +
context.getSessionInfo().getDatabaseName().get();
+
DataPartition dataPartition =
fetchDataPartitionByDevices(deviceSet, database, globalTimeFilter,
partitionFetcher);
context.getAnalysis().setDataPartition(dataPartition);
- // List<TRegionReplicaSet> regionReplicaList =
- // dataPartition.getDataRegionReplicaSetWithTimeFilter
- //
(((StringArrayDeviceID)deviceEntries.get(0).getDeviceID().toString(),
- // globalTimeFilter);
+
+ if (dataPartition.getDataPartitionMap().size() != 1) {
+ throw new IllegalStateException("Table model can only process data
only in data region!");
+ }
// TODO add the real impl
TRegionReplicaSet regionReplicaSet =