You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/10/26 08:50:11 UTC

[iotdb] branch CQTest created (now 47a878208a)

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

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


      at 47a878208a test

This branch includes the following new commits:

     new 1b1ca83caa resolve conflicts
     new 042a6bf43b Merge remote-tracking branch 'origin/lmh/intoOperator' into CQTest
     new 47a878208a test

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.



[iotdb] 02/03: Merge remote-tracking branch 'origin/lmh/intoOperator' into CQTest

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

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

commit 042a6bf43bbac93110813f3f4ae27c9c32cc7ac9
Merge: 1b1ca83caa 0eff62574f
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Oct 26 15:55:31 2022 +0800

    Merge remote-tracking branch 'origin/lmh/intoOperator' into CQTest

 .../java/org/apache/iotdb/it/env/MppConfig.java    |   8 +
 .../org/apache/iotdb/itbase/env/BaseConfig.java    |   8 +
 .../iotdb/db/it/env/StandaloneEnvConfig.java       |  13 +
 .../iotdb/db/it/selectinto/IoTDBSelectInto2IT.java |  59 +++
 .../iotdb/db/it/selectinto/IoTDBSelectIntoIT.java  | 528 +++++++++++++++++++++
 .../org/apache/iotdb/db/it/utils/TestUtils.java    |  10 +
 .../iotdb/db/client/DataNodeInternalClient.java    | 129 +++++
 .../IntoProcessException.java}                     |  26 +-
 .../apache/iotdb/db/mpp/common/SessionInfo.java    |  19 +
 .../fragment/FragmentInstanceContext.java          |  29 +-
 .../fragment/FragmentInstanceManager.java          |   6 +-
 .../db/mpp/execution/operator/OperatorContext.java |   5 +
 .../operator/process/AbstractIntoOperator.java     | 384 +++++++++++++++
 .../operator/process/DeviceViewIntoOperator.java   | 140 ++++++
 .../execution/operator/process/IntoOperator.java   | 104 ++++
 .../process/RawDataAggregationOperator.java        |   2 +-
 .../process/SingleInputAggregationOperator.java    |   2 -
 .../process/SlidingWindowAggregationOperator.java  |   2 +-
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    |  40 ++
 .../db/mpp/plan/planner/LogicalPlanVisitor.java    |   7 +
 .../db/mpp/plan/planner/OperatorTreeGenerator.java | 123 +++++
 .../planner/distribution/ExchangeNodeAdder.java    |   6 +-
 .../SimpleFragmentParallelPlanner.java             |   1 +
 .../plan/planner/distribution/SourceRewriter.java  |  11 +-
 .../distribution/WriteFragmentParallelPlanner.java |   3 +-
 .../db/mpp/plan/planner/plan/FragmentInstance.java |  22 +-
 .../mpp/plan/planner/plan/node/PlanNodeType.java   |  10 +-
 .../db/mpp/plan/planner/plan/node/PlanVisitor.java |  10 +
 .../metedata/read/SchemaQueryOrderByHeatNode.java  |   4 +-
 .../planner/plan/node/process/AggregationNode.java |  23 +-
 .../planner/plan/node/process/DeviceMergeNode.java |  32 +-
 .../{TimeJoinNode.java => DeviceViewIntoNode.java} |  95 ++--
 .../planner/plan/node/process/DeviceViewNode.java  |  19 +-
 .../planner/plan/node/process/ExchangeNode.java    |  41 +-
 .../plan/planner/plan/node/process/FillNode.java   |  46 +-
 .../plan/node/process/GroupByLevelNode.java        |  29 +-
 .../planner/plan/node/process/GroupByTagNode.java  |  17 +-
 .../node/process/{LimitNode.java => IntoNode.java} |  94 ++--
 .../plan/planner/plan/node/process/LimitNode.java  |  37 +-
 ...tiChildNode.java => MultiChildProcessNode.java} |  23 +-
 .../plan/planner/plan/node/process/OffsetNode.java |  36 +-
 .../planner/plan/node/process/ProjectNode.java     |  40 +-
 ...iChildNode.java => SingleChildProcessNode.java} |  50 +-
 .../node/process/SlidingWindowAggregationNode.java |  36 +-
 .../plan/planner/plan/node/process/SortNode.java   |  29 +-
 .../planner/plan/node/process/TimeJoinNode.java    |  17 +-
 .../planner/plan/node/process/TransformNode.java   |  29 +-
 .../node/process/last/LastQueryCollectNode.java    |   4 +-
 .../plan/node/process/last/LastQueryMergeNode.java |   4 +-
 .../plan/node/process/last/LastQueryNode.java      |   4 +-
 .../parameter/DeviceViewIntoPathDescriptor.java    |  11 +-
 .../planner/plan/parameter/IntoPathDescriptor.java |  10 +-
 .../plan/scheduler/load/LoadTsFileScheduler.java   |   6 +-
 .../plan/statement/component/IntoComponent.java    |   8 +-
 .../iotdb/db/mpp/plan/analyze/AnalyzeFailTest.java |  87 +++-
 .../iotdb/db/mpp/plan/analyze/AnalyzeTest.java     |   8 +-
 .../mpp/plan/plan/FragmentInstanceSerdeTest.java   |  10 +-
 .../plan/plan/node/process/IntoNodeSerdeTest.java  |  83 ++++
 .../plan/scheduler/StandaloneSchedulerTest.java    |  18 +-
 .../org/apache/iotdb/tsfile/read/common/Path.java  |  72 ++-
 .../java/org/apache/iotdb/tsfile/utils/BitMap.java |   6 +
 61 files changed, 2164 insertions(+), 571 deletions(-)


[iotdb] 03/03: test

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

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

commit 47a878208a0caf1191893606074d6eef62c17eeb
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Oct 26 16:49:25 2022 +0800

    test
---
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  2 +-
 .../statemachine/PartitionRegionStateMachine.java  |  2 +-
 .../java/org/apache/iotdb/db/it/cq/IoTDBCQIT.java  | 29 +++++++++++-----------
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |  2 +-
 .../metadata/CreateContinuousQueryStatement.java   | 10 +++++---
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |  3 ++-
 6 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index 379b3675bc..69f1e2677a 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
@@ -164,7 +164,7 @@ resampleClause
     : RESAMPLE
         (EVERY everyInterval=DURATION_LITERAL)?
         (FOR DURATION_LITERAL)?
-        (BOUNDARY boundaryTime=dateExpression)?
+        (BOUNDARY boundaryTime=timeValue)?
         (RANGE startTimeOffset=DURATION_LITERAL (COMMA endTimeOffset=DURATION_LITERAL))?
     ;
 
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/PartitionRegionStateMachine.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/PartitionRegionStateMachine.java
index 21dec5d497..711e87f916 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/PartitionRegionStateMachine.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/PartitionRegionStateMachine.java
@@ -161,7 +161,7 @@ public class PartitionRegionStateMachine
       configManager.getNodeManager().startHeartbeatService();
       configManager.getNodeManager().startUnknownDataNodeDetector();
       configManager.getPartitionManager().startRegionCleaner();
-      configManager.getCQManager().startCQScheduler();
+      new Thread(() -> configManager.getCQManager().startCQScheduler()).start();
     } else {
       LOGGER.info(
           "Current node [nodeId:{}, ip:port: {}] is not longer the leader, the new leader is [nodeId:{}]",
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/cq/IoTDBCQIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/cq/IoTDBCQIT.java
index 49a4853190..36425c7fb3 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/cq/IoTDBCQIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/cq/IoTDBCQIT.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.itbase.category.ClusterIT;
 
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
@@ -38,7 +37,6 @@ import static org.junit.Assert.fail;
 
 @RunWith(IoTDBTestRunner.class)
 @Category(ClusterIT.class)
-@Ignore
 public class IoTDBCQIT {
 
   @BeforeClass
@@ -70,7 +68,8 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals(
+            "CQ: Specifying time range in GROUP BY TIME clause is prohibited", e.getMessage());
       }
 
       // 2. specify time filter in where clause
@@ -87,7 +86,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("CQ: Specifying time filters in the query body is prohibited", e.getMessage());
       }
 
       // 3. no every clause meanwhile no group by time
@@ -102,7 +101,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 4. no INTO clause
@@ -117,7 +116,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 5. EVERY interval is less than continuous_query_min_every_interval_in_ms in
@@ -135,7 +134,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 6. start_time_offset < 0
@@ -152,7 +151,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 7. start_time_offset == 0
@@ -169,7 +168,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 8. end_time_offset < 0
@@ -186,7 +185,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 9. end_time_offset == start_time_offset
@@ -203,7 +202,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 10. end_time_offset > start_time_offset
@@ -220,7 +219,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 11. group_by_interval > start_time_offset
@@ -237,7 +236,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 12. TIMEOUT POLICY is not BLOCKED or DISCARD
@@ -255,7 +254,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
       // 13. create duplicated cq
@@ -272,7 +271,7 @@ public class IoTDBCQIT {
         statement.execute(sql);
         fail();
       } catch (Exception e) {
-        // TODO add assert for error message
+        assertEquals("hh", e.getMessage());
       }
 
     } catch (Exception e) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index b7f5d08f7e..4ec5e58033 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -843,7 +843,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
     }
 
     if (ctx.BOUNDARY() != null) {
-      statement.setBoundaryTime(parseDateExpression(ctx.boundaryTime));
+      statement.setBoundaryTime(parseTimeValue(ctx.boundaryTime, DateTimeUtils.currentTime()));
     }
 
     if (ctx.RANGE() != null) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java
index 641a9365ba..a3e11d0d55 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/CreateContinuousQueryStatement.java
@@ -159,7 +159,10 @@ public class CreateContinuousQueryStatement extends Statement implements IConfig
     if (everyInterval
         < IoTDBDescriptor.getInstance().getConfig().getContinuousQueryMinimumEveryInterval()) {
       throw new SemanticException(
-          "CQ: Every interval should not be lower than the `continuous_query_minimum_every_interval` configured.");
+          String.format(
+              "CQ: Every interval [%d] should not be lower than the `continuous_query_minimum_every_interval` [%d] configured.",
+              everyInterval,
+              IoTDBDescriptor.getInstance().getConfig().getContinuousQueryMinimumEveryInterval()));
     }
     if (startTimeOffset <= 0) {
       throw new SemanticException("CQ: The start time offset should be greater than 0.");
@@ -184,8 +187,9 @@ public class CreateContinuousQueryStatement extends Statement implements IConfig
       throw new SemanticException(
           "CQ: Specifying time range in GROUP BY TIME clause is prohibited");
     }
-    if (ExpressionAnalyzer.checkIfTimeFilterExist(
-        queryBodyStatement.getWhereCondition().getPredicate())) {
+    if (queryBodyStatement.getWhereCondition() != null
+        && ExpressionAnalyzer.checkIfTimeFilterExist(
+            queryBodyStatement.getWhereCondition().getPredicate())) {
       throw new SemanticException("CQ: Specifying time filters in the query body is prohibited.");
     }
   }
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 7c3aafec55..108ea6fd8b 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
@@ -816,7 +816,8 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
     }
 
     if (ctx.BOUNDARY() != null) {
-      operator.setFirstExecutionTimeBoundary(parseDateExpression(ctx.dateExpression()));
+      operator.setFirstExecutionTimeBoundary(
+          parseTimeValue(ctx.timeValue(), DateTimeUtils.currentTime()));
     }
   }
 


[iotdb] 01/03: resolve conflicts

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

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

commit 1b1ca83caa4452007ee34c506bd1ae2c2d57dc63
Merge: 1ed166b534 c69748d613
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Oct 26 15:52:51 2022 +0800

    resolve conflicts

 .github/workflows/client-go.yml                    |   2 +-
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |   4 +-
 client-go                                          |   2 +-
 .../client/async/AsyncDataNodeClientPool.java      |   8 +-
 .../iotdb/confignode/manager/ConfigManager.java    |  13 +-
 .../iotdb/confignode/manager/UDFManager.java       |  17 +--
 .../iotdb/confignode/persistence/UDFInfo.java      |   2 +-
 .../thrift/ConfigNodeRPCServiceProcessor.java      |  12 +-
 .../org/apache/iotdb/consensus/IConsensus.java     |  24 ++++
 .../iotdb/consensus/ratis/RatisConsensus.java      |  60 +++++++-
 .../iotdb/consensus/ratis/RatisConsensusTest.java  |  14 ++
 .../java/org/apache/iotdb/it/env/AbstractEnv.java  |  23 ++-
 .../org/apache/iotdb/db/it/IoTDBNestedQueryIT.java |   8 +-
 .../db/it/IoTDBSyntaxConventionIdentifierIT.java   |   3 +
 .../it/IoTDBSyntaxConventionStringLiteralIT.java   |   5 +
 .../db/it/aggregation/IoTDBTagAggregationIT.java   |  16 +++
 .../iotdb/db/it/udf/IoTDBUDFManagementIT.java      |   3 +
 .../db/it/udf/IoTDBUDFOtherWindowQueryIT.java      |   3 +
 .../iotdb/db/it/udf/IoTDBUDFWindowQueryIT.java     |   2 +
 .../db/it/udf/IoTDBUDTFAlignByTimeQueryIT.java     |   3 +
 .../db/it/udf/IoTDBUDTFBuiltinFunctionIT.java      |   3 +
 .../iotdb/db/it/udf/IoTDBUDTFHybridQueryIT.java    |   2 +
 .../iotdb/db/it/udf/IoTDBUDTFNonAlignQueryIT.java  |   2 +
 node-commons/pom.xml                               |   5 +
 .../apache/iotdb/commons/udf/UDFInformation.java   |  83 ++++++++---
 .../org/apache/iotdb/commons/udf/UDFTable.java     |  24 ++++
 .../commons/udf/service/UDFManagementService.java  | 151 ++++++++++++++++----
 .../apache/iotdb/db/client/ConfigNodeClient.java   |  16 +++
 .../execution/schedule/AbstractDriverThread.java   |  60 +++++---
 .../db/mpp/execution/schedule/DriverScheduler.java |  38 ++++-
 .../mpp/execution/schedule/DriverTaskThread.java   |   5 +-
 .../schedule/DriverTaskTimeoutSentinelThread.java  |   5 +-
 .../db/mpp/execution/schedule/ThreadProducer.java  |  32 +++++
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  |  11 +-
 .../config/executor/ClusterConfigTaskExecutor.java | 113 ++++++++++++++-
 .../config/executor/IConfigTaskExecutor.java       |   8 +-
 .../executor/StandaloneConfigTaskExecutor.java     |  21 ++-
 .../config/metadata/CreateFunctionTask.java        |  15 +-
 .../config/metadata/ShowFunctionsTask.java         | 155 ++++++++-------------
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |  59 ++++----
 .../db/mpp/plan/statement/StatementVisitor.java    |   1 +
 .../db/mpp/plan/statement/crud/QueryStatement.java |  19 ++-
 .../metadata/CreateFunctionStatement.java          |  21 ++-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  22 ++-
 .../java/org/apache/iotdb/db/service/DataNode.java |   2 +-
 .../impl/DataNodeInternalRPCServiceImpl.java       |  26 ++--
 .../trigger/service/TriggerManagementService.java  |  18 ++-
 .../DriverTaskTimeoutSentinelThreadTest.java       |  23 ++-
 .../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java |  40 ++++++
 .../iotdb/db/qp/physical/PhysicalPlanTest.java     |   8 +-
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |   2 +
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |   5 +
 .../src/main/thrift/confignode.thrift              |  15 +-
 thrift/src/main/thrift/datanode.thrift             |  16 +--
 54 files changed, 925 insertions(+), 325 deletions(-)

diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index 320b5025cb,144cd3dcb3..396ab2f851
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@@ -1047,10 -1058,6 +1053,11 @@@ public class AnalyzeVisitor extends Sta
          && queryStatement.getResultTimeOrder() == Ordering.DESC) {
        throw new SemanticException("Group by month doesn't support order by time desc now.");
      }
 +    if (!queryStatement.isCqQueryBody()
 +        && (groupByTimeComponent.getStartTime() == 0 && groupByTimeComponent.getEndTime() == 0)) {
-       throw new SemanticException("The query time range should be specified in the GROUP BY TIME clause.");
++      throw new SemanticException(
++          "The query time range should be specified in the GROUP BY TIME clause.");
 +    }
      analysis.setGroupByTimeParameter(new GroupByTimeParameter(groupByTimeComponent));
    }
  
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index f2903a073c,46526e6642..7ed50ae64f
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@@ -31,8 -31,9 +31,10 @@@ import org.apache.iotdb.commons.executa
  import org.apache.iotdb.commons.path.PartialPath;
  import org.apache.iotdb.commons.path.PathPatternTree;
  import org.apache.iotdb.commons.trigger.service.TriggerExecutableManager;
+ import org.apache.iotdb.commons.udf.service.UDFClassLoader;
+ import org.apache.iotdb.commons.udf.service.UDFExecutableManager;
  import org.apache.iotdb.confignode.rpc.thrift.TCountStorageGroupResp;
 +import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
  import org.apache.iotdb.confignode.rpc.thrift.TCreateFunctionReq;
  import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
  import org.apache.iotdb.confignode.rpc.thrift.TCreateTriggerReq;
@@@ -53,9 -53,9 +55,10 @@@ import org.apache.iotdb.confignode.rpc.
  import org.apache.iotdb.confignode.rpc.thrift.TGetTimeSlotListReq;
  import org.apache.iotdb.confignode.rpc.thrift.TGetTimeSlotListResp;
  import org.apache.iotdb.confignode.rpc.thrift.TGetTriggerTableResp;
+ import org.apache.iotdb.confignode.rpc.thrift.TGetUDFTableResp;
  import org.apache.iotdb.confignode.rpc.thrift.TPipeSinkInfo;
  import org.apache.iotdb.confignode.rpc.thrift.TSetStorageGroupReq;
 +import org.apache.iotdb.confignode.rpc.thrift.TShowCQResp;
  import org.apache.iotdb.confignode.rpc.thrift.TShowClusterResp;
  import org.apache.iotdb.confignode.rpc.thrift.TShowConfigNodesResp;
  import org.apache.iotdb.confignode.rpc.thrift.TShowDataNodesResp;
@@@ -81,8 -80,8 +84,9 @@@ import org.apache.iotdb.db.mpp.plan.exe
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.SetStorageGroupTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowClusterTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowConfigNodesTask;
 +import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowContinuousQueriesTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowDataNodesTask;
+ import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowFunctionsTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowRegionTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowStorageGroupTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowTTLTask;
@@@ -93,7 -92,7 +97,8 @@@ import org.apache.iotdb.db.mpp.plan.exe
  import org.apache.iotdb.db.mpp.plan.execution.config.sys.sync.ShowPipeSinkTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.sys.sync.ShowPipeTask;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.CountStorageGroupStatement;
 +import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateContinuousQueryStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateFunctionStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTriggerStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteStorageGroupStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteTimeSeriesStatement;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java
index 97839e9275,0ade284110..9c2f5e07d1
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java
@@@ -23,7 -23,7 +23,8 @@@ import org.apache.iotdb.common.rpc.thri
  import org.apache.iotdb.commons.cluster.NodeStatus;
  import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.CountStorageGroupStatement;
 +import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateContinuousQueryStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateFunctionStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTriggerStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteStorageGroupStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteTimeSeriesStatement;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java
index a6de0f0da2,d53f646d61..bc1aad48bf
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java
@@@ -41,7 -41,7 +41,8 @@@ import org.apache.iotdb.db.mpp.plan.exe
  import org.apache.iotdb.db.mpp.plan.execution.config.sys.sync.ShowPipeSinkTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.sys.sync.ShowPipeTask;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.CountStorageGroupStatement;
 +import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateContinuousQueryStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateFunctionStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateTriggerStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteStorageGroupStatement;
  import org.apache.iotdb.db.mpp.plan.statement.metadata.DeleteTimeSeriesStatement;
diff --cc server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java
index 10075520d7,e79d7d7b61..55afe02880
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/DataNodeInternalRPCServiceImpl.java
@@@ -134,9 -113,8 +133,9 @@@ import org.apache.iotdb.mpp.rpc.thrift.
  import org.apache.iotdb.mpp.rpc.thrift.TDeleteDataForDeleteSchemaReq;
  import org.apache.iotdb.mpp.rpc.thrift.TDeleteTimeSeriesReq;
  import org.apache.iotdb.mpp.rpc.thrift.TDisableDataNodeReq;
- import org.apache.iotdb.mpp.rpc.thrift.TDropFunctionRequest;
+ import org.apache.iotdb.mpp.rpc.thrift.TDropFunctionInstanceReq;
  import org.apache.iotdb.mpp.rpc.thrift.TDropTriggerInstanceReq;
 +import org.apache.iotdb.mpp.rpc.thrift.TExecuteCQ;
  import org.apache.iotdb.mpp.rpc.thrift.TFetchFragmentInstanceStateReq;
  import org.apache.iotdb.mpp.rpc.thrift.TFetchSchemaBlackListReq;
  import org.apache.iotdb.mpp.rpc.thrift.TFetchSchemaBlackListResp;