You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by sh...@apache.org on 2026/04/17 02:46:53 UTC
(iotdb) 01/02: add abstract methods
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 <s1...@gmail.com>
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));