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;
+  }
 }

Reply via email to