This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch calc_commons in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit bd3b343636bd3b7128b35487af2702d80877e151 Author: shuwenwei <[email protected]> AuthorDate: Fri Apr 17 10:25:21 2026 +0800 add abstract methods --- .../relational/ColumnTransformerBuilder.java | 1 + .../plan/planner/TableOperatorGenerator.java | 47 +++++----------------- .../planner/DataNodeTableOperatorGenerator.java | 42 ++++++++++--------- .../plan/relational/sql/ast/DeleteDevice.java | 3 +- .../schemaregion/impl/SchemaRegionMemoryImpl.java | 6 +-- .../sink/SinkOperatorDownStreamNodeIdTest.java | 4 +- 6 files changed, 41 insertions(+), 62 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java index 3349bffd332..55d115c66c1 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/execution/relational/ColumnTransformerBuilder.java @@ -199,6 +199,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; import org.apache.iotdb.udf.api.customizer.analysis.ScalarFunctionAnalysis; import org.apache.iotdb.udf.api.customizer.parameter.FunctionArguments; import org.apache.iotdb.udf.api.relational.ScalarFunction; + import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.common.regexp.LikePattern; import org.apache.tsfile.enums.TSDataType; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java index 0893351a327..87e4266c04e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/calc_commons/plan/planner/TableOperatorGenerator.java @@ -103,8 +103,8 @@ import org.apache.iotdb.db.calc_commons.plan.relational.planner.CastToStringLite import org.apache.iotdb.db.calc_commons.plan.relational.planner.CastToTimestampLiteralVisitor; import org.apache.iotdb.db.calc_commons.transformation.dag.column.ColumnTransformer; import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColumnTransformer; -import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.exception.sql.SemanticException; +import org.apache.iotdb.db.node_commons.common.SessionInfo; import org.apache.iotdb.db.node_commons.plan.planner.plan.node.ICoreQueryPlanVisitor; import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNode; import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNodeId; @@ -160,7 +160,6 @@ import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Expression; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.Literal; import org.apache.iotdb.db.node_commons.plan.relational.sql.ast.SymbolReference; import org.apache.iotdb.db.node_commons.plan.relational.type.InternalTypeManager; -import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext; import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider; import org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanContext; import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; @@ -185,7 +184,6 @@ import org.apache.tsfile.read.common.block.column.LongColumn; import org.apache.tsfile.read.common.type.Type; import org.apache.tsfile.utils.Binary; -import java.io.File; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Collections; @@ -316,15 +314,14 @@ public abstract class TableOperatorGenerator ColumnTransformerBuilder visitor = new ColumnTransformerBuilder(); - FragmentInstanceContext fragmentInstanceContext = - context.getDriverContext().getFragmentInstanceContext(); + SessionInfo sessionInfo = getSessionInfo(context); ColumnTransformer filterOutputTransformer = predicate .map( p -> { ColumnTransformerBuilder.Context filterColumnTransformerContext = new ColumnTransformerBuilder.Context( - fragmentInstanceContext.getSessionInfo(), + sessionInfo, filterLeafColumnTransformerList, inputLocations, filterExpressionColumnTransformerMap, @@ -333,8 +330,7 @@ public abstract class TableOperatorGenerator ImmutableList.of(), 0, context.getTypeProvider(), - metadata - ); + metadata); return visitor.process(p, filterColumnTransformerContext); }) @@ -352,7 +348,7 @@ public abstract class TableOperatorGenerator ColumnTransformerBuilder.Context projectColumnTransformerContext = new ColumnTransformerBuilder.Context( - fragmentInstanceContext.getSessionInfo(), + sessionInfo, projectLeafColumnTransformerList, inputLocations, projectExpressionColumnTransformerMap, @@ -361,8 +357,7 @@ public abstract class TableOperatorGenerator filterOutputDataTypes, inputLocations.size(), context.getTypeProvider(), - metadata - ); + metadata); for (Expression expression : projectExpressions) { projectOutputTransformerList.add( @@ -854,29 +849,18 @@ public abstract class TableOperatorGenerator sortItemDataTypeList, context.getTypeProvider()); - String filePrefix = - getSortTmpDir() - + File.separator - + operatorContext.getDriverContext().getFragmentInstanceContext().getId().getFullId() - + File.separator - + operatorContext.getDriverContext().getPipelineId() - + File.separator; - - context.getDriverContext().setHaveTmpFile(true); - context.getDriverContext().getFragmentInstanceContext().setMayHaveTmpFile(true); - Operator child = node.getChild().accept(this, context); return new TableSortOperator( operatorContext, child, dataTypes, - filePrefix, + getSortTmpDir(operatorContext), getComparatorForTable( node.getOrderingScheme().getOrderingList(), sortItemIndexList, sortItemDataTypeList)); } - protected abstract String getSortTmpDir(); + protected abstract String getSortTmpDir(OperatorContext operatorContext); @Override public Operator visitTopK(TopKNode node, LocalExecutionPlanContext context) { @@ -965,24 +949,13 @@ public abstract class TableOperatorGenerator sortItemDataTypeList, context.getTypeProvider()); - String filePrefix = - IoTDBDescriptor.getInstance().getConfig().getSortTmpDir() - + File.separator - + operatorContext.getDriverContext().getFragmentInstanceContext().getId().getFullId() - + File.separator - + operatorContext.getDriverContext().getPipelineId() - + File.separator; - - context.getDriverContext().setHaveTmpFile(true); - context.getDriverContext().getFragmentInstanceContext().setMayHaveTmpFile(true); - Operator child = node.getChild().accept(this, context); return new TableStreamSortOperator( operatorContext, child, dataTypes, - filePrefix, + getSortTmpDir(operatorContext), getComparatorForTable( node.getOrderingScheme().getOrderingList(), sortItemIndexList, sortItemDataTypeList), getComparatorForTable( @@ -2464,4 +2437,6 @@ public abstract class TableOperatorGenerator 1000, Optional.empty()); } + + protected abstract SessionInfo getSessionInfo(LocalExecutionPlanContext context); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java index 5cd788833f3..5d33c254838 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/DataNodeTableOperatorGenerator.java @@ -14,8 +14,6 @@ package org.apache.iotdb.db.queryengine.plan.planner; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import org.apache.iotdb.common.rpc.thrift.TEndPoint; import org.apache.iotdb.commons.conf.CommonDescriptor; import org.apache.iotdb.commons.exception.IllegalPathException; @@ -38,6 +36,7 @@ import org.apache.iotdb.db.calc_commons.transformation.dag.column.leaf.LeafColum import org.apache.iotdb.db.calc_commons.transformation.dag.column.unary.scalar.DateBinFunctionColumnTransformer; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.exception.sql.SemanticException; +import org.apache.iotdb.db.node_commons.common.SessionInfo; import org.apache.iotdb.db.node_commons.plan.planner.plan.node.PlanNode; import org.apache.iotdb.db.node_commons.plan.planner.plan.parameter.InputLocation; import org.apache.iotdb.db.node_commons.plan.relational.planner.Symbol; @@ -58,7 +57,6 @@ import org.apache.iotdb.db.queryengine.execution.exchange.sink.DownStreamChannel import org.apache.iotdb.db.queryengine.execution.exchange.sink.ISinkHandle; import org.apache.iotdb.db.queryengine.execution.exchange.sink.ShuffleSinkHandle; import org.apache.iotdb.db.queryengine.execution.exchange.source.ISourceHandle; -import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext; import org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceManager; import org.apache.iotdb.db.queryengine.execution.operator.EmptyDataOperator; import org.apache.iotdb.db.queryengine.execution.operator.ExplainAnalyzeOperator; @@ -129,6 +127,9 @@ import org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.IDeviceSchem import org.apache.iotdb.db.schemaengine.table.DataNodeTableCache; import org.apache.iotdb.db.schemaengine.table.DataNodeTreeViewSchemaUtils; import org.apache.iotdb.db.utils.TimestampPrecisionUtils; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import org.apache.tsfile.common.conf.TSFileDescriptor; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.IDeviceID; @@ -151,6 +152,8 @@ import org.apache.tsfile.write.schema.IMeasurementSchema; import org.apache.tsfile.write.schema.MeasurementSchema; import javax.validation.constraints.NotNull; + +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -203,8 +206,15 @@ public class DataNodeTableOperatorGenerator extends TableOperatorGenerator } @Override - protected String getSortTmpDir() { - return IoTDBDescriptor.getInstance().getConfig().getSortTmpDir(); + protected String getSortTmpDir(OperatorContext operatorContext) { + operatorContext.getDriverContext().setHaveTmpFile(true); + operatorContext.getDriverContext().getFragmentInstanceContext().setMayHaveTmpFile(true); + return IoTDBDescriptor.getInstance().getConfig().getSortTmpDir() + + File.separator + + operatorContext.getDriverContext().getFragmentInstanceContext().getId().getFullId() + + File.separator + + operatorContext.getDriverContext().getPipelineId() + + File.separator; } @Override @@ -1143,15 +1153,7 @@ public class DataNodeTableOperatorGenerator extends TableOperatorGenerator return new InformationSchemaTableScanOperator( operatorContext, node.getPlanNodeId(), - getSupplier( - operatorContext, - dataTypes, - context - .getDriverContext() - .getFragmentInstanceContext() - .getSessionInfo() - .getUserEntity(), - node)); + getSupplier(operatorContext, dataTypes, getSessionInfo(context).getUserEntity(), node)); } @Override @@ -1232,8 +1234,6 @@ public class DataNodeTableOperatorGenerator extends TableOperatorGenerator // In "count" we have to reuse filter operator per "next" final List<LeafColumnTransformer> filterLeafColumnTransformerList = new ArrayList<>(); - FragmentInstanceContext fragmentInstanceContext = - context.getDriverContext().getFragmentInstanceContext(); return new SchemaCountOperator<>( node.getPlanNodeId(), context @@ -1255,7 +1255,7 @@ public class DataNodeTableOperatorGenerator extends TableOperatorGenerator .process( node.getTagFuzzyPredicate(), new ColumnTransformerBuilder.Context( - fragmentInstanceContext.getSessionInfo(), + getSessionInfo(context), filterLeafColumnTransformerList, makeLayout(Collections.singletonList(node)), new HashMap<>(), @@ -1264,8 +1264,7 @@ public class DataNodeTableOperatorGenerator extends TableOperatorGenerator ImmutableList.of(), 0, context.getTypeProvider(), - metadata - )), + metadata)), columnSchemaList, database, table) @@ -2122,4 +2121,9 @@ public class DataNodeTableOperatorGenerator extends TableOperatorGenerator return OptimizeType.NOOP; } + + @Override + protected SessionInfo getSessionInfo(LocalExecutionPlanContext context) { + return context.getDriverContext().getFragmentInstanceContext().getSessionInfo(); + } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java index a942571f66b..1707f4d7acc 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DeleteDevice.java @@ -233,8 +233,7 @@ public class DeleteDevice extends AbstractTraverseDevice { ImmutableList.of(), 0, mockTypeProvider, - metadata - )) + metadata)) : null; return new DeviceBlackListConstructor( diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java index 63b81714271..3c081f21903 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/impl/SchemaRegionMemoryImpl.java @@ -1573,8 +1573,7 @@ public class SchemaRegionMemoryImpl implements ISchemaRegion { ImmutableList.of(), 0, mockTypeProvider, - metadata - )) + metadata)) : null; final List<TSDataType> filterOutputDataTypes = @@ -1601,8 +1600,7 @@ public class SchemaRegionMemoryImpl implements ISchemaRegion { filterOutputDataTypes, inputLocations.size(), mockTypeProvider, - metadata - ); + metadata); final List<String> attributeNames = updateNode.getAssignments().stream() diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperatorDownStreamNodeIdTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperatorDownStreamNodeIdTest.java index 57fa76fb2d2..81ec8fa58fb 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperatorDownStreamNodeIdTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/sink/SinkOperatorDownStreamNodeIdTest.java @@ -40,6 +40,7 @@ import org.apache.iotdb.db.queryengine.plan.relational.metadata.Metadata; import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableMetadataImpl; import org.apache.iotdb.db.storageengine.dataregion.DataRegion; import org.apache.iotdb.mpp.rpc.thrift.TFragmentInstanceId; + import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -96,7 +97,8 @@ public class SinkOperatorDownStreamNodeIdTest { LocalExecutionPlanContext context = createLocalExecutionPlanContext( new TypeProvider(), "query_name_sink_operator_downstream_id_1", 10001); - DataNodeTableOperatorGenerator tableOperatorGenerator = new DataNodeTableOperatorGenerator(metadata); + DataNodeTableOperatorGenerator tableOperatorGenerator = + new DataNodeTableOperatorGenerator(metadata); Mockito.when(mockedPlanNode.accept(tableOperatorGenerator, context)) .thenReturn(Mockito.mock(Operator.class));
