You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2023/03/14 01:51:55 UTC

[iotdb] branch lmh/MLSQL created (now 9e84f71e7c)

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

hui pushed a change to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at 9e84f71e7c merge master

This branch includes the following new commits:

     new cf4f013441 refactor ddlStatement structure in IoTDBSqlParser.g4
     new 5b9d477ff5 fix typo
     new 5861dac24e fix ASTVisitor after modify g4
     new 8eb161efc3 add model management SQL in g4
     new 1ad62fdc89 finish sql->statement
     new 461bdc360f add model management task
     new aa27beab1e Merge remote-tracking branch 'origin/master' into lmh/MLSQL
     new 720bc62ac0 add model management executor (tmp save)
     new c2374bcc3e finish & fix bugs
     new 6966604da8 Merge remote-tracking branch 'origin/master' into lmh/MLSQL
     new 9e84f71e7c merge master

The 11 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/11: refactor ddlStatement structure in IoTDBSqlParser.g4

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit cf4f013441f68f779f32c0c494a409cc2ecf63eb
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Feb 27 17:44:23 2023 +0800

    refactor ddlStatement structure in IoTDBSqlParser.g4
---
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   | 465 +++++++++++----------
 1 file changed, 247 insertions(+), 218 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 5f04e5406d..45ba9a7f79 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
@@ -36,16 +36,25 @@ statement
     ;
 
 ddlStatement
-    : createStorageGroup | createTimeseries | createSchemaTemplate | createTimeseriesOfSchemaTemplate
-    | createFunction | createTrigger | createContinuousQuery
-    | alterTimeseries | alterStorageGroup | deleteStorageGroup | deleteTimeseries | deletePartition | deleteTimeseriesOfSchemaTemplate
-    | dropFunction | dropTrigger | dropContinuousQuery | dropSchemaTemplate
-    | setTTL | unsetTTL | startTrigger | stopTrigger | setSchemaTemplate | unsetSchemaTemplate
-    | showStorageGroup | showDevices | showTimeseries | showChildPaths | showChildNodes
-    | showFunctions | showTriggers | showContinuousQueries | showTTL | showAllTTL | showCluster | showVariables | showRegion | showDataNodes | showConfigNodes
-    | showSchemaTemplates | showNodesInSchemaTemplate
-    | showPathsUsingSchemaTemplate | showPathsSetSchemaTemplate
-    | countStorageGroup | countDevices | countTimeseries | countNodes
+    // Database
+    : createDatabase | dropDatabase | dropPartition | alterDatabase | showDatabases | countDatabases
+    // Timeseries & Path
+    | createTimeseries | dropTimeseries | alterTimeseries
+    | showDevices | showTimeseries | showChildPaths | showChildNodes | countDevices | countTimeseries | countNodes
+    // Schema Template
+    | createSchemaTemplate | createTimeseriesOfSchemaTemplate | dropSchemaTemplate | dropTimeseriesOfSchemaTemplate
+    | showSchemaTemplates | showNodesInSchemaTemplate | showPathsUsingSchemaTemplate | showPathsSetSchemaTemplate
+    | setSchemaTemplate | unsetSchemaTemplate
+    // TTL
+    | setTTL | unsetTTL | showTTL | showAllTTL
+    // Function
+    | createFunction | dropFunction | showFunctions
+    // Trigger
+    | createTrigger | dropTrigger | showTriggers | startTrigger | stopTrigger
+    // CQ
+    | createContinuousQuery | dropContinuousQuery | showContinuousQueries
+    // Cluster
+    | showVariables | showCluster | showRegions | showDataNodes | showConfigNodes
     | getRegionId | getTimeSlotList | getSeriesSlotList | migrateRegion
     ;
 
@@ -72,26 +81,58 @@ syncStatement
  * 2. Data Definition Language (DDL)
  */
 
-// Create Storage Group
-createStorageGroup
-    : SET STORAGE GROUP TO prefixPath storageGroupAttributesClause?
-    | CREATE (STORAGE GROUP | DATABASE) prefixPath storageGroupAttributesClause?
+// Database =========================================================================================
+// ---- Create Database
+createDatabase
+    : SET STORAGE GROUP TO prefixPath databaseAttributesClause?
+    | CREATE (STORAGE GROUP | DATABASE) prefixPath databaseAttributesClause?
     ;
 
-storageGroupAttributesClause
-    : WITH storageGroupAttributeClause (COMMA? storageGroupAttributeClause)*
+databaseAttributesClause
+    : WITH databaseAttributeClause (COMMA? databaseAttributeClause)*
     ;
 
-storageGroupAttributeClause
-    : (TTL | SCHEMA_REPLICATION_FACTOR | DATA_REPLICATION_FACTOR | TIME_PARTITION_INTERVAL | SCHEMA_REGION_GROUP_NUM | DATA_REGION_GROUP_NUM) '=' INTEGER_LITERAL
+databaseAttributeClause
+    : databaseAttributeKey operator_eq INTEGER_LITERAL
     ;
 
-// Alter StorageGroup
-alterStorageGroup
-    : ALTER (STORAGE GROUP | DATABASE) prefixPath storageGroupAttributesClause
+databaseAttributeKey
+    : TTL
+    | SCHEMA_REPLICATION_FACTOR
+    | DATA_REPLICATION_FACTOR
+    | TIME_PARTITION_INTERVAL
+    | SCHEMA_REGION_GROUP_NUM
+    | DATA_REGION_GROUP_NUM
     ;
 
-// Create Timeseries
+// ---- Drop Database
+dropDatabase
+    : (DELETE | DROP) (STORAGE GROUP | DATABASE) prefixPath (COMMA prefixPath)*
+    ;
+
+// ---- Drop Partition
+dropPartition
+    : (DELETE | DROP) PARTITION prefixPath INTEGER_LITERAL(COMMA INTEGER_LITERAL)*
+    ;
+
+// ---- Alter Database
+alterDatabase
+    : ALTER (STORAGE GROUP | DATABASE) prefixPath databaseAttributesClause
+    ;
+
+// ---- Show Databases
+showDatabases
+    : SHOW (STORAGE GROUP | DATABASES) DETAILS? prefixPath?
+    ;
+
+// ---- Count Databases
+countDatabases
+    : COUNT (STORAGE GROUP | DATABASES) prefixPath?
+    ;
+
+
+// Timeseries & Path ===============================================================================
+// ---- Create Timeseries
 createTimeseries
     : CREATE ALIGNED TIMESERIES fullPath alignedMeasurements? #createAlignedTimeseries
     | CREATE TIMESERIES fullPath attributeClauses  #createNonAlignedTimeseries
@@ -102,316 +143,303 @@ alignedMeasurements
     (COMMA nodeNameWithoutWildcard attributeClauses)* RR_BRACKET
     ;
 
-// Create Schema Template
-createSchemaTemplate
-    : CREATE SCHEMA TEMPLATE templateName=identifier
-    ALIGNED? LR_BRACKET templateMeasurementClause (COMMA templateMeasurementClause)* RR_BRACKET
+// ---- Drop Timeseries
+dropTimeseries
+    : (DELETE | DROP) TIMESERIES prefixPath (COMMA prefixPath)*
     ;
 
-templateMeasurementClause
-    : nodeNameWithoutWildcard attributeClauses
+// ---- Alter Timeseries
+alterTimeseries
+    : ALTER TIMESERIES fullPath alterClause
     ;
 
-// Create Timeseries Of Schema Template
-createTimeseriesOfSchemaTemplate
-    : CREATE TIMESERIES OF SCHEMA TEMPLATE ON prefixPath
+alterClause
+    : RENAME beforeName=attributeKey TO currentName=attributeKey
+    | SET attributePair (COMMA attributePair)*
+    | DROP attributeKey (COMMA attributeKey)*
+    | ADD TAGS attributePair (COMMA attributePair)*
+    | ADD ATTRIBUTES attributePair (COMMA attributePair)*
+    | UPSERT aliasClause? tagClause? attributeClause?
     ;
 
-// Create Function
-createFunction
-    : CREATE FUNCTION udfName=identifier AS className=STRING_LITERAL uriClasue?
+aliasClause
+    : ALIAS operator_eq alias
     ;
 
-uriClasue
-    : USING URI uri
+// ---- Show Devices
+showDevices
+    : SHOW DEVICES prefixPath? (WITH (STORAGE GROUP | DATABASE))? rowPaginationClause?
     ;
 
-uri
-    : STRING_LITERAL
+// ---- Show Timeseries
+showTimeseries
+    : SHOW LATEST? TIMESERIES prefixPath? tagWhereClause? rowPaginationClause?
     ;
 
-// Create Trigger
-createTrigger
-    : CREATE triggerType? TRIGGER triggerName=identifier
-        triggerEventClause
-        ON prefixPath
-        AS className=STRING_LITERAL
-        uriClasue?
-        triggerAttributeClause?
+// ---- Show Child Paths
+showChildPaths
+    : SHOW CHILD PATHS prefixPath?
     ;
 
-triggerType
-    : STATELESS | STATEFUL
+// ---- Show Child Nodes
+showChildNodes
+    : SHOW CHILD NODES prefixPath?
     ;
 
-triggerEventClause
-    : (BEFORE | AFTER) (INSERT | DELETE)
+// ---- Count Devices
+countDevices
+    : COUNT DEVICES prefixPath?
     ;
 
-triggerAttributeClause
-    : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
+// ---- Count Timeseries
+countTimeseries
+    : COUNT TIMESERIES prefixPath? tagWhereClause? (GROUP BY LEVEL operator_eq INTEGER_LITERAL)?
     ;
 
-triggerAttribute
-    : key=attributeKey operator_eq value=attributeValue
+// ---- Count Nodes
+countNodes
+    : COUNT NODES prefixPath LEVEL operator_eq INTEGER_LITERAL
     ;
 
-// Create Continuous Query
-createContinuousQuery
-    : CREATE (CONTINUOUS QUERY | CQ) cqId=identifier
-        resampleClause?
-        timeoutPolicyClause?
-        BEGIN
-            selectStatement
-        END
+tagWhereClause
+    : WHERE (attributePair | containsExpression)
     ;
 
-resampleClause
-    : RESAMPLE
-        (EVERY everyInterval=DURATION_LITERAL)?
-        (BOUNDARY boundaryTime=timeValue)?
-        (RANGE startTimeOffset=DURATION_LITERAL (COMMA endTimeOffset=DURATION_LITERAL)?)?
+
+// Schema Template ==================================================================================
+// ---- Create Schema Template
+createSchemaTemplate
+    : CREATE SCHEMA TEMPLATE templateName=identifier
+    ALIGNED? LR_BRACKET templateMeasurementClause (COMMA templateMeasurementClause)* RR_BRACKET
     ;
 
-timeoutPolicyClause
-    : TIMEOUT POLICY (BLOCKED | DISCARD)
+templateMeasurementClause
+    : nodeNameWithoutWildcard attributeClauses
     ;
 
-// Alter Timeseries
-alterTimeseries
-    : ALTER TIMESERIES fullPath alterClause
+// ---- Create Timeseries Of Schema Template
+createTimeseriesOfSchemaTemplate
+    : CREATE TIMESERIES OF SCHEMA TEMPLATE ON prefixPath
     ;
 
-alterClause
-    : RENAME beforeName=attributeKey TO currentName=attributeKey
-    | SET attributePair (COMMA attributePair)*
-    | DROP attributeKey (COMMA attributeKey)*
-    | ADD TAGS attributePair (COMMA attributePair)*
-    | ADD ATTRIBUTES attributePair (COMMA attributePair)*
-    | UPSERT aliasClause? tagClause? attributeClause?
+// ---- Drop Schema Template
+dropSchemaTemplate
+    : DROP SCHEMA TEMPLATE templateName=identifier
     ;
 
-aliasClause
-    : ALIAS operator_eq alias
+// ---- Drop Timeseries of Schema Template
+dropTimeseriesOfSchemaTemplate
+    : ((DELETE | DROP) TIMESERIES OF | DEACTIVATE) SCHEMA TEMPLATE (templateName=identifier) ? FROM prefixPath (COMMA prefixPath)*
     ;
 
-alias
-    : constant
-    | identifier
+// ---- Show Schema Template
+showSchemaTemplates
+    : SHOW SCHEMA TEMPLATES
     ;
 
-// Delete Storage Group
-deleteStorageGroup
-    : (DELETE | DROP) (STORAGE GROUP | DATABASE) prefixPath (COMMA prefixPath)*
+// ---- Show Measurements In Schema Template
+showNodesInSchemaTemplate
+    : SHOW NODES OPERATOR_IN SCHEMA TEMPLATE templateName=identifier
     ;
 
-// Delete Timeseries
-deleteTimeseries
-    : (DELETE | DROP) TIMESERIES prefixPath (COMMA prefixPath)*
+// ---- Show Paths Set Schema Template
+showPathsSetSchemaTemplate
+    : SHOW PATHS SET SCHEMA TEMPLATE templateName=identifier
     ;
 
-// Delete Partition
-deletePartition
-    : DELETE PARTITION prefixPath INTEGER_LITERAL(COMMA INTEGER_LITERAL)*
+// ---- Show Paths Using Schema Template
+showPathsUsingSchemaTemplate
+    : SHOW PATHS prefixPath? USING SCHEMA TEMPLATE templateName=identifier
     ;
 
-// Delete Timeseries of Schema Template
-deleteTimeseriesOfSchemaTemplate
-    : (DELETE TIMESERIES OF | DEACTIVATE) SCHEMA TEMPLATE (templateName=identifier) ? FROM prefixPath (COMMA prefixPath)*
+// ---- Set Schema Template
+setSchemaTemplate
+    : SET SCHEMA TEMPLATE templateName=identifier TO prefixPath
     ;
 
-// Drop Function
-dropFunction
-    : DROP FUNCTION udfName=identifier
+// ---- Unset Schema Template
+unsetSchemaTemplate
+    : UNSET SCHEMA TEMPLATE templateName=identifier FROM prefixPath
     ;
 
-// Drop Trigger
-dropTrigger
-    : DROP TRIGGER triggerName=identifier
+
+// TTL =============================================================================================
+// ---- Set TTL
+setTTL
+    : SET TTL TO path=prefixPath time=INTEGER_LITERAL
     ;
 
-// Drop Continuous Query
-dropContinuousQuery
-    : DROP (CONTINUOUS QUERY|CQ) cqId=identifier
+// ---- Unset TTL
+unsetTTL
+    : UNSET TTL TO path=prefixPath
     ;
 
-// Drop Schema Template
-dropSchemaTemplate
-    : DROP SCHEMA TEMPLATE templateName=identifier
+// ---- Show TTL
+showTTL
+    : SHOW TTL ON prefixPath (COMMA prefixPath)*
     ;
 
-// Get Region Id
-getRegionId
-    : SHOW (DATA|SCHEMA) REGIONID OF path=prefixPath WHERE (SERIESSLOTID operator_eq
-        seriesSlot=INTEGER_LITERAL|DEVICEID operator_eq deviceId=prefixPath) (OPERATOR_AND (TIMESLOTID operator_eq timeSlot=INTEGER_LITERAL|
-        TIMESTAMP operator_eq timeStamp=INTEGER_LITERAL))?
+// ---- Show All TTL
+showAllTTL
+    : SHOW ALL TTL
     ;
 
-// Get Time Slot List
-getTimeSlotList
-    : SHOW TIMESLOTID OF path=prefixPath WHERE SERIESSLOTID operator_eq seriesSlot=INTEGER_LITERAL
-        (OPERATOR_AND STARTTIME operator_eq startTime=INTEGER_LITERAL)?
-        (OPERATOR_AND ENDTIME operator_eq endTime=INTEGER_LITERAL)?
+
+// Function =========================================================================================
+// ---- Create Function
+createFunction
+    : CREATE FUNCTION udfName=identifier AS className=STRING_LITERAL uriClasue?
     ;
 
-// Get Series Slot List
-getSeriesSlotList
-    : SHOW (DATA|SCHEMA)? SERIESSLOTID OF path=prefixPath
+uriClasue
+    : USING URI uri
     ;
 
-// Migrate Region
-migrateRegion
-    : MIGRATE REGION regionId=INTEGER_LITERAL FROM fromId=INTEGER_LITERAL TO toId=INTEGER_LITERAL
+uri
+    : STRING_LITERAL
     ;
 
-// Set TTL
-setTTL
-    : SET TTL TO path=prefixPath time=INTEGER_LITERAL
+// ---- Drop Function
+dropFunction
+    : DROP FUNCTION udfName=identifier
     ;
 
-// Unset TTL
-unsetTTL
-    : UNSET TTL TO path=prefixPath
+// ---- Show Functions
+showFunctions
+    : SHOW FUNCTIONS
     ;
 
-// Set Schema Template
-setSchemaTemplate
-    : SET SCHEMA TEMPLATE templateName=identifier TO prefixPath
+
+// Trigger =========================================================================================
+// ---- Create Trigger
+createTrigger
+    : CREATE triggerType? TRIGGER triggerName=identifier
+        triggerEventClause
+        ON prefixPath
+        AS className=STRING_LITERAL
+        uriClasue?
+        triggerAttributeClause?
     ;
 
-// Unset Schema Template
-unsetSchemaTemplate
-    : UNSET SCHEMA TEMPLATE templateName=identifier FROM prefixPath
+triggerType
+    : STATELESS | STATEFUL
     ;
 
-// Start Trigger
-startTrigger
-    : START TRIGGER triggerName=identifier
+triggerEventClause
+    : (BEFORE | AFTER) (INSERT | DELETE)
     ;
 
-// Stop Trigger
-stopTrigger
-    : STOP TRIGGER triggerName=identifier
+triggerAttributeClause
+    : WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
     ;
 
-// Show Storage Group
-showStorageGroup
-    : SHOW (STORAGE GROUP | DATABASES) DETAILS? prefixPath?
+triggerAttribute
+    : key=attributeKey operator_eq value=attributeValue
     ;
 
-// Show Devices
-showDevices
-    : SHOW DEVICES prefixPath? (WITH (STORAGE GROUP | DATABASE))? rowPaginationClause?
+// ---- Drop Trigger
+dropTrigger
+    : DROP TRIGGER triggerName=identifier
     ;
 
-// Show Timeseries
-showTimeseries
-    : SHOW LATEST? TIMESERIES prefixPath? tagWhereClause? rowPaginationClause?
+// ---- Show Triggers
+showTriggers
+    : SHOW TRIGGERS
     ;
 
-// Show Child Paths
-showChildPaths
-    : SHOW CHILD PATHS prefixPath?
+// ---- Start Trigger
+startTrigger
+    : START TRIGGER triggerName=identifier
     ;
 
-// Show Child Nodes
-showChildNodes
-    : SHOW CHILD NODES prefixPath?
+// ---- Stop Trigger
+stopTrigger
+    : STOP TRIGGER triggerName=identifier
     ;
 
-// Show Functions
-showFunctions
-    : SHOW FUNCTIONS
+
+// CQ ==============================================================================================
+// ---- Create Continuous Query
+createContinuousQuery
+    : CREATE (CONTINUOUS QUERY | CQ) cqId=identifier
+        resampleClause?
+        timeoutPolicyClause?
+        BEGIN
+            selectStatement
+        END
     ;
 
-// Show Triggers
-showTriggers
-    : SHOW TRIGGERS
+resampleClause
+    : RESAMPLE
+        (EVERY everyInterval=DURATION_LITERAL)?
+        (BOUNDARY boundaryTime=timeValue)?
+        (RANGE startTimeOffset=DURATION_LITERAL (COMMA endTimeOffset=DURATION_LITERAL)?)?
     ;
 
-// Show Continuous Queries
-showContinuousQueries
-    : SHOW (CONTINUOUS QUERIES | CQS)
+timeoutPolicyClause
+    : TIMEOUT POLICY (BLOCKED | DISCARD)
     ;
 
-// Show TTL
-showTTL
-    : SHOW TTL ON prefixPath (COMMA prefixPath)*
+// ---- Drop Continuous Query
+dropContinuousQuery
+    : DROP (CONTINUOUS QUERY|CQ) cqId=identifier
     ;
 
-// Show All TTL
-showAllTTL
-    : SHOW ALL TTL
+// ---- Show Continuous Queries
+showContinuousQueries
+    : SHOW (CONTINUOUS QUERIES | CQS)
     ;
 
-// Show Variables
+
+// Cluster =========================================================================================
+// ---- Show Variables
 showVariables
     : SHOW VARIABLES
     ;
 
-// Show Cluster
+// ---- Show Cluster
 showCluster
     : SHOW CLUSTER (DETAILS)?
     ;
 
-// Show Region
-showRegion
+// ---- Show Regions
+showRegions
     : SHOW (SCHEMA | DATA)? REGIONS (OF (STORAGE GROUP | DATABASE) prefixPath? (COMMA prefixPath)*)?
         (ON NODEID INTEGER_LITERAL (COMMA INTEGER_LITERAL)*)?
     ;
 
-// Show Data Nodes
+// ---- Show Data Nodes
 showDataNodes
     : SHOW DATANODES
     ;
 
-// Show Config Nodes
+// ---- Show Config Nodes
 showConfigNodes
     : SHOW CONFIGNODES
     ;
 
-// Show Schema Template
-showSchemaTemplates
-    : SHOW SCHEMA TEMPLATES
-    ;
-
-// Show Measurements In Schema Template
-showNodesInSchemaTemplate
-    : SHOW NODES OPERATOR_IN SCHEMA TEMPLATE templateName=identifier
-    ;
-
-// Show Paths Set Schema Template
-showPathsSetSchemaTemplate
-    : SHOW PATHS SET SCHEMA TEMPLATE templateName=identifier
-    ;
-
-// Show Paths Using Schema Template
-showPathsUsingSchemaTemplate
-    : SHOW PATHS prefixPath? USING SCHEMA TEMPLATE templateName=identifier
-    ;
-
-// Count Storage Group
-countStorageGroup
-    : COUNT (STORAGE GROUP | DATABASES) prefixPath?
-    ;
-
-// Count Devices
-countDevices
-    : COUNT DEVICES prefixPath?
+// ---- Get Region Id
+getRegionId
+    : SHOW (DATA|SCHEMA) REGIONID OF path=prefixPath WHERE (SERIESSLOTID operator_eq
+        seriesSlot=INTEGER_LITERAL|DEVICEID operator_eq deviceId=prefixPath) (OPERATOR_AND (TIMESLOTID operator_eq timeSlot=INTEGER_LITERAL|
+        TIMESTAMP operator_eq timeStamp=INTEGER_LITERAL))?
     ;
 
-// Count Timeseries
-countTimeseries
-    : COUNT TIMESERIES prefixPath? tagWhereClause? (GROUP BY LEVEL operator_eq INTEGER_LITERAL)?
+// ---- Get Time Slot List
+getTimeSlotList
+    : SHOW TIMESLOTID OF path=prefixPath WHERE SERIESSLOTID operator_eq seriesSlot=INTEGER_LITERAL
+        (OPERATOR_AND STARTTIME operator_eq startTime=INTEGER_LITERAL)?
+        (OPERATOR_AND ENDTIME operator_eq endTime=INTEGER_LITERAL)?
     ;
 
-// Count Nodes
-countNodes
-    : COUNT NODES prefixPath LEVEL operator_eq INTEGER_LITERAL
+// ---- Get Series Slot List
+getSeriesSlotList
+    : SHOW (DATA|SCHEMA)? SERIESSLOTID OF path=prefixPath
     ;
 
-tagWhereClause
-    : WHERE (attributePair | containsExpression)
+// ---- Migrate Region
+migrateRegion
+    : MIGRATE REGION regionId=INTEGER_LITERAL FROM fromId=INTEGER_LITERAL TO toId=INTEGER_LITERAL
     ;
 
 
@@ -873,10 +901,6 @@ prefixPath
     : ROOT (DOT nodeName)*
     ;
 
-suffixPath
-    : nodeName (DOT nodeName)*
-    ;
-
 intoPath
     : ROOT (DOT nodeNameInIntoPath)* #fullPathInIntoPath
     | nodeNameInIntoPath (DOT nodeNameInIntoPath)* #suffixPathInIntoPath
@@ -1011,3 +1035,8 @@ attributeValue
     : identifier
     | constant
     ;
+
+alias
+    : constant
+    | identifier
+    ;


[iotdb] 06/11: add model management task

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 461bdc360f7f8390f6a01e1ed9f8aef736a12bf4
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Feb 28 14:50:14 2023 +0800

    add model management task
---
 .../plan/execution/config/ConfigTaskVisitor.java   | 30 ++++++++++++++++
 .../config/executor/ClusterConfigTaskExecutor.java | 21 +++++++++++
 .../config/executor/IConfigTaskExecutor.java       |  9 +++++
 .../config/metadata/model/CreateModelTask.java     | 42 ++++++++++++++++++++++
 .../config/metadata/model/DropModelTask.java       | 41 +++++++++++++++++++++
 .../config/metadata/model/ShowModelsTask.java      | 37 +++++++++++++++++++
 .../config/metadata/model/ShowTrailsTask.java      | 41 +++++++++++++++++++++
 7 files changed, 221 insertions(+)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java
index b5d71185e6..abefada86d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java
@@ -46,6 +46,10 @@ import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowTTLTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowTriggersTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowVariablesTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.UnSetTTLTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.model.CreateModelTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.model.DropModelTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.model.ShowModelsTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.model.ShowTrailsTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.CreateSchemaTemplateTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.DeactivateSchemaTemplateTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.DropSchemaTemplateTask;
@@ -98,6 +102,10 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTriggersStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowVariablesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.CreateModelStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.DropModelStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.ShowModelsStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.ShowTrailsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.CreateSchemaTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DeactivateTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DropSchemaTemplateStatement;
@@ -426,6 +434,28 @@ public class ConfigTaskVisitor
     return new ShowContinuousQueriesTask();
   }
 
+  /** ML Model Management */
+  @Override
+  public IConfigTask visitCreateModel(
+      CreateModelStatement createModelStatement, TaskContext context) {
+    return new CreateModelTask(createModelStatement);
+  }
+
+  @Override
+  public IConfigTask visitDropModel(DropModelStatement dropModelStatement, TaskContext context) {
+    return new DropModelTask(dropModelStatement.getModelId());
+  }
+
+  @Override
+  public IConfigTask visitShowModels(ShowModelsStatement showModelsStatement, TaskContext context) {
+    return new ShowModelsTask();
+  }
+
+  @Override
+  public IConfigTask visitShowTrails(ShowTrailsStatement showTrailsStatement, TaskContext context) {
+    return new ShowTrailsTask(showTrailsStatement.getModelId());
+  }
+
   public static class TaskContext {
 
     private final String queryId;
diff --git 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
index 52fd828625..6c6a07e313 100644
--- 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
@@ -123,6 +123,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDataNodesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.CreateModelStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.CreateSchemaTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DeactivateTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DropSchemaTemplateStatement;
@@ -1634,4 +1635,24 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
 
     return future;
   }
+
+  @Override
+  public SettableFuture<ConfigTaskResult> createModel(CreateModelStatement createModelStatement) {
+    return null;
+  }
+
+  @Override
+  public SettableFuture<ConfigTaskResult> dropModel(String modelId) {
+    return null;
+  }
+
+  @Override
+  public SettableFuture<ConfigTaskResult> showModels() {
+    return null;
+  }
+
+  @Override
+  public SettableFuture<ConfigTaskResult> showTrails(String modelId) {
+    return null;
+  }
 }
diff --git 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
index 03ac9fa524..b674737feb 100644
--- 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
@@ -39,6 +39,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDataNodesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.CreateModelStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.CreateSchemaTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DeactivateTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DropSchemaTemplateStatement;
@@ -171,4 +172,12 @@ public interface IConfigTaskExecutor {
   SettableFuture<ConfigTaskResult> dropContinuousQuery(String cqId);
 
   SettableFuture<ConfigTaskResult> showContinuousQueries();
+
+  SettableFuture<ConfigTaskResult> createModel(CreateModelStatement createModelStatement);
+
+  SettableFuture<ConfigTaskResult> dropModel(String modelId);
+
+  SettableFuture<ConfigTaskResult> showModels();
+
+  SettableFuture<ConfigTaskResult> showTrails(String modelId);
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/CreateModelTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/CreateModelTask.java
new file mode 100644
index 0000000000..48909f0a03
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/CreateModelTask.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.execution.config.metadata.model;
+
+import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.CreateModelStatement;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class CreateModelTask implements IConfigTask {
+
+  private final CreateModelStatement createModelStatement;
+
+  public CreateModelTask(CreateModelStatement createModelStatement) {
+    this.createModelStatement = createModelStatement;
+  }
+
+  @Override
+  public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
+      throws InterruptedException {
+    return configTaskExecutor.createModel(createModelStatement);
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/DropModelTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/DropModelTask.java
new file mode 100644
index 0000000000..1efd1aad0a
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/DropModelTask.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.execution.config.metadata.model;
+
+import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class DropModelTask implements IConfigTask {
+
+  private final String modelId;
+
+  public DropModelTask(String modelId) {
+    this.modelId = modelId;
+  }
+
+  @Override
+  public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
+      throws InterruptedException {
+    return configTaskExecutor.dropModel(modelId);
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
new file mode 100644
index 0000000000..10b7a41ce0
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.execution.config.metadata.model;
+
+import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class ShowModelsTask implements IConfigTask {
+
+  public ShowModelsTask() {}
+
+  @Override
+  public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
+      throws InterruptedException {
+    return configTaskExecutor.showModels();
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
new file mode 100644
index 0000000000..f4c9c6388f
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.execution.config.metadata.model;
+
+import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
+import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class ShowTrailsTask implements IConfigTask {
+
+  private final String modelId;
+
+  public ShowTrailsTask(String modelId) {
+    this.modelId = modelId;
+  }
+
+  @Override
+  public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
+      throws InterruptedException {
+    return configTaskExecutor.showTrails(modelId);
+  }
+}


[iotdb] 10/11: Merge remote-tracking branch 'origin/master' into lmh/MLSQL

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 6966604da88ce2bacf85c4783a743a59da4a1a54
Merge: c2374bcc3e b5bb109f0f
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Mar 13 15:28:55 2023 +0800

    Merge remote-tracking branch 'origin/master' into lmh/MLSQL
    
    # Conflicts:
    #       antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
    #       server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
    #       server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java

 .github/workflows/iotdb-ml.yml                     |    60 +
 .github/workflows/main-unix.yml                    |     8 +-
 .github/workflows/main-win.yml                     |     6 +-
 .github/workflows/site-build.yml                   |     4 +-
 LICENSE-binary                                     |     5 +
 antlr/pom.xml                                      |     2 +-
 .../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 |     3 +
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |    46 +-
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4  |    40 +-
 cli/pom.xml                                        |     2 +-
 cli/src/assembly/resources/sbin/start-cli.sh       |     2 +-
 cli/src/assembly/resources/tools/export-csv.sh     |     2 +-
 cli/src/assembly/resources/tools/export-tsfile.sh  |     2 +-
 cli/src/assembly/resources/tools/import-csv.sh     |     2 +-
 cli/src/assembly/resources/tools/load-tsfile.sh    |     2 +-
 .../java/org/apache/iotdb/cli/AbstractCli.java     |    54 +-
 .../org/apache/iotdb/tool/AbstractCsvTool.java     |    22 +-
 .../java/org/apache/iotdb/cli/AbstractCliIT.java   |     3 +-
 client-cpp/pom.xml                                 |     2 +-
 client-cpp/src/main/Session.h                      |     3 +-
 client-py/SessionExample.py                        |     2 +-
 client-py/iotdb/Session.py                         |     5 +-
 client-py/iotdb/utils/IoTDBConstants.py            |     1 +
 client-py/iotdb/utils/NumpyTablet.py               |     5 +-
 client-py/iotdb/utils/Tablet.py                    |     5 +-
 client-py/pom.xml                                  |     2 +-
 client-py/tests/test_session.py                    |     2 +-
 code-coverage/pom.xml                              |     2 +-
 compile-tools/pom.xml                              |     2 +-
 compile-tools/thrift/pom.xml                       |     2 +-
 confignode/pom.xml                                 |     7 +-
 .../confignode/client/DataNodeRequestType.java     |     4 +
 .../async/AsyncConfigNodeHeartbeatClientPool.java  |     6 +-
 .../client/async/AsyncDataNodeClientPool.java      |     4 +-
 .../async/AsyncDataNodeHeartbeatClientPool.java    |     6 +-
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |    36 +-
 .../confignode/conf/ConfigNodeDescriptor.java      |     2 +
 .../consensus/request/ConfigPhysicalPlanType.java  |     8 +-
 .../read/pipe/plugin/GetPipePluginJarPlan.java     |    66 +
 .../read/pipe/plugin/GetPipePluginTablePlan.java   |    42 +
 .../write/pipe/plugin/CreatePipePluginPlan.java    |    72 +
 .../write/pipe/plugin/DropPipePluginPlan.java      |    56 +
 .../response/pipe/plugin/PipePluginTableResp.java  |    49 +
 .../statemachine/ConfigNodeRegionStateMachine.java |   394 -
 .../statemachine/ConfigRegionStateMachine.java     |   377 +
 .../iotdb/confignode/manager/ConfigManager.java    |   123 +-
 .../apache/iotdb/confignode/manager/IManager.java  |    14 +
 .../iotdb/confignode/manager/ProcedureManager.java |     5 +-
 .../manager/consensus/ConsensusManager.java        |    20 +-
 .../iotdb/confignode/manager/pipe/PipeManager.java |    42 +
 .../manager/pipe/PipePluginCoordinator.java        |   209 +
 .../persistence/executor/ConfigPlanExecutor.java   |    20 +-
 .../partition/DatabasePartitionTable.java          |     2 +-
 .../confignode/persistence/pipe/PipeInfo.java      |    48 +
 .../persistence/pipe/PipePluginInfo.java           |   214 +
 .../procedure/env/ConfigNodeProcedureEnv.java      |     2 +-
 .../procedure/env/DataNodeRemoveHandler.java       |     2 +-
 .../procedure/impl/schema/DataNodeRegionTask.java  |   195 -
 .../impl/schema/DataNodeRegionTaskExecutor.java    |   210 +
 .../impl/schema/DeactivateTemplateProcedure.java   |   242 +-
 .../impl/schema/DeleteDatabaseProcedure.java       |    13 +-
 .../impl/schema/DeleteTimeSeriesProcedure.java     |   340 +-
 .../impl/schema/UnsetTemplateProcedure.java        |   121 +-
 .../iotdb/confignode/service/ConfigNode.java       |    21 +-
 .../thrift/ConfigNodeRPCServiceProcessor.java      |    21 +-
 .../request/ConfigPhysicalPlanSerDeTest.java       |    24 +-
 .../persistence/ClusterSchemaInfoTest.java         |    21 +-
 .../confignode/persistence/TemplateTableTest.java  |    36 +-
 .../impl/DeactivateTemplateProcedureTest.java      |     4 +-
 .../procedure/impl/OperatePipeProcedureTest.java   |   174 -
 .../procedure/impl/UnsetTemplateProcedureTest.java |     2 +-
 consensus/README.md                                |     2 +-
 consensus/pom.xml                                  |     2 +-
 .../common/request/IndexedConsensusRequest.java    |    19 +-
 .../iotdb/consensus/config/IoTConsensusConfig.java |    18 +
 .../consensus/iot/IoTConsensusServerImpl.java      |    16 +-
 .../iot/client/AsyncIoTConsensusServiceClient.java |    19 +-
 .../iot/client/IoTConsensusClientPool.java         |     4 +
 .../iot/client/SyncIoTConsensusServiceClient.java  |    32 +-
 .../consensus/iot/logdispatcher/LogDispatcher.java |    33 +-
 .../ratis/ApplicationStateMachineProxy.java        |    19 +
 .../iotdb/consensus/simple/SimpleConsensus.java    |    15 +
 .../consensus/iot/util/FakeConsensusReqReader.java |     4 +-
 .../apache/iotdb/consensus/ratis/UtilsTest.java    |     4 +-
 .../consensus/simple/SimpleConsensusTest.java      |     4 +-
 distribution/pom.xml                               |     2 +-
 .../DockerCompose/docker-compose-cluster-1c2d.yml  |    22 +-
 .../DockerCompose/docker-compose-cluster-3c3d.yml  |    60 -
 .../DockerCompose/docker-compose-host-3c3d.yml     |    27 +-
 .../DockerCompose/docker-compose-standalone.yml    |    10 +-
 docker/src/main/Dockerfile-1.0.0-confignode        |     4 +-
 docker/src/main/Dockerfile-1.0.0-datanode          |     4 +-
 ...unity-Powered By.md => Community-Powered-By.md} |     0
 docs/Community/Community-Project Committers.md     |    22 -
 docs/Community/Community-Project-Committers.md     |    25 +
 docs/Development/VoteRelease.md                    |     4 +-
 docs/README.md                                     |     5 +
 docs/UserGuide/API/InfluxDB-Protocol.md            |    10 +-
 docs/UserGuide/API/Programming-JDBC.md             |     2 +-
 docs/UserGuide/API/Programming-MQTT.md             |     6 +-
 .../UserGuide/API/Programming-Python-Native-API.md |     2 +-
 docs/UserGuide/Cluster/Cluster-Concept.md          |     4 +-
 docs/UserGuide/Cluster/Cluster-Maintenance.md      |   271 +-
 docs/UserGuide/Data-Concept/Compression.md         |     2 +
 .../Data-Concept/Data-Model-and-Terminology.md     |     4 +-
 docs/UserGuide/Data-Concept/Schema-Template.md     |     6 +-
 docs/UserGuide/Data-Concept/Time-Partition.md      |     2 +-
 docs/UserGuide/Ecosystem-Integration/DBeaver.md    |    16 +-
 .../Ecosystem-Integration/Grafana-Connector.md     |     6 +-
 .../Ecosystem-Integration/Grafana-Plugin.md        |    58 +-
 docs/UserGuide/Ecosystem-Integration/NiFi-IoTDB.md |     4 +-
 .../UserGuide/Ecosystem-Integration/Spark-IoTDB.md |     2 +-
 .../Ecosystem-Integration/Spark-TsFile.md          |     4 +-
 .../Ecosystem-Integration/Writing-Data-on-HDFS.md  |     2 +-
 .../Ecosystem-Integration/Zeppelin-IoTDB.md        |     8 +-
 .../Edge-Cloud-Collaboration/Sync-Tool.md          |     4 +-
 .../Integration-Test-refactoring-tutorial.md       |     4 +-
 docs/UserGuide/IoTDB-Introduction/Architecture.md  |     2 +-
 docs/UserGuide/IoTDB-Introduction/Scenario.md      |    14 +-
 docs/UserGuide/Maintenance-Tools/JMX-Tool.md       |     4 +-
 docs/UserGuide/Maintenance-Tools/Log-Tool.md       |     6 +-
 .../Maintenance-Tools/Maintenance-Command.md       |    15 +-
 .../Maintenance-Tools/TsFile-Settle-Tool.md        |    41 +
 docs/UserGuide/Monitor-Alert/Alerting.md           |     2 +-
 .../Apache-IoTDB-ConfigNode-Dashboard.json         |  2545 ++--
 .../Apache-IoTDB-DataNode-Dashboard.json           |  7101 ++++++++----
 .../Apache-IoTDB-Network-Dashboard.json            |   444 +
 ...pache-IoTDB-Performance-Overview-Dashboard.json |  1518 ++-
 docs/UserGuide/Monitor-Alert/Metric-Tool.md        |   120 +-
 .../Operate-Metadata/Auto-Create-MetaData.md       |     2 +-
 docs/UserGuide/Operate-Metadata/Node.md            |     2 +-
 docs/UserGuide/Operate-Metadata/Timeseries.md      |     2 +-
 docs/UserGuide/Operators-Functions/Aggregation.md  |    80 +-
 .../Operators-Functions/Continuous-Interval.md     |     8 +-
 docs/UserGuide/Operators-Functions/Conversion.md   |   151 +-
 .../Operators-Functions/Machine-Learning.md        |   123 +
 docs/UserGuide/Operators-Functions/Sample.md       |    10 +-
 .../Operators-Functions/User-Defined-Function.md   |    10 +-
 docs/UserGuide/Query-Data/Continuous-Query.md      |     8 +-
 docs/UserGuide/Query-Data/Group-By.md              |     6 +-
 docs/UserGuide/Query-Data/Overview.md              |     2 +-
 docs/UserGuide/Query-Data/Pagination.md            |     6 +-
 docs/UserGuide/Query-Data/Select-Into.md           |    24 +-
 .../UserGuide/QuickStart/Command-Line-Interface.md |    28 +-
 docs/UserGuide/QuickStart/QuickStart.md            |     2 +-
 docs/UserGuide/QuickStart/WayToGetIoTDB.md         |    62 +-
 docs/UserGuide/Reference/Common-Config-Manual.md   |    25 +-
 docs/UserGuide/Reference/SQL-Reference.md          |     4 +-
 docs/UserGuide/Reference/TSDB-Comparison.md        |    16 +-
 docs/UserGuide/Syntax-Conventions/Identifier.md    |     2 +-
 docs/UserGuide/Syntax-Conventions/KeyValue-Pair.md |     4 +-
 .../UserGuide/Syntax-Conventions/Literal-Values.md |    10 +-
 .../Syntax-Conventions/NodeName-In-Path.md         |    12 +-
 .../Syntax-Conventions/Session-And-TsFile-API.md   |    18 +-
 docs/UserGuide/UDF-Library/M4.md                   |    26 -
 docs/UserGuide/UserGuideReadme.md                  |     5 +-
 docs/UserGuide/Write-Data/Batch-Load-Tool.md       |     2 +-
 ...unity-Powered By.md => Community-Powered-By.md} |     0
 docs/zh/Community/Community-Project Committers.md  |    22 -
 docs/zh/Community/Community-Project-Committers.md  |    25 +
 docs/zh/README.md                                  |     6 +
 docs/zh/UserGuide/API/InfluxDB-Protocol.md         |    10 +-
 docs/zh/UserGuide/API/Interface-Comparison.md      |     2 +-
 .../zh/UserGuide/API/Programming-Cpp-Native-API.md |    40 +-
 docs/zh/UserGuide/API/Programming-JDBC.md          |     2 +-
 .../UserGuide/API/Programming-Java-Native-API.md   |    48 +-
 docs/zh/UserGuide/API/Programming-MQTT.md          |     4 +-
 .../UserGuide/API/Programming-Python-Native-API.md |    78 +-
 docs/zh/UserGuide/Cluster/Cluster-Concept.md       |     6 +-
 docs/zh/UserGuide/Cluster/Cluster-Maintenance.md   |   300 +-
 docs/zh/UserGuide/Cluster/Cluster-Setup.md         |    58 +-
 .../UserGuide/Cluster/Deployment-Recommendation.md |    26 +-
 docs/zh/UserGuide/Data-Concept/Compression.md      |     7 +-
 .../Data-Concept/Data-Model-and-Terminology.md     |     4 +-
 docs/zh/UserGuide/Data-Concept/Data-Type.md        |    14 +-
 docs/zh/UserGuide/Data-Concept/Deadband-Process.md |     4 +-
 docs/zh/UserGuide/Data-Concept/Encoding.md         |     6 +-
 docs/zh/UserGuide/Data-Concept/Schema-Template.md  |    16 +-
 docs/zh/UserGuide/Data-Concept/Time-Partition.md   |    10 +-
 docs/zh/UserGuide/Data-Concept/Time-zone.md        |     4 +-
 docs/zh/UserGuide/Data-Modeling/DataRegion.md      |     8 +-
 .../Data-Modeling/SchemaRegion-rocksdb.md          |     8 +-
 docs/zh/UserGuide/Delete-Data/TTL.md               |     8 +-
 docs/zh/UserGuide/Ecosystem-Integration/DBeaver.md |    16 +-
 .../Ecosystem-Integration/Grafana-Connector.md     |     6 +-
 .../Ecosystem-Integration/Grafana-Plugin.md        |    98 +-
 .../UserGuide/Ecosystem-Integration/NiFi-IoTDB.md  |    24 +-
 .../Ecosystem-Integration/Writing-Data-on-HDFS.md  |     2 +-
 .../Ecosystem-Integration/Zeppelin-IoTDB.md        |     8 +-
 .../Edge-Cloud-Collaboration/Sync-Tool.md          |     2 +-
 docs/zh/UserGuide/FAQ/FAQ-for-cluster-setup.md     |    36 +-
 .../Integration-Test-refactoring-tutorial.md       |     4 +-
 .../UserGuide/IoTDB-Introduction/Architecture.md   |     2 +-
 docs/zh/UserGuide/IoTDB-Introduction/Scenario.md   |    14 +-
 docs/zh/UserGuide/Maintenance-Tools/CSV-Tool.md    |    24 +-
 .../IoTDB-Data-Dir-Overview-Tool.md                |     6 +-
 docs/zh/UserGuide/Maintenance-Tools/JMX-Tool.md    |     8 +-
 docs/zh/UserGuide/Maintenance-Tools/Load-Tsfile.md |    14 +-
 docs/zh/UserGuide/Maintenance-Tools/Log-Tool.md    |     6 +-
 .../Maintenance-Tools/Maintenance-Command.md       |     7 +-
 .../Maintenance-Tools/TsFile-Load-Export-Tool.md   |    24 +-
 .../TsFile-Resource-Sketch-Tool.md                 |     6 +-
 .../Maintenance-Tools/TsFile-Settle-Tool.md        |    42 +
 .../Maintenance-Tools/TsFile-Sketch-Tool.md        |     6 +-
 .../Maintenance-Tools/TsFile-Split-Tool.md         |     2 +-
 .../Maintenance-Tools/TsFileSelfCheck-Tool.md      |     4 +-
 docs/zh/UserGuide/Monitor-Alert/Alerting.md        |    26 +-
 docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md     |   122 +-
 .../Operate-Metadata/Auto-Create-MetaData.md       |    12 +-
 docs/zh/UserGuide/Operate-Metadata/Database.md     |    11 +-
 docs/zh/UserGuide/Operate-Metadata/Node.md         |    14 +-
 docs/zh/UserGuide/Operate-Metadata/Template.md     |    16 +-
 docs/zh/UserGuide/Operate-Metadata/Timeseries.md   |    16 +-
 .../UserGuide/Operators-Functions/Aggregation.md   |   100 +-
 .../Operators-Functions/Anomaly-Detection.md       |    56 +-
 .../zh/UserGuide/Operators-Functions/Comparison.md |    18 +-
 docs/zh/UserGuide/Operators-Functions/Constant.md  |     2 +-
 .../Operators-Functions/Continuous-Interval.md     |    12 +-
 .../zh/UserGuide/Operators-Functions/Conversion.md |   161 +-
 .../UserGuide/Operators-Functions/Data-Matching.md |    32 +-
 .../Operators-Functions/Data-Profiling.md          |   170 +-
 .../UserGuide/Operators-Functions/Data-Quality.md  |    48 +-
 .../Operators-Functions/Data-Repairing.md          |    48 +-
 .../Operators-Functions/Frequency-Domain.md        |    54 +-
 docs/zh/UserGuide/Operators-Functions/Lambda.md    |     8 +-
 docs/zh/UserGuide/Operators-Functions/Logical.md   |     6 +-
 .../Operators-Functions/Machine-Learning.md        |   133 +-
 .../UserGuide/Operators-Functions/Mathematical.md  |    12 +-
 docs/zh/UserGuide/Operators-Functions/Overview.md  |    12 +-
 docs/zh/UserGuide/Operators-Functions/Sample.md    |    50 +-
 docs/zh/UserGuide/Operators-Functions/Selection.md |     2 +-
 .../Operators-Functions/Series-Discovery.md        |    18 +-
 docs/zh/UserGuide/Operators-Functions/String.md    |    98 +-
 .../UserGuide/Operators-Functions/Time-Series.md   |     8 +-
 .../Operators-Functions/User-Defined-Function.md   |    62 +-
 .../Operators-Functions/Variation-Trend.md         |    10 +-
 docs/zh/UserGuide/Query-Data/Align-By.md           |     6 +-
 docs/zh/UserGuide/Query-Data/Continuous-Query.md   |    60 +-
 docs/zh/UserGuide/Query-Data/Fill.md               |    14 +-
 docs/zh/UserGuide/Query-Data/Group-By.md           |    48 +-
 docs/zh/UserGuide/Query-Data/Having-Condition.md   |     2 +-
 docs/zh/UserGuide/Query-Data/Last-Query.md         |     2 +-
 docs/zh/UserGuide/Query-Data/Order-By.md           |     6 +-
 docs/zh/UserGuide/Query-Data/Overview.md           |    47 +-
 docs/zh/UserGuide/Query-Data/Pagination.md         |    10 +-
 docs/zh/UserGuide/Query-Data/Select-Expression.md  |    22 +-
 docs/zh/UserGuide/Query-Data/Select-Into.md        |    70 +-
 docs/zh/UserGuide/Query-Data/Where-Condition.md    |    12 +-
 docs/zh/UserGuide/QuickStart/ClusterQuickStart.md  |    20 +-
 .../UserGuide/QuickStart/Command-Line-Interface.md |    26 +-
 docs/zh/UserGuide/QuickStart/Files.md              |    32 +-
 docs/zh/UserGuide/QuickStart/QuickStart.md         |     2 +-
 docs/zh/UserGuide/QuickStart/ServerFileList.md     |    30 +-
 docs/zh/UserGuide/QuickStart/WayToGetIoTDB.md      |    50 +-
 .../zh/UserGuide/Reference/Common-Config-Manual.md |    64 +-
 .../Reference/ConfigNode-Config-Manual.md          |    18 +-
 .../UserGuide/Reference/DataNode-Config-Manual.md  |    20 +-
 docs/zh/UserGuide/Reference/Keywords.md            |     2 +-
 docs/zh/UserGuide/Reference/SQL-Reference.md       |    26 +-
 docs/zh/UserGuide/Reference/Status-Codes.md        |     2 +-
 docs/zh/UserGuide/Reference/TSDB-Comparison.md     |    44 +-
 .../Syntax-Conventions/Detailed-Grammar.md         |     2 +-
 docs/zh/UserGuide/Syntax-Conventions/Identifier.md |    10 +-
 .../UserGuide/Syntax-Conventions/KeyValue-Pair.md  |     2 +-
 .../Keywords-And-Reserved-Words.md                 |     2 +-
 .../UserGuide/Syntax-Conventions/Literal-Values.md |    17 +-
 .../Syntax-Conventions/NodeName-In-Path.md         |     6 +-
 .../Syntax-Conventions/Session-And-TsFile-API.md   |     2 +-
 .../UserGuide/Trigger/Configuration-Parameters.md  |     2 +-
 docs/zh/UserGuide/Trigger/Implement-Trigger.md     |    20 +-
 docs/zh/UserGuide/Trigger/Instructions.md          |    10 +-
 docs/zh/UserGuide/Trigger/Notes.md                 |     2 +-
 docs/zh/UserGuide/Trigger/Trigger-Management.md    |    10 +-
 docs/zh/UserGuide/UserGuideReadme.md               |     7 +-
 docs/zh/UserGuide/Write-Data/Batch-Load-Tool.md    |     6 +-
 docs/zh/UserGuide/Write-Data/MQTT.md               |     2 +-
 docs/zh/UserGuide/Write-Data/REST-API.md           |     2 +-
 docs/zh/UserGuide/Write-Data/Session.md            |     4 +-
 example/client-cpp-example/pom.xml                 |     2 +-
 example/ext-pipe-plugin-example/pom.xml            |     4 +-
 example/flink/pom.xml                              |     2 +-
 example/hadoop/pom.xml                             |     2 +-
 example/influxdb-protocol-example/pom.xml          |     2 +-
 example/jdbc/pom.xml                               |     2 +-
 example/kafka/pom.xml                              |     2 +-
 example/mqtt-customize/pom.xml                     |     2 +-
 example/mqtt/pom.xml                               |     2 +-
 example/pom.xml                                    |     2 +-
 example/pulsar/pom.xml                             |     2 +-
 example/rabbitmq/pom.xml                           |     2 +-
 example/rest-java-example/pom.xml                  |     2 +-
 example/rocketmq/pom.xml                           |     2 +-
 example/session/pom.xml                            |     2 +-
 example/trigger/pom.xml                            |     2 +-
 example/tsfile/pom.xml                             |     2 +-
 example/udf/pom.xml                                |     2 +-
 external-api/pom.xml                               |     2 +-
 external-pipe-api/pom.xml                          |     2 +-
 flink-iotdb-connector/pom.xml                      |     2 +-
 flink-tsfile-connector/pom.xml                     |     2 +-
 .../iotdb/flink/tsfile/TsFileOutputFormat.java     |     2 +-
 grafana-connector/pom.xml                          |     2 +-
 grafana-plugin/pkg/main.go                         |     2 +-
 .../pkg/plugin/iotdb_resource_handler.go           |    26 +-
 grafana-plugin/pkg/plugin/plugin.go                |   228 +-
 grafana-plugin/pom.xml                             |     2 +-
 grafana-plugin/src/ConfigEditor.tsx                |    50 +-
 grafana-plugin/src/QueryEditor.tsx                 |    12 +-
 grafana-plugin/src/datasource.ts                   |    19 +-
 grafana-plugin/src/types.ts                        |     1 +
 grafana-plugin/yarn.lock                           | 11545 ++++++++----------
 hadoop/pom.xml                                     |     2 +-
 hive-connector/pom.xml                             |     2 +-
 influxdb-protocol/pom.xml                          |     2 +-
 integration-test/pom.xml                           |     2 +-
 .../iotdb/db/query/udf/example/ConstValue.java     |    42 +
 .../iotdb/it/env/cluster/MppCommonConfig.java      |     8 +-
 .../it/env/cluster/MppSharedCommonConfig.java      |    13 +-
 .../iotdb/it/env/remote/RemoteCommonConfig.java    |     7 +-
 .../itbase/constant/BuiltinScalarFunctionEnum.java |    36 +
 .../BuiltinTimeSeriesGeneratingFunctionEnum.java   |     1 -
 .../apache/iotdb/itbase/constant/TestConstant.java |     4 +
 .../org/apache/iotdb/itbase/env/CommonConfig.java  |     4 +-
 .../confignode/it/IoTDBSnapshotTransferIT.java     |     4 +-
 .../it/load/IoTDBConfigNodeSwitchLeaderIT.java     |     2 +-
 .../it/partition/IoTDBPartitionGetterIT.java       |     6 +-
 .../iotdb/db/it/IoTDBInsertMultiPartitionIT.java   |    71 +
 .../it/IoTDBSyntaxConventionStringLiteralIT.java   |     7 +-
 .../db/it/aggregation/IoTDBAggregationIT.java      |     9 +
 .../it/aggregation/IoTDBAggregationOptimizeIT.java |     8 +-
 .../db/it/aggregation/IoTDBTagAggregationIT.java   |    55 +-
 .../db/it/aggregation/IoTDBTimeDurationIT.java     |   368 +
 .../scalar/IoTDBCastFunctionIT.java                |  1032 ++
 .../db/it/groupby/IoTDBGroupByConditionIT.java     |     2 +-
 .../iotdb/db/it/groupby/IoTDBGroupBySessionIT.java |    18 +-
 .../IoTDBNoSelectExpressionAfterAnalyzedIT.java    |    93 +
 .../iotdb/db/it/schema/IoTDBSchemaTemplateIT.java  |    19 +-
 .../org/apache/iotdb/db/it/sync/IoTDBPipeIT.java   |   200 -
 .../apache/iotdb/db/it/sync/IoTDBPipeSinkIT.java   |   115 -
 .../apache/iotdb/db/it/sync/SyncTransportTest.java |   323 -
 .../iotdb/db/it/udf/IoTDBUDFManagementIT.java      |    14 +-
 .../db/it/udf/IoTDBUDTFBuiltinFunctionIT.java      |  1424 ---
 .../it/udf/IoTDBUDTFBuiltinScalarFunctionIT.java   |  1424 +++
 .../iotdb/session/it/IoTDBSessionSimpleIT.java     |    12 +-
 integration/pom.xml                                |     2 +-
 .../db/integration/IoTDBSchemaTemplateIT.java      |   357 -
 .../db/integration/sync/IoTDBSyncReceiverIT.java   |   164 -
 .../sync/IoTDBSyncReceiverLoaderIT.java            |   146 -
 .../db/integration/sync/IoTDBSyncSenderIT.java     |   587 -
 .../iotdb/db/integration/sync/MockSyncClient.java  |    50 -
 .../iotdb/db/integration/sync/SyncTestUtil.java    |   238 -
 isession/pom.xml                                   |     2 +-
 jdbc/pom.xml                                       |     2 +-
 .../apache/iotdb/jdbc/IoTDBDatabaseMetadata.java   |     1 +
 library-udf/pom.xml                                |     2 +-
 metrics/dropwizard-metrics/pom.xml                 |     2 +-
 metrics/interface/pom.xml                          |     2 +-
 .../iotdb/metrics/metricsets/disk/DiskMetrics.java |    26 +-
 .../metricsets/disk/LinuxDiskMetricsManager.java   |    66 +-
 .../metrics/metricsets/net/INetMetricManager.java  |    58 +
 .../metricsets/net/LinuxNetMetricManager.java      |   197 +
 .../metricsets/net/MacNetMetricManager.java        |    22 +
 .../iotdb/metrics/metricsets/net/NetMetrics.java   |    98 +
 .../metricsets/net/WindowsNetMetricManager.java    |    22 +
 .../reporter/prometheus/PrometheusReporter.java    |     2 -
 .../iotdb/metrics/type/HistogramSnapshot.java      |     1 -
 metrics/micrometer-metrics/pom.xml                 |     4 +-
 metrics/pom.xml                                    |     2 +-
 mlnode/iotdb/mlnode/serde.py                       |   439 +
 mlnode/pom.xml                                     |     2 +-
 mlnode/requirements.txt                            |    22 +
 mlnode/requirements_dev.txt                        |    21 +
 mlnode/test/test_serde.py                          |   129 +
 node-commons/pom.xml                               |     7 +-
 .../resources/conf/iotdb-common.properties         |     2 +-
 .../src/assembly/resources/sbin/iotdb-common.sh    |     2 +-
 .../assembly/resources/sbin/start-standalone.sh    |     2 +-
 .../src/assembly/resources/sbin/stop-standalone.sh |     2 +-
 .../iotdb/commons/auth/entity/PrivilegeType.java   |    11 +-
 .../iotdb/commons/client/ClientPoolFactory.java    |    24 +-
 .../iotdb/commons/client/IClientManager.java       |     8 +-
 .../iotdb/commons/client/IClientPoolFactory.java   |     3 +
 .../apache/iotdb/commons/client/ThriftClient.java  |    29 +-
 .../AsyncConfigNodeHeartbeatServiceClient.java     |   144 -
 .../async/AsyncConfigNodeIServiceClient.java       |    23 +-
 .../async/AsyncDataNodeHeartbeatServiceClient.java |   144 -
 .../async/AsyncDataNodeInternalServiceClient.java  |    24 +-
 .../AsyncDataNodeMPPDataExchangeServiceClient.java |    23 +-
 .../client/property/ThriftClientProperty.java      |    32 +-
 .../client/sync/SyncConfigNodeIServiceClient.java  |    32 +-
 .../sync/SyncDataNodeInternalServiceClient.java    |    32 +-
 .../SyncDataNodeMPPDataExchangeServiceClient.java  |    32 +-
 .../apache/iotdb/commons/conf/CommonConfig.java    |    10 +
 .../apache/iotdb/commons/conf/IoTDBConstant.java   |     2 +
 .../commons/consensus/ConfigNodeRegionId.java      |    34 -
 .../iotdb/commons/consensus/ConfigRegionId.java    |    34 +
 .../iotdb/commons/consensus/ConsensusGroupId.java  |     8 +-
 .../meta/ConfigNodePipePluginMetaKeeper.java       |   108 +
 .../plugin/meta/DataNodePipePluginMetaKeeper.java  |    53 +
 .../commons/pipe/plugin/meta/PipePluginMeta.java   |   130 +
 .../pipe/plugin/meta/PipePluginMetaKeeper.java     |    52 +
 .../pipe/plugin/service/PipePluginClassLoader.java |    90 +
 .../service/PipePluginClassLoaderManager.java      |   103 +
 .../service/PipePluginExecutableManager.java       |    94 +
 .../apache/iotdb/commons/service/ServiceType.java  |     5 +-
 .../iotdb/commons/service/metric/enums/Metric.java |    12 +
 .../metric/enums/PerformanceOverviewMetrics.java   |   180 +
 .../iotdb/commons/sync/pipe/TsFilePipeInfo.java    |    12 +-
 .../udf/builtin/BuiltinAggregationFunction.java    |     4 +-
 .../iotdb/commons/udf/builtin/BuiltinFunction.java |    70 -
 .../commons/udf/builtin/BuiltinScalarFunction.java |    60 +
 .../BuiltinTimeSeriesGeneratingFunction.java       |     1 -
 .../apache/iotdb/commons/udf/builtin/UDTFCast.java |   253 -
 .../commons/utils/ThriftCommonsSerDeUtils.java     |    13 +-
 .../commons/utils/ThriftCommonsSerDeUtilsTest.java |     2 +-
 openapi/pom.xml                                    |     2 +-
 pipe-api/pom.xml                                   |     2 +-
 .../org/apache/iotdb/pipe/api/PipeConnector.java   |     2 +-
 .../java/org/apache/iotdb/pipe/api/PipePlugin.java |    22 +
 .../org/apache/iotdb/pipe/api/PipeProcessor.java   |     2 +-
 .../api/exception/PipeManagementException.java     |    32 +
 pom.xml                                            |    17 +-
 rewrite-tsfile-tool/pom.xml                        |     2 +-
 .../src/assembly/resources/sbin/rewrite-tsfile.sh  |     2 +-
 schema-engine-rocksdb/pom.xml                      |     2 +-
 .../schemaregion/rocksdb/RSchemaRegion.java        |    12 +-
 schema-engine-tag/pom.xml                          |     2 +-
 server/pom.xml                                     |     2 +-
 .../src/assembly/resources/sbin/remove-datanode.sh |     2 +-
 .../resources/tools/schema/print-schema-file.sh    |     2 +-
 .../resources/tools/schema/print-schema-log.sh     |     2 +-
 .../resources/tools/tsfile/print-iotdb-data-dir.sh |     2 +-
 .../resources/tools/tsfile/print-tsfile.sh         |     2 +-
 .../resources/tools/tsfile/settle-tsfile.sh        |     2 +-
 .../resources/tools/tsfile/split-tsfile-tool.sh    |     2 +-
 .../resources/tools/tsfile/validate-tsfile.sh      |     2 +-
 .../codegen/templates/abstractVariationWindow.ftl  |    84 +
 .../src/main/codegen/templates/evEventWindow.ftl   |    67 -
 .../codegen/templates/evEventWindowManager.ftl     |   117 -
 server/src/main/codegen/templates/eventWindow.ftl  |    84 -
 .../main/codegen/templates/eventWindowManager.ftl  |    51 -
 .../src/main/codegen/templates/variationWindow.ftl |    67 +
 .../codegen/templates/variationWindowManager.ftl   |   117 +
 .../org/apache/iotdb/db/audit/AuditLogger.java     |     4 +
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |    18 +-
 .../iotdb/db/auth/ClusterAuthorityFetcher.java     |    14 +-
 .../apache/iotdb/db/client/ConfigNodeClient.java   |   113 +-
 .../iotdb/db/client/ConfigNodeClientManager.java   |     8 +-
 .../org/apache/iotdb/db/client/ConfigNodeInfo.java |     8 +-
 .../iotdb/db/client/DataNodeClientPoolFactory.java |    14 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |     1 -
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |    20 +-
 .../statemachine/DataRegionStateMachine.java       |    11 +-
 .../IoTConsensusDataRegionStateMachine.java        |     8 +-
 .../org/apache/iotdb/db/constant/SqlConstant.java  |     4 +
 .../org/apache/iotdb/db/engine/StorageEngine.java  |     6 +
 .../execute/task/InnerSpaceCompactionTask.java     |     9 +-
 .../compaction/schedule/CompactionScheduler.java   |   125 +-
 .../impl/RewriteCrossSpaceCompactionSelector.java  |    42 +-
 .../impl/SizeTieredCompactionSelector.java         |     2 +-
 .../iotdb/db/engine/flush/MemTableFlushTask.java   |    37 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |   129 +-
 .../engine/storagegroup/TimePartitionManager.java  |     9 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |    81 +-
 .../engine/storagegroup/TsFileProcessorInfo.java   |    14 +-
 .../storagegroup/TsFileProcessorInfoMetrics.java   |     4 +-
 .../metadata/DatabaseAlreadySetException.java      |    60 +
 .../metadata/DatabaseNotSetException.java          |    45 +
 .../metadata/StorageGroupAlreadySetException.java  |    60 -
 .../metadata/StorageGroupNotSetException.java      |    45 -
 .../apache/iotdb/db/metadata/MetadataConstant.java |     2 +
 .../mnode/iterator/AbstractTraverserIterator.java  |     3 +-
 .../iotdb/db/metadata/mtree/ConfigMTree.java       |    69 +-
 .../mtree/store/disk/cache/CacheMemoryManager.java |    11 +
 .../db/metadata/mtree/traverser/Traverser.java     |     5 +-
 .../metadata/schemaregion/ISchemaRegionParams.java |    36 +
 .../metadata/schemaregion/RSchemaRegionLoader.java |    24 +-
 .../db/metadata/schemaregion/SchemaEngine.java     |    72 +-
 .../db/metadata/schemaregion/SchemaRegion.java     |    31 +
 .../metadata/schemaregion/SchemaRegionLoader.java  |   124 +
 .../schemaregion/SchemaRegionMemoryImpl.java       |    19 +-
 .../metadata/schemaregion/SchemaRegionParams.java  |    67 +
 .../schemaregion/SchemaRegionSchemaFileImpl.java   |    17 +-
 .../metadata/template/ClusterTemplateManager.java  |    18 +-
 .../iotdb/db/metadata/template/Template.java       |   352 +-
 .../metadata/template/TemplateMNodeGenerator.java  |    51 +
 .../iotdb/db/mpp/aggregation/Accumulator.java      |    16 +-
 .../db/mpp/aggregation/AccumulatorFactory.java     |     2 +
 .../iotdb/db/mpp/aggregation/Aggregator.java       |    35 +-
 .../iotdb/db/mpp/aggregation/AvgAccumulator.java   |    90 +-
 .../iotdb/db/mpp/aggregation/CountAccumulator.java |    23 +-
 .../db/mpp/aggregation/CountIfAccumulator.java     |    25 +-
 .../db/mpp/aggregation/ExtremeAccumulator.java     |    90 +-
 .../db/mpp/aggregation/FirstValueAccumulator.java  |   150 +-
 .../mpp/aggregation/FirstValueDescAccumulator.java |   110 +-
 .../db/mpp/aggregation/LastValueAccumulator.java   |   132 +-
 .../mpp/aggregation/LastValueDescAccumulator.java  |   122 +-
 .../db/mpp/aggregation/MaxTimeAccumulator.java     |    22 +-
 .../db/mpp/aggregation/MaxTimeDescAccumulator.java |    25 +-
 .../db/mpp/aggregation/MaxValueAccumulator.java    |    94 +-
 .../db/mpp/aggregation/MinTimeAccumulator.java     |    25 +-
 .../db/mpp/aggregation/MinTimeDescAccumulator.java |    20 +-
 .../db/mpp/aggregation/MinValueAccumulator.java    |    93 +-
 .../iotdb/db/mpp/aggregation/SumAccumulator.java   |    92 +-
 .../mpp/aggregation/TimeDurationAccumulator.java   |   124 +
 .../slidingwindow/SlidingWindowAggregator.java     |     5 +-
 .../SlidingWindowAggregatorFactory.java            |     2 +
 .../db/mpp/common/header/ColumnHeaderConstant.java |    34 +-
 .../db/mpp/common/header/DatasetHeaderFactory.java |     4 +
 .../iotdb/db/mpp/execution/driver/DataDriver.java  |     6 +
 .../mpp/execution/exchange/sink/SinkChannel.java   |     6 +-
 .../execution/exchange/source/SourceHandle.java    |     7 +-
 .../execution/executor/RegionWriteExecutor.java    |    10 +-
 .../fragment/FragmentInstanceContext.java          |     8 +-
 .../fragment/FragmentInstanceExecution.java        |     4 +
 .../fragment/FragmentInstanceManager.java          |    21 +-
 .../iotdb/db/mpp/execution/memory/MemoryPool.java  |   237 +-
 .../db/mpp/execution/operator/AggregationUtil.java |    18 +-
 .../operator/process/AggregationOperator.java      |     2 +-
 .../operator/process/MergeSortOperator.java        |     9 +
 .../process/RawDataAggregationOperator.java        |    48 +-
 .../process/SlidingWindowAggregationOperator.java  |     5 +-
 .../AbstractSeriesAggregationScanOperator.java     |     2 +-
 .../operator/window/AbstractVariationWindow.java   |    97 +
 .../execution/operator/window/ConditionWindow.java |   114 +
 .../operator/window/ConditionWindowManager.java    |   171 +
 .../operator/window/ConditionWindowParameter.java  |    53 +
 .../mpp/execution/operator/window/EventWindow.java |    87 -
 .../operator/window/EventWindowManager.java        |   122 -
 .../operator/window/EventWindowParameter.java      |    61 -
 .../db/mpp/execution/operator/window/IWindow.java  |     2 +-
 .../execution/operator/window/IWindowManager.java  |    52 +-
 .../execution/operator/window/SeriesWindow.java    |   113 -
 .../operator/window/SeriesWindowManager.java       |   196 -
 .../operator/window/SeriesWindowParameter.java     |    53 -
 .../execution/operator/window/SessionWindow.java   |     5 +-
 .../operator/window/SessionWindowManager.java      |    33 +-
 .../operator/window/TimeWindowManager.java         |    24 +-
 .../operator/window/VariationWindowManager.java    |   100 +
 .../operator/window/VariationWindowParameter.java  |    61 +
 .../operator/window/WindowManagerFactory.java      |    40 +-
 .../mpp/execution/operator/window/WindowType.java  |     4 +-
 .../db/mpp/metric/PerformanceOverviewMetrics.java  |   142 -
 .../metric/PerformanceOverviewMetricsManager.java  |   323 +-
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  |    80 +-
 .../mpp/plan/analyze/ClusterPartitionFetcher.java  |    18 +-
 .../db/mpp/plan/analyze/ExpressionAnalyzer.java    |   697 +-
 .../mpp/plan/analyze/ExpressionTypeAnalyzer.java   |     7 +-
 .../iotdb/db/mpp/plan/analyze/ExpressionUtils.java |    93 +-
 .../db/mpp/plan/analyze/cache/PartitionCache.java  |    10 +-
 .../db/mpp/plan/execution/QueryExecution.java      |    43 +-
 .../plan/execution/config/ConfigTaskVisitor.java   |    44 +-
 .../config/executor/ClusterConfigTaskExecutor.java |   303 +-
 .../config/executor/IConfigTaskExecutor.java       |    17 +-
 .../config/metadata/CreatePipePluginTask.java      |    42 +
 .../config/metadata/DropPipePluginTask.java        |    42 +
 .../config/metadata/ShowFunctionsTask.java         |    15 +
 .../config/metadata/ShowPipePluginsTask.java       |    80 +
 .../execution/config/sys/pipe/CreatePipeTask.java  |    42 +
 .../execution/config/sys/pipe/DropPipeTask.java    |    42 +
 .../execution/config/sys/pipe/ShowPipeTask.java    |    80 +
 .../execution/config/sys/pipe/StartPipeTask.java   |    42 +
 .../execution/config/sys/pipe/StopPipeTask.java    |    42 +
 .../execution/config/sys/sync/CreatePipeTask.java  |    42 -
 .../execution/config/sys/sync/DropPipeTask.java    |    42 -
 .../execution/config/sys/sync/ShowPipeTask.java    |    80 -
 .../execution/config/sys/sync/StartPipeTask.java   |    42 -
 .../execution/config/sys/sync/StopPipeTask.java    |    42 -
 .../iotdb/db/mpp/plan/expression/Expression.java   |     1 -
 .../plan/expression/multi/FunctionExpression.java  |    52 +-
 .../db/mpp/plan/expression/multi/FunctionType.java |     2 +-
 .../multi/builtin/BuiltInFunctionHelper.java       |    22 +
 .../multi/builtin/BuiltInScalarFunctionHelper.java |    74 +
 .../BuiltInScalarFunctionHelperFactory.java        |    38 +
 .../multi/builtin/helper/CastHelper.java           |   148 +
 .../multi/builtin/helper/DiffHelper.java           |    77 +
 .../BindTypeForTimeSeriesOperandVisitor.java       |    71 +
 .../visitor/CartesianProductVisitor.java           |    57 +
 .../CollectAggregationExpressionsVisitor.java      |    43 +
 .../visitor/CollectSourceExpressionsVisitor.java   |    47 +
 .../plan/expression/visitor/CollectVisitor.java    |    56 +
 .../visitor/ColumnTransformerVisitor.java          |    23 +-
 .../ConcatDeviceAndRemoveWildcardVisitor.java      |   112 +
 .../ConcatExpressionWithSuffixPathsVisitor.java    |   113 +
 .../visitor/ExpressionAnalyzeVisitor.java          |    39 +
 .../visitor/GetMeasurementExpressionVisitor.java   |    56 +
 .../visitor/IntermediateLayerVisitor.java          |    22 +-
 .../expression/visitor/ReconstructVisitor.java     |    63 +
 .../visitor/RemoveAliasFromExpressionVisitor.java  |    54 +
 .../visitor/RemoveWildcardInExpressionVisitor.java |    99 +
 .../RemoveWildcardInFilterByDeviceVisitor.java     |   103 +
 .../visitor/RemoveWildcardInFilterVisitor.java     |   149 +
 .../ReplaceRawPathWithGroupedPathVisitor.java      |    80 +
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |   218 +-
 .../db/mpp/plan/parser/StatementGenerator.java     |    51 +-
 .../db/mpp/plan/planner/OperatorTreeGenerator.java |    57 +-
 .../db/mpp/plan/planner/SubPlanTypeExtractor.java  |    16 +-
 .../planner/distribution/DistributionPlanner.java  |    73 +-
 .../planner/distribution/ExchangeNodeAdder.java    |    15 +-
 .../planner/distribution/NodeGroupContext.java     |    25 +-
 .../SimpleFragmentParallelPlanner.java             |    16 +-
 .../db/mpp/plan/planner/plan/PlanFragment.java     |    18 -
 .../db/mpp/plan/planner/plan/node/PlanNode.java    |    10 -
 .../planner/plan/node/process/GroupByTagNode.java  |    27 +
 .../plan/node/sink/MultiChildrenSinkNode.java      |     4 +
 .../plan/parameter/AggregationDescriptor.java      |     4 +
 .../plan/parameter/GroupByConditionParameter.java  |    87 +
 .../planner/plan/parameter/GroupByParameter.java   |     6 +-
 .../plan/parameter/GroupBySeriesParameter.java     |    87 -
 .../plan/parameter/GroupByVariationParameter.java  |     2 +-
 .../db/mpp/plan/scheduler/AsyncPlanNodeSender.java |    16 +-
 .../plan/scheduler/AsyncSendPlanNodeHandler.java   |    28 +-
 .../scheduler/FragmentInstanceDispatcherImpl.java  |     4 +
 .../iotdb/db/mpp/plan/statement/StatementType.java |     8 +-
 .../db/mpp/plan/statement/StatementVisitor.java    |    26 +-
 .../component/GroupByConditionComponent.java       |    41 +
 .../component/GroupBySeriesComponent.java          |    41 -
 .../component/GroupByVariationComponent.java       |     2 +-
 .../db/mpp/plan/statement/crud/QueryStatement.java |    10 +-
 .../metadata/CreatePipePluginStatement.java        |    72 +
 .../metadata/DropPipePluginStatement.java          |    60 +
 .../metadata/ShowPipePluginsStatement.java         |    52 +
 .../template/CreateSchemaTemplateStatement.java    |   121 +-
 .../statement/sys/pipe/CreatePipeStatement.java    |    90 +
 .../plan/statement/sys/pipe/DropPipeStatement.java |    62 +
 .../plan/statement/sys/pipe/ShowPipeStatement.java |    63 +
 .../statement/sys/pipe/StartPipeStatement.java     |    62 +
 .../plan/statement/sys/pipe/StopPipeStatement.java |    62 +
 .../statement/sys/sync/CreatePipeStatement.java    |   128 -
 .../plan/statement/sys/sync/DropPipeStatement.java |    62 -
 .../plan/statement/sys/sync/ShowPipeStatement.java |    50 -
 .../statement/sys/sync/StartPipeStatement.java     |    62 -
 .../plan/statement/sys/sync/StopPipeStatement.java |    62 -
 .../unary/DiffFunctionColumnTransformer.java       |    67 -
 .../scalar/CastFunctionColumnTransformer.java      |   230 +
 .../scalar/DiffFunctionColumnTransformer.java      |    68 +
 .../transformer/unary/DiffFunctionTransformer.java |   103 -
 .../unary/scalar/CastFunctionTransformer.java      |   228 +
 .../unary/scalar/DiffFunctionTransformer.java      |   104 +
 .../iotdb/db/pipe/agent/PipePluginAgent.java       |   191 +
 .../db/protocol/rest/handler/ExceptionHandler.java |     6 +-
 .../iotdb/db/rescon/PrimitiveArrayManager.java     |    14 +-
 .../org/apache/iotdb/db/rescon/SystemInfo.java     |    16 +-
 .../iotdb/db/rescon/TsFileResourceManager.java     |     5 +-
 .../java/org/apache/iotdb/db/service/DataNode.java |    10 +-
 .../db/service/DataNodeServerCommandLine.java      |     6 +-
 .../apache/iotdb/db/service/IoTDBShutdownHook.java |     3 +-
 .../iotdb/db/service/RegionMigrateService.java     |     2 +-
 .../db/service/metrics/DataNodeMetricsHelper.java  |     3 +
 .../iotdb/db/service/metrics/WritingMetrics.java   |   245 +
 .../metrics/recorder/WritingMetricsManager.java    |   351 +
 .../impl/DataNodeInternalRPCServiceImpl.java       |   377 +-
 .../java/org/apache/iotdb/db/sync/SyncService.java |    29 -
 .../db/sync/common/ClusterSyncInfoFetcher.java     |    12 +-
 .../tools/settle/TsFileSettleByCompactionTool.java |     4 +-
 .../db/trigger/executor/TriggerFireVisitor.java    |     8 +-
 .../trigger/service/TriggerInformationUpdater.java |     8 +-
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |     4 +
 .../apache/iotdb/db/utils/TypeInferenceUtils.java  |    46 +-
 .../apache/iotdb/db/utils/sync/SyncPipeUtil.java   |    40 +-
 .../java/org/apache/iotdb/db/wal/WALManager.java   |     7 +
 .../iotdb/db/wal/allocation/ElasticStrategy.java   |     6 +
 .../db/wal/allocation/FirstCreateStrategy.java     |     6 +
 .../db/wal/allocation/NodeAllocationStrategy.java  |     3 +
 .../db/wal/allocation/RoundRobinStrategy.java      |     6 +
 .../org/apache/iotdb/db/wal/buffer/WALBuffer.java  |    22 +-
 .../iotdb/db/wal/checkpoint/CheckpointManager.java |    10 +
 .../java/org/apache/iotdb/db/wal/node/WALNode.java |    10 +-
 .../inner/InnerCompactionSchedulerTest.java        |     6 +-
 .../iotdb/db/metadata/mtree/ConfigMTreeTest.java   |     3 +
 .../schemaRegion/SchemaRegionManagementTest.java   |     8 +-
 .../schemaRegion/SchemaRegionTemplateTest.java     |    56 +-
 .../iotdb/db/mpp/aggregation/AccumulatorTest.java  |    55 +-
 .../iotdb/db/mpp/execution/exchange/Utils.java     |     4 +-
 .../db/mpp/execution/memory/MemoryPoolTest.java    |    26 +-
 .../execution/operator/MergeSortOperatorTest.java  |    96 +-
 .../operator/RawDataAggregationOperatorTest.java   |    15 +-
 .../plan/node/process/GroupByTagNodeSerdeTest.java |     2 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |    56 +-
 server/src/test/resources/start-sync-test.sh       |     2 +-
 server/src/test/resources/stop-sync-test.sh        |     2 +-
 service-rpc/pom.xml                                |     2 +-
 .../apache/iotdb/rpc/ConfigurableTByteBuffer.java  |   100 +
 .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java |     1 +
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |    12 +-
 session/pom.xml                                    |     2 +-
 site/iotdb-doap.rdf                                |     8 +
 site/pom.xml                                       |   107 +-
 site/src/main/.eslintrc.cjs                        |     5 +-
 site/src/main/.gitignore                           |     8 +
 site/src/main/.vuepress/client.ts                  |    34 +
 site/src/main/.vuepress/components/Contributor.vue |   411 +
 site/src/main/.vuepress/components/IoTDB.vue       |   308 +
 site/src/main/.vuepress/components/IoTDBZH.vue     |   302 +
 site/src/main/.vuepress/components/PageFooter.vue  |    52 +
 .../docsearch/client/components/Docsearch.ts       |   156 +
 .../docsearch/client/components/index.ts           |    20 +
 .../docsearch/client/composables/index.ts          |    20 +
 .../client/composables/useDocsearchShim.ts         |    81 +
 .../components/docsearch/client/config.js          |    28 +
 .../.vuepress/components/docsearch/client/index.ts |    22 +
 .../components/docsearch/client/shims.d.ts         |    26 +
 .../docsearch/client/styles/docsearch.css          |    44 +
 .../components/docsearch/node/docsearchPlugin.ts   |    56 +
 .../.vuepress/components/docsearch/node/index.ts   |    24 +
 .../.vuepress/components/docsearch/shared/index.ts |    20 +
 .../.vuepress/components/docsearch/shared/types.ts |    37 +
 site/src/main/.vuepress/config.js                  |  1538 ---
 site/src/main/.vuepress/config.ts                  |   126 +
 site/src/main/.vuepress/enhanceApp.js              |    31 -
 site/src/main/.vuepress/navbar/en.ts               |    75 +
 site/src/main/.vuepress/navbar/index.ts            |    21 +
 site/src/main/.vuepress/navbar/zh.ts               |    75 +
 site/src/main/.vuepress/public/favicon.ico         |   Bin 0 -> 1595 bytes
 site/src/main/.vuepress/public/img/IOTDB.png       |   Bin 0 -> 20818 bytes
 .../TsFile/TsFile/tsFileVectorIndexCase5.png       |   Bin 0 -> 37197 bytes
 .../TsFile/TsFile/tsFileVectorIndexCase6.png       |   Bin 0 -> 71207 bytes
 .../TsFile/TsFile/tsFileVectorIndexCase7.png       |   Bin 0 -> 81847 bytes
 .../API/IoTDB-InfluxDB/architecture-design.png     |   Bin 0 -> 145997 bytes
 .../UserGuide/API/IoTDB-InfluxDB/class-diagram.png |   Bin 0 -> 16881 bytes
 .../UserGuide/API/IoTDB-InfluxDB/influxdb-data.png |   Bin 0 -> 59411 bytes
 .../API/IoTDB-InfluxDB/influxdb-vs-iotdb-data.png  |   Bin 0 -> 202016 bytes
 .../UserGuide/API/IoTDB-InfluxDB/iotdb-data.png    |   Bin 0 -> 53434 bytes
 .../API/IoTDB-SQLAlchemy/sqlalchemy-to-iotdb.png   |   Bin 0 -> 173461 bytes
 .../AdministrationConsole.png                      |   Bin 0 -> 197363 bytes
 .../CLI/Command-Line-Interface/add_Realm_1.png     |   Bin 0 -> 212253 bytes
 .../CLI/Command-Line-Interface/add_Realm_2.png     |   Bin 0 -> 49422 bytes
 .../CLI/Command-Line-Interface/add_role1.png       |   Bin 0 -> 79274 bytes
 .../CLI/Command-Line-Interface/add_role2.png       |   Bin 0 -> 55567 bytes
 .../CLI/Command-Line-Interface/add_role3.png       |   Bin 0 -> 67423 bytes
 .../CLI/Command-Line-Interface/add_role4.png       |   Bin 0 -> 73825 bytes
 .../CLI/Command-Line-Interface/add_role5.png       |   Bin 0 -> 82391 bytes
 .../CLI/Command-Line-Interface/client.png          |   Bin 0 -> 132520 bytes
 .../CLI/Command-Line-Interface/login_keycloak.png  |   Bin 0 -> 219950 bytes
 .../UserGuide/CLI/Command-Line-Interface/pwd.png   |   Bin 0 -> 235839 bytes
 .../UserGuide/CLI/Command-Line-Interface/user.png  |   Bin 0 -> 167194 bytes
 .../public/img/UserGuide/Cluster/Architecture.png  |   Bin 0 -> 55767 bytes
 .../img/UserGuide/Cluster/Data-Partition.png       |   Bin 0 -> 106930 bytes
 .../UserGuide/Cluster/DataNode-StateMachine-EN.jpg |   Bin 0 -> 70582 bytes
 .../UserGuide/Cluster/DataNode-StateMachine-ZH.jpg |   Bin 0 -> 66988 bytes
 .../img/UserGuide/Cluster/Preview1-Function.png    |   Bin 0 -> 256908 bytes
 .../auto_create_sg_example.png                     |   Bin 0 -> 81521 bytes
 .../example_template_lifetime.png                  |   Bin 0 -> 283522 bytes
 .../example_template_lifetime_zh.png               |   Bin 0 -> 308440 bytes
 .../Measurement-Template/example_with_template.png |   Bin 0 -> 28982 bytes
 .../example_without_template.png                   |   Bin 0 -> 58632 bytes
 .../Time-Partition/time_partition_example.png      |   Bin 0 -> 160113 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/01.png |   Bin 0 -> 163272 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/02.png |   Bin 0 -> 123947 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/03.png |   Bin 0 -> 144867 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/04.png |   Bin 0 -> 228587 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/05.png |   Bin 0 -> 198084 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/06.png |   Bin 0 -> 191463 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/07.png |   Bin 0 -> 222235 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/08.png |   Bin 0 -> 58150 bytes
 .../UserGuide/Ecosystem-Integration/DBeaver/09.png |   Bin 0 -> 350352 bytes
 .../Grafana-plugin/add-empty-panel.png             |   Bin 0 -> 98208 bytes
 .../Grafana-plugin/addvaribles.png                 |   Bin 0 -> 196588 bytes
 .../Grafana-plugin/alertPanel5.png                 |   Bin 0 -> 42293 bytes
 .../Grafana-plugin/alerting1.png                   |   Bin 0 -> 103200 bytes
 .../Grafana-plugin/alerting2.png                   |   Bin 0 -> 44192 bytes
 .../Grafana-plugin/alerting3.png                   |   Bin 0 -> 119687 bytes
 .../Grafana-plugin/alerting4.png                   |   Bin 0 -> 130345 bytes
 .../Grafana-plugin/alertpanel3.png                 |   Bin 0 -> 250072 bytes
 .../Grafana-plugin/alertpanel4.png                 |   Bin 0 -> 85865 bytes
 .../Grafana-plugin/alertpanel6.png                 |   Bin 0 -> 164736 bytes
 .../Grafana-plugin/alertpanle1.png                 |   Bin 0 -> 333611 bytes
 .../Grafana-plugin/alertpanle2.jpg                 |   Bin 0 -> 137699 bytes
 .../Grafana-plugin/applyvariables.png              |   Bin 0 -> 314991 bytes
 .../Grafana-plugin/datasource_1.png                |   Bin 0 -> 275723 bytes
 .../Grafana-plugin/datasource_2.png                |   Bin 0 -> 123473 bytes
 .../Grafana-plugin/datasource_3.png                |   Bin 0 -> 167831 bytes
 .../Grafana-plugin/distribution.png                |   Bin 0 -> 95592 bytes
 .../Grafana-plugin/grafana-plugin-build.png        |   Bin 0 -> 48467 bytes
 .../Grafana-plugin/grafana_input.png               |   Bin 0 -> 279162 bytes
 .../Grafana-plugin/grafana_input2.png              |   Bin 0 -> 299017 bytes
 .../Grafana-plugin/grafana_input_style.png         |   Bin 0 -> 268438 bytes
 .../Grafana-plugin/manage.png                      |   Bin 0 -> 224614 bytes
 .../Grafana-plugin/setconf.png                     |   Bin 0 -> 197642 bytes
 .../Grafana-plugin/variablesinput3-1.png           |   Bin 0 -> 316272 bytes
 .../Grafana-plugin/variablesinput3.png             |   Bin 0 -> 95470 bytes
 .../Grafana-plugin/variblesinput.png               |   Bin 0 -> 92755 bytes
 .../Grafana-plugin/variblesinput2-1.png            |   Bin 0 -> 94878 bytes
 .../Grafana-plugin/variblesinput2-2.png            |   Bin 0 -> 326277 bytes
 .../Grafana-plugin/variblesinput2.png              |   Bin 0 -> 92655 bytes
 .../Architecture/Structure-of-Apache-IoTDB-cn.png  |   Bin 0 -> 126257 bytes
 .../Architecture/Structure-of-Apache-IoTDB.png     |   Bin 0 -> 103140 bytes
 .../public/img/UserGuide/OtherMaterial-Sample.Data |   516 +
 .../Process-Data/Continuous-Query/pic1.png         |   Bin 0 -> 28418 bytes
 .../Process-Data/Continuous-Query/pic2.png         |   Bin 0 -> 25023 bytes
 .../Process-Data/Continuous-Query/pic3.png         |   Bin 0 -> 32982 bytes
 .../Process-Data/Continuous-Query/pic4.png         |   Bin 0 -> 36135 bytes
 .../Process-Data/GroupBy/groupBySession.jpeg       |   Bin 0 -> 45630 bytes
 .../Process-Data/GroupBy/groupByVariation.jpeg     |   Bin 0 -> 59469 bytes
 .../Process-Data/Triggers/ForwardQueueConsume.png  |   Bin 0 -> 190973 bytes
 .../Process-Data/Triggers/Trigger_Process_Flow.jpg |   Bin 0 -> 25591 bytes
 .../Triggers/Trigger_Process_Strategy.jpg          |   Bin 0 -> 70240 bytes
 .../UDF-User-Defined-Function/countWindow.png      |   Bin 0 -> 102766 bytes
 .../UDF-User-Defined-Function/sessionWindow.png    |   Bin 0 -> 109806 bytes
 .../UDF-User-Defined-Function/stateWindow.png      |   Bin 0 -> 94322 bytes
 .../UDF-User-Defined-Function/timeWindow.png       |   Bin 0 -> 100258 bytes
 .../UserGuide/System-Tools/Metrics/dashboard.png   |   Bin 0 -> 203647 bytes
 .../Metrics/iotdb_prometheus_grafana.png           |   Bin 0 -> 304191 bytes
 .../System-Tools/Metrics/metrics_demo_1.png        |   Bin 0 -> 262783 bytes
 .../System-Tools/Metrics/metrics_demo_2.png        |   Bin 0 -> 191559 bytes
 .../img/UserGuide/System-Tools/Sync-Tool/pipe2.png |   Bin 0 -> 58248 bytes
 ...752940-50407b00-43a5-11eb-94fb-3e3be222183c.png |   Bin 0 -> 169114 bytes
 ...752945-5171a800-43a5-11eb-8614-53b3276a3ce2.png |   Bin 0 -> 87397 bytes
 ...752947-520a3e80-43a5-11eb-8fb1-8fac471c8c7e.png |   Bin 0 -> 173739 bytes
 ...752948-52a2d500-43a5-11eb-9156-0c55667eb4cd.png |   Bin 0 -> 125270 bytes
 ...251336-cf03c000-624f-11eb-8395-de5e349f47b5.png |   Bin 0 -> 99963 bytes
 ...251353-d32fdd80-624f-11eb-80c1-fdb4197939fe.png |   Bin 0 -> 112717 bytes
 ...251369-d7f49180-624f-11eb-9d19-fc7341582b90.png |   Bin 0 -> 89864 bytes
 ...251377-daef8200-624f-11eb-9678-b1d5440be2de.png |   Bin 0 -> 111910 bytes
 ...251391-df1b9f80-624f-11eb-9f1f-66823839acba.png |   Bin 0 -> 94191 bytes
 ...251411-e5aa1700-624f-11eb-8ca8-00c0627b1e96.png |   Bin 0 -> 98958 bytes
 ...254214-6cacbe80-6253-11eb-8532-d6a1829f8f66.png |   Bin 0 -> 95325 bytes
 ...426760-73e3da80-8d73-11eb-9a8f-9232d1f2033b.png |   Bin 0 -> 76603 bytes
 ...125919-f4850800-9929-11eb-8211-81d4c04af1ec.png |   Bin 0 -> 142774 bytes
 ...957896-a9791080-a537-11eb-9962-541412bdcee6.png |   Bin 0 -> 110029 bytes
 ...790229-23e34900-b8c8-11eb-87da-ac01dd117f28.png |   Bin 0 -> 32058 bytes
 ...833923-182ffc00-bf32-11eb-8b3f-9f95d3729ad2.png |   Bin 0 -> 324124 bytes
 ...668849-b1c69280-d1ec-11eb-83cb-3b73c40bdf72.png |   Bin 0 -> 85937 bytes
 ...542457-5f511d00-d77c-11eb-8006-562d83069baa.png |   Bin 0 -> 85488 bytes
 ...951720-707f1ee8-32ee-4fde-9252-048caebd232e.png |   Bin 0 -> 293510 bytes
 ...178733-a0919d17-0663-4672-9c4f-1efad6f463c2.png |   Bin 0 -> 101545 bytes
 ...181449-00d563c8-7bce-4ecd-a031-ec120ca42c3f.png |   Bin 0 -> 66497 bytes
 ...183015-93b56644-3330-4acf-ae9e-d718a02b5f4c.png |   Bin 0 -> 16451 bytes
 ...018765-6fda9391-ebcf-4c80-98c5-26f34bd74df0.png |   Bin 0 -> 350636 bytes
 ...577195-f94d7500-1ef3-11e9-999a-b4f67055d80e.png |   Bin 0 -> 41935 bytes
 ...577204-fe122900-1ef3-11e9-9e89-2eb1d46e24b8.png |   Bin 0 -> 221206 bytes
 ...577216-09fdeb00-1ef4-11e9-9005-542ad7d9e9e0.png |   Bin 0 -> 203454 bytes
 ...579014-695ef980-1efa-11e9-8cbc-e9e7ee4fa0d8.png |   Bin 0 -> 861503 bytes
 ...579033-7ed42380-1efa-11e9-889f-fb4180291a9e.png |   Bin 0 -> 386176 bytes
 ...579064-8f849980-1efa-11e9-8cd6-a7339cd0540f.jpg |   Bin 0 -> 303859 bytes
 ...579080-96aba780-1efa-11e9-87ac-940c45b19dd7.jpg |   Bin 0 -> 234375 bytes
 ...579095-a4f9c380-1efa-11e9-9f95-17165ec55568.jpg |   Bin 0 -> 200091 bytes
 ...664777-2766ae00-1ff5-11e9-9d2f-7489f8ccbfc2.png |   Bin 0 -> 277087 bytes
 ...664842-554bf280-1ff5-11e9-97d2-54eebe0b2ca1.png |   Bin 0 -> 333531 bytes
 ...664878-6e54a380-1ff5-11e9-9718-4d0e24627fa8.png |   Bin 0 -> 276994 bytes
 ...937461-14296f80-a303-11e9-9602-a7bed624bfb3.png |   Bin 0 -> 238093 bytes
 ...922722-35180400-f05a-11e9-8ff0-7dd51716e4a8.png |   Bin 0 -> 16824 bytes
 ...943956-39c1e800-fc16-11e9-8da2-a662f8246816.png |   Bin 0 -> 213188 bytes
 ...109512-f808bc80-0ab2-11ea-9e4d-b2b2f58fb474.png |   Bin 0 -> 16914 bytes
 ...792176-1718f400-1201-11ea-861a-1a83c07ca144.jpg |   Bin 0 -> 14952 bytes
 ...357432-0c71cf80-75e4-11ea-98aa-c43a54d469ce.png |   Bin 0 -> 38174 bytes
 ...357469-1bf11880-75e4-11ea-978f-a53996667a0d.png |   Bin 0 -> 25267 bytes
 ...351839-bd288900-7f6b-11ea-8d12-feb18c35adad.png |   Bin 0 -> 179218 bytes
 ...414865-5f815480-7fde-11ea-800c-47c7dbad7648.png |   Bin 0 -> 101410 bytes
 ...462909-53a53e80-91e8-11ea-98df-0012380da0b2.png |   Bin 0 -> 77209 bytes
 ...462914-5738c580-91e8-11ea-94d1-4ff6607e7e2c.png |   Bin 0 -> 121334 bytes
 ...464569-725e0200-91f5-11ea-9ff9-49745f4c9ef2.png |   Bin 0 -> 115173 bytes
 ...464639-ed271d00-91f5-11ea-91a0-b4fe9cb8204e.png |   Bin 0 -> 160280 bytes
 ...768477-b874d780-950d-11ea-80ca-8807b9bd0970.png |   Bin 0 -> 476193 bytes
 ...768490-bf034f00-950d-11ea-9b56-fef3edca0958.png |   Bin 0 -> 332540 bytes
 ...197835-99a64980-1f62-11eb-84af-8301b8a6aad5.png |   Bin 0 -> 71304 bytes
 ...197920-be9abc80-1f62-11eb-9efb-027f0590031c.png |   Bin 0 -> 71488 bytes
 ...197948-cf4b3280-1f62-11eb-9c8c-c97d1adf032c.png |   Bin 0 -> 116419 bytes
 ...633970-73671c00-235d-11eb-9913-f38e570fcfc8.png |   Bin 0 -> 36452 bytes
 ...787878-47b51480-2b5b-11eb-8ed3-84088c5c30f7.png |   Bin 0 -> 112663 bytes
 .../img/zh/development/howtocontributecode/01.png  |   Bin 0 -> 89974 bytes
 .../img/zh/development/howtocontributecode/02.png  |   Bin 0 -> 121641 bytes
 .../img/zh/development/howtocontributecode/03.png  |   Bin 0 -> 214508 bytes
 .../zh/development/howtocontributecode/issue.png   |   Bin 0 -> 108398 bytes
 site/src/main/.vuepress/public/logo.png            |   Bin 0 -> 21687 bytes
 site/src/main/.vuepress/redirects                  |     3 -
 site/src/main/.vuepress/sidebar/V0.13.x/en.ts      |   215 +
 site/src/main/.vuepress/sidebar/V0.13.x/zh.ts      |   215 +
 site/src/main/.vuepress/sidebar/V1.0.x/en.ts       |   285 +
 site/src/main/.vuepress/sidebar/V1.0.x/zh.ts       |   286 +
 site/src/main/.vuepress/sidebar/V1.1.x/en.ts       |   305 +
 site/src/main/.vuepress/sidebar/V1.1.x/zh.ts       |   306 +
 site/src/main/.vuepress/sidebar/en.ts              |   313 +
 site/src/main/.vuepress/sidebar/index.ts           |    21 +
 site/src/main/.vuepress/sidebar/zh.ts              |   314 +
 site/src/main/.vuepress/styles/config.scss         |    25 +
 site/src/main/.vuepress/styles/index.scss          |    47 +
 site/src/main/.vuepress/styles/index.styl          |    23 -
 site/src/main/.vuepress/styles/palette.scss        |    23 +
 site/src/main/.vuepress/styles/palette.styl        |    23 -
 site/src/main/.vuepress/theme.ts                   |   154 +
 .../theme/components/AlgoliaSearchBox.vue          |   189 -
 .../.vuepress/theme/components/DropdownLink.vue    |   196 -
 .../theme/components/DropdownTransition.vue        |    50 -
 site/src/main/.vuepress/theme/components/Home.vue  |   179 -
 .../main/.vuepress/theme/components/NavLink.vue    |    65 -
 .../main/.vuepress/theme/components/NavLinks.vue   |   166 -
 .../src/main/.vuepress/theme/components/Navbar.vue |   139 -
 site/src/main/.vuepress/theme/components/Page.vue  |   338 -
 .../main/.vuepress/theme/components/RightMenu.vue  |   136 -
 .../main/.vuepress/theme/components/Sidebar.vue    |    76 -
 .../.vuepress/theme/components/SidebarButton.vue   |    44 -
 .../.vuepress/theme/components/SidebarGroup.vue    |   146 -
 .../.vuepress/theme/components/SidebarLink.vue     |   126 -
 .../.vuepress/theme/components/SidebarLinks.vue    |   103 -
 .../.vuepress/theme/global-components/Badge.vue    |    61 -
 .../theme/global-components/Contributor.vue        |   411 -
 .../.vuepress/theme/global-components/IoTDB.vue    |   293 -
 .../.vuepress/theme/global-components/IoTDBZH.vue  |   285 -
 site/src/main/.vuepress/theme/index.js             |    63 -
 site/src/main/.vuepress/theme/layouts/404.vue      |    43 -
 site/src/main/.vuepress/theme/layouts/Layout.vue   |   166 -
 site/src/main/.vuepress/theme/styles/arrow.styl    |    39 -
 site/src/main/.vuepress/theme/styles/code.styl     |   166 -
 .../main/.vuepress/theme/styles/custom-blocks.styl |    47 -
 site/src/main/.vuepress/theme/styles/index.styl    |   229 -
 site/src/main/.vuepress/theme/styles/mobile.styl   |    54 -
 site/src/main/.vuepress/theme/styles/palette.styl  |     1 -
 site/src/main/.vuepress/theme/styles/toc.styl      |    20 -
 site/src/main/.vuepress/theme/styles/wrapper.styl  |    26 -
 site/src/main/.vuepress/theme/util/index.js        |   256 -
 site/src/main/.vuepress/utils/define.ts            |    25 +
 site/src/main/.vuepress/utils/editLink.ts          |    94 +
 site/src/main/.vuepress/utils/index.ts             |    22 +
 site/src/main/.vuepress/utils/typings.ts           |    36 +
 site/src/main/deploy.js                            |     4 +-
 site/src/main/package-lock.json                    | 11598 +++++++++++++++++++
 site/src/main/package.json                         |    61 +-
 site/src/main/tsconfig.base.json                   |    56 +
 site/src/main/tsconfig.json                        |     8 +
 spark-iotdb-connector/pom.xml                      |     2 +-
 spark-tsfile/pom.xml                               |     2 +-
 subscription-api/pom.xml                           |    68 +
 .../api/SubscriptionConfiguration.java             |   114 +
 .../subscription/api/SubscriptionFactory.java      |    47 +
 .../iotdb/subscription/api/consumer/Consumer.java  |    56 +
 .../api/consumer/pull/PullConsumer.java            |    38 +
 .../api/consumer/push/DataArrivalListener.java     |    37 +
 .../api/consumer/push/ExceptionListener.java       |    34 +
 .../api/consumer/push/PushConsumer.java            |    68 +
 .../api/dataset/SubscriptionDataSet.java           |    22 +
 .../api/exception/SubscriptionException.java       |    31 +
 .../SubscriptionStrategyNotValidException.java     |    31 +
 .../api/strategy/SubscriptionStrategy.java         |    29 +
 .../disorder/DisorderHandlingStrategy.java         |    35 +
 .../api/strategy/disorder/IntolerableStrategy.java |    32 +
 .../api/strategy/disorder/WatermarkStrategy.java   |    36 +
 .../strategy/topic/MultipleConnectionStrategy.java |    63 +
 .../api/strategy/topic/SingleTopicStrategy.java    |    52 +
 .../api/strategy/topic/TopicsStrategy.java         |    24 +
 testcontainer/pom.xml                              |     2 +-
 thrift-commons/pom.xml                             |     2 +-
 thrift-commons/src/main/thrift/common.thrift       |     5 +-
 thrift-confignode/pom.xml                          |     2 +-
 .../src/main/thrift/confignode.thrift              |    65 +-
 thrift-influxdb/pom.xml                            |     2 +-
 thrift-iot-consensus/pom.xml                       |     2 +-
 thrift-mlnode/pom.xml                              |     2 +-
 thrift/pom.xml                                     |     2 +-
 thrift/rpc-changelist.md                           |    10 +-
 thrift/src/main/thrift/datanode.thrift             |    24 +
 tools/check_sigs.sh                                |     2 +-
 tools/common.sh                                    |     2 +-
 tools/download_staged_release.sh                   |     2 +-
 trigger-api/pom.xml                                |     2 +-
 tsfile/pom.xml                                     |     6 +-
 .../iotdb/tsfile/common/conf/TSFileConfig.java     |     2 +-
 .../apache/iotdb/tsfile/compress/ICompressor.java  |    61 +-
 .../iotdb/tsfile/compress/IUnCompressor.java       |    44 +
 .../file/metadata/enums/CompressionType.java       |     6 +-
 .../tsfile/write/record/datapoint/DataPoint.java   |     2 +-
 .../apache/iotdb/tsfile/compress/CompressTest.java |    39 +
 .../org/apache/iotdb/tsfile/compress/ZstdTest.java |    88 +
 udf-api/pom.xml                                    |     2 +-
 zeppelin-interpreter/pom.xml                       |     2 +-
 965 files changed, 49199 insertions(+), 30777 deletions(-)

diff --cc antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index e727c4566b,57b6b8e2cb..272e18575a
--- 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
@@@ -423,55 -385,50 +423,72 @@@ showConfigNode
      : SHOW CONFIGNODES
      ;
  
 -// Show Schema Template
 -showSchemaTemplates
 -    : SHOW SCHEMA TEMPLATES
 +// ---- Get Region Id
 +getRegionId
 +    : SHOW (DATA|SCHEMA) REGIONID OF path=prefixPath WHERE (SERIESSLOTID operator_eq
 +        seriesSlot=INTEGER_LITERAL|DEVICEID operator_eq deviceId=prefixPath) (OPERATOR_AND (TIMESLOTID operator_eq timeSlot=INTEGER_LITERAL|
 +        TIMESTAMP operator_eq timeStamp=INTEGER_LITERAL))?
      ;
  
 -// Show Measurements In Schema Template
 -showNodesInSchemaTemplate
 -    : SHOW NODES OPERATOR_IN SCHEMA TEMPLATE templateName=identifier
 +// ---- Get Time Slot List
 +getTimeSlotList
 +    : SHOW TIMESLOTID OF path=prefixPath WHERE SERIESSLOTID operator_eq seriesSlot=INTEGER_LITERAL
 +        (OPERATOR_AND STARTTIME operator_eq startTime=INTEGER_LITERAL)?
 +        (OPERATOR_AND ENDTIME operator_eq endTime=INTEGER_LITERAL)?
      ;
  
 -// Show Paths Set Schema Template
 -showPathsSetSchemaTemplate
 -    : SHOW PATHS SET SCHEMA TEMPLATE templateName=identifier
 +// ---- Get Series Slot List
 +getSeriesSlotList
 +    : SHOW (DATA|SCHEMA)? SERIESSLOTID OF path=prefixPath
      ;
  
 -// Show Paths Using Schema Template
 -showPathsUsingSchemaTemplate
 -    : SHOW PATHS prefixPath? USING SCHEMA TEMPLATE templateName=identifier
 +// ---- Migrate Region
 +migrateRegion
 +    : MIGRATE REGION regionId=INTEGER_LITERAL FROM fromId=INTEGER_LITERAL TO toId=INTEGER_LITERAL
      ;
  
 -// Count Storage Group
 -countStorageGroup
 -    : COUNT (STORAGE GROUP | DATABASES) prefixPath?
 +
++// Pipe Plugin =========================================================================================
++// Create Pipe Plugin
++createPipePlugin
++    : CREATE PIPEPLUGIN pluginName=identifier AS className=STRING_LITERAL uriClause
+     ;
+ 
 -// Count Devices
 -countDevices
 -    : COUNT DEVICES prefixPath?
++// Drop Pipe Plugin
++dropPipePlugin
++    : DROP PIPEPLUGIN pluginName=identifier
+     ;
+ 
 -// Count Timeseries
 -countTimeseries
 -    : COUNT TIMESERIES prefixPath? tagWhereClause? (GROUP BY LEVEL operator_eq INTEGER_LITERAL)?
++// Show Pipe Plugins
++showPipePlugins
++    : SHOW PIPEPLUGINS
+     ;
+ 
 -// Count Nodes
 -countNodes
 -    : COUNT NODES prefixPath LEVEL operator_eq INTEGER_LITERAL
++
 +// ML Model =========================================================================================
 +// ---- Create Model
 +createModel
 +    : CREATE AUTO? MODEL modelId=identifier
 +        WITH attributePair (COMMA attributePair)*
 +        BEGIN
 +            selectStatement
 +        END
      ;
  
 -tagWhereClause
 -    : WHERE (attributePair | containsExpression)
 +// ---- Drop Model
 +dropModel
 +    : DROP MODEL modelId=identifier
      ;
  
 +// ---- Show Models
 +showModels
 +    : SHOW MODELS
 +    ;
 +
 +// ---- Show Trails
 +showTrails
 +    : SHOW TRAILS modelId=identifier
 +    ;
  
  /**
   * 3. Data Manipulation Language (DML)
@@@ -891,9 -848,9 +908,33 @@@ createPip
      ;
  
  showPipe
-     : SHOW ((PIPE (pipeName=identifier)?) | PIPES)
+     : SHOW ((PIPE pipeName=identifier) | PIPES (WHERE CONNECTOR USED BY pipeName=identifier)?)
+     ;
+ 
++collectorAttributesClause
++    : WITH COLLECTOR LR_BRACKET (collectorAttributeClause COMMA)* collectorAttributeClause? RR_BRACKET
++    ;
++
++collectorAttributeClause
++    : collectorKey=STRING_LITERAL OPERATOR_SEQ collectorValue=STRING_LITERAL
++    ;
++
++processorAttributesClause
++    : WITH PROCESSOR LR_BRACKET (processorAttributeClause COMMA)* processorAttributeClause? RR_BRACKET
++    ;
++
++processorAttributeClause
++    : processorKey=STRING_LITERAL OPERATOR_SEQ processorValue=STRING_LITERAL
++    ;
++
++connectorAttributesClause
++    : WITH CONNECTOR LR_BRACKET (connectorAttributeClause COMMA)* connectorAttributeClause? RR_BRACKET
++    ;
++
++connectorAttributeClause
++    : connectorKey=STRING_LITERAL OPERATOR_SEQ connectorValue=STRING_LITERAL
 +    ;
 +
  stopPipe
      : STOP PIPE pipeName=identifier
      ;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index c5c8ea7e45,48c4b5a4cb..3dbbcd973d
--- 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
@@@ -38,7 -40,7 +40,8 @@@ import org.apache.iotdb.commons.udf.ser
  import org.apache.iotdb.confignode.rpc.thrift.TCountDatabaseResp;
  import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
  import org.apache.iotdb.confignode.rpc.thrift.TCreateFunctionReq;
+ import org.apache.iotdb.confignode.rpc.thrift.TCreatePipePluginReq;
 +import org.apache.iotdb.confignode.rpc.thrift.TCreateModelReq;
  import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
  import org.apache.iotdb.confignode.rpc.thrift.TCreateTriggerReq;
  import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
@@@ -48,9 -50,10 +51,11 @@@ import org.apache.iotdb.confignode.rpc.
  import org.apache.iotdb.confignode.rpc.thrift.TDeleteTimeSeriesReq;
  import org.apache.iotdb.confignode.rpc.thrift.TDropCQReq;
  import org.apache.iotdb.confignode.rpc.thrift.TDropFunctionReq;
 +import org.apache.iotdb.confignode.rpc.thrift.TDropModelReq;
+ import org.apache.iotdb.confignode.rpc.thrift.TDropPipePluginReq;
  import org.apache.iotdb.confignode.rpc.thrift.TDropPipeSinkReq;
  import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
+ import org.apache.iotdb.confignode.rpc.thrift.TGetPipePluginTableResp;
  import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkReq;
  import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkResp;
  import org.apache.iotdb.confignode.rpc.thrift.TGetRegionIdReq;
@@@ -113,9 -110,8 +119,10 @@@ import org.apache.iotdb.db.mpp.plan.exe
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowNodesInSchemaTemplateTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowPathSetTemplateTask;
  import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowSchemaTemplateTask;
+ import org.apache.iotdb.db.mpp.plan.execution.config.sys.pipe.ShowPipeTask;
  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.expression.Expression;
  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;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index 9d5ff90e58,ced3aac8ae..c74ab164d5
--- 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
@@@ -158,20 -157,20 +161,20 @@@ import org.apache.iotdb.db.mpp.plan.sta
  import org.apache.iotdb.db.mpp.plan.statement.sys.SetSystemStatusStatement;
  import org.apache.iotdb.db.mpp.plan.statement.sys.ShowQueriesStatement;
  import org.apache.iotdb.db.mpp.plan.statement.sys.ShowVersionStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.sys.pipe.CreatePipeStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.sys.pipe.DropPipeStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.sys.pipe.ShowPipeStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.sys.pipe.StartPipeStatement;
+ import org.apache.iotdb.db.mpp.plan.statement.sys.pipe.StopPipeStatement;
  import org.apache.iotdb.db.mpp.plan.statement.sys.sync.CreatePipeSinkStatement;
- import org.apache.iotdb.db.mpp.plan.statement.sys.sync.CreatePipeStatement;
  import org.apache.iotdb.db.mpp.plan.statement.sys.sync.DropPipeSinkStatement;
- import org.apache.iotdb.db.mpp.plan.statement.sys.sync.DropPipeStatement;
  import org.apache.iotdb.db.mpp.plan.statement.sys.sync.ShowPipeSinkStatement;
  import org.apache.iotdb.db.mpp.plan.statement.sys.sync.ShowPipeSinkTypeStatement;
- import org.apache.iotdb.db.mpp.plan.statement.sys.sync.ShowPipeStatement;
- import org.apache.iotdb.db.mpp.plan.statement.sys.sync.StartPipeStatement;
- import org.apache.iotdb.db.mpp.plan.statement.sys.sync.StopPipeStatement;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.ConstantContext;
 +import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountDatabasesContext;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountDevicesContext;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountNodesContext;
 -import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountStorageGroupContext;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountTimeseriesContext;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CreateFunctionContext;
  import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.DropFunctionContext;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index 595ee896ba,bc08640ee0..d09d636a32
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@@ -218,23 -217,19 +221,36 @@@ public abstract class StatementVisitor<
      return visitStatement(showTriggersStatement, context);
    }
  
+   // Pipe Plugin
+   public R visitCreatePipePlugin(CreatePipePluginStatement createPipePluginStatement, C context) {
+     return visitStatement(createPipePluginStatement, context);
+   }
+ 
+   public R visitDropPipePlugin(DropPipePluginStatement dropPipePluginStatement, C context) {
+     return visitStatement(dropPipePluginStatement, context);
+   }
+ 
+   public R visitShowPipePlugins(ShowPipePluginsStatement showPipePluginsStatement, C context) {
+     return visitStatement(showPipePluginsStatement, context);
+   }
+ 
 +  // ML Model
 +  public R visitCreateModel(CreateModelStatement createModelStatement, C context) {
 +    return visitStatement(createModelStatement, context);
 +  }
 +
 +  public R visitDropModel(DropModelStatement dropModelStatement, C context) {
 +    return visitStatement(dropModelStatement, context);
 +  }
 +
 +  public R visitShowModels(ShowModelsStatement showModelsModelStatement, C context) {
 +    return visitStatement(showModelsModelStatement, context);
 +  }
 +
 +  public R visitShowTrails(ShowTrailsStatement showTrailsStatement, C context) {
 +    return visitStatement(showTrailsStatement, context);
 +  }
 +
    /** Data Manipulation Language (DML) */
  
    // Select Statement


[iotdb] 05/11: finish sql->statement

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 1ad62fdc8961f045a229e3e39d7f1d27ca9fd423
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Feb 28 10:54:54 2023 +0800

    finish sql->statement
---
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  2 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       | 40 ++++++++++
 .../db/mpp/plan/statement/StatementVisitor.java    | 21 ++++++
 .../metadata/model/CreateModelStatement.java       | 88 ++++++++++++++++++++++
 .../metadata/model/DropModelStatement.java         | 57 ++++++++++++++
 .../metadata/model/ShowModelsStatement.java        | 49 ++++++++++++
 .../metadata/model/ShowTrailsStatement.java        | 57 ++++++++++++++
 7 files changed, 313 insertions(+), 1 deletion(-)

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 82200e9e78..e727c4566b 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
@@ -470,7 +470,7 @@ showModels
 
 // ---- Show Trails
 showTrails
-    : SHOW TRAILS
+    : SHOW TRAILS modelId=identifier
     ;
 
 /**
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 774652d22c..86a616486b 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
@@ -134,6 +134,10 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTriggersStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowVariablesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.CreateModelStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.DropModelStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.ShowModelsStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.ShowTrailsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.ActivateTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.CreateSchemaTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DeactivateTemplateStatement;
@@ -910,6 +914,42 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
     return new ShowContinuousQueriesStatement();
   }
 
+  // Create Model =====================================================================
+  @Override
+  public Statement visitCreateModel(IoTDBSqlParser.CreateModelContext ctx) {
+    CreateModelStatement createModelStatement = new CreateModelStatement();
+    createModelStatement.setModelId(parseIdentifier(ctx.modelId.getText()));
+    createModelStatement.setAuto(ctx.AUTO() != null);
+
+    Map<String, String> attributes = new HashMap<>();
+    for (IoTDBSqlParser.AttributePairContext attribute : ctx.attributePair()) {
+      attributes.put(parseAttributeKey(attribute.key), parseAttributeValue(attribute.value));
+    }
+    createModelStatement.setAttributes(attributes);
+
+    createModelStatement.setQueryStatement(
+        (QueryStatement) visitSelectStatement(ctx.selectStatement()));
+    return createModelStatement;
+  }
+
+  // Drop Model =====================================================================
+  @Override
+  public Statement visitDropModel(IoTDBSqlParser.DropModelContext ctx) {
+    return new DropModelStatement(parseIdentifier(ctx.modelId.getText()));
+  }
+
+  // Show Models =====================================================================
+  @Override
+  public Statement visitShowModels(IoTDBSqlParser.ShowModelsContext ctx) {
+    return new ShowModelsStatement();
+  }
+
+  // Show Trails =====================================================================
+  @Override
+  public Statement visitShowTrails(IoTDBSqlParser.ShowTrailsContext ctx) {
+    return new ShowTrailsStatement(parseIdentifier(ctx.modelId.getText()));
+  }
+
   /** Data Manipulation Language (DML) */
 
   // Select Statement ========================================================================
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index 9cac1d0646..595ee896ba 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@ -70,6 +70,10 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTriggersStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowVariablesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.CreateModelStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.DropModelStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.ShowModelsStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.model.ShowTrailsStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.ActivateTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.CreateSchemaTemplateStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.template.DeactivateTemplateStatement;
@@ -214,6 +218,23 @@ public abstract class StatementVisitor<R, C> {
     return visitStatement(showTriggersStatement, context);
   }
 
+  // ML Model
+  public R visitCreateModel(CreateModelStatement createModelStatement, C context) {
+    return visitStatement(createModelStatement, context);
+  }
+
+  public R visitDropModel(DropModelStatement dropModelStatement, C context) {
+    return visitStatement(dropModelStatement, context);
+  }
+
+  public R visitShowModels(ShowModelsStatement showModelsModelStatement, C context) {
+    return visitStatement(showModelsModelStatement, context);
+  }
+
+  public R visitShowTrails(ShowTrailsStatement showTrailsStatement, C context) {
+    return visitStatement(showTrailsStatement, context);
+  }
+
   /** Data Manipulation Language (DML) */
 
   // Select Statement
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
new file mode 100644
index 0000000000..cc91a2f027
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.statement.metadata.model;
+
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.mpp.plan.analyze.QueryType;
+import org.apache.iotdb.db.mpp.plan.statement.IConfigStatement;
+import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
+import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class CreateModelStatement extends Statement implements IConfigStatement {
+
+  private String modelId;
+  private boolean isAuto;
+  private Map<String, String> attributes;
+  private QueryStatement queryStatement;
+
+  public CreateModelStatement() {}
+
+  public String getModelId() {
+    return modelId;
+  }
+
+  public void setModelId(String modelId) {
+    this.modelId = modelId;
+  }
+
+  public boolean isAuto() {
+    return isAuto;
+  }
+
+  public void setAuto(boolean auto) {
+    isAuto = auto;
+  }
+
+  public Map<String, String> getAttributes() {
+    return attributes;
+  }
+
+  public void setAttributes(Map<String, String> attributes) {
+    this.attributes = attributes;
+  }
+
+  public QueryStatement getQueryStatement() {
+    return queryStatement;
+  }
+
+  public void setQueryStatement(QueryStatement queryStatement) {
+    this.queryStatement = queryStatement;
+  }
+
+  @Override
+  public List<? extends PartialPath> getPaths() {
+    return Collections.emptyList();
+  }
+
+  @Override
+  public QueryType getQueryType() {
+    return QueryType.WRITE;
+  }
+
+  @Override
+  public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+    return visitor.visitCreateModel(this, context);
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java
new file mode 100644
index 0000000000..16ecc95cdf
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/DropModelStatement.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.statement.metadata.model;
+
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.mpp.plan.analyze.QueryType;
+import org.apache.iotdb.db.mpp.plan.statement.IConfigStatement;
+import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
+
+import java.util.Collections;
+import java.util.List;
+
+public class DropModelStatement extends Statement implements IConfigStatement {
+
+  private final String modelId;
+
+  public DropModelStatement(String modelId) {
+    this.modelId = modelId;
+  }
+
+  public String getModelId() {
+    return modelId;
+  }
+
+  @Override
+  public List<? extends PartialPath> getPaths() {
+    return Collections.emptyList();
+  }
+
+  @Override
+  public QueryType getQueryType() {
+    return QueryType.WRITE;
+  }
+
+  @Override
+  public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+    return visitor.visitDropModel(this, context);
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java
new file mode 100644
index 0000000000..88f075889c
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowModelsStatement.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.statement.metadata.model;
+
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.mpp.plan.analyze.QueryType;
+import org.apache.iotdb.db.mpp.plan.statement.IConfigStatement;
+import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
+
+import java.util.Collections;
+import java.util.List;
+
+public class ShowModelsStatement extends Statement implements IConfigStatement {
+
+  public ShowModelsStatement() {}
+
+  @Override
+  public List<? extends PartialPath> getPaths() {
+    return Collections.emptyList();
+  }
+
+  @Override
+  public QueryType getQueryType() {
+    return QueryType.READ;
+  }
+
+  @Override
+  public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+    return visitor.visitShowModels(this, context);
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java
new file mode 100644
index 0000000000..108ec8eb92
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/ShowTrailsStatement.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.mpp.plan.statement.metadata.model;
+
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.mpp.plan.analyze.QueryType;
+import org.apache.iotdb.db.mpp.plan.statement.IConfigStatement;
+import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
+
+import java.util.Collections;
+import java.util.List;
+
+public class ShowTrailsStatement extends Statement implements IConfigStatement {
+
+  private final String modelId;
+
+  public ShowTrailsStatement(String modelId) {
+    this.modelId = modelId;
+  }
+
+  public String getModelId() {
+    return modelId;
+  }
+
+  @Override
+  public List<? extends PartialPath> getPaths() {
+    return Collections.emptyList();
+  }
+
+  @Override
+  public QueryType getQueryType() {
+    return QueryType.READ;
+  }
+
+  @Override
+  public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+    return visitor.visitShowTrails(this, context);
+  }
+}


[iotdb] 08/11: add model management executor (tmp save)

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 720bc62ac089820abfdedf55ee00b082db5d3897
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Feb 28 15:58:48 2023 +0800

    add model management executor (tmp save)
---
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  3 +-
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4  |  4 +
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java | 16 ++--
 .../config/executor/ClusterConfigTaskExecutor.java | 96 +++++++++++++++++++++-
 .../config/metadata/model/ShowModelsTask.java      |  7 ++
 .../config/metadata/model/ShowTrailsTask.java      |  7 ++
 .../metadata/model/CreateModelStatement.java       |  2 +
 7 files changed, 122 insertions(+), 13 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 e727c4566b..109a5b3bbd 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
@@ -452,7 +452,8 @@ migrateRegion
 // ---- Create Model
 createModel
     : CREATE AUTO? MODEL modelId=identifier
-        WITH attributePair (COMMA attributePair)*
+        WITH MODEL_TASK operator_eq modelTask=attributeValue
+            (COMMA attributePair)*
         BEGIN
             selectStatement
         END
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index f06d70e318..2ddab5fd35 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -394,6 +394,10 @@ MODELS
     : M O D E L S
     ;
 
+MODEL_TASK
+    : M O D E L '_' T A S K
+    ;
+
 NODEID
     : N O D E I D
     ;
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index c9c71b85f6..99ebd6fb70 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -54,14 +54,14 @@ public class Analyzer {
   }
 
   public static void validate(Statement statement) {
-    MPPQueryContext context = new MPPQueryContext(mockQueryId);
-
-    IPartitionFetcher partitionFetcher;
-    ISchemaFetcher schemaFetcher;
-    partitionFetcher = ClusterPartitionFetcher.getInstance();
-    schemaFetcher = ClusterSchemaFetcher.getInstance();
-
-    Analyzer analyzer = new Analyzer(context, partitionFetcher, schemaFetcher);
+    Analyzer analyzer = getAnalyzer();
     analyzer.analyze(statement);
   }
+
+  public static Analyzer getAnalyzer() {
+    return new Analyzer(
+        new MPPQueryContext(mockQueryId),
+        ClusterPartitionFetcher.getInstance(),
+        ClusterSchemaFetcher.getInstance());
+  }
 }
diff --git 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
index 6c6a07e313..8730967fd0 100644
--- 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
@@ -38,6 +38,7 @@ import org.apache.iotdb.commons.udf.service.UDFExecutableManager;
 import org.apache.iotdb.confignode.rpc.thrift.TCountDatabaseResp;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateFunctionReq;
+import org.apache.iotdb.confignode.rpc.thrift.TCreateModelReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateTriggerReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
@@ -47,6 +48,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TDeleteDatabasesReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDeleteTimeSeriesReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDropCQReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDropFunctionReq;
+import org.apache.iotdb.confignode.rpc.thrift.TDropModelReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDropPipeSinkReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDropTriggerReq;
 import org.apache.iotdb.confignode.rpc.thrift.TGetPipeSinkReq;
@@ -67,11 +69,15 @@ import org.apache.iotdb.confignode.rpc.thrift.TShowClusterResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowConfigNodesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowDataNodesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowDatabaseResp;
+import org.apache.iotdb.confignode.rpc.thrift.TShowModelReq;
+import org.apache.iotdb.confignode.rpc.thrift.TShowModelResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowPipeInfo;
 import org.apache.iotdb.confignode.rpc.thrift.TShowPipeReq;
 import org.apache.iotdb.confignode.rpc.thrift.TShowPipeResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowRegionReq;
 import org.apache.iotdb.confignode.rpc.thrift.TShowRegionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TShowTrailReq;
+import org.apache.iotdb.confignode.rpc.thrift.TShowTrailResp;
 import org.apache.iotdb.confignode.rpc.thrift.TShowVariablesResp;
 import org.apache.iotdb.confignode.rpc.thrift.TUnsetSchemaTemplateReq;
 import org.apache.iotdb.db.client.ConfigNodeClient;
@@ -84,6 +90,7 @@ import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.metadata.template.ClusterTemplateManager;
 import org.apache.iotdb.db.metadata.template.Template;
+import org.apache.iotdb.db.mpp.plan.analyze.Analysis;
 import org.apache.iotdb.db.mpp.plan.analyze.Analyzer;
 import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.CountStorageGroupTask;
@@ -101,11 +108,14 @@ import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowRegionTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowTTLTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowTriggersTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowVariablesTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.model.ShowModelsTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.model.ShowTrailsTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowNodesInSchemaTemplateTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowPathSetTemplateTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowSchemaTemplateTask;
 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.expression.Expression;
 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;
@@ -169,6 +179,7 @@ import java.net.URISyntaxException;
 import java.nio.ByteBuffer;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -1638,21 +1649,98 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
 
   @Override
   public SettableFuture<ConfigTaskResult> createModel(CreateModelStatement createModelStatement) {
-    return null;
+    createModelStatement.semanticCheck();
+
+    Analyzer analyzer = Analyzer.getAnalyzer();
+    Analysis analysis = analyzer.analyze(createModelStatement.getQueryStatement());
+
+    List<String> queryExpressions = new ArrayList<>();
+    for (Expression expression : analysis.getSelectExpressions()) {
+      queryExpressions.add(expression.toString());
+    }
+    String queryFilter = analysis.getWhereExpression().toString();
+
+    SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+    try (ConfigNodeClient client =
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+      TCreateModelReq createModelReq = new TCreateModelReq();
+      createModelReq.setModelId(createModelStatement.getModelId());
+      createModelReq.setQueryExpressions(queryExpressions);
+      createModelReq.setQueryFilter(queryFilter);
+      createModelReq.setIsAuto(createModelStatement.isAuto());
+      createModelReq.setModelConfigs(createModelStatement.getAttributes());
+      final TSStatus executionStatus = client.createModel(createModelReq);
+      if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != executionStatus.getCode()) {
+        LOGGER.warn(
+            "[{}] Failed to create model {}. TSStatus is {}",
+            executionStatus,
+            createModelStatement.getModelId(),
+            executionStatus.message);
+        future.setException(new IoTDBException(executionStatus.message, executionStatus.code));
+      } else {
+        future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS));
+      }
+    } catch (ClientManagerException | TException e) {
+      future.setException(e);
+    }
+    return future;
   }
 
   @Override
   public SettableFuture<ConfigTaskResult> dropModel(String modelId) {
-    return null;
+    SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+    try (ConfigNodeClient client =
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+      final TSStatus executionStatus = client.dropModel(new TDropModelReq(modelId));
+      if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != executionStatus.getCode()) {
+        LOGGER.warn("[{}] Failed to drop model {}.", executionStatus, modelId);
+        future.setException(new IoTDBException(executionStatus.message, executionStatus.code));
+      } else {
+        future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS));
+      }
+    } catch (ClientManagerException | TException e) {
+      future.setException(e);
+    }
+    return future;
   }
 
   @Override
   public SettableFuture<ConfigTaskResult> showModels() {
-    return null;
+    SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+    try (ConfigNodeClient client =
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+      TShowModelResp showModelResp = client.showModel(new TShowModelReq());
+      if (showModelResp.getStatus().getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        future.setException(
+            new IoTDBException(showModelResp.getStatus().message, showModelResp.getStatus().code));
+        return future;
+      }
+      // convert model info list and buildTsBlock
+      ShowModelsTask.buildTsBlock(showModelResp.getModelInfoList(), future);
+    } catch (ClientManagerException | TException e) {
+      future.setException(e);
+    }
+
+    return future;
   }
 
   @Override
   public SettableFuture<ConfigTaskResult> showTrails(String modelId) {
-    return null;
+    SettableFuture<ConfigTaskResult> future = SettableFuture.create();
+    try (ConfigNodeClient client =
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+      TShowTrailResp showTrailResp = client.showTrail(new TShowTrailReq(modelId));
+      if (showTrailResp.getStatus().getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        future.setException(
+            new IoTDBException(showTrailResp.getStatus().message, showTrailResp.getStatus().code));
+        return future;
+      }
+      // convert trail info list and buildTsBlock
+      ShowTrailsTask.buildTsBlock(showTrailResp.getTrailInfoList(), future);
+    } catch (ClientManagerException | TException e) {
+      future.setException(e);
+    }
+
+    return future;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
index 10b7a41ce0..7f7a3d1db1 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
@@ -24,6 +24,10 @@ import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+
+import java.nio.ByteBuffer;
+import java.util.List;
 
 public class ShowModelsTask implements IConfigTask {
 
@@ -34,4 +38,7 @@ public class ShowModelsTask implements IConfigTask {
       throws InterruptedException {
     return configTaskExecutor.showModels();
   }
+
+  public static void buildTsBlock(
+      List<ByteBuffer> modelInfoList, SettableFuture<ConfigTaskResult> future) {}
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
index f4c9c6388f..948a8e91fb 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
@@ -24,6 +24,10 @@ import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+
+import java.nio.ByteBuffer;
+import java.util.List;
 
 public class ShowTrailsTask implements IConfigTask {
 
@@ -38,4 +42,7 @@ public class ShowTrailsTask implements IConfigTask {
       throws InterruptedException {
     return configTaskExecutor.showTrails(modelId);
   }
+
+  public static void buildTsBlock(
+      List<ByteBuffer> trailInfoList, SettableFuture<ConfigTaskResult> future) {}
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
index cc91a2f027..11b552c903 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
@@ -71,6 +71,8 @@ public class CreateModelStatement extends Statement implements IConfigStatement
     this.queryStatement = queryStatement;
   }
 
+  public void semanticCheck() {}
+
   @Override
   public List<? extends PartialPath> getPaths() {
     return Collections.emptyList();


[iotdb] 02/11: fix typo

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 5b9d477ff5e05ded68f650ba17540e08107ec70c
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Feb 27 17:45:57 2023 +0800

    fix typo
---
 .../src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 9 ++++++---
 1 file changed, 6 insertions(+), 3 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 45ba9a7f79..0f4cc68b6a 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
@@ -59,7 +59,8 @@ ddlStatement
     ;
 
 dmlStatement
-    : selectStatement | insertStatement | deleteStatement;
+    : selectStatement | insertStatement | deleteStatement
+    ;
 
 dclStatement
     : createUser | createRole | alterUser | grantUser | grantRole | grantRoleToUser
@@ -71,11 +72,13 @@ utilityStatement
     : merge | fullMerge | flush | clearCache | settle | explain
     | setSystemStatus | showVersion | showFlushInfo | showLockInfo | showQueryResource
     | showQueries | killQuery | grantWatermarkEmbedding | revokeWatermarkEmbedding
-    | loadConfiguration | loadTimeseries | loadFile | removeFile | unloadFile;
+    | loadConfiguration | loadTimeseries | loadFile | removeFile | unloadFile
+    ;
 
 syncStatement
     : createPipeSink | showPipeSinkType | showPipeSink | dropPipeSink
-    | createPipe | showPipe | stopPipe | startPipe | dropPipe;
+    | createPipe | showPipe | stopPipe | startPipe | dropPipe
+    ;
 
 /**
  * 2. Data Definition Language (DDL)


[iotdb] 09/11: finish & fix bugs

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit c2374bcc3ef97b1945b19510a92061a89bc49bc9
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Mar 13 15:03:54 2023 +0800

    finish & fix bugs
---
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  3 +-
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4  |  4 --
 .../iotdb/confignode/persistence/ModelInfo.java    | 12 ++++-
 .../iotdb/commons/model/ModelInformation.java      |  3 +-
 .../apache/iotdb/db/client/ConfigNodeClient.java   | 58 ++++++++++++++++++----
 .../db/mpp/common/header/ColumnHeaderConstant.java | 25 ++++++++++
 .../db/mpp/common/header/DatasetHeaderFactory.java |  8 +++
 .../config/executor/ClusterConfigTaskExecutor.java |  7 ++-
 .../config/metadata/model/ShowModelsTask.java      | 45 ++++++++++++++++-
 .../config/metadata/model/ShowTrailsTask.java      | 33 +++++++++++-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |  3 +-
 .../metadata/model/CreateModelStatement.java       | 19 ++++++-
 12 files changed, 196 insertions(+), 24 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 109a5b3bbd..e727c4566b 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
@@ -452,8 +452,7 @@ migrateRegion
 // ---- Create Model
 createModel
     : CREATE AUTO? MODEL modelId=identifier
-        WITH MODEL_TASK operator_eq modelTask=attributeValue
-            (COMMA attributePair)*
+        WITH attributePair (COMMA attributePair)*
         BEGIN
             selectStatement
         END
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index 2ddab5fd35..f06d70e318 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -394,10 +394,6 @@ MODELS
     : M O D E L S
     ;
 
-MODEL_TASK
-    : M O D E L '_' T A S K
-    ;
-
 NODEID
     : N O D E I D
     ;
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
index 58e3ec4e6b..13e4dabe73 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/ModelInfo.java
@@ -122,7 +122,17 @@ public class ModelInfo implements SnapshotProcessor {
   public TrailTableResp showTrail(ShowTrailPlan plan) {
     acquireModelTableLock();
     try {
-      ModelInformation modelInformation = modelTable.getModelInformationById(plan.getModelId());
+      String modelId = plan.getModelId();
+      ModelInformation modelInformation = modelTable.getModelInformationById(modelId);
+      if (modelInformation == null) {
+        return new TrailTableResp(
+            new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode())
+                .setMessage(
+                    String.format(
+                        "Failed to show trails of model [%s], this model has not been created.",
+                        modelId)));
+      }
+
       TrailTableResp trailTableResp =
           new TrailTableResp(new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()));
       if (plan.isSetTrailId()) {
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java b/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java
index ecccda085e..e6fbf13c95 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java
@@ -50,7 +50,7 @@ public class ModelInformation {
   private TrainingState trainingState;
 
   private String bestTrailId;
-  private Map<String, TrailInformation> trailMap;
+  private final Map<String, TrailInformation> trailMap;
 
   public ModelInformation(
       String modelId,
@@ -65,6 +65,7 @@ public class ModelInformation {
     this.isAuto = isAuto;
     this.queryExpressions = queryExpressions;
     this.queryFilter = queryFilter;
+    this.trailMap = new HashMap<>();
   }
 
   public ModelInformation(ByteBuffer buffer) {
diff --git a/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java b/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
index c525d5cd75..ad9ee97782 100644
--- a/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
+++ b/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
@@ -1919,37 +1919,75 @@ public class ConfigNodeClient implements IConfigNodeRPCService.Iface, ThriftClie
 
   @Override
   public TSStatus createModel(TCreateModelReq req) throws TException {
-    // TODO
-    throw new TException(new UnsupportedOperationException().getCause());
+    for (int i = 0; i < RETRY_NUM; i++) {
+      try {
+        TSStatus status = client.createModel(req);
+        if (!updateConfigNodeLeader(status)) {
+          return status;
+        }
+      } catch (TException e) {
+        configLeader = null;
+      }
+      waitAndReconnect();
+    }
+    throw new TException(MSG_RECONNECTION_FAIL);
   }
 
   @Override
   public TSStatus dropModel(TDropModelReq req) throws TException {
-    // TODO
-    throw new TException(new UnsupportedOperationException().getCause());
+    for (int i = 0; i < RETRY_NUM; i++) {
+      try {
+        TSStatus status = client.dropModel(req);
+        if (!updateConfigNodeLeader(status)) {
+          return status;
+        }
+      } catch (TException e) {
+        configLeader = null;
+      }
+      waitAndReconnect();
+    }
+    throw new TException(MSG_RECONNECTION_FAIL);
   }
 
   @Override
   public TShowModelResp showModel(TShowModelReq req) throws TException {
-    // TODO
-    throw new TException(new UnsupportedOperationException().getCause());
+    for (int i = 0; i < RETRY_NUM; i++) {
+      try {
+        TShowModelResp resp = client.showModel(req);
+        if (!updateConfigNodeLeader(resp.getStatus())) {
+          return resp;
+        }
+      } catch (TException e) {
+        configLeader = null;
+      }
+      waitAndReconnect();
+    }
+    throw new TException(MSG_RECONNECTION_FAIL);
   }
 
   @Override
   public TShowTrailResp showTrail(TShowTrailReq req) throws TException {
-    // TODO
-    throw new TException(new UnsupportedOperationException().getCause());
+    for (int i = 0; i < RETRY_NUM; i++) {
+      try {
+        TShowTrailResp resp = client.showTrail(req);
+        if (!updateConfigNodeLeader(resp.getStatus())) {
+          return resp;
+        }
+      } catch (TException e) {
+        configLeader = null;
+      }
+      waitAndReconnect();
+    }
+    throw new TException(MSG_RECONNECTION_FAIL);
   }
 
   @Override
   public TSStatus updateModelInfo(TUpdateModelInfoReq req) throws TException {
-    // TODO
     throw new TException(new UnsupportedOperationException().getCause());
   }
 
   @Override
   public TSStatus updateModelState(TUpdateModelStateReq req) throws TException {
-    // TODO
     throw new TException(new UnsupportedOperationException().getCause());
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
index baaf9a773c..88a22dd1ea 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -153,6 +153,15 @@ public class ColumnHeaderConstant {
   public static final String ELAPSED_TIME = "ElapsedTime";
   public static final String STATEMENT = "Statement";
 
+  // column names for show models/trails
+  public static final String MODEL_ID = "ModelId";
+  public static final String TRAIL_ID = "TrailId";
+  public static final String MODEL_TASK = "ModelTask";
+  public static final String MODEL_TYPE = "ModelType";
+  public static final String QUERY_BODY = "QueryBody";
+  public static final String HYPERPARAMETER = "Hyperparameter";
+  public static final String MODEL_PATH = "ModelPath";
+
   public static final List<ColumnHeader> lastQueryColumnHeaders =
       ImmutableList.of(
           new ColumnHeader(TIMESERIES, TSDataType.TEXT),
@@ -381,4 +390,20 @@ public class ColumnHeaderConstant {
           new ColumnHeader(DATA_NODE_ID, TSDataType.INT32),
           new ColumnHeader(ELAPSED_TIME, TSDataType.FLOAT),
           new ColumnHeader(STATEMENT, TSDataType.TEXT));
+
+  public static final List<ColumnHeader> showModelsColumnHeaders =
+      ImmutableList.of(
+          new ColumnHeader(MODEL_ID, TSDataType.TEXT),
+          new ColumnHeader(MODEL_TASK, TSDataType.TEXT),
+          new ColumnHeader(MODEL_TYPE, TSDataType.TEXT),
+          new ColumnHeader(QUERY_BODY, TSDataType.TEXT),
+          new ColumnHeader(STATE, TSDataType.TEXT),
+          new ColumnHeader(HYPERPARAMETER, TSDataType.TEXT),
+          new ColumnHeader(MODEL_PATH, TSDataType.TEXT));
+
+  public static final List<ColumnHeader> showTrailsColumnHeaders =
+      ImmutableList.of(
+          new ColumnHeader(TRAIL_ID, TSDataType.TEXT),
+          new ColumnHeader(HYPERPARAMETER, TSDataType.TEXT),
+          new ColumnHeader(MODEL_PATH, TSDataType.TEXT));
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
index 7e8eb19b05..ff0bb03b9b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
@@ -164,4 +164,12 @@ public class DatasetHeaderFactory {
   public static DatasetHeader getShowQueriesHeader() {
     return new DatasetHeader(ColumnHeaderConstant.showQueriesColumnHeaders, false);
   }
+
+  public static DatasetHeader getShowModelsHeader() {
+    return new DatasetHeader(ColumnHeaderConstant.showModelsColumnHeaders, false);
+  }
+
+  public static DatasetHeader getShowTrailsHeader() {
+    return new DatasetHeader(ColumnHeaderConstant.showTrailsColumnHeaders, false);
+  }
 }
diff --git 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
index 8730967fd0..c5c8ea7e45 100644
--- 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
@@ -1658,16 +1658,19 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
     for (Expression expression : analysis.getSelectExpressions()) {
       queryExpressions.add(expression.toString());
     }
-    String queryFilter = analysis.getWhereExpression().toString();
+    Expression whereExpression = analysis.getWhereExpression();
+    String queryFilter = whereExpression == null ? null : whereExpression.toString();
 
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     try (ConfigNodeClient client =
         CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
       TCreateModelReq createModelReq = new TCreateModelReq();
       createModelReq.setModelId(createModelStatement.getModelId());
+      createModelReq.setModelTask(createModelStatement.getModelTask());
+      createModelReq.setModelType(createModelStatement.getModelType());
+      createModelReq.setIsAuto(createModelStatement.isAuto());
       createModelReq.setQueryExpressions(queryExpressions);
       createModelReq.setQueryFilter(queryFilter);
-      createModelReq.setIsAuto(createModelStatement.isAuto());
       createModelReq.setModelConfigs(createModelStatement.getAttributes());
       final TSStatus executionStatus = client.createModel(createModelReq);
       if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != executionStatus.getCode()) {
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
index 7f7a3d1db1..7fd719e0fd 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
@@ -19,15 +19,25 @@
 
 package org.apache.iotdb.db.mpp.plan.execution.config.metadata.model;
 
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
 import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
 import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
 import java.nio.ByteBuffer;
 import java.util.List;
+import java.util.stream.Collectors;
 
 public class ShowModelsTask implements IConfigTask {
 
@@ -40,5 +50,38 @@ public class ShowModelsTask implements IConfigTask {
   }
 
   public static void buildTsBlock(
-      List<ByteBuffer> modelInfoList, SettableFuture<ConfigTaskResult> future) {}
+      List<ByteBuffer> modelInfoList, SettableFuture<ConfigTaskResult> future) {
+    List<TSDataType> outputDataTypes =
+        ColumnHeaderConstant.showModelsColumnHeaders.stream()
+            .map(ColumnHeader::getColumnType)
+            .collect(Collectors.toList());
+    TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
+    for (ByteBuffer modelInfo : modelInfoList) {
+      builder.getTimeColumnBuilder().writeLong(0L);
+      builder
+          .getColumnBuilder(0)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder
+          .getColumnBuilder(1)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder
+          .getColumnBuilder(2)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder
+          .getColumnBuilder(3)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder
+          .getColumnBuilder(4)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder
+          .getColumnBuilder(5)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder
+          .getColumnBuilder(6)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder.declarePosition();
+    }
+    DatasetHeader datasetHeader = DatasetHeaderFactory.getShowModelsHeader();
+    future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
index 948a8e91fb..a428c27794 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
@@ -19,15 +19,25 @@
 
 package org.apache.iotdb.db.mpp.plan.execution.config.metadata.model;
 
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeaderFactory;
 import org.apache.iotdb.db.mpp.plan.execution.config.ConfigTaskResult;
 import org.apache.iotdb.db.mpp.plan.execution.config.IConfigTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.executor.IConfigTaskExecutor;
+import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
 import java.nio.ByteBuffer;
 import java.util.List;
+import java.util.stream.Collectors;
 
 public class ShowTrailsTask implements IConfigTask {
 
@@ -44,5 +54,26 @@ public class ShowTrailsTask implements IConfigTask {
   }
 
   public static void buildTsBlock(
-      List<ByteBuffer> trailInfoList, SettableFuture<ConfigTaskResult> future) {}
+      List<ByteBuffer> trailInfoList, SettableFuture<ConfigTaskResult> future) {
+    List<TSDataType> outputDataTypes =
+        ColumnHeaderConstant.showTrailsColumnHeaders.stream()
+            .map(ColumnHeader::getColumnType)
+            .collect(Collectors.toList());
+    TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
+    for (ByteBuffer trailInfo : trailInfoList) {
+      builder.getTimeColumnBuilder().writeLong(0L);
+      builder
+          .getColumnBuilder(0)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(trailInfo)));
+      builder
+          .getColumnBuilder(1)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(trailInfo)));
+      builder
+          .getColumnBuilder(2)
+          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(trailInfo)));
+      builder.declarePosition();
+    }
+    DatasetHeader datasetHeader = DatasetHeaderFactory.getShowTrailsHeader();
+    future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
+  }
 }
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 510b6a808d..9d5ff90e58 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
@@ -923,7 +923,8 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
 
     Map<String, String> attributes = new HashMap<>();
     for (IoTDBSqlParser.AttributePairContext attribute : ctx.attributePair()) {
-      attributes.put(parseAttributeKey(attribute.key), parseAttributeValue(attribute.value));
+      attributes.put(
+          parseAttributeKey(attribute.key).toLowerCase(), parseAttributeValue(attribute.value));
     }
     createModelStatement.setAttributes(attributes);
 
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
index 11b552c903..0eecf66558 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/model/CreateModelStatement.java
@@ -19,7 +19,9 @@
 
 package org.apache.iotdb.db.mpp.plan.statement.metadata.model;
 
+import org.apache.iotdb.common.rpc.thrift.ModelTask;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.mpp.plan.analyze.QueryType;
 import org.apache.iotdb.db.mpp.plan.statement.IConfigStatement;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
@@ -71,7 +73,22 @@ public class CreateModelStatement extends Statement implements IConfigStatement
     this.queryStatement = queryStatement;
   }
 
-  public void semanticCheck() {}
+  public ModelTask getModelTask() {
+    return ModelTask.valueOf(attributes.get("model_task"));
+  }
+
+  public String getModelType() {
+    return attributes.get("model_type");
+  }
+
+  public void semanticCheck() {
+    if (!attributes.containsKey("model_task")) {
+      throw new SemanticException("The attribute `model_task` must be specified.");
+    }
+    if (!attributes.containsKey("model_type")) {
+      throw new SemanticException("The attribute `model_type` must be specified.");
+    }
+  }
 
   @Override
   public List<? extends PartialPath> getPaths() {


[iotdb] 11/11: merge master

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 9e84f71e7c606fbcd7b8ee149383168ae20c3f2a
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Mar 14 09:50:48 2023 +0800

    merge master
---
 .../main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4  |  6 +++---
 .../execution/config/executor/ClusterConfigTaskExecutor.java  | 11 +++++------
 2 files changed, 8 insertions(+), 9 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 272e18575a..0e512563b5 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
@@ -293,10 +293,10 @@ showAllTTL
 // Function =========================================================================================
 // ---- Create Function
 createFunction
-    : CREATE FUNCTION udfName=identifier AS className=STRING_LITERAL uriClasue?
+    : CREATE FUNCTION udfName=identifier AS className=STRING_LITERAL uriClause?
     ;
 
-uriClasue
+uriClause
     : USING URI uri
     ;
 
@@ -322,7 +322,7 @@ createTrigger
         triggerEventClause
         ON prefixPath
         AS className=STRING_LITERAL
-        uriClasue?
+        uriClause?
         triggerAttributeClause?
     ;
 
diff --git 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
index 3dbbcd973d..d8e71e04e2 100644
--- 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
@@ -40,8 +40,8 @@ import org.apache.iotdb.commons.udf.service.UDFExecutableManager;
 import org.apache.iotdb.confignode.rpc.thrift.TCountDatabaseResp;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateCQReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateFunctionReq;
-import org.apache.iotdb.confignode.rpc.thrift.TCreatePipePluginReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateModelReq;
+import org.apache.iotdb.confignode.rpc.thrift.TCreatePipePluginReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreatePipeReq;
 import org.apache.iotdb.confignode.rpc.thrift.TCreateTriggerReq;
 import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema;
@@ -121,7 +121,6 @@ import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowPathS
 import org.apache.iotdb.db.mpp.plan.execution.config.metadata.template.ShowSchemaTemplateTask;
 import org.apache.iotdb.db.mpp.plan.execution.config.sys.pipe.ShowPipeTask;
 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.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CountStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.CreateContinuousQueryStatement;
@@ -1832,7 +1831,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
 
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     try (ConfigNodeClient client =
-        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
       TCreateModelReq createModelReq = new TCreateModelReq();
       createModelReq.setModelId(createModelStatement.getModelId());
       createModelReq.setModelTask(createModelStatement.getModelTask());
@@ -1862,7 +1861,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
   public SettableFuture<ConfigTaskResult> dropModel(String modelId) {
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     try (ConfigNodeClient client =
-        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
       final TSStatus executionStatus = client.dropModel(new TDropModelReq(modelId));
       if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != executionStatus.getCode()) {
         LOGGER.warn("[{}] Failed to drop model {}.", executionStatus, modelId);
@@ -1880,7 +1879,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
   public SettableFuture<ConfigTaskResult> showModels() {
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     try (ConfigNodeClient client =
-        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
       TShowModelResp showModelResp = client.showModel(new TShowModelReq());
       if (showModelResp.getStatus().getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
         future.setException(
@@ -1900,7 +1899,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
   public SettableFuture<ConfigTaskResult> showTrails(String modelId) {
     SettableFuture<ConfigTaskResult> future = SettableFuture.create();
     try (ConfigNodeClient client =
-        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.configNodeRegionId)) {
+        CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
       TShowTrailResp showTrailResp = client.showTrail(new TShowTrailReq(modelId));
       if (showTrailResp.getStatus().getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
         future.setException(


[iotdb] 04/11: add model management SQL in g4

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 8eb161efc31be7ed79bfc6207b1dbabc979b8997
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Feb 28 09:47:33 2023 +0800

    add model management SQL in g4
---
 .../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 |  4 ++++
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   | 27 ++++++++++++++++++++++
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4  | 16 +++++++++++++
 3 files changed, 47 insertions(+)

diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
index 5889464db9..3c0e7a4a79 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
@@ -43,6 +43,7 @@ keyWords
     | AS
     | ASC
     | ATTRIBUTES
+    | AUTO
     | BEFORE
     | BEGIN
     | BLOCKED
@@ -114,6 +115,8 @@ keyWords
     | LOCK
     | MERGE
     | METADATA
+    | MODEL
+    | MODELS
     | NODES
     | NONE
     | NOW
@@ -181,6 +184,7 @@ keyWords
     | TOLERANCE
     | TOP
     | TRACING
+    | TRAILS
     | TRIGGER
     | TRIGGERS
     | TTL
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 0f4cc68b6a..82200e9e78 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
@@ -56,6 +56,8 @@ ddlStatement
     // Cluster
     | showVariables | showCluster | showRegions | showDataNodes | showConfigNodes
     | getRegionId | getTimeSlotList | getSeriesSlotList | migrateRegion
+    // ML Model
+    | createModel | dropModel | showModels | showTrails
     ;
 
 dmlStatement
@@ -446,6 +448,31 @@ migrateRegion
     ;
 
 
+// ML Model =========================================================================================
+// ---- Create Model
+createModel
+    : CREATE AUTO? MODEL modelId=identifier
+        WITH attributePair (COMMA attributePair)*
+        BEGIN
+            selectStatement
+        END
+    ;
+
+// ---- Drop Model
+dropModel
+    : DROP MODEL modelId=identifier
+    ;
+
+// ---- Show Models
+showModels
+    : SHOW MODELS
+    ;
+
+// ---- Show Trails
+showTrails
+    : SHOW TRAILS
+    ;
+
 /**
  * 3. Data Manipulation Language (DML)
  */
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index 24ba612b93..f06d70e318 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -85,6 +85,10 @@ ATTRIBUTES
     : A T T R I B U T E S
     ;
 
+AUTO
+    : A U T O
+    ;
+
 BEFORE
     : B E F O R E
     ;
@@ -382,6 +386,14 @@ MIGRATE
     : M I G R A T E
     ;
 
+MODEL
+    : M O D E L
+    ;
+
+MODELS
+    : M O D E L S
+    ;
+
 NODEID
     : N O D E I D
     ;
@@ -674,6 +686,10 @@ TRACING
     : T R A C I N G
     ;
 
+TRAILS
+    : T R A I L S
+    ;
+
 TRIGGER
     : T R I G G E R
     ;


[iotdb] 03/11: fix ASTVisitor after modify g4

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 5861dac24e9be740b0d51b94023af5d2126343af
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Feb 28 09:47:20 2023 +0800

    fix ASTVisitor after modify g4
---
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       | 74 ++++++++++------------
 1 file changed, 32 insertions(+), 42 deletions(-)

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 08791b8217..774652d22c 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
@@ -165,9 +165,9 @@ import org.apache.iotdb.db.mpp.plan.statement.sys.sync.StartPipeStatement;
 import org.apache.iotdb.db.mpp.plan.statement.sys.sync.StopPipeStatement;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.ConstantContext;
+import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountDatabasesContext;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountDevicesContext;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountNodesContext;
-import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountStorageGroupContext;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CountTimeseriesContext;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.CreateFunctionContext;
 import org.apache.iotdb.db.qp.sql.IoTDBSqlParser.DropFunctionContext;
@@ -526,10 +526,10 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
     }
   }
 
-  // Delete Timeseries ======================================================================
+  // Drop Timeseries ======================================================================
 
   @Override
-  public Statement visitDeleteTimeseries(IoTDBSqlParser.DeleteTimeseriesContext ctx) {
+  public Statement visitDropTimeseries(IoTDBSqlParser.DropTimeseriesContext ctx) {
     DeleteTimeSeriesStatement deleteTimeSeriesStatement = new DeleteTimeSeriesStatement();
     List<PartialPath> partialPaths = new ArrayList<>();
     for (IoTDBSqlParser.PrefixPathContext prefixPathContext : ctx.prefixPath()) {
@@ -601,21 +601,21 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
   // SHOW DATABASES
 
   @Override
-  public Statement visitShowStorageGroup(IoTDBSqlParser.ShowStorageGroupContext ctx) {
-    ShowStorageGroupStatement showStorageGroupStatement;
+  public Statement visitShowDatabases(IoTDBSqlParser.ShowDatabasesContext ctx) {
+    ShowStorageGroupStatement showDatabasesStatement;
 
     // Parse prefixPath
     if (ctx.prefixPath() != null) {
-      showStorageGroupStatement = new ShowStorageGroupStatement(parsePrefixPath(ctx.prefixPath()));
+      showDatabasesStatement = new ShowStorageGroupStatement(parsePrefixPath(ctx.prefixPath()));
     } else {
-      showStorageGroupStatement =
+      showDatabasesStatement =
           new ShowStorageGroupStatement(new PartialPath(SqlConstant.getSingleRootArray()));
     }
 
     // Is detailed
-    showStorageGroupStatement.setDetailed(ctx.DETAILS() != null);
+    showDatabasesStatement.setDetailed(ctx.DETAILS() != null);
 
-    return showStorageGroupStatement;
+    return showDatabasesStatement;
   }
 
   // Show Devices ========================================================================
@@ -694,7 +694,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
 
   // Count StorageGroup ========================================================================
   @Override
-  public Statement visitCountStorageGroup(CountStorageGroupContext ctx) {
+  public Statement visitCountDatabases(CountDatabasesContext ctx) {
     PartialPath path;
     if (ctx.prefixPath() != null) {
       path = parsePrefixPath(ctx.prefixPath());
@@ -1586,15 +1586,6 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
     return new PartialPath(path);
   }
 
-  private PartialPath parseSuffixPath(IoTDBSqlParser.SuffixPathContext ctx) {
-    List<IoTDBSqlParser.NodeNameContext> nodeNames = ctx.nodeName();
-    String[] path = new String[nodeNames.size()];
-    for (int i = 0; i < nodeNames.size(); i++) {
-      path[i] = parseNodeName(nodeNames.get(i));
-    }
-    return new PartialPath(path);
-  }
-
   private PartialPath convertConstantToPath(String src) throws IllegalPathException {
     return new PartialPath(src);
   }
@@ -2002,49 +1993,48 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
 
   // Create database
   @Override
-  public Statement visitCreateStorageGroup(IoTDBSqlParser.CreateStorageGroupContext ctx) {
+  public Statement visitCreateDatabase(IoTDBSqlParser.CreateDatabaseContext ctx) {
     DatabaseSchemaStatement databaseSchemaStatement =
         new DatabaseSchemaStatement(DatabaseSchemaStatement.DatabaseSchemaStatementType.CREATE);
     PartialPath path = parsePrefixPath(ctx.prefixPath());
     databaseSchemaStatement.setStorageGroupPath(path);
-    if (ctx.storageGroupAttributesClause() != null) {
-      parseStorageGroupAttributesClause(
-          databaseSchemaStatement, ctx.storageGroupAttributesClause());
+    if (ctx.databaseAttributesClause() != null) {
+      parseDatabaseAttributesClause(databaseSchemaStatement, ctx.databaseAttributesClause());
     }
     return databaseSchemaStatement;
   }
 
   @Override
-  public Statement visitAlterStorageGroup(IoTDBSqlParser.AlterStorageGroupContext ctx) {
+  public Statement visitAlterDatabase(IoTDBSqlParser.AlterDatabaseContext ctx) {
     DatabaseSchemaStatement databaseSchemaStatement =
         new DatabaseSchemaStatement(DatabaseSchemaStatement.DatabaseSchemaStatementType.ALTER);
     PartialPath path = parsePrefixPath(ctx.prefixPath());
     databaseSchemaStatement.setStorageGroupPath(path);
-    parseStorageGroupAttributesClause(databaseSchemaStatement, ctx.storageGroupAttributesClause());
+    parseDatabaseAttributesClause(databaseSchemaStatement, ctx.databaseAttributesClause());
     return databaseSchemaStatement;
   }
 
-  private void parseStorageGroupAttributesClause(
+  private void parseDatabaseAttributesClause(
       DatabaseSchemaStatement databaseSchemaStatement,
-      IoTDBSqlParser.StorageGroupAttributesClauseContext ctx) {
-    for (IoTDBSqlParser.StorageGroupAttributeClauseContext attribute :
-        ctx.storageGroupAttributeClause()) {
-      if (attribute.TTL() != null) {
+      IoTDBSqlParser.DatabaseAttributesClauseContext ctx) {
+    for (IoTDBSqlParser.DatabaseAttributeClauseContext attribute : ctx.databaseAttributeClause()) {
+      IoTDBSqlParser.DatabaseAttributeKeyContext attributeKey = attribute.databaseAttributeKey();
+      if (attributeKey.TTL() != null) {
         long ttl = Long.parseLong(attribute.INTEGER_LITERAL().getText());
         databaseSchemaStatement.setTTL(ttl);
-      } else if (attribute.SCHEMA_REPLICATION_FACTOR() != null) {
+      } else if (attributeKey.SCHEMA_REPLICATION_FACTOR() != null) {
         int schemaReplicationFactor = Integer.parseInt(attribute.INTEGER_LITERAL().getText());
         databaseSchemaStatement.setSchemaReplicationFactor(schemaReplicationFactor);
-      } else if (attribute.DATA_REPLICATION_FACTOR() != null) {
+      } else if (attributeKey.DATA_REPLICATION_FACTOR() != null) {
         int dataReplicationFactor = Integer.parseInt(attribute.INTEGER_LITERAL().getText());
         databaseSchemaStatement.setDataReplicationFactor(dataReplicationFactor);
-      } else if (attribute.TIME_PARTITION_INTERVAL() != null) {
+      } else if (attributeKey.TIME_PARTITION_INTERVAL() != null) {
         long timePartitionInterval = Long.parseLong(attribute.INTEGER_LITERAL().getText());
         databaseSchemaStatement.setTimePartitionInterval(timePartitionInterval);
-      } else if (attribute.SCHEMA_REGION_GROUP_NUM() != null) {
+      } else if (attributeKey.SCHEMA_REGION_GROUP_NUM() != null) {
         int schemaRegionGroupNum = Integer.parseInt(attribute.INTEGER_LITERAL().getText());
         databaseSchemaStatement.setSchemaRegionGroupNum(schemaRegionGroupNum);
-      } else if (attribute.DATA_REGION_GROUP_NUM() != null) {
+      } else if (attributeKey.DATA_REGION_GROUP_NUM() != null) {
         int dataRegionGroupNum = Integer.parseInt(attribute.INTEGER_LITERAL().getText());
         databaseSchemaStatement.setDataRegionGroupNum(dataRegionGroupNum);
       }
@@ -2101,15 +2091,15 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
   }
 
   @Override
-  public Statement visitDeleteStorageGroup(IoTDBSqlParser.DeleteStorageGroupContext ctx) {
-    DeleteStorageGroupStatement deleteStorageGroupStatement = new DeleteStorageGroupStatement();
+  public Statement visitDropDatabase(IoTDBSqlParser.DropDatabaseContext ctx) {
+    DeleteStorageGroupStatement dropDatabaseStatement = new DeleteStorageGroupStatement();
     List<IoTDBSqlParser.PrefixPathContext> prefixPathContexts = ctx.prefixPath();
     List<String> paths = new ArrayList<>();
     for (IoTDBSqlParser.PrefixPathContext prefixPathContext : prefixPathContexts) {
       paths.add(parsePrefixPath(prefixPathContext).getFullPath());
     }
-    deleteStorageGroupStatement.setPrefixPath(paths);
-    return deleteStorageGroupStatement;
+    dropDatabaseStatement.setPrefixPath(paths);
+    return dropDatabaseStatement;
   }
 
   // Explain ========================================================================
@@ -2722,7 +2712,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
   // show region
 
   @Override
-  public Statement visitShowRegion(IoTDBSqlParser.ShowRegionContext ctx) {
+  public Statement visitShowRegions(IoTDBSqlParser.ShowRegionsContext ctx) {
     ShowRegionStatement showRegionStatement = new ShowRegionStatement();
     // TODO: Maybe add a show ConfigNode region in the future
     if (ctx.DATA() != null) {
@@ -2962,8 +2952,8 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
   }
 
   @Override
-  public Statement visitDeleteTimeseriesOfSchemaTemplate(
-      IoTDBSqlParser.DeleteTimeseriesOfSchemaTemplateContext ctx) {
+  public Statement visitDropTimeseriesOfSchemaTemplate(
+      IoTDBSqlParser.DropTimeseriesOfSchemaTemplateContext ctx) {
     DeactivateTemplateStatement statement = new DeactivateTemplateStatement();
     if (ctx.templateName != null) {
       statement.setTemplateName(parseIdentifier(ctx.templateName.getText()));


[iotdb] 07/11: Merge remote-tracking branch 'origin/master' into lmh/MLSQL

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

hui pushed a commit to branch lmh/MLSQL
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit aa27beab1e29e8f601d761b76bc4f3a3378bb1fc
Merge: 461bdc360f 4ae7b3ab89
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Tue Feb 28 15:04:45 2023 +0800

    Merge remote-tracking branch 'origin/master' into lmh/MLSQL

 .../java/org/apache/iotdb/cli/AbstractCli.java     |   8 +
 .../confignode/client/DataNodeRequestType.java     |   5 +-
 .../client/sync/SyncDataNodeClientPool.java        |   3 +
 .../confignode/conf/ConfigNodeDescriptor.java      |   3 +-
 .../consensus/request/ConfigPhysicalPlan.java      |  24 ++
 .../consensus/request/ConfigPhysicalPlanType.java  |  10 +-
 .../model/ShowModelPlan.java}                      |  58 ++-
 .../request/read/model/ShowTrailPlan.java          |  97 +++++
 .../request/write/datanode/UpdateDataNodePlan.java |  32 +-
 .../CreateModelPlan.java}                          |  47 ++-
 .../DropModelPlan.java}                            |  50 ++-
 .../request/write/model/UpdateModelInfoPlan.java   |  98 +++++
 .../request/write/model/UpdateModelStatePlan.java  | 105 +++++
 .../consensus/response/ModelTableResp.java         |  55 +++
 .../consensus/response/TrailTableResp.java         |  55 +++
 .../confignode/manager/ClusterSchemaManager.java   |  50 ++-
 .../iotdb/confignode/manager/ConfigManager.java    |  86 +++-
 .../apache/iotdb/confignode/manager/IManager.java  |  35 +-
 .../iotdb/confignode/manager/ModelManager.java     | 158 +++++++
 .../iotdb/confignode/manager/ProcedureManager.java |  30 ++
 .../manager/consensus/ConsensusManager.java        |   3 +
 .../manager/node/ClusterNodeStartUtils.java        |  88 ++--
 .../iotdb/confignode/manager/node/NodeManager.java |  55 +--
 .../manager/partition/PartitionManager.java        |   4 +
 .../iotdb/confignode/persistence/ModelInfo.java    | 214 ++++++++++
 .../persistence/executor/ConfigPlanExecutor.java   |  27 +-
 .../confignode/persistence/node/NodeInfo.java      |   6 +-
 .../persistence/partition/PartitionInfo.java       |  26 +-
 .../procedure/impl/model/CreateModelProcedure.java | 224 ++++++++++
 .../procedure/impl/model/DropModelProcedure.java   | 240 +++++++++++
 .../procedure/state/model/CreateModelState.java    |  18 +-
 .../procedure/state/model/DropModelState.java      |  20 +-
 .../procedure/store/ProcedureFactory.java          |   8 +
 .../confignode/procedure/store/ProcedureType.java  |   6 +-
 .../iotdb/confignode/service/ConfigNode.java       |   4 +-
 .../thrift/ConfigNodeRPCServiceHandlerMetrics.java |   2 +-
 .../thrift/ConfigNodeRPCServiceMetrics.java        |   2 +-
 .../thrift/ConfigNodeRPCServiceProcessor.java      |  39 +-
 .../request/ConfigPhysicalPlanSerDeTest.java       |  12 +-
 .../iotdb/consensus/config/ConsensusConfig.java    |  15 +
 .../iotdb/consensus/ratis/RatisConsensus.java      |  13 +-
 .../ratis/metrics/IoTDBMetricRegistry.java         |   8 +-
 .../ratis/metrics/MetricRegistryManager.java       |  13 +-
 .../consensus/ratis/metrics/RatisMetricSet.java    |  10 +
 .../iotdb/consensus/ratis/metrics/TimerProxy.java  |   2 +-
 .../apache/iotdb/consensus/iot/ReplicateTest.java  |   2 +
 .../apache/iotdb/consensus/iot/StabilityTest.java  |   2 +
 .../iotdb/consensus/ratis/RatisConsensusTest.java  |   2 +
 .../iotdb/consensus/simple/RecoveryTest.java       |   2 +
 ...pache-IoTDB-Performance-Overview-Dashboard.json | 363 ++++++++++++----
 docs/UserGuide/Monitor-Alert/Metric-Tool.md        | 233 +++++------
 docs/UserGuide/Query-Data/Group-By.md              | 128 +++---
 docs/UserGuide/Reference/Common-Config-Manual.md   |   9 -
 docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md     | 239 +++++------
 docs/zh/UserGuide/Query-Data/Group-By.md           | 128 +++---
 .../zh/UserGuide/Reference/Common-Config-Manual.md |   9 -
 grafana-plugin/yarn.lock                           |  12 +-
 .../apache/iotdb/it/env/cluster/AbstractEnv.java   |   8 +-
 .../iotdb/it/env/cluster/AbstractNodeWrapper.java  |   6 +-
 .../iotdb/it/env/cluster/ConfigNodeWrapper.java    |  42 +-
 .../iotdb/it/env/cluster/DataNodeWrapper.java      |  65 +--
 .../iotdb/it/env/cluster/MppCommonConfig.java      |   6 -
 .../it/env/cluster/MppSharedCommonConfig.java      |   7 -
 .../iotdb/it/env/remote/RemoteCommonConfig.java    |   5 -
 .../org/apache/iotdb/itbase/env/CommonConfig.java  |   2 -
 .../it/cluster/IoTDBClusterNodeErrorStartUpIT.java |   7 +-
 .../it/cluster/IoTDBClusterRestartIT.java          | 117 ++----
 .../confignode/it/utils/ConfigNodeTestUtils.java   |  27 +-
 .../db/it/groupby/IoTDBGroupByConditionIT.java     |  11 +
 .../apache/iotdb/db/it/path/IoTDBFullPathIT.java   |  82 ++++
 .../iotdb/db/it/{ => path}/IoTDBQuotedPathIT.java  |   2 +-
 .../iotdb/db/it/query/IoTDBPaginationIT.java       |   9 -
 .../db/integration/IoTDBQueryMemoryControlIT.java  | 277 -------------
 .../db/integration/env/StandaloneEnvConfig.java    |   7 -
 .../apache/iotdb/metrics/config/MetricConfig.java  |  42 +-
 .../reporter/prometheus/PrometheusTextWriter.java  |  11 +
 .../iotdb/metrics/utils/IoTDBMetricsUtils.java     |   8 +-
 .../org/apache/iotdb/metrics/utils/NodeType.java   |  17 +-
 .../iotdb/metrics/config/MetricConfigTest.java     |   4 +-
 node-commons/pom.xml                               |   5 +
 .../resources/conf/iotdb-common.properties         |   5 -
 .../apache/iotdb/commons/conf/CommonConfig.java    |  20 +
 .../iotdb/commons/conf/CommonDescriptor.java       |  14 +
 .../iotdb/commons/model/ModelHyperparameter.java   |  71 ++++
 .../iotdb/commons/model/ModelInformation.java      | 229 ++++++++++
 .../org/apache/iotdb/commons/model/ModelTable.java |  91 ++++
 .../iotdb/commons/model/TrailInformation.java      | 101 +++++
 .../model/exception/ModelManagementException.java  |  15 +-
 .../iotdb/commons/service/metric/enums/Metric.java |   3 +-
 .../commons/utils/ThriftCommonsSerDeUtils.java     |  19 +
 .../commons/utils/ThriftCommonsSerDeUtilsTest.java |  30 ++
 .../resources/conf/iotdb-datanode.properties       |   2 +-
 .../org/apache/iotdb/db/audit/AuditLogger.java     |   4 +-
 .../apache/iotdb/db/client/ConfigNodeClient.java   |  24 +-
 .../org/apache/iotdb/db/client/MLNodeClient.java   | 134 ++++++
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  10 -
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  15 +-
 .../org/apache/iotdb/db/conf/IoTDBStartCheck.java  |  22 +-
 .../db/consensus/DataRegionConsensusImpl.java      |   2 +
 .../db/consensus/SchemaRegionConsensusImpl.java    |   2 +
 .../iotdb/db/engine/flush/MemTableFlushTask.java   |  17 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |   6 +-
 .../mpp/common/schematree/ClusterSchemaTree.java   |  33 +-
 .../exchange/MPPDataExchangeServiceMetrics.java    |   2 +-
 ...MppDataExchangeServiceThriftHandlerMetrics.java |   6 +-
 .../operator/source/ExchangeOperator.java          |  23 +-
 .../operator/window/SeriesWindowManager.java       |   4 +-
 .../plan/analyze/ColumnPaginationController.java   |  34 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |  75 ++--
 .../db/mpp/plan/parser/StatementGenerator.java     |   2 +-
 .../db/mpp/plan/planner/OperatorTreeGenerator.java |   6 +-
 .../iotdb/db/query/control/SessionManager.java     |  55 ++-
 .../java/org/apache/iotdb/db/service/DataNode.java |   9 +-
 .../service/DataNodeInternalRPCServiceMetrics.java |   2 +-
 .../apache/iotdb/db/service/RPCServiceMetrics.java |   2 +-
 .../thrift/handler/BaseServerContextHandler.java   |   4 +-
 .../InternalServiceThriftHandlerMetrics.java       |   6 +-
 .../handler/RPCServiceThriftHandlerMetrics.java    |   9 +-
 .../service/thrift/impl/ClientRPCServiceImpl.java  | 461 ++++++++++++---------
 .../file/UnsealedTsFileRecoverPerformer.java       |   5 +-
 .../db/engine/memtable/MemTableFlushTaskTest.java  |  10 +-
 .../mpp/execution/operator/OperatorMemoryTest.java |  15 +
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |   6 +-
 thrift-commons/src/main/thrift/common.thrift       |  19 +
 .../src/main/thrift/confignode.thrift              |  63 ++-
 thrift-mlnode/src/main/thrift/mlnode.thrift        |   2 +-
 thrift/src/main/thrift/datanode.thrift             |   2 +-
 127 files changed, 3954 insertions(+), 1701 deletions(-)