You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2023/07/11 07:44:55 UTC
[iotdb] branch beyyes/view_select_into created (now 8bfa3981714)
This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a change to branch beyyes/view_select_into
in repository https://gitbox.apache.org/repos/asf/iotdb.git
at 8bfa3981714 add select into it
This branch includes the following new commits:
new 8bfa3981714 add select into it
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[iotdb] 01/01: add select into it
Posted by ca...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch beyyes/view_select_into
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 8bfa39817143ba1504b141bd7f71b030c8670018
Author: Beyyes <cg...@foxmail.com>
AuthorDate: Tue Jul 11 15:44:36 2023 +0800
add select into it
---
.../it/selectinto/IoTDBSelectIntoWithViewIT.java | 2 +
.../execution/operator/process/IntoOperator.java | 15 ++++-
.../queryengine/plan/analyze/AnalyzeVisitor.java | 29 ++++++++--
.../plan/planner/OperatorTreeGenerator.java | 1 +
.../planner/plan/parameter/IntoPathDescriptor.java | 13 ++++-
.../view/visitor/TransformToExpressionVisitor.java | 65 +++++++++++-----------
.../execution/operator/OperatorMemoryTest.java | 1 +
.../plan/optimization/TestPlanBuilder.java | 2 +-
.../plan/plan/node/process/IntoNodeSerdeTest.java | 8 +--
9 files changed, 91 insertions(+), 45 deletions(-)
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoWithViewIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoWithViewIT.java
new file mode 100644
index 00000000000..eb718c041c7
--- /dev/null
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoWithViewIT.java
@@ -0,0 +1,2 @@
+package org.apache.iotdb.db.it.selectinto;public class IoTDBSelectIntoWithViewIT {
+}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
index 8a6fac95b00..c68a4e7e708 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/IntoOperator.java
@@ -33,6 +33,8 @@ import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
import org.apache.iotdb.tsfile.utils.Binary;
import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.commons.lang.StringUtils;
+
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
@@ -42,6 +44,8 @@ public class IntoOperator extends AbstractIntoOperator {
private final List<Pair<String, PartialPath>> sourceTargetPathPairList;
+ private final List<Pair<String, String>> sourceColumnToViewList;
+
@SuppressWarnings("squid:S107")
public IntoOperator(
OperatorContext operatorContext,
@@ -51,6 +55,7 @@ public class IntoOperator extends AbstractIntoOperator {
Map<PartialPath, Map<String, TSDataType>> targetPathToDataTypeMap,
Map<String, Boolean> targetDeviceToAlignedMap,
List<Pair<String, PartialPath>> sourceTargetPathPairList,
+ List<Pair<String, String>> sourceColumnToViewList,
Map<String, InputLocation> sourceColumnToInputLocationMap,
ExecutorService intoOperationExecutor,
long statementSizePerLine) {
@@ -62,6 +67,7 @@ public class IntoOperator extends AbstractIntoOperator {
intoOperationExecutor,
statementSizePerLine);
this.sourceTargetPathPairList = sourceTargetPathPairList;
+ this.sourceColumnToViewList = sourceColumnToViewList;
insertTabletStatementGenerators =
constructInsertTabletStatementGenerators(
targetPathToSourceInputLocationMap,
@@ -110,9 +116,14 @@ public class IntoOperator extends AbstractIntoOperator {
TsBlockBuilder resultTsBlockBuilder = new TsBlockBuilder(outputDataTypes);
TimeColumnBuilder timeColumnBuilder = resultTsBlockBuilder.getTimeColumnBuilder();
ColumnBuilder[] columnBuilders = resultTsBlockBuilder.getValueColumnBuilders();
- for (Pair<String, PartialPath> sourceTargetPathPair : sourceTargetPathPairList) {
+ for (int i = 0; i < sourceTargetPathPairList.size(); i++) {
+ Pair<String, PartialPath> sourceTargetPathPair = sourceTargetPathPairList.get(i);
+ String sourceColumn = sourceTargetPathPair.left;
+ if (StringUtils.isNotEmpty(sourceColumnToViewList.get(i).right)) {
+ sourceColumn = sourceColumnToViewList.get(i).right;
+ }
timeColumnBuilder.writeLong(0);
- columnBuilders[0].writeBinary(new Binary(sourceTargetPathPair.left));
+ columnBuilders[0].writeBinary(new Binary(sourceColumn));
columnBuilders[1].writeBinary(new Binary(sourceTargetPathPair.right.toString()));
columnBuilders[2].writeInt(
findWritten(
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 a89974877dd..1b23478e327 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
@@ -1218,6 +1218,10 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ExpressionAnalyzer.normalizeExpression(
analyzeWhereSplitByDevice(queryStatement, devicePath, schemaTree));
} catch (MeasurementNotExistException e) {
+ logger.warn(
+ "Meets MeasurementNotExistException in analyzeDeviceToWhere when executing align by device, "
+ + "error msg: {}",
+ e.getMessage());
deviceIterator.remove();
continue;
}
@@ -1933,25 +1937,39 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
IntoPathDescriptor intoPathDescriptor = new IntoPathDescriptor();
PathPatternTree targetPathTree = new PathPatternTree();
IntoComponent.IntoPathIterator intoPathIterator = intoComponent.getIntoPathIterator();
- for (Expression sourceColumn : sourceColumns) {
+ for (Pair<Expression, String> pair : outputExpressions) {
+ Expression sourceExpression = pair.left;
+ String viewPath = pair.right;
PartialPath deviceTemplate = intoPathIterator.getDeviceTemplate();
String measurementTemplate = intoPathIterator.getMeasurementTemplate();
boolean isAlignedDevice = intoPathIterator.isAlignedDevice();
+ PartialPath sourcePath;
+ String sourceColumn = sourceExpression.getExpressionString();
PartialPath targetPath;
- if (sourceColumn instanceof TimeSeriesOperand) {
- PartialPath sourcePath = ((TimeSeriesOperand) sourceColumn).getPath();
+ if (sourceExpression instanceof TimeSeriesOperand) {
+ if (viewPath != null) {
+ try {
+ sourcePath = new PartialPath(viewPath);
+ } catch (IllegalPathException e) {
+ throw new SemanticException(
+ String.format(
+ "View path %s of source column %s is illegal path", viewPath, sourceColumn));
+ }
+ } else {
+ sourcePath = ((TimeSeriesOperand) sourceExpression).getPath();
+ }
targetPath = constructTargetPath(sourcePath, deviceTemplate, measurementTemplate);
} else {
targetPath = deviceTemplate.concatNode(measurementTemplate);
}
- intoPathDescriptor.specifyTargetPath(sourceColumn.getExpressionString(), targetPath);
+ intoPathDescriptor.specifyTargetPath(sourceColumn, viewPath, targetPath);
intoPathDescriptor.specifyDeviceAlignment(
targetPath.getDevicePath().toString(), isAlignedDevice);
targetPathTree.appendFullPath(targetPath);
intoPathDescriptor.recordSourceColumnDataType(
- sourceColumn.getExpressionString(), analysis.getType(sourceColumn));
+ sourceColumn, analysis.getType(sourceExpression));
intoPathIterator.next();
}
@@ -2305,7 +2323,6 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
if (analysis.isFinishQueryAfterAnalyze()) {
return analysis;
}
-
analysis.setStatement(realInsertStatement);
if (realInsertStatement instanceof InsertRowStatement) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
index c28a08f889d..e7799d0e7c4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
@@ -1638,6 +1638,7 @@ public class OperatorTreeGenerator extends PlanVisitor<Operator, LocalExecutionP
targetPathToDataTypeMap,
intoPathDescriptor.getTargetDeviceToAlignedMap(),
intoPathDescriptor.getSourceTargetPathPairList(),
+ intoPathDescriptor.getSourceColumnToViewList(),
sourceColumnToInputLocationMap,
FragmentInstanceManager.getInstance().getIntoOperationExecutor(),
statementSizePerLine);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java
index 8ff316cdf33..e12df25e020 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/IntoPathDescriptor.java
@@ -47,6 +47,9 @@ public class IntoPathDescriptor {
// List<(sourceColumn, targetPath)>
private List<Pair<String, PartialPath>> sourceTargetPathPairList;
+ // sourceColumn -> viewPath, if the viewPath is not empty
+ private List<Pair<String, String>> sourceColumnToViewList;
+
// targetDevice -> isAlignedDevice
private final Map<String, Boolean> targetDeviceToAlignedMap;
@@ -55,6 +58,7 @@ public class IntoPathDescriptor {
public IntoPathDescriptor() {
this.sourceTargetPathPairList = new ArrayList<>();
+ this.sourceColumnToViewList = new ArrayList<>();
this.targetDeviceToAlignedMap = new HashMap<>();
this.sourceToDataTypeMap = new HashMap<>();
}
@@ -66,8 +70,11 @@ public class IntoPathDescriptor {
this.targetDeviceToAlignedMap = targetDeviceToAlignedMap;
}
- public void specifyTargetPath(String sourceColumn, PartialPath targetPath) {
+ public void specifyTargetPath(
+ String sourceColumn, String sourceViewPath, PartialPath targetPath) {
sourceTargetPathPairList.add(new Pair<>(sourceColumn, targetPath));
+ sourceColumnToViewList.add(
+ new Pair<>(sourceColumn, sourceViewPath == null ? "" : sourceViewPath));
}
public void specifyDeviceAlignment(String targetDevice, boolean isAligned) {
@@ -100,6 +107,10 @@ public class IntoPathDescriptor {
return sourceTargetPathPairList;
}
+ public List<Pair<String, String>> getSourceColumnToViewList() {
+ return sourceColumnToViewList;
+ }
+
public Map<String, Boolean> getTargetDeviceToAlignedMap() {
return targetDeviceToAlignedMap;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
index 6636cc466cc..ae4b13af8ff 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/view/visitor/TransformToExpressionVisitor.java
@@ -56,6 +56,23 @@ import org.apache.iotdb.commons.schema.view.viewExpression.unary.RegularViewExpr
import org.apache.iotdb.commons.schema.view.viewExpression.unary.UnaryViewExpression;
import org.apache.iotdb.commons.schema.view.viewExpression.visitor.ViewExpressionVisitor;
import org.apache.iotdb.db.queryengine.plan.expression.Expression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.AdditionExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.DivisionExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.EqualToExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.GreaterEqualExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.GreaterThanExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.LessEqualExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.LessThanExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.LogicAndExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.ModuloExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.MultiplicationExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.binary.SubtractionExpression;
+import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
+import org.apache.iotdb.db.queryengine.plan.expression.leaf.NullOperand;
+import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
+import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
import org.apache.iotdb.tsfile.utils.Pair;
import javax.ws.rs.NotSupportedException;
@@ -85,20 +102,19 @@ public class TransformToExpressionVisitor extends ViewExpressionVisitor<Expressi
@Override
public Expression visitConstantOperand(ConstantViewOperand constantOperand, Void context) {
- return new org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand(
- constantOperand.getDataType(), constantOperand.getValueString());
+ return new ConstantOperand(constantOperand.getDataType(), constantOperand.getValueString());
}
@Override
public Expression visitNullOperand(NullViewOperand nullOperand, Void context) {
- return new org.apache.iotdb.db.queryengine.plan.expression.leaf.NullOperand();
+ return new NullOperand();
}
@Override
public Expression visitTimeSeriesOperand(TimeSeriesViewOperand timeSeriesOperand, Void context) {
try {
PartialPath path = new PartialPath(timeSeriesOperand.getPathString());
- return new org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand(path);
+ return new TimeSeriesOperand(path);
} catch (IllegalPathException e) {
throw new RuntimeException(e);
}
@@ -106,7 +122,7 @@ public class TransformToExpressionVisitor extends ViewExpressionVisitor<Expressi
@Override
public Expression visitTimeStampOperand(TimestampViewOperand timestampOperand, Void context) {
- return new org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand();
+ return new TimestampOperand();
}
// endregion
@@ -181,37 +197,32 @@ public class TransformToExpressionVisitor extends ViewExpressionVisitor<Expressi
public Expression visitAdditionExpression(
AdditionViewExpression additionExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(additionExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.AdditionExpression(
- pair.left, pair.right);
+ return new AdditionExpression(pair.left, pair.right);
}
public Expression visitDivisionExpression(
DivisionViewExpression divisionExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(divisionExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.DivisionExpression(
- pair.left, pair.right);
+ return new DivisionExpression(pair.left, pair.right);
}
public Expression visitModuloExpression(ModuloViewExpression moduloExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(moduloExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.ModuloExpression(
- pair.left, pair.right);
+ return new ModuloExpression(pair.left, pair.right);
}
public Expression visitMultiplicationExpression(
MultiplicationViewExpression multiplicationExpression, Void context) {
Pair<Expression, Expression> pair =
this.getExpressionsForBinaryExpression(multiplicationExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.MultiplicationExpression(
- pair.left, pair.right);
+ return new MultiplicationExpression(pair.left, pair.right);
}
public Expression visitSubtractionExpression(
SubtractionViewExpression subtractionExpression, Void context) {
Pair<Expression, Expression> pair =
this.getExpressionsForBinaryExpression(subtractionExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.SubtractionExpression(
- pair.left, pair.right);
+ return new SubtractionExpression(pair.left, pair.right);
}
// endregion
@@ -223,45 +234,39 @@ public class TransformToExpressionVisitor extends ViewExpressionVisitor<Expressi
public Expression visitEqualToExpression(EqualToViewExpression equalToExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(equalToExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.EqualToExpression(
- pair.left, pair.right);
+ return new EqualToExpression(pair.left, pair.right);
}
public Expression visitGreaterEqualExpression(
GreaterEqualViewExpression greaterEqualExpression, Void context) {
Pair<Expression, Expression> pair =
this.getExpressionsForBinaryExpression(greaterEqualExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.GreaterEqualExpression(
- pair.left, pair.right);
+ return new GreaterEqualExpression(pair.left, pair.right);
}
public Expression visitGreaterThanExpression(
GreaterThanViewExpression greaterThanExpression, Void context) {
Pair<Expression, Expression> pair =
this.getExpressionsForBinaryExpression(greaterThanExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.GreaterThanExpression(
- pair.left, pair.right);
+ return new GreaterThanExpression(pair.left, pair.right);
}
public Expression visitLessEqualExpression(
LessEqualViewExpression lessEqualExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(lessEqualExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.LessEqualExpression(
- pair.left, pair.right);
+ return new LessEqualExpression(pair.left, pair.right);
}
public Expression visitLessThanExpression(
LessThanViewExpression lessThanExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(lessThanExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.LessThanExpression(
- pair.left, pair.right);
+ return new LessThanExpression(pair.left, pair.right);
}
public Expression visitNonEqualExpression(
NonEqualViewExpression nonEqualExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(nonEqualExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression(
- pair.left, pair.right);
+ return new NonEqualExpression(pair.left, pair.right);
}
// endregion
@@ -274,14 +279,12 @@ public class TransformToExpressionVisitor extends ViewExpressionVisitor<Expressi
public Expression visitLogicAndExpression(
LogicAndViewExpression logicAndExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(logicAndExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.LogicAndExpression(
- pair.left, pair.right);
+ return new LogicAndExpression(pair.left, pair.right);
}
public Expression visitLogicOrExpression(LogicOrViewExpression logicOrExpression, Void context) {
Pair<Expression, Expression> pair = this.getExpressionsForBinaryExpression(logicOrExpression);
- return new org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression(
- pair.left, pair.right);
+ return new LogicOrExpression(pair.left, pair.right);
}
// endregion
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java
index b32683a4a3b..29df1f6d79b 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/OperatorMemoryTest.java
@@ -1486,6 +1486,7 @@ public class OperatorMemoryTest {
Collections.emptyMap(),
Collections.emptyMap(),
Collections.emptyList(),
+ Collections.emptyList(),
Collections.emptyMap(),
null,
statementSizePerLine);
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/TestPlanBuilder.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/TestPlanBuilder.java
index c3ba9458a92..734cae7d89f 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/TestPlanBuilder.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/optimization/TestPlanBuilder.java
@@ -174,7 +174,7 @@ public class TestPlanBuilder {
public TestPlanBuilder into(String id, PartialPath sourcePath, PartialPath intoPath) {
IntoPathDescriptor intoPathDescriptor = new IntoPathDescriptor();
- intoPathDescriptor.specifyTargetPath(sourcePath.toString(), intoPath);
+ intoPathDescriptor.specifyTargetPath(sourcePath.toString(), "", intoPath);
intoPathDescriptor.specifyDeviceAlignment(intoPath.getDevice(), false);
intoPathDescriptor.recordSourceColumnDataType(
sourcePath.toString(), sourcePath.getSeriesType());
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/IntoNodeSerdeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/IntoNodeSerdeTest.java
index e779dbfe64d..6569d4f764d 100644
--- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/IntoNodeSerdeTest.java
+++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/plan/plan/node/process/IntoNodeSerdeTest.java
@@ -41,10 +41,10 @@ public class IntoNodeSerdeTest {
@Test
public void testIntoSerde() throws IllegalPathException, IOException {
IntoPathDescriptor descriptor = new IntoPathDescriptor();
- descriptor.specifyTargetPath("root.sg1.d1.s1", new PartialPath("root.sg1.new_d1.s1"));
- descriptor.specifyTargetPath("root.sg1.d1.s2", new PartialPath("root.sg1.new_d1.s2"));
- descriptor.specifyTargetPath("root.sg1.d2.s1", new PartialPath("root.sg1.new_d2.s1"));
- descriptor.specifyTargetPath("root.sg1.d2.s2", new PartialPath("root.sg1.new_d2.s2"));
+ descriptor.specifyTargetPath("root.sg1.d1.s1", "", new PartialPath("root.sg1.new_d1.s1"));
+ descriptor.specifyTargetPath("root.sg1.d1.s2", "", new PartialPath("root.sg1.new_d1.s2"));
+ descriptor.specifyTargetPath("root.sg1.d2.s1", "", new PartialPath("root.sg1.new_d2.s1"));
+ descriptor.specifyTargetPath("root.sg1.d2.s2", "", new PartialPath("root.sg1.new_d2.s2"));
descriptor.specifyDeviceAlignment("root.sg1.new_d1", true);
descriptor.specifyDeviceAlignment("root.sg1.new_d2", false);
IntoNode expectedNode = new IntoNode(new PlanNodeId("TestIntoNode"), descriptor);