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 f09ad546ee45dc3d967857eac25bbfd3147e6e48 Author: DESKTOP-L0L5GPJ\jt <[email protected]> AuthorDate: Thu Jun 13 16:45:27 2024 +0800 temp save --- .../protocol/thrift/impl/ClientRPCServiceImpl.java | 46 ++++++----- .../iotdb/db/queryengine/plan/Coordinator.java | 1 - .../db/queryengine/plan/analyze/AnalyzeUtils.java | 64 +++++++++------ .../queryengine/plan/analyze/AnalyzeVisitor.java | 49 ++++++++--- .../db/queryengine/plan/analyze/IAnalysis.java | 2 +- .../plan/analyze/schema/ISchemaAutoCreation.java | 5 +- .../plan/analyze/schema/SchemaValidator.java | 7 +- .../plan/parser/StatementGenerator.java | 15 ++-- .../queryengine/plan/planner/LogicalPlanner.java | 3 +- .../planner/plan/node/load/LoadTsFileNode.java | 7 +- .../relational/analyzer/StatementAnalyzer.java | 32 +++----- .../plan/relational/metadata/Metadata.java | 1 - .../plan/relational/sql/ast/InsertTablet.java | 36 ++++---- .../relational/sql/ast/WrappedInsertStatement.java | 96 +++++++--------------- .../plan/relational/sql/ast/WrappedStatement.java | 13 ++- .../utils/ConversionUtils.java} | 30 ++----- .../plan/statement/crud/InsertBaseStatement.java | 22 +++++ .../plan/statement/crud/InsertTabletStatement.java | 24 +----- .../schema/table/column/TsTableColumnCategory.java | 2 +- 19 files changed, 221 insertions(+), 234 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java index ae4339991b7..0455eb26069 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java @@ -733,7 +733,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { true, true), AggregationStep.SINGLE, - Collections.singletonList(new InputLocation[]{new InputLocation(0, 0)})); + Collections.singletonList(new InputLocation[] {new InputLocation(0, 0)})); GroupByTimeParameter groupByTimeParameter = new GroupByTimeParameter( @@ -761,7 +761,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES, !TSDataType.BLOB.equals(dataType) || (!TAggregationType.LAST_VALUE.equals(aggregationType) - && !TAggregationType.FIRST_VALUE.equals(aggregationType))); + && !TAggregationType.FIRST_VALUE.equals(aggregationType))); } else { path = new NonAlignedFullPath(Factory.DEFAULT_FACTORY.create(device), measurementSchema); operator = @@ -777,7 +777,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { DEFAULT_MAX_TSBLOCK_SIZE_IN_BYTES, !TSDataType.BLOB.equals(dataType) || (!TAggregationType.LAST_VALUE.equals(aggregationType) - && !TAggregationType.FIRST_VALUE.equals(aggregationType))); + && !TAggregationType.FIRST_VALUE.equals(aggregationType))); } try { @@ -1222,7 +1222,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { public TSStatus closeSession(TSCloseSessionReq req) { return new TSStatus( !SESSION_MANAGER.closeSession( - SESSION_MANAGER.getCurrSession(), COORDINATOR::cleanupQueryExecution) + SESSION_MANAGER.getCurrSession(), COORDINATOR::cleanupQueryExecution) ? RpcUtils.getStatus(TSStatusCode.NOT_LOGIN) : RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); } @@ -2080,19 +2080,25 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { long queryId = SESSION_MANAGER.requestQueryId(); ExecutionResult result; if (statement.isWriteToTable()) { - result = COORDINATOR.executeForTableModel(statement, - relationSqlParser, clientSession, - queryId, - SESSION_MANAGER.getSessionInfo(clientSession), "", metadata, - config.getConnectionTimeoutInMS()); + result = + COORDINATOR.executeForTableModel( + statement, + relationSqlParser, + clientSession, + queryId, + SESSION_MANAGER.getSessionInfo(clientSession), + "", + metadata, + config.getConnectionTimeoutInMS()); } else { - result = COORDINATOR.executeForTreeModel( - statement, - queryId, - SESSION_MANAGER.getSessionInfo(clientSession), - "", - partitionFetcher, - schemaFetcher); + result = + COORDINATOR.executeForTreeModel( + statement, + queryId, + SESSION_MANAGER.getSessionInfo(clientSession), + "", + partitionFetcher, + schemaFetcher); } return result.status; } catch (IoTDBException e) { @@ -2822,9 +2828,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { "Log in failed. Either you are not authorized or the session has timed out."); } - /** - * Add stat of whole stage query into metrics - */ + /** Add stat of whole stage query into metrics */ private void addQueryLatency(StatementType statementType, long costTimeInNanos) { if (statementType == null) { return; @@ -2842,9 +2846,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler { statementType.name()); } - /** - * Add stat of operation into metrics - */ + /** Add stat of operation into metrics */ private void addStatementExecutionLatency( OperationType operation, String statementType, long costTime) { if (statementType == null) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java index fe20273f183..180edcea95d 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java @@ -340,7 +340,6 @@ public class Coordinator { return new QueryExecution(relationalModelPlanner, queryContext, executor); } - public IQueryExecution getQueryExecution(Long queryId) { return queryExecutionMap.get(queryId); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java index f1b9210c216..0728af062db 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java @@ -19,13 +19,6 @@ package org.apache.iotdb.db.queryengine.plan.analyze; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot; import org.apache.iotdb.commons.exception.IoTDBException; import org.apache.iotdb.commons.partition.DataPartition; @@ -40,9 +33,18 @@ import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement; import org.apache.iotdb.rpc.RpcUtils; import org.apache.iotdb.rpc.TSStatusCode; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + public class AnalyzeUtils { private static final PerformanceOverviewMetrics PERFORMANCE_OVERVIEW_METRICS = @@ -53,16 +55,21 @@ public class AnalyzeUtils { // util class } - public static void analyzeInsert(MPPQueryContext context, - InsertBaseStatement insertBaseStatement, Runnable schemaValidation, - DataPartitionQueryFunc partitionFetcher, IAnalysis analysis) { + public static InsertBaseStatement analyzeInsert( + MPPQueryContext context, + InsertBaseStatement insertBaseStatement, + Runnable schemaValidation, + DataPartitionQueryFunc partitionFetcher, + IAnalysis analysis, + boolean removeLogicalView) { context.setQueryType(QueryType.WRITE); insertBaseStatement.semanticCheck(); - validateSchema(analysis, insertBaseStatement, - schemaValidation); - InsertBaseStatement realStatement = removeLogicalView(analysis, insertBaseStatement); + validateSchema(analysis, insertBaseStatement, schemaValidation); + + InsertBaseStatement realStatement = + removeLogicalView ? removeLogicalView(analysis, insertBaseStatement) : insertBaseStatement; if (analysis.isFinishQueryAfterAnalyze()) { - return; + return realStatement; } analysis.setRealStatement(realStatement); @@ -77,18 +84,20 @@ public class AnalyzeUtils { getAnalysisForWriting( analysis, Collections.singletonList(dataPartitionQueryParam), - context.getSession().getUserName(), partitionFetcher); + context.getSession().getUserName(), + partitionFetcher); } else { computeAnalysisForMultiTablets( analysis, (InsertMultiTabletsStatement) realStatement, - context.getSession().getUserName(), partitionFetcher); + context.getSession().getUserName(), + partitionFetcher); } + return realStatement; } public static void validateSchema( - IAnalysis analysis, InsertBaseStatement insertStatement, - Runnable schemaValidation) { + IAnalysis analysis, InsertBaseStatement insertStatement, Runnable schemaValidation) { final long startTime = System.nanoTime(); try { schemaValidation.run(); @@ -136,7 +145,9 @@ public class AnalyzeUtils { /** get analysis according to statement and params */ public static void getAnalysisForWriting( - IAnalysis analysis, List<DataPartitionQueryParam> dataPartitionQueryParams, String userName, + IAnalysis analysis, + List<DataPartitionQueryParam> dataPartitionQueryParams, + String userName, DataPartitionQueryFunc partitionQueryFunc) { DataPartition dataPartition = @@ -153,7 +164,9 @@ public class AnalyzeUtils { } public static void computeAnalysisForInsertRows( - IAnalysis analysis, InsertRowsStatement insertRowsStatement, String userName, + IAnalysis analysis, + InsertRowsStatement insertRowsStatement, + String userName, DataPartitionQueryFunc partitionFetcher) { Map<String, Set<TTimePartitionSlot>> dataPartitionQueryParamMap = new HashMap<>(); for (InsertRowStatement insertRowStatement : insertRowsStatement.getInsertRowStatementList()) { @@ -175,8 +188,10 @@ public class AnalyzeUtils { } public static void computeAnalysisForMultiTablets( - IAnalysis analysis, InsertMultiTabletsStatement insertMultiTabletsStatement, String userName - , DataPartitionQueryFunc partitionFetcher) { + IAnalysis analysis, + InsertMultiTabletsStatement insertMultiTabletsStatement, + String userName, + DataPartitionQueryFunc partitionFetcher) { Map<String, Set<TTimePartitionSlot>> dataPartitionQueryParamMap = new HashMap<>(); for (InsertTabletStatement insertTabletStatement : insertMultiTabletsStatement.getInsertTabletStatementList()) { @@ -198,7 +213,8 @@ public class AnalyzeUtils { } public interface DataPartitionQueryFunc { - DataPartition queryDataPartition(List<DataPartitionQueryParam> dataPartitionQueryParams, - String userName); + + DataPartition queryDataPartition( + List<DataPartitionQueryParam> dataPartitionQueryParams, String userName); } } 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 f8904a2b448..33247de6a9e 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 @@ -2618,9 +2618,13 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> public Analysis visitInsertTablet( InsertTabletStatement insertTabletStatement, MPPQueryContext context) { Analysis analysis = new Analysis(); - AnalyzeUtils.analyzeInsert(context, insertTabletStatement, + AnalyzeUtils.analyzeInsert( + context, + insertTabletStatement, () -> SchemaValidator.validate(schemaFetcher, insertTabletStatement, context), - partitionFetcher::getOrCreateDataPartition, analysis); + partitionFetcher::getOrCreateDataPartition, + analysis, + true); return analysis; } @@ -2629,7 +2633,9 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> context.setQueryType(QueryType.WRITE); insertRowStatement.semanticCheck(); Analysis analysis = new Analysis(); - validateSchema(analysis, insertRowStatement, + validateSchema( + analysis, + insertRowStatement, () -> SchemaValidator.validate(schemaFetcher, insertRowStatement, context)); InsertBaseStatement realInsertStatement = removeLogicalView(analysis, insertRowStatement); if (analysis.isFinishQueryAfterAnalyze()) { @@ -2647,11 +2653,14 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> getAnalysisForWriting( analysis, Collections.singletonList(dataPartitionQueryParam), - context.getSession().getUserName(), partitionFetcher::getOrCreateDataPartition); + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); } else { computeAnalysisForInsertRows( - analysis, (InsertRowsStatement) realInsertStatement, context.getSession().getUserName() - , partitionFetcher::getOrCreateDataPartition); + analysis, + (InsertRowsStatement) realInsertStatement, + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); } return analysis; } @@ -2662,7 +2671,9 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> context.setQueryType(QueryType.WRITE); insertRowsStatement.semanticCheck(); Analysis analysis = new Analysis(); - validateSchema(analysis, insertRowsStatement, + validateSchema( + analysis, + insertRowsStatement, () -> SchemaValidator.validate(schemaFetcher, insertRowsStatement, context)); InsertRowsStatement realInsertRowsStatement = (InsertRowsStatement) removeLogicalView(analysis, insertRowsStatement); @@ -2672,7 +2683,10 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> analysis.setRealStatement(realInsertRowsStatement); computeAnalysisForInsertRows( - analysis, realInsertRowsStatement, context.getSession().getUserName(), partitionFetcher::getOrCreateDataPartition); + analysis, + realInsertRowsStatement, + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); return analysis; } @@ -2682,7 +2696,9 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> context.setQueryType(QueryType.WRITE); insertMultiTabletsStatement.semanticCheck(); Analysis analysis = new Analysis(); - validateSchema(analysis, insertMultiTabletsStatement, + validateSchema( + analysis, + insertMultiTabletsStatement, () -> SchemaValidator.validate(schemaFetcher, insertMultiTabletsStatement, context)); InsertMultiTabletsStatement realStatement = (InsertMultiTabletsStatement) removeLogicalView(analysis, insertMultiTabletsStatement); @@ -2692,7 +2708,10 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> analysis.setRealStatement(realStatement); computeAnalysisForMultiTablets( - analysis, realStatement, context.getSession().getUserName(), partitionFetcher::getOrCreateDataPartition); + analysis, + realStatement, + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); return analysis; } @@ -2702,7 +2721,9 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> context.setQueryType(QueryType.WRITE); insertRowsOfOneDeviceStatement.semanticCheck(); Analysis analysis = new Analysis(); - validateSchema(analysis, insertRowsOfOneDeviceStatement, + validateSchema( + analysis, + insertRowsOfOneDeviceStatement, () -> SchemaValidator.validate(schemaFetcher, insertRowsOfOneDeviceStatement, context)); InsertBaseStatement realInsertStatement = removeLogicalView(analysis, insertRowsOfOneDeviceStatement); @@ -2725,8 +2746,10 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> partitionFetcher::getOrCreateDataPartition); } else { computeAnalysisForInsertRows( - analysis, (InsertRowsStatement) realInsertStatement, context.getSession().getUserName() - , partitionFetcher::getOrCreateDataPartition); + analysis, + (InsertRowsStatement) realInsertStatement, + context.getSession().getUserName(), + partitionFetcher::getOrCreateDataPartition); } return analysis; } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java index 97d29a81c7d..23a04679e64 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/IAnalysis.java @@ -26,8 +26,8 @@ import org.apache.iotdb.commons.partition.SchemaPartition; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; import org.apache.iotdb.db.queryengine.common.header.DatasetHeader; import org.apache.iotdb.db.queryengine.plan.planner.plan.TimePredicate; - import org.apache.iotdb.db.queryengine.plan.statement.Statement; + import org.apache.tsfile.read.common.block.TsBlock; import java.util.List; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java index 55f8dd5210c..1d6468583ad 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java @@ -39,8 +39,9 @@ public interface ISchemaAutoCreation { TSDataType getDataType(int index); - //TODO: Check necessity because all implementations return null + // TODO: Check necessity because all implementations return null TSEncoding getEncoding(int index); - //TODO: Check necessity because all implementations return null + + // TODO: Check necessity because all implementations return null CompressionType getCompressionType(int index); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java index 1406698cc42..96c55a05b0e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/SchemaValidator.java @@ -60,15 +60,16 @@ public class SchemaValidator { public static void validate( Metadata metadata, WrappedInsertStatement insertStatement, MPPQueryContext context) { try { - metadata.fetchAndComputeSchemaWithAutoCreate(insertStatement.getSchemaValidationList(), - context); + String databaseName = context.getSession().getDatabaseName().get(); + // metadata.validateTableHeaderSchema(databaseName); + // metadata.fetchAndComputeSchemaWithAutoCreate( + // insertStatement.getSchemaValidationList(), context); insertStatement.updateAfterSchemaValidation(context); } catch (QueryProcessException e) { throw new SemanticException(e.getMessage()); } } - public static ISchemaTree validate( ISchemaFetcher schemaFetcher, List<PartialPath> devicePaths, diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java index 288f54fd77c..ef4314b4d24 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java @@ -23,6 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TAggregationType; import org.apache.iotdb.commons.exception.IllegalPathException; import org.apache.iotdb.commons.exception.MetadataException; import org.apache.iotdb.commons.path.PartialPath; +import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.commons.service.metric.PerformanceOverviewMetrics; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.qp.sql.IoTDBSqlParser; @@ -35,7 +36,6 @@ import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand; import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand; import org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression; -import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ColumnDefinition.ColumnCategory; import org.apache.iotdb.db.queryengine.plan.statement.Statement; import org.apache.iotdb.db.queryengine.plan.statement.component.FromComponent; import org.apache.iotdb.db.queryengine.plan.statement.component.GroupByTimeComponent; @@ -338,13 +338,16 @@ public class StatementGenerator { insertStatement.setAligned(insertTabletReq.isAligned); insertStatement.setWriteToTable(insertTabletReq.isWriteToTable()); if (insertTabletReq.isWriteToTable()) { - if (!insertTabletReq.isSetColumnCategories() || insertTabletReq.getColumnCategoriesSize() != insertTabletReq.getMeasurementsSize()) { - throw new IllegalArgumentException("Missing or invalid column categories for table " - + "insertion"); + if (!insertTabletReq.isSetColumnCategories() + || insertTabletReq.getColumnCategoriesSize() != insertTabletReq.getMeasurementsSize()) { + throw new IllegalArgumentException( + "Missing or invalid column categories for table " + "insertion"); } - ColumnCategory[] columnCategories = new ColumnCategory[insertTabletReq.columnCategories.size()]; + TsTableColumnCategory[] columnCategories = + new TsTableColumnCategory[insertTabletReq.columnCategories.size()]; for (int i = 0; i < columnCategories.length; i++) { - columnCategories[i] = ColumnCategory.values()[insertTabletReq.getColumnCategories().get(i)]; + columnCategories[i] = + TsTableColumnCategory.deserialize(insertTabletReq.getColumnCategories().get(i)); } insertStatement.setColumnCategories(columnCategories); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java index 64f6b273176..65f28cd4a9e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java @@ -45,7 +45,8 @@ public class LogicalPlanner { public LogicalQueryPlan plan(Analysis analysis) { long startTime = System.nanoTime(); - PlanNode rootNode = new LogicalPlanVisitor(analysis).process(analysis.getTreeStatement(), context); + PlanNode rootNode = + new LogicalPlanVisitor(analysis).process(analysis.getTreeStatement(), context); // optimize the query logical plan if (analysis.isQuery()) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java index 540f9e4d9f6..be5de4cc819 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFileNode.java @@ -92,10 +92,11 @@ public class LoadTsFileNode extends WritePlanNode { public List<WritePlanNode> splitByPartition(IAnalysis analysis) { List<WritePlanNode> res = new ArrayList<>(); LoadTsFileStatement statement = - ((Analysis) analysis).getStatement() instanceof PipeEnrichedStatement + ((Analysis) analysis).getTreeStatement() instanceof PipeEnrichedStatement ? (LoadTsFileStatement) - ((PipeEnrichedStatement) ((Analysis) analysis).getStatement()).getInnerStatement() - : (LoadTsFileStatement) ((Analysis) analysis).getStatement(); + ((PipeEnrichedStatement) ((Analysis) analysis).getTreeStatement()) + .getInnerStatement() + : (LoadTsFileStatement) ((Analysis) analysis).getTreeStatement(); for (int i = 0; i < resources.size(); i++) { res.add( diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java index 9ba4c068c7f..e6bd82bfe25 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java @@ -19,8 +19,6 @@ package org.apache.iotdb.db.queryengine.plan.relational.analyzer; -import java.util.Collections; -import org.apache.iotdb.commons.partition.DataPartitionQueryParam; import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; @@ -28,8 +26,6 @@ import org.apache.iotdb.db.queryengine.common.SessionInfo; import org.apache.iotdb.db.queryengine.execution.warnings.IoTDBWarning; import org.apache.iotdb.db.queryengine.execution.warnings.WarningCollector; import org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils; -import org.apache.iotdb.db.queryengine.plan.analyze.IAnalysis; -import org.apache.iotdb.db.queryengine.plan.analyze.QueryType; import org.apache.iotdb.db.queryengine.plan.analyze.schema.SchemaValidator; import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema; import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; @@ -105,6 +101,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Use; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Values; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.With; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WithQuery; +import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertBaseStatement; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableList; @@ -114,9 +111,6 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.ListMultimap; import com.google.common.collect.Streams; -import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertBaseStatement; -import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertMultiTabletsStatement; -import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement; import org.apache.tsfile.read.common.type.RowType; import org.apache.tsfile.read.common.type.Type; @@ -145,10 +139,6 @@ import static java.util.Collections.emptyList; import static java.util.Locale.ENGLISH; import static java.util.Objects.requireNonNull; import static org.apache.iotdb.db.queryengine.execution.warnings.StandardWarningCode.REDUNDANT_ORDER_BY; -import static org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils.computeAnalysisForMultiTablets; -import static org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils.getAnalysisForWriting; -import static org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils.removeLogicalView; -import static org.apache.iotdb.db.queryengine.plan.analyze.AnalyzeUtils.validateSchema; import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.AggregationAnalyzer.verifyOrderByAggregations; import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.AggregationAnalyzer.verifySourceAggregations; import static org.apache.iotdb.db.queryengine.plan.relational.analyzer.CanonicalizationAware.canonicalizationAwareKey; @@ -372,14 +362,18 @@ public class StatementAnalyzer { final Scope ret = Scope.create(); final MPPQueryContext context = insert.getContext(); - final InsertTabletStatement insertTabletStatement = insert.getInnerTreeStatement(); - - IAnalysis analysis = AnalyzeUtils.analyzeInsert(context, insertTabletStatement, - () -> SchemaValidator.validate(metadata, insert, context), - metadata::getOrCreateDataPartition); + InsertBaseStatement insertTabletStatement = insert.getInnerTreeStatement(); + + insertTabletStatement = + AnalyzeUtils.analyzeInsert( + context, + insertTabletStatement, + () -> SchemaValidator.validate(metadata, insert, context), + metadata::getOrCreateDataPartition, + analysis, + false); + insert.setInnerTreeStatement(insertTabletStatement); - // TODO-TableIngestion: use IAnalysis - // StatementAnalyzer.this.analysis = analysis; return ret; } @@ -1996,7 +1990,7 @@ public class StatementAnalyzer { /** * @return true if the Query / QuerySpecification containing the analyzed Limit or FetchFirst, - * must contain orderBy (i.e., for FetchFirst with ties). + * must contain orderBy (i.e., for FetchFirst with ties). */ private boolean analyzeLimit(Node node, Scope scope) { // checkState( diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/Metadata.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/Metadata.java index 166a2e4c78b..91acf28da3f 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/Metadata.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/Metadata.java @@ -19,7 +19,6 @@ package org.apache.iotdb.db.queryengine.plan.relational.metadata; -import java.util.Map; import org.apache.iotdb.commons.partition.DataPartition; import org.apache.iotdb.commons.partition.DataPartitionQueryParam; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java index 38a423fae21..de0f00a73a9 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/InsertTablet.java @@ -19,26 +19,25 @@ package org.apache.iotdb.db.queryengine.plan.relational.sql.ast; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import org.apache.iotdb.commons.schema.view.LogicalViewSchema; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo; import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputationWithAutoCreation; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement; + import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.utils.Pair; -public class InsertTablet extends WrappedInsertStatement { +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; - private InsertTabletStatement insertTabletStatement; +public class InsertTablet extends WrappedInsertStatement { public InsertTablet(InsertTabletStatement insertTabletStatement, MPPQueryContext context) { super(insertTabletStatement, context); - this.insertTabletStatement = insertTabletStatement; } @Override @@ -48,11 +47,12 @@ public class InsertTablet extends WrappedInsertStatement { @Override public InsertTabletStatement getInnerTreeStatement() { - return insertTabletStatement; + return ((InsertTabletStatement) super.getInnerTreeStatement()); } @Override public List<ISchemaComputationWithAutoCreation> getSchemaValidationList() { + InsertTabletStatement insertTabletStatement = getInnerTreeStatement(); Map<IDeviceID, ISchemaComputationWithAutoCreation> map = new HashMap<>(); for (int i = 0; i < insertTabletStatement.getRowCount(); i++) { map.computeIfAbsent(insertTabletStatement.getTableDeviceID(i), this::getSchemaComputation); @@ -62,7 +62,7 @@ public class InsertTablet extends WrappedInsertStatement { @Override public void updateAfterSchemaValidation(MPPQueryContext context) throws QueryProcessException { - insertTabletStatement.updateAfterSchemaValidation(context); + getInnerTreeStatement().updateAfterSchemaValidation(context); } @Override @@ -78,38 +78,38 @@ public class InsertTablet extends WrappedInsertStatement { @Override public void computeMeasurement(int index, IMeasurementSchemaInfo measurementSchemaInfo) { - insertTabletStatement.computeMeasurement(index, measurementSchemaInfo); + getInnerTreeStatement().computeMeasurement(index, measurementSchemaInfo); } @Override public boolean hasLogicalViewNeedProcess() { - return insertTabletStatement.hasLogicalViewNeedProcess(); + return getInnerTreeStatement().hasLogicalViewNeedProcess(); } @Override public List<LogicalViewSchema> getLogicalViewSchemaList() { - return insertTabletStatement.getLogicalViewSchemaList(); + return getInnerTreeStatement().getLogicalViewSchemaList(); } @Override public List<Integer> getIndexListOfLogicalViewPaths() { - return insertTabletStatement.getIndexListOfLogicalViewPaths(); + return getInnerTreeStatement().getIndexListOfLogicalViewPaths(); } @Override public void recordRangeOfLogicalViewSchemaListNow() { - insertTabletStatement.recordRangeOfLogicalViewSchemaListNow(); + getInnerTreeStatement().recordRangeOfLogicalViewSchemaListNow(); } @Override public Pair<Integer, Integer> getRangeOfLogicalViewSchemaListRecorded() { - return insertTabletStatement.getRangeOfLogicalViewSchemaListRecorded(); + return getInnerTreeStatement().getRangeOfLogicalViewSchemaListRecorded(); } @Override - public void computeMeasurementOfView(int index, IMeasurementSchemaInfo measurementSchemaInfo, - boolean isAligned) { - insertTabletStatement.computeMeasurementOfView(index, measurementSchemaInfo, isAligned); + public void computeMeasurementOfView( + int index, IMeasurementSchemaInfo measurementSchemaInfo, boolean isAligned) { + getInnerTreeStatement().computeMeasurementOfView(index, measurementSchemaInfo, isAligned); } } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedInsertStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedInsertStatement.java index e57e7b55c40..7d91727f571 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedInsertStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedInsertStatement.java @@ -1,89 +1,49 @@ package org.apache.iotdb.db.queryengine.plan.relational.sql.ast; -import java.util.List; -import org.apache.iotdb.commons.exception.IllegalPathException; -import org.apache.iotdb.commons.path.PartialPath; -import org.apache.iotdb.commons.schema.view.LogicalViewSchema; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; -import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo; -import org.apache.iotdb.db.queryengine.execution.schedule.queue.ID; -import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaComputationWithAutoCreation; +import org.apache.iotdb.db.queryengine.plan.relational.metadata.ColumnSchema; +import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableSchema; import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertBaseStatement; -import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.file.metadata.IDeviceID; -import org.apache.tsfile.file.metadata.enums.CompressionType; -import org.apache.tsfile.file.metadata.enums.TSEncoding; -import org.apache.tsfile.utils.Pair; + +import org.apache.tsfile.read.common.type.TypeFactory; + +import java.util.ArrayList; +import java.util.List; public abstract class WrappedInsertStatement extends WrappedStatement { - protected InsertBaseStatement insertStatement; + protected TableSchema tableSchema; - public WrappedInsertStatement( - InsertBaseStatement innerTreeStatement, - MPPQueryContext context) { + public WrappedInsertStatement(InsertBaseStatement innerTreeStatement, MPPQueryContext context) { super(innerTreeStatement, context); - this.insertStatement = innerTreeStatement; } @Override public InsertBaseStatement getInnerTreeStatement() { - return insertStatement; + return ((InsertBaseStatement) super.getInnerTreeStatement()); } - public abstract List<ISchemaComputationWithAutoCreation> getSchemaValidationList(); - - public abstract void updateAfterSchemaValidation(MPPQueryContext context) throws QueryProcessException; - - public abstract ISchemaComputationWithAutoCreation getSchemaComputation(IDeviceID deviceID); - - public abstract class BasicSchemaExecutions implements ISchemaComputationWithAutoCreation { - protected IDeviceID deviceID; - - public BasicSchemaExecutions(IDeviceID deviceID) { - this.deviceID = deviceID; - } - - @Override - public boolean isAligned() { - return true; - } - - @Override - public TSDataType getDataType(int index) { - return insertStatement.getDataTypes()[index]; - } - - @Override - public TSEncoding getEncoding(int index) { - return null; - } - - @Override - public CompressionType getCompressionType(int index) { - return null; - } - - @Override - public PartialPath getDevicePath() { - //TODO-TableInsertion: use deviceId - try { - return new PartialPath(deviceID); - } catch (IllegalPathException e) { - throw new RuntimeException(e); + public abstract void updateAfterSchemaValidation(MPPQueryContext context) + throws QueryProcessException; + + public TableSchema getTableSchema() { + if (tableSchema == null) { + InsertBaseStatement insertBaseStatement = getInnerTreeStatement(); + String tableName = insertBaseStatement.getDevicePath().getFullPath(); + List<ColumnSchema> columnSchemas = + new ArrayList<>(insertBaseStatement.getMeasurements().length); + for (int i = 0; i < insertBaseStatement.getMeasurements().length; i++) { + columnSchemas.add( + new ColumnSchema( + insertBaseStatement.getMeasurements()[i], + TypeFactory.getType(insertBaseStatement.getDataTypes()[i]), + false, + insertBaseStatement.getColumnCategories()[i])); } + tableSchema = new TableSchema(tableName, columnSchemas); } - @Override - public String[] getMeasurements() { - return insertStatement.getMeasurements(); - } - - @Override - public void computeDevice(boolean isAligned) { - // ignored, table device must be aligned - } - + return tableSchema; } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedStatement.java index 380388ee141..5998e07c289 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/WrappedStatement.java @@ -19,16 +19,18 @@ package org.apache.iotdb.db.queryengine.plan.relational.sql.ast; +import org.apache.iotdb.db.queryengine.common.MPPQueryContext; + import java.util.Collections; import java.util.List; import java.util.Objects; -import org.apache.iotdb.db.queryengine.common.MPPQueryContext; public abstract class WrappedStatement extends Statement { - protected final org.apache.iotdb.db.queryengine.plan.statement.Statement innerTreeStatement; + protected org.apache.iotdb.db.queryengine.plan.statement.Statement innerTreeStatement; protected final MPPQueryContext context; - public WrappedStatement(org.apache.iotdb.db.queryengine.plan.statement.Statement innerTreeStatement, + public WrappedStatement( + org.apache.iotdb.db.queryengine.plan.statement.Statement innerTreeStatement, MPPQueryContext context) { super(null); this.innerTreeStatement = innerTreeStatement; @@ -66,6 +68,11 @@ public abstract class WrappedStatement extends Statement { return innerTreeStatement; } + public void setInnerTreeStatement( + org.apache.iotdb.db.queryengine.plan.statement.Statement innerTreeStatement) { + this.innerTreeStatement = innerTreeStatement; + } + public MPPQueryContext getContext() { return context; } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/ConversionUtils.java similarity index 51% copy from iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java copy to iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/ConversionUtils.java index 55f8dd5210c..48aaa6fef40 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ISchemaAutoCreation.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/ConversionUtils.java @@ -17,30 +17,10 @@ * under the License. */ -package org.apache.iotdb.db.queryengine.plan.analyze.schema; +package org.apache.iotdb.db.queryengine.plan.relational.utils; -import org.apache.iotdb.commons.path.PartialPath; - -import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.file.metadata.enums.CompressionType; -import org.apache.tsfile.file.metadata.enums.TSEncoding; - -/** - * This interface defines the required info provided for schema auto creation, which is executed - * schema fetcher. - */ -public interface ISchemaAutoCreation { - - PartialPath getDevicePath(); - - String[] getMeasurements(); - - boolean isAligned(); - - TSDataType getDataType(int index); - - //TODO: Check necessity because all implementations return null - TSEncoding getEncoding(int index); - //TODO: Check necessity because all implementations return null - CompressionType getCompressionType(int index); +public class ConversionUtils { + private ConversionUtils() { + // util class + } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java index bc31e71ec80..6a48221189e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertBaseStatement.java @@ -22,6 +22,7 @@ package org.apache.iotdb.db.queryengine.plan.statement.crud; import org.apache.iotdb.common.rpc.thrift.TSStatus; import org.apache.iotdb.commons.auth.entity.PrivilegeType; import org.apache.iotdb.commons.path.PartialPath; +import org.apache.iotdb.commons.schema.table.column.TsTableColumnCategory; import org.apache.iotdb.commons.schema.view.LogicalViewSchema; import org.apache.iotdb.db.auth.AuthorityChecker; import org.apache.iotdb.db.conf.IoTDBDescriptor; @@ -68,6 +69,9 @@ public abstract class InsertBaseStatement extends Statement { /** index of failed measurements -> info including measurement, data type and value */ protected Map<Integer, FailedMeasurementInfo> failedMeasurementIndex2Info; + protected TsTableColumnCategory[] columnCategories; + protected List<Integer> idColumnIndices; + // region params used by analyzing logical views. /** This param records the logical view schema appeared in this statement. */ @@ -238,6 +242,24 @@ public abstract class InsertBaseStatement extends Statement { return false; } + public TsTableColumnCategory[] getColumnCategories() { + return columnCategories; + } + + public void setColumnCategories(TsTableColumnCategory[] columnCategories) { + this.columnCategories = columnCategories; + idColumnIndices = new ArrayList<>(); + for (int i = 0; i < columnCategories.length; i++) { + if (columnCategories[i].equals(TsTableColumnCategory.ID)) { + idColumnIndices.add(i); + } + } + } + + public List<Integer> getIdColumnIndices() { + return idColumnIndices; + } + public boolean hasFailedMeasurements() { return failedMeasurementIndex2Info != null && !failedMeasurementIndex2Info.isEmpty(); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java index 53b60b67494..fa9e8959c01 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/InsertTabletStatement.java @@ -29,7 +29,6 @@ import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.queryengine.common.MPPQueryContext; import org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo; import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaValidation; -import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ColumnDefinition.ColumnCategory; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement; import org.apache.iotdb.db.queryengine.plan.statement.StatementType; import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor; @@ -38,7 +37,6 @@ import org.apache.iotdb.db.utils.CommonUtils; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.IDeviceID.Factory; -import org.apache.tsfile.file.metadata.StringArrayDeviceID; import org.apache.tsfile.file.metadata.enums.CompressionType; import org.apache.tsfile.file.metadata.enums.TSEncoding; import org.apache.tsfile.utils.Binary; @@ -66,8 +64,6 @@ public class InsertTabletStatement extends InsertBaseStatement implements ISchem private BitMap[] bitMaps; private Object[] columns; - private ColumnCategory[] columnCategories; - private List<Integer> idColumnIndices; private IDeviceID[] deviceIDs; private int rowCount = 0; @@ -77,6 +73,7 @@ public class InsertTabletStatement extends InsertBaseStatement implements ISchem * views. */ private boolean[] measurementIsAligned; + private boolean writeToTable = false; public InsertTabletStatement() { @@ -425,25 +422,6 @@ public class InsertTabletStatement extends InsertBaseStatement implements ISchem return super.toRelationalStatement(context); } - public ColumnCategory[] getColumnCategories() { - return columnCategories; - } - - public void setColumnCategories( - ColumnCategory[] columnCategories) { - this.columnCategories = columnCategories; - idColumnIndices = new ArrayList<>(); - for (int i = 0; i < columnCategories.length; i++) { - if (columnCategories[i].equals(ColumnCategory.ID)) { - idColumnIndices.add(i); - } - } - } - - public List<Integer> getIdColumnIndices() { - return idColumnIndices; - } - public IDeviceID getTableDeviceID(int rowIdx) { if (deviceIDs == null) { deviceIDs = new IDeviceID[rowCount]; diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnCategory.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnCategory.java index b7d6ca02dae..ca4faedffe1 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnCategory.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/column/TsTableColumnCategory.java @@ -60,7 +60,7 @@ public enum TsTableColumnCategory { return deserialize(category); } - private static TsTableColumnCategory deserialize(byte category) { + public static TsTableColumnCategory deserialize(byte category) { switch (category) { case 0: return ID;
