This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch TreeToTableView in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 20f3fed8c32c41a7d3b8204302ed6d50e98b2892 Merge: 716e8ff9fb4 97046f9023c Author: JackieTien97 <[email protected]> AuthorDate: Fri Dec 20 20:13:40 2024 +0800 resolve conflicts dependencies.json | 2 +- .../iotdb/db/it/IoTDBSetConfigurationIT.java | 8 + .../org/apache/iotdb/db/it/IoTDBSimpleQueryIT.java | 1 - .../db/it/schema/IoTDBDeleteStorageGroupIT.java | 4 +- .../pipe/it/tablemodel/IoTDBPipeClusterIT.java | 3 +- .../it/db/it/IoTDBFlushQueryTableIT.java | 8 +- .../relational/it/schema/IoTDBDatabaseIT.java | 57 +- .../apache/iotdb/tools/it/ExportTsFileTestIT.java | 4 +- .../org/apache/iotdb/tool/tsfile/ExportTsFile.java | 31 +- .../confignode/conf/ConfigNodeDescriptor.java | 600 ++--- .../request/read/database/CountDatabasePlan.java | 15 +- .../request/read/database/GetDatabasePlan.java | 7 +- .../database/AdjustMaxRegionGroupNumPlan.java | 20 +- .../request/write/quota/SetSpaceQuotaPlan.java | 2 +- .../write/region/CreateRegionGroupsPlan.java | 39 +- .../statemachine/ConfigRegionStateMachine.java | 4 +- .../exception/NoAvailableRegionGroupException.java | 2 +- .../confignode/manager/ClusterQuotaManager.java | 8 +- .../iotdb/confignode/manager/ConfigManager.java | 128 +- .../apache/iotdb/confignode/manager/IManager.java | 6 +- .../iotdb/confignode/manager/ProcedureManager.java | 9 +- .../iotdb/confignode/manager/load/LoadManager.java | 4 +- .../manager/load/balancer/PartitionBalancer.java | 18 +- .../manager/load/balancer/RegionBalancer.java | 28 +- .../confignode/manager/load/cache/LoadCache.java | 2 +- .../manager/partition/PartitionManager.java | 143 +- .../manager/schema/ClusterSchemaManager.java | 102 +- .../persistence/executor/ConfigPlanExecutor.java | 14 +- .../partition/DatabasePartitionTable.java | 5 +- .../persistence/partition/PartitionInfo.java | 47 +- .../persistence/schema/ClusterSchemaInfo.java | 324 +-- .../confignode/persistence/schema/ConfigMTree.java | 57 +- .../procedure/env/ConfigNodeProcedureEnv.java | 15 +- .../impl/region/CreateRegionGroupsProcedure.java | 51 +- .../impl/schema/AlterLogicalViewProcedure.java | 2 +- .../impl/schema/DeactivateTemplateProcedure.java | 2 +- .../impl/schema/DeleteTimeSeriesProcedure.java | 2 +- .../impl/schema/table/CreateTableProcedure.java | 119 +- .../impl/schema/table/DeleteDevicesProcedure.java | 33 +- .../schema/table/DropTableColumnProcedure.java | 23 +- .../impl/schema/table/DropTableProcedure.java | 43 +- .../procedure/state/schema/CreateTableState.java | 1 - .../thrift/ConfigNodeRPCServiceProcessor.java | 75 +- .../request/ConfigPhysicalPlanSerDeTest.java | 21 +- .../confignode/persistence/PartitionInfoTest.java | 16 +- .../persistence/schema/ClusterSchemaInfoTest.java | 2 +- .../persistence/schema/ConfigMTreeTest.java | 15 +- .../schema/table/AddTableColumnProcedureTest.java | 2 +- .../schema/table/CreateTableProcedureTest.java | 3 +- .../schema/table/DeleteDevicesProcedureTest.java | 2 +- .../schema/table/DropTableColumnProcedureTest.java | 2 +- .../impl/schema/table/DropTableProcedureTest.java | 2 +- .../table/RenameTableColumnProcedureTest.java | 2 +- .../table/SetTablePropertiesProcedureTest.java | 2 +- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 2475 ++++++-------------- .../db/conf/rest/IoTDBRestServiceDescriptor.java | 92 +- .../dataregion/DataExecutionVisitor.java | 4 + .../exception/metadata/DatabaseModelException.java | 53 - .../deletion/persist/PageCacheDeletionBuffer.java | 2 +- .../db/pipe/event/common/PipeInsertionEvent.java | 6 +- ...oricalDataRegionTsFileAndDeletionExtractor.java | 9 +- .../realtime/PipeRealtimeDataRegionExtractor.java | 4 +- .../protocol/thrift/IoTDBDataNodeReceiver.java | 5 +- .../iotdb/db/protocol/client/ConfigNodeClient.java | 4 +- .../impl/DataNodeInternalRPCServiceImpl.java | 4 +- .../thrift/impl/DataNodeRegionManager.java | 14 +- .../db/queryengine/plan/analyze/Analysis.java | 27 +- .../db/queryengine/plan/analyze/AnalyzeUtils.java | 69 +- .../queryengine/plan/analyze/AnalyzeVisitor.java | 21 - .../plan/analyze/ClusterPartitionFetcher.java | 75 +- .../db/queryengine/plan/analyze/IAnalysis.java | 2 +- .../plan/analyze/IPartitionFetcher.java | 16 +- .../analyze/cache/partition/PartitionCache.java | 101 +- .../load/LoadTsFileToTableModelAnalyzer.java | 5 +- .../queryengine/plan/execution/QueryExecution.java | 4 +- .../execution/config/TableConfigTaskVisitor.java | 7 +- .../config/executor/ClusterConfigTaskExecutor.java | 45 +- .../relational/AbstractAlterOrDropTableTask.java | 4 +- .../metadata/relational/CreateTableTask.java | 4 +- .../config/metadata/relational/ShowDBTask.java | 13 +- .../plan/execution/config/sys/FlushTask.java | 18 +- .../db/queryengine/plan/parser/ASTVisitor.java | 12 +- .../distribution/WriteFragmentParallelPlanner.java | 2 +- .../node/write/RelationalInsertTabletNode.java | 14 +- .../plan/relational/analyzer/Analysis.java | 54 +- .../relational/metadata/TableMetadataImpl.java | 18 +- .../fetcher/cache/TableDeviceSchemaCache.java | 63 +- .../plan/relational/planner/RelationPlanner.java | 5 +- .../distribute/TableDistributedPlanGenerator.java | 67 +- .../node/schema/CreateOrUpdateTableDeviceNode.java | 5 +- .../schema/TableDeviceAttributeUpdateNode.java | 9 +- .../optimizations/PushPredicateIntoTableScan.java | 38 +- .../queryengine/plan/relational/sql/ast/Flush.java | 4 +- .../plan/relational/sql/parser/AstBuilder.java | 46 +- .../statement/metadata/ShowDatabaseStatement.java | 6 - .../plan/statement/sys/FlushStatement.java | 33 +- .../apache/iotdb/db/schemaengine/SchemaEngine.java | 60 +- .../schemaregion/ISchemaRegionParams.java | 3 +- .../schemaregion/SchemaRegionParams.java | 11 +- .../GeneralRegionAttributeSecurityService.java | 6 +- .../schemaregion/impl/SchemaRegionMemoryImpl.java | 13 +- .../schemaregion/impl/SchemaRegionPBTreeImpl.java | 6 +- .../mtree/impl/mem/MTreeBelowSGMemoryImpl.java | 2 +- .../db/schemaengine/table/DataNodeTableCache.java | 45 +- .../schemaengine/table/InformationSchemaUtils.java | 3 +- .../iotdb/db/storageengine/StorageEngine.java | 27 +- .../db/storageengine/dataregion/DataRegion.java | 33 +- .../DefaultCompactionTaskComparatorImpl.java | 16 +- .../impl/NewSizeTieredCompactionSelector.java | 2 +- .../wal/allocation/FirstCreateStrategy.java | 1 + .../storageengine/dataregion/wal/node/WALNode.java | 8 +- .../db/tools/schema/SRStatementGenerator.java | 3 +- .../schemaRegion/AbstractSchemaRegionTest.java | 4 +- .../SchemaRegionSimpleRecoverTest.java | 5 +- .../schemaRegion/SchemaRegionTableDeviceTest.java | 10 +- .../schemaRegion/SchemaRegionTestUtil.java | 3 +- .../schemaRegion/SchemaStatisticsTest.java | 2 +- .../plan/analyze/FakePartitionFetcherImpl.java | 5 - .../plan/analyze/cache/PartitionCacheTest.java | 8 +- .../plan/planner/distribution/Util.java | 5 - .../plan/planner/distribution/Util2.java | 5 - .../plan/relational/analyzer/AnalyzerTest.java | 49 +- .../analyzer/MockTableModelDataPartition.java | 17 +- .../plan/relational/analyzer/TSBSMetadata.java | 5 - .../plan/relational/analyzer/TestMatadata.java | 68 +- .../DataNodeInternalRPCServiceImplTest.java | 3 +- .../compaction/CompactionTaskComparatorTest.java | 2 +- .../NewSizeTieredCompactionSelectorTest.java | 30 + .../org/apache/iotdb/db/tools/MLogParserTest.java | 5 +- .../db/utils/SchemaRegionSnapshotParserTest.java | 89 +- .../reporter/prometheus/PrometheusReporter.java | 5 +- iotdb-core/node-commons/pom.xml | 4 +- .../commons/client/sync/ByteBuddyEnhancer.java | 75 - .../sync/SyncThriftClientWithErrorHandler.java | 30 +- .../iotdb/commons/conf/ConfigurationFileUtils.java | 22 +- .../iotdb/commons/partition/DataPartition.java | 55 +- .../iotdb/commons/partition/SchemaPartition.java | 10 +- .../org/apache/iotdb/commons/path/PartialPath.java | 11 +- .../schema/column/ColumnHeaderConstant.java | 9 +- .../commons/schema/table/InformationSchema.java | 5 +- .../org/apache/iotdb/commons/utils/PathUtils.java | 8 +- .../src/main/thrift/confignode.thrift | 4 +- pom.xml | 8 +- 143 files changed, 2458 insertions(+), 3938 deletions(-) diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java index 7911b868070,dbab02fcf2c..bc0e269f468 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java @@@ -504,11 -499,15 +505,12 @@@ public class TableDistributedPlanGenera return Collections.singletonList(node); } - List<PlanNode> resultTableScanNodeList = new ArrayList<>(); + final List<PlanNode> resultTableScanNodeList = new ArrayList<>(); TRegionReplicaSet mostUsedDataRegion = null; int maxDeviceEntrySizeOfTableScan = 0; - for (Map.Entry<TRegionReplicaSet, DeviceTableScanNode> entry : tableScanNodeMap.entrySet()) { - DeviceTableScanNode subDeviceTableScanNode = entry.getValue(); + for (final Map.Entry<TRegionReplicaSet, DeviceTableScanNode> entry : + tableScanNodeMap.entrySet()) { - final TRegionReplicaSet regionReplicaSet = entry.getKey(); + final DeviceTableScanNode subDeviceTableScanNode = entry.getValue(); - subDeviceTableScanNode.setPlanNodeId(queryId.genPlanNodeId()); - subDeviceTableScanNode.setRegionReplicaSet(regionReplicaSet); resultTableScanNodeList.add(subDeviceTableScanNode); if (mostUsedDataRegion == null diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java index dd6bd86e0c2,420e682f723..2a208226653 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java @@@ -449,12 -449,8 +450,12 @@@ public class PushPredicateIntoTableSca attributeColumns, queryContext); tableScanNode.setDeviceEntries(deviceEntries); + if (deviceEntries.stream() + .anyMatch(deviceEntry -> deviceEntry instanceof NonAlignedAlignedDeviceEntry)) { + tableScanNode.setContainsNonAlignedDevice(); + } - long schemaFetchCost = System.nanoTime() - startTime; + final long schemaFetchCost = System.nanoTime() - startTime; QueryPlanCostMetricSet.getInstance() .recordPlanCost(TABLE_TYPE, SCHEMA_FETCHER, schemaFetchCost); queryContext.setFetchSchemaCost(schemaFetchCost); diff --cc iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java index 4a8d727cee3,a26aa698085..e980e2995c6 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/TestMatadata.java @@@ -122,11 -115,8 +122,11 @@@ public class TestMatadata implements Me public static final String DB2 = "db2"; public static final String TABLE2 = "table2"; + private static final String TREE_VIEW_DB = "tree_view_db"; + private static final String DEVICE_VIEW_TEST_TABLE = "root.test.device_view"; + @Override - public boolean tableExists(QualifiedObjectName name) { + public boolean tableExists(final QualifiedObjectName name) { return name.getDatabaseName().equalsIgnoreCase(DB1) && name.getObjectName().equalsIgnoreCase(TABLE1); } @@@ -271,27 -240,10 +273,27 @@@ @Override public List<DeviceEntry> indexScan( - QualifiedObjectName tableName, - List<Expression> expressionList, - List<String> attributeColumns, - MPPQueryContext context) { + final QualifiedObjectName tableName, + final List<Expression> expressionList, + final List<String> attributeColumns, + final MPPQueryContext context) { + if (tableName.getDatabaseName().equals(TREE_VIEW_DB)) { + if (expressionList.isEmpty()) { + return ImmutableList.of( + new AlignedDeviceEntry( + new StringArrayDeviceID(DEVICE_3.split("\\.")), ImmutableList.of()), + new AlignedDeviceEntry( + new StringArrayDeviceID(DEVICE_5.split("\\.")), ImmutableList.of()), + new NonAlignedAlignedDeviceEntry( + new StringArrayDeviceID(DEVICE_4.split("\\.")), ImmutableList.of())); + } + + return ImmutableList.of( + new AlignedDeviceEntry( + new StringArrayDeviceID(DEVICE_3.split("\\.")), ImmutableList.of()), + new AlignedDeviceEntry( + new StringArrayDeviceID(DEVICE_5.split("\\.")), ImmutableList.of())); + } if (expressionList.size() == 2) { if (compareEqualsMatch(expressionList.get(0), "tag1", "beijing") @@@ -345,16 -286,16 +347,17 @@@ } return Arrays.asList( - new DeviceEntry(new StringArrayDeviceID(DEVICE_4.split("\\.")), DEVICE_4_ATTRIBUTES), - new DeviceEntry(new StringArrayDeviceID(DEVICE_1.split("\\.")), DEVICE_1_ATTRIBUTES), - new DeviceEntry(new StringArrayDeviceID(DEVICE_6.split("\\.")), DEVICE_6_ATTRIBUTES), - new DeviceEntry(new StringArrayDeviceID(DEVICE_5.split("\\.")), DEVICE_5_ATTRIBUTES), - new DeviceEntry(new StringArrayDeviceID(DEVICE_3.split("\\.")), DEVICE_3_ATTRIBUTES), - new DeviceEntry(new StringArrayDeviceID(DEVICE_2.split("\\.")), DEVICE_2_ATTRIBUTES)); + new AlignedDeviceEntry(new StringArrayDeviceID(DEVICE_4.split("\\.")), DEVICE_4_ATTRIBUTES), + new AlignedDeviceEntry(new StringArrayDeviceID(DEVICE_1.split("\\.")), DEVICE_1_ATTRIBUTES), + new AlignedDeviceEntry(new StringArrayDeviceID(DEVICE_6.split("\\.")), DEVICE_6_ATTRIBUTES), + new AlignedDeviceEntry(new StringArrayDeviceID(DEVICE_5.split("\\.")), DEVICE_5_ATTRIBUTES), + new AlignedDeviceEntry(new StringArrayDeviceID(DEVICE_3.split("\\.")), DEVICE_3_ATTRIBUTES), + new AlignedDeviceEntry( + new StringArrayDeviceID(DEVICE_2.split("\\.")), DEVICE_2_ATTRIBUTES)); } - private boolean compareEqualsMatch(Expression expression, String idOrAttr, String value) { + private boolean compareEqualsMatch( + final Expression expression, final String idOrAttr, final String value) { if (expression instanceof ComparisonExpression && ((ComparisonExpression) expression).getOperator() == ComparisonExpression.Operator.EQUAL) {
