Skip to content

Commit bbfa720

Browse files
authored
[IOTDB-2803] adapt metadata write operation to plannode (#5344)
[IOTDB-2803] adapt metadata write operation to plannode (#5344)
1 parent 1705a8a commit bbfa720

File tree

19 files changed

+903
-37
lines changed

19 files changed

+903
-37
lines changed

node-commons/src/main/java/org/apache/iotdb/commons/partition/SchemaRegionId.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,8 @@ public int getSchemaRegionId() {
2828
public void setSchemaRegionId(int schemaRegionId) {
2929
this.schemaRegionId = schemaRegionId;
3030
}
31+
32+
public String toString() {
33+
return String.format("SchemaRegion-%d", schemaRegionId);
34+
}
3135
}

server/src/main/java/org/apache/iotdb/db/mpp/sql/analyze/Analysis.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
2828
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
2929

30-
import java.util.*;
30+
import java.util.List;
31+
import java.util.Map;
3132

3233
/** Analysis used for planning a query. TODO: This class may need to store more info for a query. */
3334
public class Analysis {

server/src/main/java/org/apache/iotdb/db/mpp/sql/analyze/Analyzer.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.iotdb.commons.partition.DataPartitionQueryParam;
2323
import org.apache.iotdb.commons.partition.PartitionInfo;
2424
import org.apache.iotdb.db.exception.query.PathNumOverLimitException;
25+
import org.apache.iotdb.db.exception.sql.SQLParserException;
2526
import org.apache.iotdb.db.exception.sql.SemanticException;
2627
import org.apache.iotdb.db.exception.sql.StatementAnalyzeException;
2728
import org.apache.iotdb.db.mpp.common.MPPQueryContext;
@@ -35,12 +36,17 @@
3536
import org.apache.iotdb.db.mpp.sql.statement.crud.InsertStatement;
3637
import org.apache.iotdb.db.mpp.sql.statement.crud.InsertTabletStatement;
3738
import org.apache.iotdb.db.mpp.sql.statement.crud.QueryStatement;
39+
import org.apache.iotdb.db.mpp.sql.statement.metadata.AlterTimeSeriesStatement;
40+
import org.apache.iotdb.db.mpp.sql.statement.metadata.CreateAlignedTimeSeriesStatement;
3841
import org.apache.iotdb.db.mpp.sql.statement.metadata.CreateTimeSeriesStatement;
3942
import org.apache.iotdb.db.mpp.sql.tree.StatementVisitor;
4043
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
4144

4245
import java.util.Arrays;
46+
import java.util.HashSet;
47+
import java.util.List;
4348
import java.util.Map;
49+
import java.util.Set;
4450

4551
/** Analyze the statement and generate Analysis. */
4652
public class Analyzer {
@@ -124,6 +130,39 @@ public Analysis visitCreateTimeseries(
124130
}
125131
Analysis analysis = new Analysis();
126132
analysis.setStatement(createTimeSeriesStatement);
133+
134+
String devicePath = createTimeSeriesStatement.getPath().getDevice();
135+
analysis.setSchemaPartitionInfo(partitionFetcher.fetchSchemaPartitionInfo(devicePath));
136+
return analysis;
137+
}
138+
139+
@Override
140+
public Analysis visitCreateAlignedTimeseries(
141+
CreateAlignedTimeSeriesStatement createAlignedTimeSeriesStatement,
142+
MPPQueryContext context) {
143+
List<String> measurements = createAlignedTimeSeriesStatement.getMeasurements();
144+
Set<String> measurementsSet = new HashSet<>(measurements);
145+
if (measurementsSet.size() < measurements.size()) {
146+
throw new SQLParserException(
147+
"Measurement under an aligned device is not allowed to have the same measurement name");
148+
}
149+
150+
Analysis analysis = new Analysis();
151+
analysis.setStatement(createAlignedTimeSeriesStatement);
152+
153+
String devicePath = createAlignedTimeSeriesStatement.getDevicePath().getFullPath();
154+
analysis.setSchemaPartitionInfo(partitionFetcher.fetchSchemaPartitionInfo(devicePath));
155+
return analysis;
156+
}
157+
158+
@Override
159+
public Analysis visitAlterTimeseries(
160+
AlterTimeSeriesStatement alterTimeSeriesStatement, MPPQueryContext context) {
161+
Analysis analysis = new Analysis();
162+
analysis.setStatement(alterTimeSeriesStatement);
163+
164+
String devicePath = alterTimeSeriesStatement.getPath().getDevice();
165+
analysis.setSchemaPartitionInfo(partitionFetcher.fetchSchemaPartitionInfo(devicePath));
127166
return analysis;
128167
}
129168

server/src/main/java/org/apache/iotdb/db/mpp/sql/parser/ASTVisitor.java

Lines changed: 96 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,33 @@
2727
import org.apache.iotdb.db.exception.sql.SemanticException;
2828
import org.apache.iotdb.db.index.common.IndexType;
2929
import org.apache.iotdb.db.metadata.path.PartialPath;
30-
import org.apache.iotdb.db.mpp.common.filter.*;
30+
import org.apache.iotdb.db.mpp.common.filter.BasicFunctionFilter;
31+
import org.apache.iotdb.db.mpp.common.filter.InFilter;
32+
import org.apache.iotdb.db.mpp.common.filter.LikeFilter;
33+
import org.apache.iotdb.db.mpp.common.filter.QueryFilter;
34+
import org.apache.iotdb.db.mpp.common.filter.RegexpFilter;
3135
import org.apache.iotdb.db.mpp.sql.constant.FilterConstant;
32-
import org.apache.iotdb.db.mpp.sql.statement.*;
33-
import org.apache.iotdb.db.mpp.sql.statement.component.*;
34-
import org.apache.iotdb.db.mpp.sql.statement.crud.*;
36+
import org.apache.iotdb.db.mpp.sql.statement.Statement;
37+
import org.apache.iotdb.db.mpp.sql.statement.component.FillComponent;
38+
import org.apache.iotdb.db.mpp.sql.statement.component.FilterNullComponent;
39+
import org.apache.iotdb.db.mpp.sql.statement.component.FromComponent;
40+
import org.apache.iotdb.db.mpp.sql.statement.component.GroupByLevelComponent;
41+
import org.apache.iotdb.db.mpp.sql.statement.component.GroupByTimeComponent;
42+
import org.apache.iotdb.db.mpp.sql.statement.component.OrderBy;
43+
import org.apache.iotdb.db.mpp.sql.statement.component.ResultColumn;
44+
import org.apache.iotdb.db.mpp.sql.statement.component.ResultSetFormat;
45+
import org.apache.iotdb.db.mpp.sql.statement.component.SelectComponent;
46+
import org.apache.iotdb.db.mpp.sql.statement.component.WhereCondition;
47+
import org.apache.iotdb.db.mpp.sql.statement.crud.AggregationQueryStatement;
48+
import org.apache.iotdb.db.mpp.sql.statement.crud.FillQueryStatement;
49+
import org.apache.iotdb.db.mpp.sql.statement.crud.GroupByFillQueryStatement;
50+
import org.apache.iotdb.db.mpp.sql.statement.crud.GroupByQueryStatement;
51+
import org.apache.iotdb.db.mpp.sql.statement.crud.InsertStatement;
52+
import org.apache.iotdb.db.mpp.sql.statement.crud.LastQueryStatement;
53+
import org.apache.iotdb.db.mpp.sql.statement.crud.QueryStatement;
54+
import org.apache.iotdb.db.mpp.sql.statement.crud.UDAFQueryStatement;
55+
import org.apache.iotdb.db.mpp.sql.statement.crud.UDTFQueryStatement;
56+
import org.apache.iotdb.db.mpp.sql.statement.metadata.AlterTimeSeriesStatement;
3557
import org.apache.iotdb.db.mpp.sql.statement.metadata.CreateAlignedTimeSeriesStatement;
3658
import org.apache.iotdb.db.mpp.sql.statement.metadata.CreateTimeSeriesStatement;
3759
import org.apache.iotdb.db.mpp.sql.statement.metadata.ShowDevicesStatement;
@@ -45,7 +67,11 @@
4567
import org.apache.iotdb.db.query.executor.fill.PreviousFill;
4668
import org.apache.iotdb.db.query.executor.fill.ValueFill;
4769
import org.apache.iotdb.db.query.expression.Expression;
48-
import org.apache.iotdb.db.query.expression.binary.*;
70+
import org.apache.iotdb.db.query.expression.binary.AdditionExpression;
71+
import org.apache.iotdb.db.query.expression.binary.DivisionExpression;
72+
import org.apache.iotdb.db.query.expression.binary.ModuloExpression;
73+
import org.apache.iotdb.db.query.expression.binary.MultiplicationExpression;
74+
import org.apache.iotdb.db.query.expression.binary.SubtractionExpression;
4975
import org.apache.iotdb.db.query.expression.unary.ConstantOperand;
5076
import org.apache.iotdb.db.query.expression.unary.FunctionExpression;
5177
import org.apache.iotdb.db.query.expression.unary.NegationExpression;
@@ -62,7 +88,9 @@
6288
import java.util.*;
6389
import java.util.regex.Pattern;
6490

65-
import static org.apache.iotdb.db.index.common.IndexConstant.*;
91+
import static org.apache.iotdb.db.index.common.IndexConstant.PATTERN;
92+
import static org.apache.iotdb.db.index.common.IndexConstant.THRESHOLD;
93+
import static org.apache.iotdb.db.index.common.IndexConstant.TOP_K;
6694
import static org.apache.iotdb.db.qp.constant.SQLConstant.TIME_PATH;
6795

6896
/** Parse AST to Statement. */
@@ -121,7 +149,7 @@ public Statement visitCreateNonAlignedTimeseries(
121149
public Statement visitCreateAlignedTimeseries(IoTDBSqlParser.CreateAlignedTimeseriesContext ctx) {
122150
CreateAlignedTimeSeriesStatement createAlignedTimeSeriesStatement =
123151
new CreateAlignedTimeSeriesStatement();
124-
createAlignedTimeSeriesStatement.setDeviceId(parseFullPath(ctx.fullPath()));
152+
createAlignedTimeSeriesStatement.setDevicePath(parseFullPath(ctx.fullPath()));
125153
parseAlignedMeasurements(ctx.alignedMeasurements(), createAlignedTimeSeriesStatement);
126154
return createAlignedTimeSeriesStatement;
127155
}
@@ -233,11 +261,9 @@ public void parseTagClause(IoTDBSqlParser.TagClauseContext ctx, Statement statem
233261
((CreateTimeSeriesStatement) statement).setTags(tags);
234262
} else if (statement instanceof CreateAlignedTimeSeriesStatement) {
235263
((CreateAlignedTimeSeriesStatement) statement).addTagsList(tags);
264+
} else if (statement instanceof AlterTimeSeriesStatement) {
265+
((AlterTimeSeriesStatement) statement).setTagsMap(tags);
236266
}
237-
// TODO: remove comments
238-
// else if (statement instanceof AlterTimeSeriesStatement) {
239-
// ((AlterTimeSeriesStatement) statement).setTagsMap(tags);
240-
// }
241267
}
242268

243269
public void parseAttributeClause(IoTDBSqlParser.AttributeClauseContext ctx, Statement statement) {
@@ -246,11 +272,66 @@ public void parseAttributeClause(IoTDBSqlParser.AttributeClauseContext ctx, Stat
246272
((CreateTimeSeriesStatement) statement).setAttributes(attributes);
247273
} else if (statement instanceof CreateAlignedTimeSeriesStatement) {
248274
((CreateAlignedTimeSeriesStatement) statement).addAttributesList(attributes);
275+
} else if (statement instanceof AlterTimeSeriesStatement) {
276+
((AlterTimeSeriesStatement) statement).setAttributesMap(attributes);
277+
}
278+
}
279+
280+
@Override
281+
public Statement visitAlterTimeseries(IoTDBSqlParser.AlterTimeseriesContext ctx) {
282+
AlterTimeSeriesStatement alterTimeSeriesStatement = new AlterTimeSeriesStatement();
283+
alterTimeSeriesStatement.setPath(parseFullPath(ctx.fullPath()));
284+
parseAlterClause(ctx.alterClause(), alterTimeSeriesStatement);
285+
return alterTimeSeriesStatement;
286+
}
287+
288+
private void parseAlterClause(
289+
IoTDBSqlParser.AlterClauseContext ctx, AlterTimeSeriesStatement alterTimeSeriesStatement) {
290+
Map<String, String> alterMap = new HashMap<>();
291+
// rename
292+
if (ctx.RENAME() != null) {
293+
alterTimeSeriesStatement.setAlterType(AlterTimeSeriesStatement.AlterType.RENAME);
294+
alterMap.put(
295+
parseIdentifier((ctx.beforeName.getText())), parseIdentifier(ctx.currentName.getText()));
296+
} else if (ctx.SET() != null) {
297+
// set
298+
alterTimeSeriesStatement.setAlterType(AlterTimeSeriesStatement.AlterType.SET);
299+
setMap(ctx, alterMap);
300+
} else if (ctx.DROP() != null) {
301+
// drop
302+
alterTimeSeriesStatement.setAlterType(AlterTimeSeriesStatement.AlterType.DROP);
303+
for (IoTDBSqlParser.IdentifierContext dropId : ctx.identifier()) {
304+
alterMap.put(parseIdentifier(dropId.getText()), null);
305+
}
306+
} else if (ctx.TAGS() != null) {
307+
// add tag
308+
alterTimeSeriesStatement.setAlterType((AlterTimeSeriesStatement.AlterType.ADD_TAGS));
309+
setMap(ctx, alterMap);
310+
} else if (ctx.ATTRIBUTES() != null) {
311+
// add attribute
312+
alterTimeSeriesStatement.setAlterType(AlterTimeSeriesStatement.AlterType.ADD_ATTRIBUTES);
313+
setMap(ctx, alterMap);
314+
} else {
315+
// upsert
316+
alterTimeSeriesStatement.setAlterType(AlterTimeSeriesStatement.AlterType.UPSERT);
317+
if (ctx.aliasClause() != null) {
318+
parseAliasClause(ctx.aliasClause(), alterTimeSeriesStatement);
319+
}
320+
if (ctx.tagClause() != null) {
321+
parseTagClause(ctx.tagClause(), alterTimeSeriesStatement);
322+
}
323+
if (ctx.attributeClause() != null) {
324+
parseAttributeClause(ctx.attributeClause(), alterTimeSeriesStatement);
325+
}
326+
}
327+
alterTimeSeriesStatement.setAlterMap(alterMap);
328+
}
329+
330+
public void parseAliasClause(
331+
IoTDBSqlParser.AliasClauseContext ctx, AlterTimeSeriesStatement alterTimeSeriesStatement) {
332+
if (alterTimeSeriesStatement != null && ctx.identifier() != null) {
333+
alterTimeSeriesStatement.setAlias((parseIdentifier(ctx.identifier().getText())));
249334
}
250-
// TODO: remove comments
251-
// else if (operator instanceof AlterTimeSeriesOperator) {
252-
// ((AlterTimeSeriesOperator) operator).setAttributesMap(attributes);
253-
// }
254335
}
255336

256337
// Show Timeseries ========================================================================

server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/DistributionPlanner.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,28 @@
2121
import org.apache.iotdb.commons.partition.DataRegionReplicaSet;
2222
import org.apache.iotdb.db.mpp.common.PlanFragmentId;
2323
import org.apache.iotdb.db.mpp.sql.analyze.Analysis;
24-
import org.apache.iotdb.db.mpp.sql.planner.plan.*;
25-
import org.apache.iotdb.db.mpp.sql.planner.plan.node.*;
24+
import org.apache.iotdb.db.mpp.sql.planner.plan.DistributedQueryPlan;
25+
import org.apache.iotdb.db.mpp.sql.planner.plan.FragmentInstance;
26+
import org.apache.iotdb.db.mpp.sql.planner.plan.IFragmentParallelPlaner;
27+
import org.apache.iotdb.db.mpp.sql.planner.plan.LogicalQueryPlan;
28+
import org.apache.iotdb.db.mpp.sql.planner.plan.PlanFragment;
29+
import org.apache.iotdb.db.mpp.sql.planner.plan.SimpleFragmentParallelPlanner;
30+
import org.apache.iotdb.db.mpp.sql.planner.plan.SubPlan;
31+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
32+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeId;
33+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeIdAllocator;
34+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanVisitor;
35+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.SimplePlanNodeRewriter;
2636
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.ExchangeNode;
2737
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.TimeJoinNode;
2838
import org.apache.iotdb.db.mpp.sql.planner.plan.node.sink.FragmentSinkNode;
2939
import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesAggregateScanNode;
3040
import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesScanNode;
3141

32-
import java.util.*;
42+
import java.util.ArrayList;
43+
import java.util.HashMap;
44+
import java.util.List;
45+
import java.util.Map;
3346
import java.util.stream.Collectors;
3447

3548
import static com.google.common.collect.ImmutableList.toImmutableList;

server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/LocalExecutionPlanner.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@
2323
import org.apache.iotdb.db.mpp.operator.process.LimitOperator;
2424
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
2525
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanVisitor;
26-
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.*;
26+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.AggregateNode;
27+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.DeviceMergeNode;
28+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.FillNode;
29+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.FilterNode;
30+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.FilterNullNode;
31+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.GroupByLevelNode;
32+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.LimitNode;
33+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.OffsetNode;
34+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.SortNode;
35+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.TimeJoinNode;
2736
import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesAggregateScanNode;
2837
import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesScanNode;
2938
import org.apache.iotdb.db.qp.logical.crud.FilterOperator;

server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/LogicalPlanner.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@
2424
import org.apache.iotdb.db.mpp.sql.planner.plan.LogicalQueryPlan;
2525
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNode;
2626
import org.apache.iotdb.db.mpp.sql.planner.plan.node.PlanNodeIdAllocator;
27+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.write.AlterTimeSeriesNode;
28+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.write.CreateAlignedTimeSeriesNode;
2729
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.write.CreateTimeSeriesNode;
2830
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.InsertTabletNode;
2931
import org.apache.iotdb.db.mpp.sql.statement.crud.InsertTabletStatement;
3032
import org.apache.iotdb.db.mpp.sql.statement.crud.QueryStatement;
33+
import org.apache.iotdb.db.mpp.sql.statement.metadata.AlterTimeSeriesStatement;
34+
import org.apache.iotdb.db.mpp.sql.statement.metadata.CreateAlignedTimeSeriesStatement;
3135
import org.apache.iotdb.db.mpp.sql.statement.metadata.CreateTimeSeriesStatement;
3236
import org.apache.iotdb.db.mpp.sql.tree.StatementVisitor;
3337

@@ -91,6 +95,36 @@ public PlanNode visitCreateTimeseries(
9195
createTimeSeriesStatement.getAlias());
9296
}
9397

98+
@Override
99+
public PlanNode visitCreateAlignedTimeseries(
100+
CreateAlignedTimeSeriesStatement createAlignedTimeSeriesStatement,
101+
MPPQueryContext context) {
102+
return new CreateAlignedTimeSeriesNode(
103+
PlanNodeIdAllocator.generateId(),
104+
createAlignedTimeSeriesStatement.getDevicePath(),
105+
createAlignedTimeSeriesStatement.getMeasurements(),
106+
createAlignedTimeSeriesStatement.getDataTypes(),
107+
createAlignedTimeSeriesStatement.getEncodings(),
108+
createAlignedTimeSeriesStatement.getCompressors(),
109+
createAlignedTimeSeriesStatement.getAliasList(),
110+
createAlignedTimeSeriesStatement.getTagsList(),
111+
createAlignedTimeSeriesStatement.getTagOffsets(),
112+
createAlignedTimeSeriesStatement.getAttributesList());
113+
}
114+
115+
@Override
116+
public PlanNode visitAlterTimeseries(
117+
AlterTimeSeriesStatement alterTimeSeriesStatement, MPPQueryContext context) {
118+
return new AlterTimeSeriesNode(
119+
PlanNodeIdAllocator.generateId(),
120+
alterTimeSeriesStatement.getPath(),
121+
alterTimeSeriesStatement.getAlterType(),
122+
alterTimeSeriesStatement.getAlterMap(),
123+
alterTimeSeriesStatement.getAlias(),
124+
alterTimeSeriesStatement.getTagsMap(),
125+
alterTimeSeriesStatement.getAttributesMap());
126+
}
127+
94128
@Override
95129
public PlanNode visitInsertTablet(
96130
InsertTabletStatement insertTabletStatement, MPPQueryContext context) {

server/src/main/java/org/apache/iotdb/db/mpp/sql/planner/plan/node/PlanNodeType.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,25 @@
2020

2121
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.read.ShowDevicesNode;
2222
import org.apache.iotdb.db.mpp.sql.planner.plan.node.metedata.write.CreateTimeSeriesNode;
23-
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.*;
23+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.AggregateNode;
24+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.DeviceMergeNode;
25+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.ExchangeNode;
26+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.FillNode;
27+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.FilterNode;
28+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.FilterNullNode;
29+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.GroupByLevelNode;
30+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.LimitNode;
31+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.OffsetNode;
32+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.SortNode;
33+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.process.TimeJoinNode;
2434
import org.apache.iotdb.db.mpp.sql.planner.plan.node.sink.FragmentSinkNode;
2535
import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesAggregateScanNode;
2636
import org.apache.iotdb.db.mpp.sql.planner.plan.node.source.SeriesScanNode;
27-
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.*;
37+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.InsertMultiTabletNode;
38+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.InsertRowNode;
39+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.InsertRowsNode;
40+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.InsertRowsOfOneDeviceNode;
41+
import org.apache.iotdb.db.mpp.sql.planner.plan.node.write.InsertTabletNode;
2842

2943
import java.nio.ByteBuffer;
3044

0 commit comments

Comments
 (0)