This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch TableModelIngestion in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit b2fef2ca40cba553f3b4947fe22cfd2fff4f10c9 Merge: f09ad546ee4 bbb7846f4ce Author: jt2594838 <[email protected]> AuthorDate: Tue Jun 18 14:21:10 2024 +0800 Merge branch 'ty/TableModelGrammar' into TableModelIngestion # Conflicts: # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java .../it/partition/IoTDBPartitionGetterIT.java | 19 +- .../consensus/request/ConfigPhysicalPlan.java | 4 + .../consensus/request/ConfigPhysicalPlanType.java | 1 + .../request/write/table/AddTableColumnPlan.java | 93 ++++++ .../iotdb/confignode/manager/ConfigManager.java | 37 ++- .../iotdb/confignode/manager/ProcedureManager.java | 54 ++++ .../manager/partition/PartitionManager.java | 27 +- .../manager/schema/ClusterSchemaManager.java | 64 +++- .../persistence/executor/ConfigPlanExecutor.java | 3 + .../persistence/schema/ClusterSchemaInfo.java | 36 +++ .../confignode/persistence/schema/ConfigMTree.java | 39 ++- .../impl/schema/table/AddTableColumnProcedure.java | 329 +++++++++++++++++++++ .../state/schema/AddTableColumnState.java} | 18 +- .../procedure/store/ProcedureFactory.java | 6 + .../confignode/procedure/store/ProcedureType.java | 2 + .../thrift/ConfigNodeRPCServiceProcessor.java | 6 + .../hash/DeviceGroupHashExecutorManualTest.java | 13 +- .../iotdb/db/protocol/client/ConfigNodeClient.java | 7 + .../protocol/thrift/impl/ClientRPCServiceImpl.java | 23 +- .../impl/DataNodeInternalRPCServiceImpl.java | 22 ++ .../common/schematree/ClusterSchemaTree.java | 17 +- .../queryengine/common/schematree/ISchemaTree.java | 9 +- .../db/queryengine/plan/analyze/Analysis.java | 13 +- .../queryengine/plan/analyze/AnalyzeVisitor.java | 52 ++-- .../plan/analyze/ClusterPartitionFetcher.java | 31 +- .../plan/analyze/ExpressionAnalyzer.java | 5 +- .../queryengine/plan/analyze/TemplatedAnalyze.java | 15 +- .../analyze/cache/partition/PartitionCache.java | 90 +++--- .../cache/partition/StorageGroupCacheResult.java | 16 +- .../execution/config/TableConfigTaskVisitor.java | 3 +- .../config/executor/ClusterConfigTaskExecutor.java | 61 +++- .../config/executor/IConfigTaskExecutor.java | 9 + .../relational/AlterTableAddColumnTask.java | 96 ++++++ .../memory/StatementMemorySourceVisitor.java | 4 + .../TableModelStatementMemorySourceContext.java} | 24 +- .../TableModelStatementMemorySourceVisitor.java | 94 ++++++ .../db/queryengine/plan/parser/ASTVisitor.java | 7 +- .../plan/planner/distribution/SourceRewriter.java | 16 +- .../plan/planner/plan/node/PlanGraphPrinter.java | 54 ++++ .../node/metedata/write/ActivateTemplateNode.java | 4 +- .../node/metedata/write/AlterTimeSeriesNode.java | 2 +- .../metedata/write/BatchActivateTemplateNode.java | 4 +- .../write/CreateAlignedTimeSeriesNode.java | 4 +- .../metedata/write/CreateMultiTimeSeriesNode.java | 4 +- .../node/metedata/write/CreateTimeSeriesNode.java | 2 +- .../write/InternalBatchActivateTemplateNode.java | 4 +- .../write/InternalCreateMultiTimeSeriesNode.java | 4 +- .../write/InternalCreateTimeSeriesNode.java | 4 +- .../metedata/write/view/CreateLogicalViewNode.java | 2 +- .../planner/plan/node/write/DeleteDataNode.java | 3 +- .../planner/plan/node/write/InsertRowNode.java | 3 +- .../planner/plan/node/write/InsertRowsNode.java | 2 +- .../plan/node/write/InsertRowsOfOneDeviceNode.java | 3 +- .../planner/plan/node/write/InsertTabletNode.java | 3 +- .../plan/relational/analyzer/Analysis.java | 20 +- .../relational/analyzer/StatementAnalyzer.java | 3 +- .../relational/cost/CachingTableStatsProvider.java | 51 ---- .../plan/relational/cost/ColumnStatistics.java | 156 ---------- .../plan/relational/cost/DoubleRange.java | 104 ------- .../queryengine/plan/relational/cost/Estimate.java | 84 ------ .../plan/relational/cost/StatsUtil.java | 43 --- .../plan/relational/cost/TableStatistics.java | 112 ------- .../plan/relational/cost/TableStatsProvider.java | 20 -- .../relational/metadata/TableMetadataImpl.java | 2 +- .../plan/relational/planner/LogicalPlanner.java | 16 +- .../relational/planner/RelationalModelPlanner.java | 19 +- .../planner/optimizations/IndexScan.java | 71 +++-- .../plan/relational/sql/ast/ColumnDefinition.java | 20 +- .../plan/relational/sql/parser/AstBuilder.java | 21 +- .../plan/scheduler/load/LoadTsFileScheduler.java | 8 +- .../metadata/CountTimeSlotListStatement.java | 7 +- .../statement/metadata/GetRegionIdStatement.java | 7 +- .../metadata/GetTimeSlotListStatement.java | 7 +- .../db/schemaengine/table/DataNodeTableCache.java | 64 ++++ .../iotdb/db/schemaengine/table/ITableCache.java | 12 + .../plan/analyze/FakePartitionFetcherImpl.java | 2 +- .../plan/analyze/cache/PartitionCacheTest.java | 119 +++++--- .../planner/node/write/WritePlanNodeSplitTest.java | 19 +- .../iotdb/commons/partition/DataPartition.java | 41 ++- .../commons/partition/DataPartitionQueryParam.java | 20 +- .../apache/iotdb/commons/partition/Partition.java | 6 +- .../iotdb/commons/partition/SchemaPartition.java | 12 +- .../executor/SeriesPartitionExecutor.java | 7 + .../partition/executor/hash/APHashExecutor.java | 33 +++ .../partition/executor/hash/BKDRHashExecutor.java | 24 ++ .../partition/executor/hash/JSHashExecutor.java | 23 ++ .../partition/executor/hash/SDBMHashExecutor.java | 23 ++ .../apache/iotdb/commons/path/PathPatternTree.java | 16 +- .../schema/table/AlterTableOperationType.java} | 26 +- .../apache/iotdb/commons/schema/table/TsTable.java | 14 + .../schema/table/TsTableInternalRPCType.java | 12 +- .../table/column/TsTableColumnSchemaUtil.java | 37 +++ .../org/apache/iotdb/commons/utils/PathUtils.java | 5 +- .../partition/executor/HashExecutorTest.java | 63 ++++ .../iotdb/commons/path/PathPatternTreeTest.java | 5 +- .../src/main/thrift/confignode.thrift | 17 +- 96 files changed, 1858 insertions(+), 980 deletions(-) diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java index 33247de6a9e,dcf7f36021b..f33266ae0c6 --- 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 @@@ -2736,22 -2783,17 +2747,22 @@@ public class AnalyzeVisitor extends Sta InsertRowsOfOneDeviceStatement realStatement = (InsertRowsOfOneDeviceStatement) realInsertStatement; DataPartitionQueryParam dataPartitionQueryParam = new DataPartitionQueryParam(); - dataPartitionQueryParam.setDevicePath(realStatement.getDevicePath().getFullPath()); + dataPartitionQueryParam.setDeviceID(realStatement.getDevicePath().getIDeviceIDAsFullDevice()); dataPartitionQueryParam.setTimePartitionSlotList(realStatement.getTimePartitionSlots()); - return getAnalysisForWriting( + getAnalysisForWriting( analysis, Collections.singletonList(dataPartitionQueryParam), - context.getSession().getUserName()); + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); } else { - return computeAnalysisForInsertRows( - analysis, (InsertRowsStatement) realInsertStatement, context.getSession().getUserName()); + computeAnalysisForInsertRows( + analysis, + (InsertRowsStatement) realInsertStatement, + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); } + return analysis; } @Override diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java index 8a737554b38,4d019248d86..e8f899a43d0 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analysis.java @@@ -624,18 -617,14 +629,19 @@@ public class Analysis implements IAnaly // && ((QueryStatement) statement).isAggregationQuery()); } + @Override + public void setDataPartitionInfo(DataPartition dataPartition) { + this.dataPartition = dataPartition; + } + @Override public TsBlock constructResultForMemorySource(MPPQueryContext context) { - StatementMemorySource source = - new StatementMemorySource( - new TsBlock(0), respDatasetHeader == null ? EMPTY_HEADER : respDatasetHeader); - setRespDatasetHeader(source.getDatasetHeader()); - return source.getTsBlock(); + requireNonNull(getStatement(), "root statement is analysis is null"); + StatementMemorySource memorySource = + new TableModelStatementMemorySourceVisitor() + .process(getStatement(), new TableModelStatementMemorySourceContext(context, this)); + setRespDatasetHeader(memorySource.getDatasetHeader()); + return memorySource.getTsBlock(); } @Override
