You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2021/06/06 08:18:20 UTC

[iotdb] branch removeTokenType updated (d3fddf3 -> 656b2d8)

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

xiangweiwei pushed a change to branch removeTokenType
in repository https://gitbox.apache.org/repos/asf/iotdb.git.


    from d3fddf3  Move physicalGenerator to each opeartor inside
     new 25259cf  Fix bugs
     new cba47ca  Fix bug in disable align it (#3333)
     new 656b2d8  Fix insert and udf bug:

The 3 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.


Summary of changes:
 .../qp/logical/crud/AggregationQueryOperator.java  | 26 ++++++++-----------
 .../db/qp/logical/crud/FillQueryOperator.java      | 28 ++++++++-------------
 .../qp/logical/crud/GroupByFillQueryOperator.java  | 29 +++++++++++-----------
 .../db/qp/logical/crud/GroupByQueryOperator.java   | 26 ++++++++-----------
 .../iotdb/db/qp/logical/crud/InsertOperator.java   |  2 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    | 22 +++++++++-------
 .../iotdb/db/qp/logical/crud/UDFQueryOperator.java | 10 +++-----
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |  8 +++---
 .../iotdb/db/integration/IoTDBDisableAlignIT.java  |  2 +-
 .../db/integration/IoTDBUDTFHybridQueryIT.java     |  2 +-
 10 files changed, 70 insertions(+), 85 deletions(-)

[iotdb] 02/03: Fix bug in disable align it (#3333)

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cba47ca08bba006f4667d341247c96e62175c33e
Author: Haimei Guo <68...@users.noreply.github.com>
AuthorDate: Fri Jun 4 15:59:40 2021 +0800

    Fix bug in disable align it (#3333)
    
    (cherry picked from commit 22d8e0d5d19e87431d6bc41f66dbe7572ef09719)
---
 .../test/java/org/apache/iotdb/db/integration/IoTDBDisableAlignIT.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDisableAlignIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDisableAlignIT.java
index 6883be7..60edeca 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDisableAlignIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBDisableAlignIT.java
@@ -405,7 +405,7 @@ public class IoTDBDisableAlignIT {
       String columnName = resultSetMetaData.getColumnName(i);
       Integer typeIndex = expectedHeaderToTypeIndexMap.get(columnName);
       if (typeIndex != null) {
-        Assert.assertEquals(expectedTypes[typeIndex], resultSetMetaData.getColumnType(1 + i / 2));
+        Assert.assertEquals(expectedTypes[typeIndex], resultSetMetaData.getColumnType(i));
       }
       actualIndexToExpectedIndexList.add(expectedHeaderToColumnIndexMap.get(columnName));
     }

[iotdb] 03/03: Fix insert and udf bug:

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 656b2d86ebe0c78a5b0c3f8c76a5bd1a7cd98d06
Author: Alima777 <wx...@gmail.com>
AuthorDate: Sun Jun 6 16:17:38 2021 +0800

    Fix insert and udf bug:
---
 .../java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java  | 2 +-
 .../src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 8 ++++----
 .../org/apache/iotdb/db/integration/IoTDBUDTFHybridQueryIT.java   | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java
index 6d98b2e..b48995e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/InsertOperator.java
@@ -100,7 +100,7 @@ public class InsertOperator extends Operator {
       insertRowsPlan.addOneInsertRowPlan(
           new InsertRowPlan(
               device,
-              times[0],
+              times[i],
               measurementList,
               Arrays.copyOfRange(valueList, i * measurementsNum, (i + 1) * measurementsNum)),
           i);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index 1481cab..af98df6 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -1032,17 +1032,15 @@ public class IoTDBSqlVisitor extends SqlBaseBaseVisitor<Operator> {
       queryOp = new LastQueryOperator(queryOp);
     }
 
-    boolean isFirstElement = true;
     for (ResultColumnContext resultColumnContext : ctx.resultColumn()) {
       selectComponent.addResultColumn(parseResultColumn(resultColumnContext));
       // judge query type according to the first select element
-      if (!hasDecidedQueryType() && isFirstElement) {
+      if (!hasDecidedQueryType()) {
         if (selectComponent.hasAggregationFunction()) {
           queryOp = new AggregationQueryOperator(queryOp);
         } else if (selectComponent.hasTimeSeriesGeneratingFunction()) {
           queryOp = new UDFQueryOperator(queryOp);
         }
-        isFirstElement = false;
       }
     }
 
@@ -1052,7 +1050,9 @@ public class IoTDBSqlVisitor extends SqlBaseBaseVisitor<Operator> {
   private boolean hasDecidedQueryType() {
     return queryOp instanceof GroupByQueryOperator
         || queryOp instanceof FillQueryOperator
-        || queryOp instanceof LastQueryOperator;
+        || queryOp instanceof LastQueryOperator
+        || queryOp instanceof AggregationQueryOperator
+        || queryOp instanceof UDFQueryOperator;
   }
 
   @Override
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFHybridQueryIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFHybridQueryIT.java
index 0710b24..7b63e9e 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFHybridQueryIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBUDTFHybridQueryIT.java
@@ -120,7 +120,7 @@ public class IoTDBUDTFHybridQueryIT {
       assertTrue(
           throwable
               .getMessage()
-              .contains("User-defined and built-in hybrid aggregation is not supported."));
+              .contains("User-defined and built-in hybrid aggregation is not supported together."));
     }
   }
 

[iotdb] 01/03: Fix bugs

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 25259cf67881ae4347b0b10d760c21f462b3e85d
Author: Alima777 <wx...@gmail.com>
AuthorDate: Sun Jun 6 15:44:10 2021 +0800

    Fix bugs
---
 .../qp/logical/crud/AggregationQueryOperator.java  | 26 ++++++++-----------
 .../db/qp/logical/crud/FillQueryOperator.java      | 28 ++++++++-------------
 .../qp/logical/crud/GroupByFillQueryOperator.java  | 29 +++++++++++-----------
 .../db/qp/logical/crud/GroupByQueryOperator.java   | 26 ++++++++-----------
 .../iotdb/db/qp/logical/crud/QueryOperator.java    | 22 +++++++++-------
 .../iotdb/db/qp/logical/crud/UDFQueryOperator.java | 10 +++-----
 6 files changed, 63 insertions(+), 78 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java
index e18e873..f21c5a8 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/AggregationQueryOperator.java
@@ -79,8 +79,8 @@ public class AggregationQueryOperator extends QueryOperator {
   public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator)
       throws QueryProcessException {
     return isAlignByDevice()
-        ? this.generateAggregationAlignByDevicePlan(generator)
-        : this.generateRawDataQueryPlan(generator, new AggregationPlan());
+        ? this.generateAlignByDevicePlan(generator)
+        : super.generateRawDataQueryPlan(generator, initAggregationPlan(new AggregationPlan()));
   }
 
   private boolean verifyAllAggregationDataTypesEqual() throws MetadataException {
@@ -103,12 +103,18 @@ public class AggregationQueryOperator extends QueryOperator {
     }
   }
 
-  protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan)
+  @Override
+  protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator)
       throws QueryProcessException {
+    AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
+    alignByDevicePlan.setAggregationPlan(initAggregationPlan(new AggregationPlan()));
+
+    return alignByDevicePlan;
+  }
+
+  protected AggregationPlan initAggregationPlan(QueryPlan queryPlan) throws QueryProcessException {
     AggregationPlan aggregationPlan = (AggregationPlan) queryPlan;
     aggregationPlan.setAggregations(selectComponent.getAggregationFunctions());
-    super.generateRawDataQueryPlan(generator, aggregationPlan);
-
     if (isGroupByLevel()) {
       aggregationPlan.setLevel(specialClauseComponent.getLevel());
       try {
@@ -119,16 +125,6 @@ public class AggregationQueryOperator extends QueryOperator {
         throw new LogicalOperatorException(e);
       }
     }
-
     return aggregationPlan;
   }
-
-  protected AlignByDevicePlan generateAggregationAlignByDevicePlan(PhysicalGenerator generator)
-      throws QueryProcessException {
-    AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
-    alignByDevicePlan.setAggregationPlan(
-        (AggregationPlan) generateRawDataQueryPlan(generator, new AggregationPlan()));
-
-    return alignByDevicePlan;
-  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java
index 56e0bb1..579016c 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/FillQueryOperator.java
@@ -25,7 +25,6 @@ import org.apache.iotdb.db.qp.constant.FilterConstant.FilterType;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan;
 import org.apache.iotdb.db.qp.physical.crud.FillQueryPlan;
-import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
 
 public class FillQueryOperator extends QueryOperator {
@@ -55,29 +54,24 @@ public class FillQueryOperator extends QueryOperator {
       throws QueryProcessException {
     return isAlignByDevice()
         ? this.generateAlignByDevicePlan(generator)
-        : this.generateRawDataQueryPlan(generator, new FillQueryPlan());
-  }
-
-  @Override
-  protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan)
-      throws QueryProcessException {
-    FillQueryPlan fillQueryPlan = (FillQueryPlan) queryPlan;
-    FilterOperator timeFilter = whereComponent.getFilterOperator();
-    long time = Long.parseLong(((BasicFunctionOperator) timeFilter).getValue());
-    fillQueryPlan.setQueryTime(time);
-    fillQueryPlan.setFillType(((FillClauseComponent) specialClauseComponent).getFillTypes());
-    queryPlan = super.generateRawDataQueryPlan(generator, fillQueryPlan);
-
-    return queryPlan;
+        : super.generateRawDataQueryPlan(generator, initFillQueryPlan());
   }
 
   @Override
   protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator)
       throws QueryProcessException {
     AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
-    alignByDevicePlan.setFillQueryPlan(
-        (FillQueryPlan) generateRawDataQueryPlan(generator, new FillQueryPlan()));
+    alignByDevicePlan.setFillQueryPlan(initFillQueryPlan());
 
     return alignByDevicePlan;
   }
+
+  private FillQueryPlan initFillQueryPlan() {
+    FillQueryPlan fillQueryPlan = new FillQueryPlan();
+    FilterOperator timeFilter = whereComponent.getFilterOperator();
+    long time = Long.parseLong(((BasicFunctionOperator) timeFilter).getValue());
+    fillQueryPlan.setQueryTime(time);
+    fillQueryPlan.setFillType(((FillClauseComponent) specialClauseComponent).getFillTypes());
+    return fillQueryPlan;
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java
index 1cd1f53..ac621cf 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByFillQueryOperator.java
@@ -45,29 +45,28 @@ public class GroupByFillQueryOperator extends GroupByQueryOperator {
   public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator)
       throws QueryProcessException {
     return isAlignByDevice()
-        ? this.generateAggregationAlignByDevicePlan(generator)
-        : this.generateRawDataQueryPlan(generator, new GroupByTimeFillPlan());
+        ? this.generateAlignByDevicePlan(generator)
+        : super.generateRawDataQueryPlan(
+            generator, initGroupByTimeFillPlan(new GroupByTimeFillPlan()));
   }
 
   @Override
-  protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan)
+  protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator)
       throws QueryProcessException {
-    queryPlan = super.generateRawDataQueryPlan(generator, queryPlan);
-    GroupByTimeFillPlan groupByTimeFillPlan = (GroupByTimeFillPlan) queryPlan;
-    GroupByFillClauseComponent groupByFillClauseComponent =
-        (GroupByFillClauseComponent) specialClauseComponent;
-    groupByTimeFillPlan.setFillType(groupByFillClauseComponent.getFillTypes());
+    AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
+    alignByDevicePlan.setGroupByTimePlan(initGroupByTimeFillPlan(new GroupByTimeFillPlan()));
 
-    return queryPlan;
+    return alignByDevicePlan;
   }
 
-  @Override
-  protected AlignByDevicePlan generateAggregationAlignByDevicePlan(PhysicalGenerator generator)
+  protected GroupByTimeFillPlan initGroupByTimeFillPlan(QueryPlan queryPlan)
       throws QueryProcessException {
-    AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
-    alignByDevicePlan.setGroupByTimePlan(
-        (GroupByTimeFillPlan) generateRawDataQueryPlan(generator, new GroupByTimeFillPlan()));
+    GroupByTimeFillPlan groupByTimeFillPlan =
+        (GroupByTimeFillPlan) super.initGroupByTimePlan(queryPlan);
+    GroupByFillClauseComponent groupByFillClauseComponent =
+        (GroupByFillClauseComponent) specialClauseComponent;
+    groupByTimeFillPlan.setFillType(groupByFillClauseComponent.getFillTypes());
 
-    return alignByDevicePlan;
+    return groupByTimeFillPlan;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java
index 8428f46..3ed87ec 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/GroupByQueryOperator.java
@@ -32,16 +32,21 @@ public class GroupByQueryOperator extends AggregationQueryOperator {
   public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator)
       throws QueryProcessException {
     return isAlignByDevice()
-        ? this.generateAggregationAlignByDevicePlan(generator)
-        : this.generateRawDataQueryPlan(generator, new GroupByTimePlan());
+        ? this.generateAlignByDevicePlan(generator)
+        : super.generateRawDataQueryPlan(generator, initGroupByTimePlan(new GroupByTimePlan()));
   }
 
   @Override
-  protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan)
+  protected AlignByDevicePlan generateAlignByDevicePlan(PhysicalGenerator generator)
       throws QueryProcessException {
-    queryPlan = super.generateRawDataQueryPlan(generator, queryPlan);
+    AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
+    alignByDevicePlan.setGroupByTimePlan(initGroupByTimePlan(new GroupByTimePlan()));
+
+    return alignByDevicePlan;
+  }
 
-    GroupByTimePlan groupByTimePlan = (GroupByTimePlan) queryPlan;
+  protected GroupByTimePlan initGroupByTimePlan(QueryPlan queryPlan) throws QueryProcessException {
+    GroupByTimePlan groupByTimePlan = (GroupByTimePlan) initAggregationPlan(queryPlan);
     GroupByClauseComponent groupByClauseComponent = (GroupByClauseComponent) specialClauseComponent;
 
     groupByTimePlan.setInterval(groupByClauseComponent.getUnit());
@@ -49,6 +54,7 @@ public class GroupByQueryOperator extends AggregationQueryOperator {
     groupByTimePlan.setSlidingStep(groupByClauseComponent.getSlidingStep());
     groupByTimePlan.setSlidingStepByMonth(groupByClauseComponent.isSlidingStepByMonth());
     groupByTimePlan.setLeftCRightO(groupByClauseComponent.isLeftCRightO());
+
     if (!groupByClauseComponent.isLeftCRightO()) {
       groupByTimePlan.setStartTime(groupByClauseComponent.getStartTime() + 1);
       groupByTimePlan.setEndTime(groupByClauseComponent.getEndTime() + 1);
@@ -59,14 +65,4 @@ public class GroupByQueryOperator extends AggregationQueryOperator {
 
     return groupByTimePlan;
   }
-
-  @Override
-  protected AlignByDevicePlan generateAggregationAlignByDevicePlan(PhysicalGenerator generator)
-      throws QueryProcessException {
-    AlignByDevicePlan alignByDevicePlan = super.generateAlignByDevicePlan(generator);
-    alignByDevicePlan.setGroupByTimePlan(
-        (GroupByTimePlan) generateRawDataQueryPlan(generator, new GroupByTimePlan()));
-
-    return alignByDevicePlan;
-  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
index ec5fef9..f358efd 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
@@ -173,7 +173,6 @@ public class QueryOperator extends Operator {
 
   protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan)
       throws QueryProcessException {
-
     RawDataQueryPlan rawDataQueryPlan = (RawDataQueryPlan) queryPlan;
     rawDataQueryPlan.setPaths(selectComponent.getPaths());
     rawDataQueryPlan.setResultColumns(selectComponent.getResultColumns());
@@ -203,14 +202,7 @@ public class QueryOperator extends Operator {
       throw new QueryProcessException(e);
     }
 
-    if (specialClauseComponent != null) {
-      rawDataQueryPlan.setWithoutAllNull(specialClauseComponent.isWithoutAllNull());
-      rawDataQueryPlan.setWithoutAnyNull(specialClauseComponent.isWithoutAnyNull());
-      rawDataQueryPlan.setRowLimit(specialClauseComponent.getRowLimit());
-      rawDataQueryPlan.setRowOffset(specialClauseComponent.getRowOffset());
-      rawDataQueryPlan.setAscending(specialClauseComponent.isAscending());
-      rawDataQueryPlan.setAlignByTime(specialClauseComponent.isAlignByTime());
-    }
+    convertSpecialClauseValues(rawDataQueryPlan);
 
     if (queryPlan instanceof QueryIndexPlan) {
       ((QueryIndexPlan) queryPlan).setIndexType(indexType);
@@ -360,6 +352,7 @@ public class QueryOperator extends Operator {
       measurements.addAll(measurementSetOfGivenSuffix);
     }
 
+    convertSpecialClauseValues(alignByDevicePlan);
     // slimit trim on the measurementColumnList
     if (specialClauseComponent.hasSlimit()) {
       int seriesSlimit = specialClauseComponent.getSeriesLimit();
@@ -385,6 +378,17 @@ public class QueryOperator extends Operator {
     return alignByDevicePlan;
   }
 
+  private void convertSpecialClauseValues(QueryPlan queryPlan) {
+    if (specialClauseComponent != null) {
+      queryPlan.setWithoutAllNull(specialClauseComponent.isWithoutAllNull());
+      queryPlan.setWithoutAnyNull(specialClauseComponent.isWithoutAnyNull());
+      queryPlan.setRowLimit(specialClauseComponent.getRowLimit());
+      queryPlan.setRowOffset(specialClauseComponent.getRowOffset());
+      queryPlan.setAscending(specialClauseComponent.isAscending());
+      queryPlan.setAlignByTime(specialClauseComponent.isAlignByTime());
+    }
+  }
+
   private List<PartialPath> removeStarsInDeviceWithUnique(List<PartialPath> paths)
       throws LogicalOptimizeException {
     List<PartialPath> retDevices;
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java
index fb937ee..4b6fdfe 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/UDFQueryOperator.java
@@ -21,7 +21,6 @@ package org.apache.iotdb.db.qp.logical.crud;
 
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
-import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.qp.physical.crud.UDTFPlan;
 import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
 
@@ -38,14 +37,11 @@ public class UDFQueryOperator extends QueryOperator {
   @Override
   public PhysicalPlan generatePhysicalPlan(PhysicalGenerator generator)
       throws QueryProcessException {
-    return this.generateRawDataQueryPlan(generator, new UDTFPlan(selectComponent.getZoneId()));
+    return super.generateRawDataQueryPlan(generator, initUDTFPlan());
   }
 
-  @Override
-  protected QueryPlan generateRawDataQueryPlan(PhysicalGenerator generator, QueryPlan queryPlan)
-      throws QueryProcessException {
-    queryPlan = super.generateRawDataQueryPlan(generator, queryPlan);
-    UDTFPlan udtfPlan = (UDTFPlan) queryPlan;
+  private UDTFPlan initUDTFPlan() {
+    UDTFPlan udtfPlan = new UDTFPlan(selectComponent.getZoneId());
     udtfPlan.constructUdfExecutors(selectComponent.getResultColumns());
     return udtfPlan;
   }