This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch multi-cyclic-pipe in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit b05fc31211ccd0f3b988cadd58fd89a5c090892e Author: Steve Yurong Su <[email protected]> AuthorDate: Mon Aug 14 22:28:30 2023 +0800 Analysis --- .../queryengine/plan/analyze/AnalyzeVisitor.java | 32 ++++++++++++++++++++++ .../crud/PipeEnrichedInsertBaseStatement.java | 6 +++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java index 50fa6b50988..3cfda307723 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java @@ -98,6 +98,7 @@ import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertStatement; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement; import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement; +import org.apache.iotdb.db.queryengine.plan.statement.crud.PipeEnrichedInsertBaseStatement; import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement; import org.apache.iotdb.db.queryengine.plan.statement.internal.InternalBatchActivateTemplateStatement; import org.apache.iotdb.db.queryengine.plan.statement.internal.InternalCreateMultiTimeSeriesStatement; @@ -2424,6 +2425,37 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> } } + @Override + public Analysis visitPipeEnrichedInsert( + PipeEnrichedInsertBaseStatement pipeEnrichedInsertBaseStatement, MPPQueryContext context) { + Analysis analysis; + + final InsertBaseStatement insertBaseStatement = + pipeEnrichedInsertBaseStatement.getInsertBaseStatement(); + if (insertBaseStatement instanceof InsertTabletStatement) { + analysis = visitInsertTablet((InsertTabletStatement) insertBaseStatement, context); + } else if (insertBaseStatement instanceof InsertMultiTabletsStatement) { + analysis = + visitInsertMultiTablets((InsertMultiTabletsStatement) insertBaseStatement, context); + } else if (insertBaseStatement instanceof InsertRowStatement) { + analysis = visitInsertRow((InsertRowStatement) insertBaseStatement, context); + } else if (insertBaseStatement instanceof InsertRowsStatement) { + analysis = visitInsertRows((InsertRowsStatement) insertBaseStatement, context); + } else if (insertBaseStatement instanceof InsertRowsOfOneDeviceStatement) { + analysis = + visitInsertRowsOfOneDevice((InsertRowsOfOneDeviceStatement) insertBaseStatement, context); + } else { + throw new UnsupportedOperationException( + "Unsupported insert statement type: " + insertBaseStatement.getClass().getName()); + } + + // statement may be changed because of logical view + pipeEnrichedInsertBaseStatement.setInsertBaseStatement( + (InsertBaseStatement) analysis.getStatement()); + analysis.setStatement(pipeEnrichedInsertBaseStatement); + return analysis; + } + private void validateSchema( Analysis analysis, InsertBaseStatement insertStatement, MPPQueryContext context) { final long startTime = System.nanoTime(); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/PipeEnrichedInsertBaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/PipeEnrichedInsertBaseStatement.java index 0abe0a6eaa9..10834b20ecc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/PipeEnrichedInsertBaseStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/PipeEnrichedInsertBaseStatement.java @@ -35,7 +35,7 @@ import java.util.Map; public class PipeEnrichedInsertBaseStatement extends InsertBaseStatement { - private final InsertBaseStatement insertBaseStatement; + private InsertBaseStatement insertBaseStatement; public PipeEnrichedInsertBaseStatement(InsertBaseStatement insertBaseStatement) { statementType = StatementType.PIPE_ENRICHED_INSERT; @@ -46,6 +46,10 @@ public class PipeEnrichedInsertBaseStatement extends InsertBaseStatement { return insertBaseStatement; } + public void setInsertBaseStatement(InsertBaseStatement insertBaseStatement) { + this.insertBaseStatement = insertBaseStatement; + } + @Override public <R, C> R accept(StatementVisitor<R, C> visitor, C context) { return visitor.visitPipeEnrichedInsert(this, context);
