Skip to content

Commit 487b7cd

Browse files
authored
Move TableScaNode to node-commons (#17627)
1 parent db22016 commit 487b7cd

6 files changed

Lines changed: 23 additions & 77 deletions

File tree

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@
126126
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.DeviceTableScanNode;
127127
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.InformationSchemaTableScanNode;
128128
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.NonAlignedAggregationTreeDeviceViewScanNode;
129-
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableScanNode;
130129
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeAlignedDeviceViewScanNode;
131130
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeDeviceViewScanNode;
132131
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeNonAlignedDeviceViewScanNode;
@@ -646,10 +645,6 @@ default R visitPipeOperateSchemaQueueNode(PipeOperateSchemaQueueNode node, C con
646645

647646
// =============================== Used for Table Model ====================================
648647

649-
default R visitTableScan(TableScanNode node, C context) {
650-
return visitPlan(node, context);
651-
}
652-
653648
default R visitDeviceTableScan(DeviceTableScanNode node, C context) {
654649
return visitTableScan(node, context);
655650
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushAggregationIntoTableScan.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@
4242
import java.util.Collection;
4343
import java.util.List;
4444
import java.util.Map;
45+
import java.util.Objects;
46+
import java.util.stream.Collectors;
4547

48+
import static org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory.TAG;
4649
import static org.apache.iotdb.db.queryengine.plan.relational.planner.node.AggregationTableScanNode.combineAggregationAndTableScan;
4750
import static org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations.Util.split;
4851

@@ -190,7 +193,7 @@ private PushDownLevel calculatePushDownLevel(
190193
return PushDownLevel.NOOP;
191194
} else if (singleDeviceEntry
192195
|| ImmutableSet.copyOf(groupingKeys)
193-
.containsAll(tableScanNode.getTagColumnsInTableStore(metadata, session))) {
196+
.containsAll(getTagColumnsInTableStore(tableScanNode, metadata, session))) {
194197
// If all tag columns appear in groupingKeys and no Measurement column appears, we can push
195198
// down completely.
196199
return PushDownLevel.COMPLETE;
@@ -199,6 +202,17 @@ private PushDownLevel calculatePushDownLevel(
199202
}
200203
}
201204

205+
private List<Symbol> getTagColumnsInTableStore(
206+
DeviceTableScanNode tableScanNode, Metadata metadata, SessionInfo session) {
207+
return Objects.requireNonNull(
208+
metadata.getTableSchema(session, tableScanNode.getQualifiedObjectName()).orElse(null))
209+
.getColumns()
210+
.stream()
211+
.filter(columnSchema -> columnSchema.getColumnCategory() == TAG)
212+
.map(columnSchema -> Symbol.of(columnSchema.getName()))
213+
.collect(Collectors.toList());
214+
}
215+
202216
private boolean isDateBinFunctionOfTime(
203217
Expression expression,
204218
List<FunctionCall> dateBinFunctionsOfTime,

iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/planner/plan/node/ICoreQueryPlanVisitor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import org.apache.iotdb.commons.queryengine.plan.relational.planner.node.ValueFillNode;
5959
import org.apache.iotdb.commons.queryengine.plan.relational.planner.node.ValuesNode;
6060
import org.apache.iotdb.commons.queryengine.plan.relational.planner.node.WindowNode;
61+
import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableScanNode;
6162

6263
public interface ICoreQueryPlanVisitor<R, C> extends IPlanVisitor<R, C> {
6364

@@ -90,6 +91,10 @@ default R visitMultiChildProcess(MultiChildProcessNode node, C context) {
9091
}
9192

9293
// =============================== Used for Table Model ====================================
94+
default R visitTableScan(TableScanNode node, C context) {
95+
return visitPlan(node, context);
96+
}
97+
9398
default R visitFilter(FilterNode node, C context) {
9499
return visitSingleChildProcess(node, context);
95100
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/MetadataUtil.java renamed to iotdb-core/node-commons/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/MetadataUtil.java

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,9 @@
2121

2222
import org.apache.iotdb.commons.exception.SemanticException;
2323
import org.apache.iotdb.commons.queryengine.common.SessionInfo;
24-
import org.apache.iotdb.commons.queryengine.plan.relational.metadata.ColumnMetadata;
2524
import org.apache.iotdb.commons.queryengine.plan.relational.sql.ast.QualifiedName;
2625

27-
import com.google.common.collect.ImmutableList;
28-
import com.google.common.collect.ImmutableMap;
2926
import com.google.common.collect.Lists;
30-
import org.apache.tsfile.read.common.type.Type;
3127

3228
import java.util.List;
3329
import java.util.Optional;
@@ -88,52 +84,4 @@ public static QualifiedObjectName createQualifiedObjectName(
8884

8985
return new QualifiedObjectName(databaseName, objectName);
9086
}
91-
92-
public static boolean tableExists(Metadata metadata, SessionInfo session, String table) {
93-
if (!session.getDatabaseName().isPresent()) {
94-
return false;
95-
}
96-
QualifiedObjectName name = new QualifiedObjectName(session.getDatabaseName().get(), table);
97-
return metadata.tableExists(name);
98-
}
99-
100-
public static class TableMetadataBuilder {
101-
public static TableMetadataBuilder tableMetadataBuilder(String tableName) {
102-
return new TableMetadataBuilder(tableName);
103-
}
104-
105-
private final String tableName;
106-
private final ImmutableList.Builder<ColumnMetadata> columns = ImmutableList.builder();
107-
private final ImmutableMap.Builder<String, Object> properties = ImmutableMap.builder();
108-
private final Optional<String> comment;
109-
110-
private TableMetadataBuilder(String tableName) {
111-
this(tableName, Optional.empty());
112-
}
113-
114-
private TableMetadataBuilder(String tableName, Optional<String> comment) {
115-
this.tableName = tableName;
116-
this.comment = comment;
117-
}
118-
119-
public TableMetadataBuilder column(String columnName, Type type) {
120-
columns.add(new ColumnMetadata(columnName, type));
121-
return this;
122-
}
123-
124-
public TableMetadataBuilder hiddenColumn(String columnName, Type type) {
125-
columns.add(
126-
ColumnMetadata.builder().setName(columnName).setType(type).setHidden(true).build());
127-
return this;
128-
}
129-
130-
public TableMetadataBuilder property(String name, Object value) {
131-
properties.put(name, value);
132-
return this;
133-
}
134-
135-
public TableMetadata build() {
136-
return new TableMetadata(tableName, columns.build(), properties.buildOrThrow(), comment);
137-
}
138-
}
13987
}

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/QualifiedObjectName.java renamed to iotdb-core/node-commons/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/QualifiedObjectName.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ public String getObjectName() {
6363
return objectName;
6464
}
6565

66-
public QualifiedTablePrefix asQualifiedTablePrefix() {
67-
return new QualifiedTablePrefix(dbName, objectName);
68-
}
69-
7066
@Override
7167
public boolean equals(Object obj) {
7268
if (obj == this) {

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java renamed to iotdb-core/node-commons/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TableScanNode.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,14 @@
2020
package org.apache.iotdb.db.queryengine.plan.relational.planner.node;
2121

2222
import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
23-
import org.apache.iotdb.commons.queryengine.common.SessionInfo;
23+
import org.apache.iotdb.commons.queryengine.plan.planner.plan.node.ICoreQueryPlanVisitor;
2424
import org.apache.iotdb.commons.queryengine.plan.planner.plan.node.IPlanVisitor;
2525
import org.apache.iotdb.commons.queryengine.plan.planner.plan.node.PlanNode;
2626
import org.apache.iotdb.commons.queryengine.plan.planner.plan.node.PlanNodeId;
2727
import org.apache.iotdb.commons.queryengine.plan.planner.plan.node.source.SourceNode;
2828
import org.apache.iotdb.commons.queryengine.plan.relational.metadata.ColumnSchema;
2929
import org.apache.iotdb.commons.queryengine.plan.relational.planner.Symbol;
3030
import org.apache.iotdb.commons.queryengine.plan.relational.sql.ast.Expression;
31-
import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory;
32-
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
33-
import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata;
3431
import org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
3532

3633
import com.google.common.collect.ImmutableList;
@@ -107,8 +104,9 @@ public TableScanNode(
107104
protected TableScanNode() {}
108105

109106
@Override
107+
@SuppressWarnings("unchecked")
110108
public <R, C> R accept(IPlanVisitor<R, C> visitor, C context) {
111-
return ((PlanVisitor<R, C>) visitor).visitTableScan(this, context);
109+
return ((ICoreQueryPlanVisitor<R, C>) visitor).visitTableScan(this, context);
112110
}
113111

114112
@Override
@@ -129,16 +127,6 @@ public List<String> getOutputColumnNames() {
129127
return outputSymbols.stream().map(Symbol::getName).collect(Collectors.toList());
130128
}
131129

132-
public List<Symbol> getTagColumnsInTableStore(Metadata metadata, SessionInfo session) {
133-
return Objects.requireNonNull(
134-
metadata.getTableSchema(session, qualifiedObjectName).orElse(null))
135-
.getColumns()
136-
.stream()
137-
.filter(columnSchema -> columnSchema.getColumnCategory() == TsTableColumnCategory.TAG)
138-
.map(columnSchema -> Symbol.of(columnSchema.getName()))
139-
.collect(Collectors.toList());
140-
}
141-
142130
public boolean isMeasurementOrTimeColumn(Symbol symbol) {
143131
ColumnSchema columnSchema = assignments.get(symbol);
144132
return columnSchema != null

0 commit comments

Comments
 (0)