This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new b1adb41ae79 Fix the preoblem when using select into with view path 
which is same as base path.
b1adb41ae79 is described below

commit b1adb41ae79b4b84c317d02dd999f937033166d6
Author: Beyyes <[email protected]>
AuthorDate: Thu Jul 13 09:16:02 2023 +0800

    Fix the preoblem when using select into with view path which is same as 
base path.
---
 .../iotdb/db/it/selectinto/IoTDBSelectInto2IT.java |  2 +-
 .../iotdb/db/it/selectinto/IoTDBSelectInto3IT.java |  2 +-
 .../iotdb/db/it/selectinto/IoTDBSelectIntoIT.java  | 13 +++--
 .../queryengine/plan/analyze/AnalyzeVisitor.java   | 29 ++++++++--
 .../plan/planner/OperatorTreeGenerator.java        | 15 ++++-
 .../planner/plan/parameter/IntoPathDescriptor.java | 30 +++++++++-
 .../view/visitor/TransformToExpressionVisitor.java | 65 +++++++++++-----------
 .../plan/optimization/TestPlanBuilder.java         |  2 +-
 .../plan/plan/node/process/IntoNodeSerdeTest.java  |  8 +--
 9 files changed, 113 insertions(+), 53 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto2IT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto2IT.java
index 5754700895f..e9b0bb02fc4 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto2IT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto2IT.java
@@ -44,7 +44,7 @@ public class IoTDBSelectInto2IT extends IoTDBSelectIntoIT {
         .setMaxNumberOfPointsInPage(5)
         .setQueryThreadCount(1);
     EnvFactory.getEnv().initClusterEnvironment();
-    prepareData(SQLs);
+    prepareData(SELECT_INTO_SQL_LIST);
   }
 
   @AfterClass
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto3IT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto3IT.java
index 12a385339bf..ae2bffd192b 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto3IT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectInto3IT.java
@@ -43,7 +43,7 @@ public class IoTDBSelectInto3IT extends IoTDBSelectIntoIT {
         .setSelectIntoInsertTabletPlanRowLimit(5)
         .setQueryThreadCount(1);
     EnvFactory.getEnv().initClusterEnvironment();
-    prepareData(SQLs);
+    prepareData(SELECT_INTO_SQL_LIST);
   }
 
   @AfterClass
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
index 3ba8e643eb1..16b0ca64fe0 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
@@ -49,7 +49,7 @@ import static org.junit.Assert.fail;
 @Category({LocalStandaloneIT.class, ClusterIT.class})
 public class IoTDBSelectIntoIT {
 
-  protected static final List<String> SQLs =
+  public static final List<String> SELECT_INTO_SQL_LIST =
       new ArrayList<>(
           Arrays.asList(
               "CREATE DATABASE root.sg",
@@ -86,11 +86,11 @@ public class IoTDBSelectIntoIT {
               "CREATE TIMESERIES root.sg1.d1.s2 WITH DATATYPE=FLOAT, 
ENCODING=RLE"));
 
   static {
-    SQLs.add("CREATE DATABASE root.sg_type");
+    SELECT_INTO_SQL_LIST.add("CREATE DATABASE root.sg_type");
     for (int deviceId = 0; deviceId < 6; deviceId++) {
       for (TSDataType dataType : TSDataType.values()) {
         if (!dataType.equals(TSDataType.VECTOR)) {
-          SQLs.add(
+          SELECT_INTO_SQL_LIST.add(
               String.format(
                   "CREATE TIMESERIES root.sg_type.d_%d.s_%s %s",
                   deviceId, dataType.name().toLowerCase(), dataType));
@@ -98,9 +98,10 @@ public class IoTDBSelectIntoIT {
       }
     }
     for (int time = 0; time < 12; time++) {
-      SQLs.add(
+      SELECT_INTO_SQL_LIST.add(
           String.format(
-              "INSERT INTO root.sg_type.d_0(time, s_int32, s_int64, s_float, 
s_double, s_boolean, s_text) VALUES (%d, %d, %d, %f, %f, %s, 'text%d')",
+              "INSERT INTO root.sg_type.d_0(time, s_int32, s_int64, s_float, 
s_double, s_boolean, s_text) "
+                  + "VALUES (%d, %d, %d, %f, %f, %s, 'text%d')",
               time, time, time, (float) time, (double) time, time % 2 == 0, 
time));
     }
   }
@@ -129,7 +130,7 @@ public class IoTDBSelectIntoIT {
   public static void setUp() throws Exception {
     EnvFactory.getEnv().getConfig().getCommonConfig().setQueryThreadCount(1);
     EnvFactory.getEnv().initClusterEnvironment();
-    prepareData(SQLs);
+    prepareData(SELECT_INTO_SQL_LIST);
   }
 
   @AfterClass
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 be8cc8ae444..3dfbae4ddd8 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..063a03358dd 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
@@ -221,6 +221,7 @@ import org.apache.iotdb.tsfile.utils.Pair;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Validate;
 
 import java.io.File;
@@ -1630,6 +1631,18 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
 
     context.getTimeSliceAllocator().recordExecutionWeight(operatorContext, 1);
 
+    List<Pair<String, PartialPath>> sourceTargetPathPairList =
+        intoPathDescriptor.getSourceTargetPathPairList();
+    List<String> sourceColumnToViewList = 
intoPathDescriptor.getSourceColumnToViewList();
+    List<Pair<String, PartialPath>> sourceTargetPathPairWithViewList =
+        new ArrayList<>(sourceTargetPathPairList);
+    for (int i = 0; i < sourceColumnToViewList.size(); i++) {
+      String viewPath = sourceColumnToViewList.get(i);
+      if (StringUtils.isNotEmpty(viewPath)) {
+        sourceTargetPathPairWithViewList.get(i).setLeft(viewPath);
+      }
+    }
+
     return new IntoOperator(
         operatorContext,
         child,
@@ -1637,7 +1650,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
         targetPathToSourceInputLocationMap,
         targetPathToDataTypeMap,
         intoPathDescriptor.getTargetDeviceToAlignedMap(),
-        intoPathDescriptor.getSourceTargetPathPairList(),
+        sourceTargetPathPairWithViewList,
         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..140b9fdd307 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
@@ -28,6 +28,8 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.Pair;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
+import org.apache.commons.lang3.StringUtils;
+
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -47,6 +49,10 @@ public class IntoPathDescriptor {
   // List<(sourceColumn, targetPath)>
   private List<Pair<String, PartialPath>> sourceTargetPathPairList;
 
+  // if the sourceColumn is transformed from a viewPath, then store the 
viewPath in
+  // sourceColumnToViewList
+  private final List<String> sourceColumnToViewList;
+
   // targetDevice -> isAlignedDevice
   private final Map<String, Boolean> targetDeviceToAlignedMap;
 
@@ -55,19 +61,24 @@ public class IntoPathDescriptor {
 
   public IntoPathDescriptor() {
     this.sourceTargetPathPairList = new ArrayList<>();
+    this.sourceColumnToViewList = new ArrayList<>();
     this.targetDeviceToAlignedMap = new HashMap<>();
     this.sourceToDataTypeMap = new HashMap<>();
   }
 
   public IntoPathDescriptor(
       List<Pair<String, PartialPath>> sourceTargetPathPairList,
+      List<String> sourceColumnToViewList,
       Map<String, Boolean> targetDeviceToAlignedMap) {
     this.sourceTargetPathPairList = sourceTargetPathPairList;
+    this.sourceColumnToViewList = sourceColumnToViewList;
     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(sourceViewPath == null ? "" : sourceViewPath);
   }
 
   public void specifyDeviceAlignment(String targetDevice, boolean isAligned) {
@@ -100,6 +111,10 @@ public class IntoPathDescriptor {
     return sourceTargetPathPairList;
   }
 
+  public List<String> getSourceColumnToViewList() {
+    return sourceColumnToViewList;
+  }
+
   public Map<String, Boolean> getTargetDeviceToAlignedMap() {
     return targetDeviceToAlignedMap;
   }
@@ -146,6 +161,10 @@ public class IntoPathDescriptor {
       sourceTargetPathPair.right.serialize(stream);
     }
 
+    for (String sourceColumnToView : sourceColumnToViewList) {
+      ReadWriteIOUtils.write(sourceColumnToView, stream);
+    }
+
     ReadWriteIOUtils.write(targetDeviceToAlignedMap.size(), stream);
     for (Map.Entry<String, Boolean> entry : 
targetDeviceToAlignedMap.entrySet()) {
       ReadWriteIOUtils.write(entry.getKey(), stream);
@@ -162,13 +181,20 @@ public class IntoPathDescriptor {
       sourceTargetPathPairList.add(new Pair<>(sourceColumn, targetPath));
     }
 
+    List<String> sourceColumnToViewList = new ArrayList<>();
+    for (int i = 0; i < listSize; i++) {
+      String viewPath = ReadWriteIOUtils.readString(byteBuffer);
+      sourceColumnToViewList.add(StringUtils.isEmpty(viewPath) ? "" : 
viewPath);
+    }
+
     int mapSize = ReadWriteIOUtils.readInt(byteBuffer);
     Map<String, Boolean> targetDeviceToAlignedMap = new HashMap<>(mapSize);
     for (int i = 0; i < mapSize; i++) {
       targetDeviceToAlignedMap.put(
           ReadWriteIOUtils.readString(byteBuffer), 
ReadWriteIOUtils.readBool(byteBuffer));
     }
-    return new IntoPathDescriptor(sourceTargetPathPairList, 
targetDeviceToAlignedMap);
+    return new IntoPathDescriptor(
+        sourceTargetPathPairList, sourceColumnToViewList, 
targetDeviceToAlignedMap);
   }
 
   @Override
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/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);

Reply via email to