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 54e16751d14 perfect TableScanNode
54e16751d14 is described below
commit 54e16751d14ca4a109868cfb1cdde32fd5fe189f
Author: Beyyes <[email protected]>
AuthorDate: Tue Apr 16 10:53:13 2024 +0800
perfect TableScanNode
---
.../plan/relational/metadata/ColumnSchema.java | 2 +-
.../plan/relational/planner/RelationPlanner.java | 20 +++++++++----
.../relational/planner/node/TableScanNode.java | 33 +++++++++++-----------
3 files changed, 31 insertions(+), 24 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/ColumnSchema.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/ColumnSchema.java
index 3509d5bd98e..1ff16d939d2 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/ColumnSchema.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/ColumnSchema.java
@@ -34,7 +34,7 @@ public class ColumnSchema {
private final TsTableColumnCategory columnCategory;
private final boolean hidden;
- private ColumnSchema(
+ public ColumnSchema(
String name, Type type, boolean hidden, TsTableColumnCategory
columnCategory) {
requireNonNull(type, "type is null");
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
index 0694f27b9c2..584b9c1f80b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
@@ -20,6 +20,7 @@ import
org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analysis;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Field;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.NodeRef;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Scope;
+import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema;
import
org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableScanNode;
import org.apache.iotdb.db.relational.sql.tree.AliasedRelation;
import org.apache.iotdb.db.relational.sql.tree.AstVisitor;
@@ -36,6 +37,7 @@ import org.apache.iotdb.db.relational.sql.tree.Union;
import org.apache.iotdb.db.relational.sql.tree.Values;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import java.util.Collection;
import java.util.List;
@@ -88,23 +90,29 @@ public class RelationPlanner extends
AstVisitor<RelationPlan, Void> {
}
Scope scope = analysis.getScope(node);
- // TableHandle tableHandle = analysis.getTableHandle(node);
-
ImmutableList.Builder<Symbol> outputSymbolsBuilder =
ImmutableList.builder();
-
- // Collection<Field> fields =
analysis.getMaterializedViewStorageTableFields(node);
+ ImmutableMap.Builder<Symbol, ColumnSchema> symbolToColumnSchema =
ImmutableMap.builder();
Collection<Field> fields = scope.getRelationType().getAllFields();
for (Field field : fields) {
Symbol symbol = symbolAllocator.newSymbol(field);
-
outputSymbolsBuilder.add(symbol);
+ symbolToColumnSchema.put(
+ symbol,
+ new ColumnSchema(
+ field.getName().get(), field.getType(), field.isHidden(),
field.getColumnCategory()));
}
List<Symbol> outputSymbols = outputSymbolsBuilder.build();
- PlanNode root = new TableScanNode(idAllocator.genPlanNodeId(), null,
outputSymbols, null);
+ PlanNode root =
+ new TableScanNode(
+ idAllocator.genPlanNodeId(),
+ node.getName().toString(),
+ outputSymbols,
+ symbolToColumnSchema.build());
return new RelationPlan(root, scope, outputSymbols);
+ // Collection<Field> fields =
analysis.getMaterializedViewStorageTableFields(node);
// Query namedQuery = analysis.getNamedQuery(node);
// Collection<Field> fields =
analysis.getMaterializedViewStorageTableFields(node);
// plan = addRowFilters(node, plan);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java
index d2d17c3af76..0f8e3290bfe 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java
@@ -3,8 +3,8 @@ package
org.apache.iotdb.db.queryengine.plan.relational.planner.node;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnHandle;
-import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableHandle;
+import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema;
+import org.apache.iotdb.db.queryengine.plan.relational.metadata.DeviceEntry;
import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
import java.io.DataOutputStream;
@@ -14,28 +14,22 @@ import java.util.List;
import java.util.Map;
public class TableScanNode extends PlanNode {
- private final TableHandle table;
- private final List<Symbol> outputSymbols;
- private final Map<Symbol, ColumnHandle> assignments; // symbol -> column
// db.tablename
- // String qualifiedTableName;
- //
- // List<Symbol> outputSymbols;
- //
- // List<DeviceEntry> deviceEntries;
- //
- // Map<Symbol, ColumnSchema> assignments;
- //
- // Map<Symbol, Integer> attributesMap;
+ private final String qualifiedTableName;
+ private final List<Symbol> outputSymbols;
+ private final Map<Symbol, ColumnSchema> assignments;
+
+ private List<DeviceEntry> deviceEntries;
+ private Map<Symbol, Integer> attributesMap;
public TableScanNode(
PlanNodeId id,
- TableHandle table,
+ String qualifiedTableName,
List<Symbol> outputSymbols,
- Map<Symbol, ColumnHandle> assignments) {
+ Map<Symbol, ColumnSchema> assignments) {
super(id);
- this.table = table;
+ this.qualifiedTableName = qualifiedTableName;
this.outputSymbols = outputSymbols;
this.assignments = assignments;
}
@@ -73,4 +67,9 @@ public class TableScanNode extends PlanNode {
@Override
protected void serializeAttributes(DataOutputStream stream) throws
IOException {}
+
+ @Override
+ public List<Symbol> getOutputSymbols() {
+ return outputSymbols;
+ }
}