dataSet = session->executeQueryStatement("SHOW TABLES");
- Output(dataSet);
- } catch (IoTDBException &e) {
- cout << e.what() << endl;
- }
-
- cout << "[Drop Database db1,db2]\n" << endl;
- try {
- session->executeNonQueryStatement("DROP DATABASE db1");
- session->executeNonQueryStatement("DROP DATABASE db2");
- } catch (IoTDBException &e) {
- cout << e.what() << endl;
- }
-
- cout << "session close\n" << endl;
- session->close();
-
- cout << "finished!\n" << endl;
- } catch (IoTDBConnectionException &e) {
- cout << e.what() << endl;
- } catch (IoTDBException &e) {
- cout << e.what() << endl;
- }
- return 0;
-}
-```
-
-
-## 5. FAQ
-
-### 5.1 on Mac
-
-If errors occur when compiling thrift source code, try to downgrade your xcode-commandline from 12 to 11.5
-
-see https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087
-
-
-### 5.2 on Windows
-
-When Building Thrift and downloading packages via "wget", a possible annoying issue may occur with
-error message looks like:
-```shell
-Failed to delete cached file C:\Users\Administrator\.m2\repository\.cache\download-maven-plugin\index.ser
-```
-Possible fixes:
-- Try to delete the ".m2\repository\\.cache\" directory and try again.
-- Add "\true\ " configuration to the download-maven-plugin maven phase that complains this error.
-
diff --git a/src/UserGuide/Master/Table/API/Programming-Go-Native-API_timecho.md b/src/UserGuide/Master/Table/API/Programming-Go-Native-API_timecho.md
deleted file mode 100644
index 41ab86372..000000000
--- a/src/UserGuide/Master/Table/API/Programming-Go-Native-API_timecho.md
+++ /dev/null
@@ -1,576 +0,0 @@
-
-
-# Go Native API
-
-The Git repository for the Go Native API client is located [here](https://github.com/apache/iotdb-client-go/)
-
-## 1. Usage
-### 1.1 Dependencies
-
-* golang >= 1.13
-* make >= 3.0
-* curl >= 7.1.1
-* thrift 0.15.0
-* Linux、Macos or other unix-like systems
-* Windows+bash (WSL、cygwin、Git Bash)
-
-### 1.2 Installation
-
-* go mod
-
-```sh
-export GO111MODULE=on
-export GOPROXY=https://goproxy.io
-
-mkdir session_example && cd session_example
-
-curl -o session_example.go -L https://github.com/apache/iotdb-client-go/raw/main/example/session_example.go
-
-go mod init session_example
-go run session_example.go
-```
-
-* GOPATH
-
-```sh
-# get thrift 0.15.0
-go get github.com/apache/thrift
-cd $GOPATH/src/github.com/apache/thrift
-git checkout 0.15.0
-
-mkdir -p $GOPATH/src/iotdb-client-go-example/session_example
-cd $GOPATH/src/iotdb-client-go-example/session_example
-curl -o session_example.go -L https://github.com/apache/iotdb-client-go/raw/main/example/session_example.go
-go run session_example.go
-```
-* Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.
-
-## 2. ITableSession Interface
-### 2.1 Description
-
-Defines core operations for interacting with IoTDB tables, including data insertion, query execution, and session closure. Not thread-safe.
-
-### 2.2 Method List
-
-| **Method Name** | **Description** | **Parameters** | **Return Value** | **Return Error** |
-| -------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
-| `Insert(tablet *Tablet)` | Inserts a`Tablet`containing time-series data into the database.| `tablet`: A pointer to a Tablet containing time-series data to be inserted. | A pointer to TSStatus indicating the execution result. | An error if an issue occurs during the operation, such as a connection error or execution failure. |
-| `xecuteNonQueryStatement(sql string)`| Executes non-query SQL statements such as DDL or DML commands. | `sql`: The SQL statement to execute.| A pointer to TSStatus indicating the execution result.| An error if an issue occurs during the operation, such as a connection error or execution failure. |
-| `ExecuteQueryStatement (sql string, timeoutInMs *int64)` | Executes a query SQL statement with a specified timeout in milliseconds. | `sql`: The SQL query statement.`timeoutInMs`: Query timeout in milliseconds. | A pointer to SessionDataSet containing the query results. | An error if an issue occurs during the operation, such as a connection error or execution failure. |
-| `Close()` | Closes the session and releases resources. | None | None | An error if there is an issue with closing the IoTDB connection. |
-
-### 2.3 Interface Definition
-1. ITableSession
-
-```go
-// ITableSession defines an interface for interacting with IoTDB tables.
-// It supports operations such as data insertion, executing queries, and closing the session.
-// Implementations of this interface are expected to manage connections and ensure
-// proper resource cleanup.
-//
-// Each method may return an error to indicate issues such as connection errors
-// or execution failures.
-//
-// Since this interface includes a Close method, it is recommended to use
-// defer to ensure the session is properly closed.
-type ITableSession interface {
-
- // Insert inserts a Tablet into the database.
- //
- // Parameters:
- // - tablet: A pointer to a Tablet containing time-series data to be inserted.
- //
- // Returns:
- // - r: A pointer to TSStatus indicating the execution result.
- // - err: An error if an issue occurs during the operation, such as a connection error or execution failure.
- Insert(tablet *Tablet) (r *common.TSStatus, err error)
-
- // ExecuteNonQueryStatement executes a non-query SQL statement, such as a DDL or DML command.
- //
- // Parameters:
- // - sql: The SQL statement to execute.
- //
- // Returns:
- // - r: A pointer to TSStatus indicating the execution result.
- // - err: An error if an issue occurs during the operation, such as a connection error or execution failure.
- ExecuteNonQueryStatement(sql string) (r *common.TSStatus, err error)
-
- // ExecuteQueryStatement executes a query SQL statement and returns the result set.
- //
- // Parameters:
- // - sql: The SQL query statement to execute.
- // - timeoutInMs: A pointer to the timeout duration in milliseconds for the query execution.
- //
- // Returns:
- // - result: A pointer to SessionDataSet containing the query results.
- // - err: An error if an issue occurs during the operation, such as a connection error or execution failure.
- ExecuteQueryStatement(sql string, timeoutInMs *int64) (*SessionDataSet, error)
-
- // Close closes the session, releasing any held resources.
- //
- // Returns:
- // - err: An error if there is an issue with closing the IoTDB connection.
- Close() (err error)
-}
-```
-
-2. Constructing a TableSession
-
-* There’s no need to manually set the `sqlDialect` field in the `Config`structs. This is automatically handled by the corresponding `NewSession` function during initialization. Simply use the appropriate constructor based on your use case (single-node or cluster).
-
-```Go
-type Config struct {
- Host string
- Port string
- UserName string
- Password string
- FetchSize int32
- TimeZone string
- ConnectRetryMax int
- sqlDialect string
- Version Version
- Database string
-}
-
-type ClusterConfig struct {
- NodeUrls []string //ip:port
- UserName string
- Password string
- FetchSize int32
- TimeZone string
- ConnectRetryMax int
- sqlDialect string
- Database string
-}
-
-// NewTableSession creates a new TableSession instance using the provided configuration.
-//
-// Parameters:
-// - config: The configuration for the session.
-// - enableRPCCompression: A boolean indicating whether RPC compression is enabled.
-// - connectionTimeoutInMs: The timeout in milliseconds for establishing a connection.
-//
-// Returns:
-// - An ITableSession instance if the session is successfully created.
-// - An error if there is an issue during session initialization.
-func NewTableSession(config *Config, enableRPCCompression bool, connectionTimeoutInMs int) (ITableSession, error)
-
-// NewClusterTableSession creates a new TableSession instance for a cluster setup.
-//
-// Parameters:
-// - clusterConfig: The configuration for the cluster session.
-// - enableRPCCompression: A boolean indicating whether RPC compression is enabled.
-//
-// Returns:
-// - An ITableSession instance if the session is successfully created.
-// - An error if there is an issue during session initialization.
-func NewClusterTableSession(clusterConfig *ClusterConfig, enableRPCCompression bool) (ITableSession, error)
-```
-
-> Note:
->
-> When creating a `TableSession` via `NewTableSession` or `NewClusterTableSession`, the connection is already established; no additional `Open` operation is required.
-
-### 2.4 Example
-
-```go
-package main
-
-import (
- "flag"
- "log"
- "math/rand"
- "strconv"
- "time"
-
- "github.com/apache/iotdb-client-go/v2/client"
-)
-
-func main() {
- flag.Parse()
- config := &client.Config{
- Host: "127.0.0.1",
- Port: "6667",
- UserName: "root",
- Password: "root",
- Database: "test_session",
- }
- session, err := client.NewTableSession(config, false, 0)
- if err != nil {
- log.Fatal(err)
- }
- defer session.Close()
-
- checkError(session.ExecuteNonQueryStatement("create database test_db"))
- checkError(session.ExecuteNonQueryStatement("use test_db"))
- checkError(session.ExecuteNonQueryStatement("create table t1 (tag1 string tag, tag2 string tag, s1 text field, s2 text field)"))
- insertRelationalTablet(session)
- showTables(session)
- query(session)
-}
-
-func getTextValueFromDataSet(dataSet *client.SessionDataSet, columnName string) string {
- if isNull, err := dataSet.IsNull(columnName); err != nil {
- log.Fatal(err)
- } else if isNull {
- return "null"
- }
- v, err := dataSet.GetString(columnName)
- if err != nil {
- log.Fatal(err)
- }
- return v
-}
-
-func insertRelationalTablet(session client.ITableSession) {
- tablet, err := client.NewRelationalTablet("t1", []*client.MeasurementSchema{
- {
- Measurement: "tag1",
- DataType: client.STRING,
- },
- {
- Measurement: "tag2",
- DataType: client.STRING,
- },
- {
- Measurement: "s1",
- DataType: client.TEXT,
- },
- {
- Measurement: "s2",
- DataType: client.TEXT,
- },
- }, []client.ColumnCategory{client.TAG, client.TAG, client.FIELD, client.FIELD}, 1024)
- if err != nil {
- log.Fatal("Failed to create relational tablet {}", err)
- }
- ts := time.Now().UTC().UnixNano() / 1000000
- for row := 0; row < 16; row++ {
- ts++
- tablet.SetTimestamp(ts, row)
- tablet.SetValueAt("tag1_value_"+strconv.Itoa(row), 0, row)
- tablet.SetValueAt("tag2_value_"+strconv.Itoa(row), 1, row)
- tablet.SetValueAt("s1_value_"+strconv.Itoa(row), 2, row)
- tablet.SetValueAt("s2_value_"+strconv.Itoa(row), 3, row)
- tablet.RowSize++
- }
- checkError(session.Insert(tablet))
-
- tablet.Reset()
-
- for row := 0; row < 16; row++ {
- ts++
- tablet.SetTimestamp(ts, row)
- tablet.SetValueAt("tag1_value_1", 0, row)
- tablet.SetValueAt("tag2_value_1", 1, row)
- tablet.SetValueAt("s1_value_"+strconv.Itoa(row), 2, row)
- tablet.SetValueAt("s2_value_"+strconv.Itoa(row), 3, row)
-
- nullValueColumn := rand.Intn(4)
- tablet.SetValueAt(nil, nullValueColumn, row)
- tablet.RowSize++
- }
- checkError(session.Insert(tablet))
-}
-
-func showTables(session client.ITableSession) {
- timeout := int64(2000)
- dataSet, err := session.ExecuteQueryStatement("show tables", &timeout)
- defer dataSet.Close()
- if err != nil {
- log.Fatal(err)
- }
- for {
- hasNext, err := dataSet.Next()
- if err != nil {
- log.Fatal(err)
- }
- if !hasNext {
- break
- }
- value, err := dataSet.GetString("TableName")
- if err != nil {
- log.Fatal(err)
- }
- log.Printf("tableName is %v", value)
- }
-}
-
-func query(session client.ITableSession) {
- timeout := int64(2000)
- dataSet, err := session.ExecuteQueryStatement("select * from t1", &timeout)
- defer dataSet.Close()
- if err != nil {
- log.Fatal(err)
- }
- for {
- hasNext, err := dataSet.Next()
- if err != nil {
- log.Fatal(err)
- }
- if !hasNext {
- break
- }
- log.Printf("%v %v %v %v", getTextValueFromDataSet(dataSet, "tag1"), getTextValueFromDataSet(dataSet, "tag2"), getTextValueFromDataSet(dataSet, "s1"), getTextValueFromDataSet(dataSet, "s2"))
- }
-}
-
-func checkError(err error) {
- if err != nil {
- log.Fatal(err)
- }
-}
-```
-
-## 3. TableSessionPool Interface
-### 3.1 Description
-
-Manages a pool of `ITableSession` instances for efficient connection reuse and resource cleanup.
-
-### 3.2 Method List
-
-| **Method Name** | **Description** | **Return Value** | **Return Error** |
-| ----------------------- | ------------------------------------------------------------ | ------------------------------------------------------------- | ------------------------------------------- |
-| `GetSession()` | Acquires a session from the pool for database interaction. | A usable ITableSession instance for interacting with IoTDB. | An error if a session cannot be acquired. |
-| `Close()` | Closes the session pool and releases resources.。 | None | None |
-
-### 3.3 Interface Definition
-1. TableSessionPool
-
-```Go
-// TableSessionPool manages a pool of ITableSession instances, enabling efficient
-// reuse and management of resources. It provides methods to acquire a session
-// from the pool and to close the pool, releasing all held resources.
-//
-// This implementation ensures proper lifecycle management of sessions,
-// including efficient reuse and cleanup of resources.
-
-// GetSession acquires an ITableSession instance from the pool.
-//
-// Returns:
-// - A usable ITableSession instance for interacting with IoTDB.
-// - An error if a session cannot be acquired.
-func (spool *TableSessionPool) GetSession() (ITableSession, error) {
- return spool.sessionPool.getTableSession()
-}
-
-// Close closes the TableSessionPool, releasing all held resources.
-// Once closed, no further sessions can be acquired from the pool.
-func (spool *TableSessionPool) Close()
-```
-
-2. Constructing a TableSessionPool
-
-```Go
-type PoolConfig struct {
- Host string
- Port string
- NodeUrls []string
- UserName string
- Password string
- FetchSize int32
- TimeZone string
- ConnectRetryMax int
- Database string
- sqlDialect string
-}
-
-// NewTableSessionPool creates a new TableSessionPool with the specified configuration.
-//
-// Parameters:
-// - conf: PoolConfig defining the configuration for the pool.
-// - maxSize: The maximum number of sessions the pool can hold.
-// - connectionTimeoutInMs: Timeout for establishing a connection in milliseconds.
-// - waitToGetSessionTimeoutInMs: Timeout for waiting to acquire a session in milliseconds.
-// - enableCompression: A boolean indicating whether to enable compression.
-//
-// Returns:
-// - A TableSessionPool instance.
-func NewTableSessionPool(conf *PoolConfig, maxSize, connectionTimeoutInMs, waitToGetSessionTimeoutInMs int,
- enableCompression bool) TableSessionPool
-```
-
-> Note:
->
-> * If a `Database` is specified when creating the `TableSessionPool`, all sessions acquired from the pool will automatically use this database. There is no need to explicitly set the database during operations.
-> * Automatic State Reset: If a session temporarily switches to another database using `USE DATABASE` during usage, the session will automatically revert to the original database specified in the pool when closed and returned to the pool.
-
-### 3.4 Example
-
-```go
-package main
-
-import (
- "log"
- "strconv"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/apache/iotdb-client-go/v2/client"
-)
-
-func main() {
- sessionPoolWithSpecificDatabaseExample()
- sessionPoolWithoutSpecificDatabaseExample()
- putBackToSessionPoolExample()
-}
-
-func putBackToSessionPoolExample() {
- // should create database test_db before executing
- config := &client.PoolConfig{
- Host: "127.0.0.1",
- Port: "6667",
- UserName: "root",
- Password: "root",
- Database: "test_db",
- }
- sessionPool := client.NewTableSessionPool(config, 3, 60000, 4000, false)
- defer sessionPool.Close()
-
- num := 4
- successGetSessionNum := int32(0)
- var wg sync.WaitGroup
- wg.Add(num)
- for i := 0; i < num; i++ {
- dbName := "db" + strconv.Itoa(i)
- go func() {
- defer wg.Done()
- session, err := sessionPool.GetSession()
- if err != nil {
- log.Println("Failed to create database "+dbName+"because ", err)
- return
- }
- atomic.AddInt32(&successGetSessionNum, 1)
- defer func() {
- time.Sleep(6 * time.Second)
- // put back to session pool
- session.Close()
- }()
- checkError(session.ExecuteNonQueryStatement("create database " + dbName))
- checkError(session.ExecuteNonQueryStatement("use " + dbName))
- checkError(session.ExecuteNonQueryStatement("create table table_of_" + dbName + " (tag1 string tag, tag2 string tag, s1 text field, s2 text field)"))
- }()
- }
- wg.Wait()
- log.Println("success num is", successGetSessionNum)
-
- log.Println("All session's database have been reset.")
- // the using database will automatically reset to session pool's database after the session closed
- wg.Add(5)
- for i := 0; i < 5; i++ {
- go func() {
- defer wg.Done()
- session, err := sessionPool.GetSession()
- if err != nil {
- log.Println("Failed to get session because ", err)
- }
- defer session.Close()
- timeout := int64(3000)
- dataSet, err := session.ExecuteQueryStatement("show tables", &timeout)
- for {
- hasNext, err := dataSet.Next()
- if err != nil {
- log.Fatal(err)
- }
- if !hasNext {
- break
- }
- value, err := dataSet.GetString("TableName")
- if err != nil {
- log.Fatal(err)
- }
- log.Println("table is", value)
- }
- dataSet.Close()
- }()
- }
- wg.Wait()
-}
-
-func sessionPoolWithSpecificDatabaseExample() {
- // should create database test_db before executing
- config := &client.PoolConfig{
- Host: "127.0.0.1",
- Port: "6667",
- UserName: "root",
- Password: "root",
- Database: "test_db",
- }
- sessionPool := client.NewTableSessionPool(config, 3, 60000, 8000, false)
- defer sessionPool.Close()
- num := 10
- var wg sync.WaitGroup
- wg.Add(num)
- for i := 0; i < num; i++ {
- tableName := "t" + strconv.Itoa(i)
- go func() {
- defer wg.Done()
- session, err := sessionPool.GetSession()
- if err != nil {
- log.Println("Failed to create table "+tableName+"because ", err)
- return
- }
- defer session.Close()
- checkError(session.ExecuteNonQueryStatement("create table " + tableName + " (tag1 string tag, tag2 string tag, s1 text field, s2 text field)"))
- }()
- }
- wg.Wait()
-}
-
-func sessionPoolWithoutSpecificDatabaseExample() {
- config := &client.PoolConfig{
- Host: "127.0.0.1",
- Port: "6667",
- UserName: "root",
- Password: "root",
- }
- sessionPool := client.NewTableSessionPool(config, 3, 60000, 8000, false)
- defer sessionPool.Close()
- num := 10
- var wg sync.WaitGroup
- wg.Add(num)
- for i := 0; i < num; i++ {
- dbName := "db" + strconv.Itoa(i)
- go func() {
- defer wg.Done()
- session, err := sessionPool.GetSession()
- if err != nil {
- log.Println("Failed to create database ", dbName, err)
- return
- }
- defer session.Close()
- checkError(session.ExecuteNonQueryStatement("create database " + dbName))
- checkError(session.ExecuteNonQueryStatement("use " + dbName))
- checkError(session.ExecuteNonQueryStatement("create table t1 (tag1 string tag, tag2 string tag, s1 text field, s2 text field)"))
- }()
- }
- wg.Wait()
-}
-
-func checkError(err error) {
- if err != nil {
- log.Fatal(err)
- }
-}
-```
-
diff --git a/src/UserGuide/Master/Table/API/Programming-JDBC_timecho.md b/src/UserGuide/Master/Table/API/Programming-JDBC_timecho.md
deleted file mode 100644
index 6b85ccab2..000000000
--- a/src/UserGuide/Master/Table/API/Programming-JDBC_timecho.md
+++ /dev/null
@@ -1,189 +0,0 @@
-
-# JDBC
-
-The IoTDB JDBC provides a standardized way to interact with the IoTDB database, allowing users to execute SQL statements from Java programs for managing databases and time-series data. It supports operations such as connecting to the database, creating, querying, updating, and deleting data, as well as batch insertion and querying of time-series data.
-
-**Note:** The current JDBC implementation is designed primarily for integration with third-party tools. High-performance writing **may not be achieved** when using JDBC for insert operations. For Java applications, it is recommended to use the **JAVA Native API** for optimal performance.
-
-## 1. Prerequisites
-
-### 1.1 **Environment Requirements**
-
-- **JDK:** Version 1.8 or higher
-- **Maven:** Version 3.6 or higher
-
-### 1.2 **Adding Maven Dependencies**
-
-Add the following dependency to your Maven `pom.xml` file:
-
-```XML
-
-
- com.timecho.iotdb
- iotdb-session
- 2.0.1.1
-
-
-```
-Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.
-
-## 2. Read and Write Operations
-
-**Write Operations:** Perform database operations such as inserting data, creating databases, and creating time-series using the `execute` method.
-
-**Read Operations:** Execute queries using the `executeQuery` method and retrieve results via the `ResultSet` object.
-
-### 2.1 Method Overview
-
-| **Method Name** | **Description** | **Parameters** | **Return Value** |
-| ------------------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------- |
-| Class.forName(String driver) | Loads the JDBC driver class | `driver`: Name of the JDBC driver class | `Class`: Loaded class object |
-| DriverManager.getConnection(String url, String username, String password) | Establishes a database connection | `url`: Database URL `username`: Username `password`: Password | `Connection`: Database connection object |
-| Connection.createStatement() | Creates a `Statement` object for executing SQL statements | None | `Statement`: SQL execution object |
-| Statement.execute(String sql) | Executes a non-query SQL statement | `sql`: SQL statement to execute | `boolean`: Indicates if a `ResultSet` is returned |
-| Statement.executeQuery(String sql) | Executes a query SQL statement and retrieves the result set | `sql`: SQL query statement | `ResultSet`: Query result set |
-| ResultSet.getMetaData() | Retrieves metadata of the result set | None | `ResultSetMetaData`: Metadata object |
-| ResultSet.next() | Moves to the next row in the result set | None | `boolean`: Whether the move was successful |
-| ResultSet.getString(int columnIndex) | Retrieves the string value of a specified column | `columnIndex`: Column index (starting from 1) | `String`: Column value |
-
-## 3. Sample Code
-
-**Note:** When using the Table Mode, you must specify the `sql_dialect` parameter as `table` in the URL. Example:
-
-```Java
-String url = "jdbc:iotdb://127.0.0.1:6667?sql_dialect=table";
-```
-
-You can find the full example code at [GitHub Repository](https://github.com/apache/iotdb/blob/rc/2.0.1/example/jdbc/src/main/java/org/apache/iotdb/TableModelJDBCExample.java).
-
-Here is an excerpt of the sample code:
-
-```Java
-/*
- * 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;
-
-import org.apache.iotdb.jdbc.IoTDBSQLException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-public class TableModelJDBCExample {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(TableModelJDBCExample.class);
-
- public static void main(String[] args) throws ClassNotFoundException, SQLException {
- Class.forName("org.apache.iotdb.jdbc.IoTDBDriver");
-
- // don't specify database in url
- try (Connection connection =
- DriverManager.getConnection(
- "jdbc:iotdb://127.0.0.1:6667?sql_dialect=table", "root", "TimechoDB@2021"); //before V2.0.6 it is root
- Statement statement = connection.createStatement()) {
-
- statement.execute("CREATE DATABASE test1");
- statement.execute("CREATE DATABASE test2");
-
- statement.execute("use test2");
-
- // or use full qualified table name
- statement.execute(
- "create table test1.table1(region_id STRING TAG, plant_id STRING TAG, device_id STRING TAG, model STRING ATTRIBUTE, temperature FLOAT FIELD, humidity DOUBLE FIELD) with (TTL=3600000)");
-
- statement.execute(
- "create table table2(region_id STRING TAG, plant_id STRING TAG, color STRING ATTRIBUTE, temperature FLOAT FIELD, speed DOUBLE FIELD) with (TTL=6600000)");
-
- // show tables from current database
- try (ResultSet resultSet = statement.executeQuery("SHOW TABLES")) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- System.out.println(metaData.getColumnCount());
- while (resultSet.next()) {
- System.out.println(resultSet.getString(1) + ", " + resultSet.getInt(2));
- }
- }
-
- // show tables by specifying another database
- // using SHOW tables FROM
- try (ResultSet resultSet = statement.executeQuery("SHOW TABLES FROM test1")) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- System.out.println(metaData.getColumnCount());
- while (resultSet.next()) {
- System.out.println(resultSet.getString(1) + ", " + resultSet.getInt(2));
- }
- }
-
- } catch (IoTDBSQLException e) {
- LOGGER.error("IoTDB Jdbc example error", e);
- }
-
- // specify database in url
- try (Connection connection =
- DriverManager.getConnection(
- "jdbc:iotdb://127.0.0.1:6667/test1?sql_dialect=table", "root", "TimechoDB@2021"); //before V2.0.6 it is root
- Statement statement = connection.createStatement()) {
- // show tables from current database test1
- try (ResultSet resultSet = statement.executeQuery("SHOW TABLES")) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- System.out.println(metaData.getColumnCount());
- while (resultSet.next()) {
- System.out.println(resultSet.getString(1) + ", " + resultSet.getInt(2));
- }
- }
-
- // change database to test2
- statement.execute("use test2");
-
- try (ResultSet resultSet = statement.executeQuery("SHOW TABLES")) {
- ResultSetMetaData metaData = resultSet.getMetaData();
- System.out.println(metaData.getColumnCount());
- while (resultSet.next()) {
- System.out.println(resultSet.getString(1) + ", " + resultSet.getInt(2));
- }
- }
- }
- }
-}
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/API/Programming-Java-Native-API_timecho.md b/src/UserGuide/Master/Table/API/Programming-Java-Native-API_timecho.md
deleted file mode 100644
index ec19bf235..000000000
--- a/src/UserGuide/Master/Table/API/Programming-Java-Native-API_timecho.md
+++ /dev/null
@@ -1,851 +0,0 @@
-
-# Java Native API
-
-## 1. Function Introduction
-
-IoTDB provides a Java native client driver and a session pool management mechanism. These tools enable developers to interact with IoTDB using object-oriented APIs, allowing time-series objects to be directly assembled and inserted into the database without constructing SQL statements. It is recommended to use the `ITableSessionPool` for multi-threaded database operations to maximize efficiency.
-
-## 2. Usage Instructions
-
-**Environment Requirements**
-
-- **JDK**: Version 1.8 or higher
-- **Maven**: Version 3.6 or higher
-
-**Adding Maven Dependencies**
-
-```XML
-
-
- com.timecho.iotdb
- iotdb-session
-
- ${project.version}
-
-
-```
-* The latest version of `iotdb-session` can be viewed [here](https://repo1.maven.org/maven2/com/timecho/iotdb/iotdb-session/)
-* Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.
-
-## 3. Read and Write Operations
-
-### 3.1 ITableSession Interface
-
-#### 3.1.1 Feature Description
-
-The `ITableSession` interface defines basic operations for interacting with IoTDB, including data insertion, query execution, and session closure. Note that this interface is **not thread-safe**.
-
-#### 3.1.2 Method Overview
-
-| **Method Name** | **Description** | **Parameters** | **Return Value** | **Exceptions** |
-| --------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ---------------- | --------------------------------------------------------- |
-| insert(Tablet tablet) | Inserts a `Tablet` containing time-series data into the database. | `tablet`: The `Tablet` object to be inserted. | None | `StatementExecutionException`, `IoTDBConnectionException` |
-| executeNonQueryStatement(String sql) | Executes non-query SQL statements such as DDL or DML commands. | `sql`: The SQL statement to execute. | None | `StatementExecutionException`, `IoTDBConnectionException` |
-| executeQueryStatement(String sql) | Executes a query SQL statement and returns a `SessionDataSet` containing the query results. | `sql`: The SQL query statement to execute. | `SessionDataSet` | `StatementExecutionException`, `IoTDBConnectionException` |
-| executeQueryStatement(String sql, long timeoutInMs) | Executes a query SQL statement with a specified timeout in milliseconds. | `sql`: The SQL query statement. `timeoutInMs`: Query timeout in milliseconds. | `SessionDataSet` | `StatementExecutionException` |
-| close() | Closes the session and releases resources. | None | None | IoTDBConnectionException |
-
-**Description of Object Data Type:**
-
-Since V2.0.8, the `iTableSession.insert(Tablet tablet)` interface supports splitting a single Object-class file into multiple segments and writing them sequentially in order. When the column data type in the Tablet data structure is **`TSDataType.Object`**, you need to use the following method to populate the Tablet:
-
-```Java
-/*
-rowIndex: row position in the tablet
-columnIndex: column position in the tablet
-isEOF: whether the current write operation contains the last segment of the Object file
-offset: starting offset of the current write content within the Object file
-content: byte array of the current write content
-Note: When writing, ensure the total length of all segmented byte[] arrays equals the original Object size,
-otherwise it will cause incorrect data size.
-*/
-void addValue(int rowIndex, int columnIndex, boolean isEOF, long offset, byte[] content)
-```
-
-During queries, the following four methods are supported to retrieve values:
-`Field.getStringValue`, `Field.getObjectValue`, `SessionDataSet.DataIterator.getObject`, and `SessionDataSet.DataIterator.getString`.
-All these methods return a String containing metadata in the format:
-`(Object) XX.XX KB` (where XX.XX KB represents the actual object size).
-
-#### 3.1.3 Sample Code
-
-```java
-/**
- * This interface defines a session for interacting with IoTDB tables.
- * It supports operations such as data insertion, executing queries, and closing the session.
- * Implementations of this interface are expected to manage connections and ensure
- * proper resource cleanup.
- *
- * Each method may throw exceptions to indicate issues such as connection errors or
- * execution failures.
- *
- *
Since this interface extends {@link AutoCloseable}, it is recommended to use
- * try-with-resources to ensure the session is properly closed.
- */
-public interface ITableSession extends AutoCloseable {
-
- /**
- * Inserts a {@link Tablet} into the database.
- *
- * @param tablet the tablet containing time-series data to be inserted.
- * @throws StatementExecutionException if an error occurs while executing the statement.
- * @throws IoTDBConnectionException if there is an issue with the IoTDB connection.
- */
- void insert(Tablet tablet) throws StatementExecutionException, IoTDBConnectionException;
-
- /**
- * Executes a non-query SQL statement, such as a DDL or DML command.
- *
- * @param sql the SQL statement to execute.
- * @throws IoTDBConnectionException if there is an issue with the IoTDB connection.
- * @throws StatementExecutionException if an error occurs while executing the statement.
- */
- void executeNonQueryStatement(String sql) throws IoTDBConnectionException, StatementExecutionException;
-
- /**
- * Executes a query SQL statement and returns the result set.
- *
- * @param sql the SQL query statement to execute.
- * @return a {@link SessionDataSet} containing the query results.
- * @throws StatementExecutionException if an error occurs while executing the statement.
- * @throws IoTDBConnectionException if there is an issue with the IoTDB connection.
- */
- SessionDataSet executeQueryStatement(String sql)
- throws StatementExecutionException, IoTDBConnectionException;
-
- /**
- * Executes a query SQL statement with a specified timeout and returns the result set.
- *
- * @param sql the SQL query statement to execute.
- * @param timeoutInMs the timeout duration in milliseconds for the query execution.
- * @return a {@link SessionDataSet} containing the query results.
- * @throws StatementExecutionException if an error occurs while executing the statement.
- * @throws IoTDBConnectionException if there is an issue with the IoTDB connection.
- */
- SessionDataSet executeQueryStatement(String sql, long timeoutInMs)
- throws StatementExecutionException, IoTDBConnectionException;
-
- /**
- * Closes the session, releasing any held resources.
- *
- * @throws IoTDBConnectionException if there is an issue with closing the IoTDB connection.
- */
- @Override
- void close() throws IoTDBConnectionException;
-}
-```
-
-### 3.2 TableSessionBuilder Class
-
-#### 3.2.1 Feature Description
-
-The `TableSessionBuilder` class is a builder for configuring and creating instances of the `ITableSession` interface. It allows developers to set connection parameters, query parameters, and security features.
-
-#### 3.2.2 Parameter Configuration
-
-| **Parameter** | **Description** | **Default Value** |
-|-----------------------------------------------------| ------------------------------------------------------------ |---------------------------------------------------|
-| nodeUrls(List\ nodeUrls) | Sets the list of IoTDB cluster node URLs. | `Collections.singletonList("``localhost:6667``")` |
-| username(String username) | Sets the username for the connection. | `"root"` |
-| password(String password) | Sets the password for the connection. | `"TimechoDB@2021"` //before V2.0.6 it is root |
-| database(String database) | Sets the target database name. | `null` |
-| queryTimeoutInMs(long queryTimeoutInMs) | Sets the query timeout in milliseconds. | `60000` (1 minute) |
-| fetchSize(int fetchSize) | Sets the fetch size for query results. | `5000` |
-| zoneId(ZoneId zoneId) | Sets the timezone-related `ZoneId`. | `ZoneId.systemDefault()` |
-| thriftDefaultBufferSize(int thriftDefaultBufferSize) | Sets the default buffer size for the Thrift client (in bytes). | `1024`(1KB) |
-| thriftMaxFrameSize(int thriftMaxFrameSize) | Sets the maximum frame size for the Thrift client (in bytes). | `64 * 1024 * 1024`(64MB) |
-| enableRedirection(boolean enableRedirection) | Enables or disables redirection for cluster nodes. | `true` |
-| enableAutoFetch(boolean enableAutoFetch) | Enables or disables automatic fetching of available DataNodes. | `true` |
-| maxRetryCount(int maxRetryCount) | Sets the maximum number of connection retry attempts. | `60` |
-| retryIntervalInMs(long retryIntervalInMs) | Sets the interval between retry attempts (in milliseconds). | `500`(500 millisesonds) |
-| useSSL(boolean useSSL) | Enables or disables SSL for secure connections. | `false` |
-| trustStore(String keyStore) | Sets the path to the trust store for SSL connections. | `null` |
-| trustStorePwd(String keyStorePwd) | Sets the password for the SSL trust store. | `null` |
-| enableCompression(boolean enableCompression) | Enables or disables RPC compression for the connection. | `false` |
-| connectionTimeoutInMs(int connectionTimeoutInMs) | Sets the connection timeout in milliseconds. | `0` (no timeout) |
-
-#### 3.2.3 Sample Code
-
-```java
-/**
- * A builder class for constructing instances of {@link ITableSession}.
- *
- * This builder provides a fluent API for configuring various options such as connection
- * settings, query parameters, and security features.
- *
- *
All configurations have reasonable default values, which can be overridden as needed.
- */
-public class TableSessionBuilder {
-
- /**
- * Builds and returns a configured {@link ITableSession} instance.
- *
- * @return a fully configured {@link ITableSession}.
- * @throws IoTDBConnectionException if an error occurs while establishing the connection.
- */
- public ITableSession build() throws IoTDBConnectionException;
-
- /**
- * Sets the list of node URLs for the IoTDB cluster.
- *
- * @param nodeUrls a list of node URLs.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue Collection.singletonList("localhost:6667")
- */
- public TableSessionBuilder nodeUrls(List nodeUrls);
-
- /**
- * Sets the username for the connection.
- *
- * @param username the username.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue "root"
- */
- public TableSessionBuilder username(String username);
-
- /**
- * Sets the password for the connection.
- *
- * @param password the password.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue "TimechoDB@2021" //before V2.0.6 it is root
- */
- public TableSessionBuilder password(String password);
-
- /**
- * Sets the target database name.
- *
- * @param database the database name.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue null
- */
- public TableSessionBuilder database(String database);
-
- /**
- * Sets the query timeout in milliseconds.
- *
- * @param queryTimeoutInMs the query timeout in milliseconds.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 60000 (1 minute)
- */
- public TableSessionBuilder queryTimeoutInMs(long queryTimeoutInMs);
-
- /**
- * Sets the fetch size for query results.
- *
- * @param fetchSize the fetch size.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 5000
- */
- public TableSessionBuilder fetchSize(int fetchSize);
-
- /**
- * Sets the {@link ZoneId} for timezone-related operations.
- *
- * @param zoneId the {@link ZoneId}.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue ZoneId.systemDefault()
- */
- public TableSessionBuilder zoneId(ZoneId zoneId);
-
- /**
- * Sets the default init buffer size for the Thrift client.
- *
- * @param thriftDefaultBufferSize the buffer size in bytes.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 1024 (1 KB)
- */
- public TableSessionBuilder thriftDefaultBufferSize(int thriftDefaultBufferSize);
-
- /**
- * Sets the maximum frame size for the Thrift client.
- *
- * @param thriftMaxFrameSize the maximum frame size in bytes.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 64 * 1024 * 1024 (64 MB)
- */
- public TableSessionBuilder thriftMaxFrameSize(int thriftMaxFrameSize);
-
- /**
- * Enables or disables redirection for cluster nodes.
- *
- * @param enableRedirection whether to enable redirection.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue true
- */
- public TableSessionBuilder enableRedirection(boolean enableRedirection);
-
- /**
- * Enables or disables automatic fetching of available DataNodes.
- *
- * @param enableAutoFetch whether to enable automatic fetching.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue true
- */
- public TableSessionBuilder enableAutoFetch(boolean enableAutoFetch);
-
- /**
- * Sets the maximum number of retries for connection attempts.
- *
- * @param maxRetryCount the maximum retry count.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 60
- */
- public TableSessionBuilder maxRetryCount(int maxRetryCount);
-
- /**
- * Sets the interval between retries in milliseconds.
- *
- * @param retryIntervalInMs the interval in milliseconds.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 500 milliseconds
- */
- public TableSessionBuilder retryIntervalInMs(long retryIntervalInMs);
-
- /**
- * Enables or disables SSL for secure connections.
- *
- * @param useSSL whether to enable SSL.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue false
- */
- public TableSessionBuilder useSSL(boolean useSSL);
-
- /**
- * Sets the trust store path for SSL connections.
- *
- * @param keyStore the trust store path.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue null
- */
- public TableSessionBuilder trustStore(String keyStore);
-
- /**
- * Sets the trust store password for SSL connections.
- *
- * @param keyStorePwd the trust store password.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue null
- */
- public TableSessionBuilder trustStorePwd(String keyStorePwd);
-
- /**
- * Enables or disables rpc compression for the connection.
- *
- * @param enableCompression whether to enable compression.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue false
- */
- public TableSessionBuilder enableCompression(boolean enableCompression);
-
- /**
- * Sets the connection timeout in milliseconds.
- *
- * @param connectionTimeoutInMs the connection timeout in milliseconds.
- * @return the current {@link TableSessionBuilder} instance.
- * @defaultValue 0 (no timeout)
- */
- public TableSessionBuilder connectionTimeoutInMs(int connectionTimeoutInMs);
-}
-```
-
-> Note: When creating tables using the native API, if table or column names contain special characters or Chinese characters, do not add extra double quotes around them. Otherwise, the quotation marks will become part of the name itself.
-
-## 4. Session Pool
-
-### 4.1 ITableSessionPool Interface
-
-#### 4.1.1 Feature Description
-
-The `ITableSessionPool` interface manages a pool of `ITableSession` instances, enabling efficient reuse of connections and proper cleanup of resources.
-
-#### 4.1.2 Method Overview
-
-| **Method Name** | **Description** | **Return Value** | **Exceptions** |
-| --------------- | ---------------------------------------------------------- | ---------------- | -------------------------- |
-| getSession() | Acquires a session from the pool for database interaction. | `ITableSession` | `IoTDBConnectionException` |
-| close() | Closes the session pool and releases resources.。 | None | None |
-
-#### 4.1.3 Sample Code
-
-```Java
-/**
- * This interface defines a pool for managing {@link ITableSession} instances.
- * It provides methods to acquire a session from the pool and to close the pool.
- *
- * The implementation should handle the lifecycle of sessions, ensuring efficient
- * reuse and proper cleanup of resources.
- */
-public interface ITableSessionPool {
-
- /**
- * Acquires an {@link ITableSession} instance from the pool.
- *
- * @return an {@link ITableSession} instance for interacting with the IoTDB.
- * @throws IoTDBConnectionException if there is an issue obtaining a session from the pool.
- */
- ITableSession getSession() throws IoTDBConnectionException;
-
- /**
- * Closes the session pool, releasing any held resources.
- *
- *
Once the pool is closed, no further sessions can be acquired.
- */
- void close();
-}
-```
-
-### 4.2 ableSessionPoolBuilder Class
-
-#### 4.2.1 Feature Description
-
-The `TableSessionPoolBuilder` class is a builder for configuring and creating `ITableSessionPool` instances, supporting options like connection settings and pooling behavior.
-
-#### 4.2.2 Parameter Configuration
-
-| **Parameter** | **Description** | **Default Value** |
-|---------------------------------------------------------------| ------------------------------------------------------------ |------------------------------------------------|
-| nodeUrls(List\ nodeUrls) | Sets the list of IoTDB cluster node URLs. | `Collections.singletonList("localhost:6667")` |
-| maxSize(int maxSize) | Sets the maximum size of the session pool, i.e., the maximum number of sessions allowed in the pool. | `5` |
-| user(String user) | Sets the username for the connection. | `"root"` |
-| password(String password) | Sets the password for the connection. | `"TimechoDB@2021"` //before V2.0.6 it is root |
-| database(String database) | Sets the target database name. | `"root"` |
-| queryTimeoutInMs(long queryTimeoutInMs) | Sets the query timeout in milliseconds. | `60000`(1 minute) |
-| fetchSize(int fetchSize) | Sets the fetch size for query results. | `5000` |
-| zoneId(ZoneId zoneId) | Sets the timezone-related `ZoneId`. | `ZoneId.systemDefault()` |
-| waitToGetSessionTimeoutInMs(long waitToGetSessionTimeoutInMs) | Sets the timeout duration (in milliseconds) for acquiring a session from the pool. | `30000`(30 seconds) |
-| thriftDefaultBufferSize(int thriftDefaultBufferSize) | Sets the default buffer size for the Thrift client (in bytes). | `1024`(1KB) |
-| thriftMaxFrameSize(int thriftMaxFrameSize) | Sets the maximum frame size for the Thrift client (in bytes). | `64 * 1024 * 1024`(64MB) |
-| enableCompression(boolean enableCompression) | Enables or disables compression for the connection. | `false` |
-| enableRedirection(boolean enableRedirection) | Enables or disables redirection for cluster nodes. | `true` |
-| connectionTimeoutInMs(int connectionTimeoutInMs) | Sets the connection timeout in milliseconds. | `10000` (10 seconds) |
-| enableAutoFetch(boolean enableAutoFetch) | Enables or disables automatic fetching of available DataNodes. | `true` |
-| maxRetryCount(int maxRetryCount) | Sets the maximum number of connection retry attempts. | `60` |
-| retryIntervalInMs(long retryIntervalInMs) | Sets the interval between retry attempts (in milliseconds). | `500` (500 milliseconds) |
-| useSSL(boolean useSSL) | Enables or disables SSL for secure connections. | `false` |
-| trustStore(String keyStore) | Sets the path to the trust store for SSL connections. | `null` |
-| trustStorePwd(String keyStorePwd) | Sets the password for the SSL trust store. | `null` |
-
-#### 4.2.3 Sample Code
-
-```Java
-/**
- * A builder class for constructing instances of {@link ITableSessionPool}.
- *
- * This builder provides a fluent API for configuring a session pool, including
- * connection settings, session parameters, and pool behavior.
- *
- *
All configurations have reasonable default values, which can be overridden as needed.
- */
-public class TableSessionPoolBuilder {
-
- /**
- * Builds and returns a configured {@link ITableSessionPool} instance.
- *
- * @return a fully configured {@link ITableSessionPool}.
- */
- public ITableSessionPool build();
-
- /**
- * Sets the list of node URLs for the IoTDB cluster.
- *
- * @param nodeUrls a list of node URLs.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue Collection.singletonList("localhost:6667")
- */
- public TableSessionPoolBuilder nodeUrls(List nodeUrls);
-
- /**
- * Sets the maximum size of the session pool.
- *
- * @param maxSize the maximum number of sessions allowed in the pool.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 5
- */
- public TableSessionPoolBuilder maxSize(int maxSize);
-
- /**
- * Sets the username for the connection.
- *
- * @param user the username.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue "root"
- */
- public TableSessionPoolBuilder user(String user);
-
- /**
- * Sets the password for the connection.
- *
- * @param password the password.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue "TimechoDB@2021" //before V2.0.6 it is root
- */
- public TableSessionPoolBuilder password(String password);
-
- /**
- * Sets the target database name.
- *
- * @param database the database name.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue "root"
- */
- public TableSessionPoolBuilder database(String database);
-
- /**
- * Sets the query timeout in milliseconds.
- *
- * @param queryTimeoutInMs the query timeout in milliseconds.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 60000 (1 minute)
- */
- public TableSessionPoolBuilder queryTimeoutInMs(long queryTimeoutInMs);
-
- /**
- * Sets the fetch size for query results.
- *
- * @param fetchSize the fetch size.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 5000
- */
- public TableSessionPoolBuilder fetchSize(int fetchSize);
-
- /**
- * Sets the {@link ZoneId} for timezone-related operations.
- *
- * @param zoneId the {@link ZoneId}.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue ZoneId.systemDefault()
- */
- public TableSessionPoolBuilder zoneId(ZoneId zoneId);
-
- /**
- * Sets the timeout for waiting to acquire a session from the pool.
- *
- * @param waitToGetSessionTimeoutInMs the timeout duration in milliseconds.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 30000 (30 seconds)
- */
- public TableSessionPoolBuilder waitToGetSessionTimeoutInMs(long waitToGetSessionTimeoutInMs);
-
- /**
- * Sets the default buffer size for the Thrift client.
- *
- * @param thriftDefaultBufferSize the buffer size in bytes.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 1024 (1 KB)
- */
- public TableSessionPoolBuilder thriftDefaultBufferSize(int thriftDefaultBufferSize);
-
- /**
- * Sets the maximum frame size for the Thrift client.
- *
- * @param thriftMaxFrameSize the maximum frame size in bytes.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 64 * 1024 * 1024 (64 MB)
- */
- public TableSessionPoolBuilder thriftMaxFrameSize(int thriftMaxFrameSize);
-
- /**
- * Enables or disables compression for the connection.
- *
- * @param enableCompression whether to enable compression.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue false
- */
- public TableSessionPoolBuilder enableCompression(boolean enableCompression);
-
- /**
- * Enables or disables redirection for cluster nodes.
- *
- * @param enableRedirection whether to enable redirection.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue true
- */
- public TableSessionPoolBuilder enableRedirection(boolean enableRedirection);
-
- /**
- * Sets the connection timeout in milliseconds.
- *
- * @param connectionTimeoutInMs the connection timeout in milliseconds.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 10000 (10 seconds)
- */
- public TableSessionPoolBuilder connectionTimeoutInMs(int connectionTimeoutInMs);
-
- /**
- * Enables or disables automatic fetching of available DataNodes.
- *
- * @param enableAutoFetch whether to enable automatic fetching.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue true
- */
- public TableSessionPoolBuilder enableAutoFetch(boolean enableAutoFetch);
-
- /**
- * Sets the maximum number of retries for connection attempts.
- *
- * @param maxRetryCount the maximum retry count.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 60
- */
- public TableSessionPoolBuilder maxRetryCount(int maxRetryCount);
-
- /**
- * Sets the interval between retries in milliseconds.
- *
- * @param retryIntervalInMs the interval in milliseconds.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue 500 milliseconds
- */
- public TableSessionPoolBuilder retryIntervalInMs(long retryIntervalInMs);
-
- /**
- * Enables or disables SSL for secure connections.
- *
- * @param useSSL whether to enable SSL.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue false
- */
- public TableSessionPoolBuilder useSSL(boolean useSSL);
-
- /**
- * Sets the trust store path for SSL connections.
- *
- * @param keyStore the trust store path.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue null
- */
- public TableSessionPoolBuilder trustStore(String keyStore);
-
- /**
- * Sets the trust store password for SSL connections.
- *
- * @param keyStorePwd the trust store password.
- * @return the current {@link TableSessionPoolBuilder} instance.
- * @defaultValue null
- */
- public TableSessionPoolBuilder trustStorePwd(String keyStorePwd);
-}
-```
-
-## 5. Example Code
-
-Session: [src/main/java/org/apache/iotdb/TableModelSessionExample.java](https://github.com/apache/iotdb/blob/master/example/session/src/main/java/org/apache/iotdb/TableModelSessionExample.java)
-
-SessionPool: [src/main/java/org/apache/iotdb/TableModelSessionPoolExample.java](https://github.com/apache/iotdb/blob/master/example/session/src/main/java/org/apache/iotdb/TableModelSessionPoolExample.java)
-
-```Java
-/*
- * 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;
-
-import org.apache.iotdb.isession.ITableSession;
-import org.apache.iotdb.isession.SessionDataSet;
-import org.apache.iotdb.isession.pool.ITableSessionPool;
-import org.apache.iotdb.rpc.IoTDBConnectionException;
-import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.session.pool.TableSessionPoolBuilder;
-
-import org.apache.tsfile.enums.ColumnCategory;
-import org.apache.tsfile.enums.TSDataType;
-import org.apache.tsfile.write.record.Tablet;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import static org.apache.iotdb.SessionExample.printDataSet;
-
-public class TableModelSessionPoolExample {
-
- private static final String LOCAL_URL = "127.0.0.1:6667";
-
- public static void main(String[] args) {
-
- // don't specify database in constructor
- ITableSessionPool tableSessionPool =
- new TableSessionPoolBuilder()
- .nodeUrls(Collections.singletonList(LOCAL_URL))
- .user("root")
- .password("TimechoDB@2021") //before V2.0.6 it is root
- .maxSize(1)
- .build();
-
- try (ITableSession session = tableSessionPool.getSession()) {
-
- session.executeNonQueryStatement("CREATE DATABASE test1");
- session.executeNonQueryStatement("CREATE DATABASE test2");
-
- session.executeNonQueryStatement("use test2");
-
- // or use full qualified table name
- session.executeNonQueryStatement(
- "create table test1.table1("
- + "region_id STRING TAG, "
- + "plant_id STRING TAG, "
- + "device_id STRING TAG, "
- + "model STRING ATTRIBUTE, "
- + "temperature FLOAT FIELD, "
- + "humidity DOUBLE FIELD) with (TTL=3600000)");
-
- session.executeNonQueryStatement(
- "create table table2("
- + "region_id STRING TAG, "
- + "plant_id STRING TAG, "
- + "color STRING ATTRIBUTE, "
- + "temperature FLOAT FIELD, "
- + "speed DOUBLE FIELD) with (TTL=6600000)");
-
- // show tables from current database
- try (SessionDataSet dataSet = session.executeQueryStatement("SHOW TABLES")) {
- printDataSet(dataSet);
- }
-
- // show tables by specifying another database
- // using SHOW tables FROM
- try (SessionDataSet dataSet = session.executeQueryStatement("SHOW TABLES FROM test1")) {
- printDataSet(dataSet);
- }
-
- // insert table data by tablet
- List columnNameList =
- Arrays.asList("region_id", "plant_id", "device_id", "model", "temperature", "humidity");
- List dataTypeList =
- Arrays.asList(
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.FLOAT,
- TSDataType.DOUBLE);
- List columnTypeList =
- new ArrayList<>(
- Arrays.asList(
- ColumnCategory.TAG,
- ColumnCategory.TAG,
- ColumnCategory.TAG,
- ColumnCategory.ATTRIBUTE,
- ColumnCategory.FIELD,
- ColumnCategory.FIELD));
- Tablet tablet = new Tablet("test1", columnNameList, dataTypeList, columnTypeList, 100);
- for (long timestamp = 0; timestamp < 100; timestamp++) {
- int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(rowIndex, timestamp);
- tablet.addValue("region_id", rowIndex, "1");
- tablet.addValue("plant_id", rowIndex, "5");
- tablet.addValue("device_id", rowIndex, "3");
- tablet.addValue("model", rowIndex, "A");
- tablet.addValue("temperature", rowIndex, 37.6F);
- tablet.addValue("humidity", rowIndex, 111.1);
- if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
- session.insert(tablet);
- tablet.reset();
- }
- }
- if (tablet.getRowSize() != 0) {
- session.insert(tablet);
- tablet.reset();
- }
-
- // query table data
- try (SessionDataSet dataSet =
- session.executeQueryStatement(
- "select * from test1 "
- + "where region_id = '1' and plant_id in ('3', '5') and device_id = '3'")) {
- printDataSet(dataSet);
- }
-
- } catch (IoTDBConnectionException e) {
- e.printStackTrace();
- } catch (StatementExecutionException e) {
- e.printStackTrace();
- } finally {
- tableSessionPool.close();
- }
-
- // specify database in constructor
- tableSessionPool =
- new TableSessionPoolBuilder()
- .nodeUrls(Collections.singletonList(LOCAL_URL))
- .user("root")
- .password("TimechoDB@2021")//before V2.0.6 it is root
- .maxSize(1)
- .database("test1")
- .build();
-
- try (ITableSession session = tableSessionPool.getSession()) {
-
- // show tables from current database
- try (SessionDataSet dataSet = session.executeQueryStatement("SHOW TABLES")) {
- printDataSet(dataSet);
- }
-
- // change database to test2
- session.executeNonQueryStatement("use test2");
-
- // show tables by specifying another database
- // using SHOW tables FROM
- try (SessionDataSet dataSet = session.executeQueryStatement("SHOW TABLES")) {
- printDataSet(dataSet);
- }
-
- } catch (IoTDBConnectionException e) {
- e.printStackTrace();
- } catch (StatementExecutionException e) {
- e.printStackTrace();
- }
-
- try (ITableSession session = tableSessionPool.getSession()) {
-
- // show tables from default database test1
- try (SessionDataSet dataSet = session.executeQueryStatement("SHOW TABLES")) {
- printDataSet(dataSet);
- }
-
- } catch (IoTDBConnectionException e) {
- e.printStackTrace();
- } catch (StatementExecutionException e) {
- e.printStackTrace();
- } finally {
- tableSessionPool.close();
- }
- }
-}
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/API/Programming-MQTT_timecho.md b/src/UserGuide/Master/Table/API/Programming-MQTT_timecho.md
deleted file mode 100644
index 39184f479..000000000
--- a/src/UserGuide/Master/Table/API/Programming-MQTT_timecho.md
+++ /dev/null
@@ -1,261 +0,0 @@
-
-# MQTT Protocol
-
-## 1. Overview
-
-MQTT (Message Queuing Telemetry Transport) is a lightweight messaging protocol designed for IoT and low-bandwidth environments. It operates on a Publish/Subscribe (Pub/Sub) model, enabling efficient and reliable bidirectional communication between devices. Its core objectives are low power consumption, minimal bandwidth usage, and high real-time performance, making it ideal for unstable networks or resource-constrained scenarios (e.g., sensors, mobile devices).
-
-IoTDB provides deep integration with the MQTT protocol, fully compliant with MQTT v3.1 (OASIS International Standard). The IoTDB server includes a built-in high-performance MQTT Broker module, eliminating the need for third-party middleware. Devices can directly write time-series data into the IoTDB storage engine via MQTT messages.
-
-
-
-Note: As of version V2.0.8.2, the TimechoDB installation package does not include the MQTT service JAR file by default. Please contact the Timecho team to obtain the JAR file before using this service, and place it in the `timechodb_home/lib` or `timechodb_home/ext/external_service` directory.
-
-
-## 2. Configuration
-
-By default, the IoTDB MQTT service loads configurations from `${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`.
-
-| **Property** | **Description** | **Default** |
-| ------------------------ | -------------------------------------------------------------------------------------------------------------------- | ------------------- |
-| `enable_mqtt_service` | Enable/ disable the MQTT service. | FALSE |
-| `mqtt_host` | Host address bound to the MQTT service. | 127.0.0.1 |
-| `mqtt_port` | Port bound to the MQTT service. | 1883 |
-| `mqtt_handler_pool_size` | Thread pool size for processing MQTT messages. | 1 |
-| **`mqtt_payload_formatter`** | **Formatting method for MQTT message payloads. ****Options: `json` (tree mode), `line` (table mode).** | **json** |
-| `mqtt_max_message_size` | Maximum allowed MQTT message size (bytes). | 1048576 |
-
-## 3. Write Protocol
-
-* Line Protocol Syntax
-
-```JavaScript
-[,=[,=]][ =[,=]] =[,=] []
-```
-
-* Example
-
-```JavaScript
-myMeasurement,tag1=value1,tag2=value2 attr1=value1,attr2=value2 fieldKey="fieldValue" 1556813561098000000
-```
-
-
-
-## 4. Naming Conventions
-
-* Database Name
-
-The first segment of the MQTT topic (split by `/`) is used as the database name.
-
-```Properties
-topic: stock/Legacy
-databaseName: stock
-
-
-topic: stock/Legacy/#
-databaseName:stock
-```
-
-* Table Name
-
-The table name is derived from the `` in the line protocol.
-
-* Type Identifiers
-
-| Filed Value | IoTDB Data Type |
-|--------------------------------------------------------------------| ----------------- |
-| 1 1.12 | DOUBLE |
-| 1`f` 1.12`f` | FLOAT |
-| 1`i` 123`i` | INT64 |
-| 1`u` 123`u` | INT64 |
-| 1`i32` 123`i32` | INT32 |
-| `"xxx"` | TEXT |
-| `t`,`T`,`true`,`True`,`TRUE` `f`,`F`,`false`,`False`,`FALSE` | BOOLEAN |
-
-
-## 5. Coding Examples
-The following is an example which a mqtt client send messages to IoTDB server.
-
- ```java
-MQTT mqtt = new MQTT();
-mqtt.setHost("127.0.0.1", 1883);
-mqtt.setUserName("root");
-mqtt.setPassword("root");
-
-BlockingConnection connection = mqtt.blockingConnection();
-String DATABASE = "myMqttTest";
-connection.connect();
-
-String payload =
- "test1,tag1=t1,tag2=t2 attr3=a5,attr4=a4 field1=\"fieldValue1\",field2=1i,field3=1u 1";
-connection.publish(DATABASE + "/myTopic", payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-Thread.sleep(10);
-
-payload = "test1,tag1=t1,tag2=t2 field4=2,field5=2i32,field6=2f 2";
-connection.publish(DATABASE, payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-Thread.sleep(10);
-
-payload = "# It's a remark\n " + "test1,tag1=t1,tag2=t2 field4=2,field5=2i32,field6=2f 6";
- connection.publish(DATABASE + "/myTopic", payload.getBytes(), QoS.AT_LEAST_ONCE, false);
- Thread.sleep(10);
-
-//batch write example
-payload =
- "test1,tag1=t1,tag2=t2 field7=t,field8=T,field9=true 3 \n "
- + "test1,tag1=t1,tag2=t2 field7=f,field8=F,field9=FALSE 4";
-connection.publish(DATABASE + "/myTopic", payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-Thread.sleep(10);
-
-//batch write example
-payload =
- "test1,tag1=t1,tag2=t2 attr1=a1,attr2=a2 field1=\"fieldValue1\",field2=1i,field3=1u 4 \n "
- + "test1,tag1=t1,tag2=t2 field4=2,field5=2i32,field6=2f 5";
-connection.publish(DATABASE + "/myTopic", payload.getBytes(), QoS.AT_LEAST_ONCE, false);
-Thread.sleep(10);
-
-connection.disconnect();
- ```
-
-
-
-## 6. Customize your MQTT Message Format
-
-If you do not like the above Line format, you can customize your MQTT Message format by just writing several lines
-of codes. An example can be found in [example/mqtt-customize](https://github.com/apache/iotdb/tree/master/example/mqtt-customize) project.
-
-Steps:
-1. Create a java project, and add dependency:
-```xml
-
- org.apache.iotdb
- iotdb-server
- 2.0.4-SNAPSHOT
-
-```
-2. Define your implementation which implements `org.apache.iotdb.db.protocol.mqtt.PayloadFormatter`
- e.g.,
-
-```java
-package org.apache.iotdb.mqtt.server;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.iotdb.db.protocol.mqtt.Message;
-import org.apache.iotdb.db.protocol.mqtt.PayloadFormatter;
-
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class CustomizedLinePayloadFormatter implements PayloadFormatter {
-
- @Override
- public List format(String topic, ByteBuf payload) {
- // Suppose the payload is a line format
- if (payload == null) {
- return null;
- }
-
- String line = payload.toString(StandardCharsets.UTF_8);
- // parse data from the line and generate Messages and put them into List ret
- List ret = new ArrayList<>();
- // this is just an example, so we just generate some Messages directly
- for (int i = 0; i < 3; i++) {
- long ts = i;
- TableMessage message = new TableMessage();
-
- // Parsing Database Name
- message.setDatabase("db" + i);
-
- //Parsing Table Names
- message.setTable("t" + i);
-
- // Parsing Tags
- List tagKeys = new ArrayList<>();
- tagKeys.add("tag1" + i);
- tagKeys.add("tag2" + i);
- List tagValues = new ArrayList<>();
- tagValues.add("t_value1" + i);
- tagValues.add("t_value2" + i);
- message.setTagKeys(tagKeys);
- message.setTagValues(tagValues);
-
- // Parsing Attributes
- List attributeKeys = new ArrayList<>();
- List attributeValues = new ArrayList<>();
- attributeKeys.add("attr1" + i);
- attributeKeys.add("attr2" + i);
- attributeValues.add("a_value1" + i);
- attributeValues.add("a_value2" + i);
- message.setAttributeKeys(attributeKeys);
- message.setAttributeValues(attributeValues);
-
- // Parsing Fields
- List fields = Arrays.asList("field1" + i, "field2" + i);
- List dataTypes = Arrays.asList(TSDataType.FLOAT, TSDataType.FLOAT);
- List values = Arrays.asList("4.0" + i, "5.0" + i);
- message.setFields(fields);
- message.setDataTypes(dataTypes);
- message.setValues(values);
-
- //// Parsing timestamp
- message.setTimestamp(ts);
- ret.add(message);
- }
- return ret;
- }
-
- @Override
- public String getName() {
- // set the value of mqtt_payload_formatter in iotdb-system.properties as the following string:
- return "CustomizedLine";
- }
-}
-```
-3. modify the file in `src/main/resources/META-INF/services/org.apache.iotdb.db.protocol.mqtt.PayloadFormatter`:
- clean the file and put your implementation class name into the file.
- In this example, the content is: `org.apache.iotdb.mqtt.server.CustomizedLinePayloadFormatter`
-4. compile your implementation as a jar file: `mvn package -DskipTests`
-
-
-Then, in your server:
-1. Create ${IOTDB_HOME}/ext/mqtt/ folder, and put the jar into this folder.
-2. Update configuration to enable MQTT service. (`enable_mqtt_service=true` in `conf/iotdb-system.properties`)
-3. Set the value of `mqtt_payload_formatter` in `conf/iotdb-system.properties` as the value of getName() in your implementation
- , in this example, the value is `CustomizedLine`
-4. Launch the IoTDB server.
-5. Now IoTDB will use your implementation to parse the MQTT message.
-
-More: the message format can be anything you want. For example, if it is a binary format,
-just use `payload.forEachByte()` or `payload.array` to get bytes content.
-
-## 7. Caution
-
-To avoid compatibility issues caused by a default client_id, always explicitly supply a unique, non-empty client_id in every MQTT client.
-Behavior varies when the client_id is missing or empty. Common examples:
-1. Explicitly sending an empty string
-• MQTTX: When client_id="", IoTDB silently discards the message.
-• mosquitto_pub: When client_id="", IoTDB receives the message normally.
-2. Omitting client_id entirely
-• MQTTX: IoTDB accepts the message.
-• mosquitto_pub: IoTDB rejects the connection.
-Therefore, explicitly assigning a unique, non-empty client_id is the simplest way to eliminate these discrepancies and ensure reliable message delivery.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/API/Programming-ODBC_timecho.md b/src/UserGuide/Master/Table/API/Programming-ODBC_timecho.md
deleted file mode 100644
index fe40f1f8f..000000000
--- a/src/UserGuide/Master/Table/API/Programming-ODBC_timecho.md
+++ /dev/null
@@ -1,1051 +0,0 @@
-
-
-# ODBC
-
-## 1. Feature Introduction
-The IoTDB ODBC driver provides the ability to interact with the database via the standard ODBC interface, supporting data management in time-series databases through ODBC connections. It currently supports database connection, data query, data insertion, data modification, and data deletion operations, and is compatible with various applications and toolchains that support the ODBC protocol.
-
-> Note: This feature is supported starting from V2.0.8.2.
-
-## 2. Usage Method
-It is recommended to install using the pre-compiled binary package. There is no need to compile it yourself; simply use the script to complete the driver installation and system registration. Currently, only Windows systems are supported.
-
-### 2.1 Environment Requirements
-Only the ODBC Driver Manager dependency at the operating system level is required; no compilation environment configuration is needed:
-
-| **Operating System** | **Requirements and Installation Method** |
-| :--- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Windows | 1. **Windows 10/11, Server 2016/2019/2022**: Comes with ODBC Driver Manager version 17/18 built-in; no extra installation needed. 2. **Windows 8.1/Server 2012 R2**: Requires manual installation of the corresponding version of the ODBC Driver Manager. |
-
-### 2.2 Installation Steps
-1. Contact the Tianmou team to obtain the pre-compiled binary package.
- Binary package directory structure:
- ```Plain
- ├── bin/
- │ ├── apache_iotdb_odbc.dll
- │ └── install_driver.exe
- ├── install.bat
- └── registry.bat
- ```
-2. Open a command line tool (CMD/PowerShell) with **Administrator privileges** and run the following command: (You can replace the path with any absolute path)
- ```Bash
- install.bat "C:\Program Files\Apache IoTDB ODBC Driver"
- ```
- The script automatically completes the following operations:
- * Creates the installation directory (if it does not exist).
- * Copies `bin\apache_iotdb_odbc.dll` to the specified installation directory.
- * Calls `install_driver.exe` to register the driver to the system via the ODBC standard API (`SQLInstallDriverEx`).
-3. Verify installation: Open "ODBC Data Source Administrator". If you can see `Apache IoTDB ODBC Driver` in the "Drivers" tab, the registration was successful.
- 
-
-### 2.3 Uninstallation Steps
-1. Open Command Prompt as Administrator and `cd` into the project root directory.
-2. Run the uninstallation script:
- ```Bash
- uninstall.bat
- ```
- The script will call `install_driver.exe` to unregister the driver from the system via the ODBC standard API (`SQLRemoveDriver`). The DLL files in the installation directory will not be automatically deleted; please delete them manually if cleanup is required.
-
-### 2.4 Connection Configuration
-After installing the driver, you need to configure a Data Source Name (DSN) to allow applications to connect to the database using the DSN name. The IoTDB ODBC driver supports two methods for configuring connection parameters: via Data Source and via Connection String.
-
-#### 2.4.1 Configuring Data Source
-**Configure via ODBC Data Source Administrator**
-1. Open "ODBC Data Source Administrator", switch to the "User DSN" tab, and click the "Add" button.
- 
-2. Select "Apache IoTDB ODBC Driver" from the pop-up driver list and click "Finish".
- 
-3. The data source configuration dialog will appear. Fill in the connection parameters and click OK:
- 
- The meaning of each field in the dialog box is as follows:
-
- | **Area** | **Field** | **Description** |
- | :--- | :--- | :--- |
- | Data Source | DSN Name | Data Source Name; applications refer to this data source by this name. |
- | Data Source | Description | Data Source description (optional). |
- | Connection | Server | IoTDB server IP address, default 127.0.0.1. |
- | Connection | Port | IoTDB Session API port, default 6667. |
- | Connection | User | Username, default root. |
- | Connection | Password | Password, default root. |
- | Options | Table Model | Check to use Table Model; uncheck to use Tree Model. |
- | Options | Database | Database name. Only available in Table Model mode; grayed out in Tree Model. |
- | Options | Log Level | Log level (0-4): 0=OFF, 1=ERROR, 2=WARN, 3=INFO, 4=TRACE. |
- | Options | Session Timeout | Session timeout time (milliseconds); 0 means no timeout. Note: The server-side `queryTimeoutThreshold` defaults to 60000ms; exceeding this value requires modifying server configuration. |
- | Options | Batch Size | Number of rows fetched per batch, default 1000. Setting to 0 resets to the default value. |
-
-4. After filling in the details, you can click the "Test Connection" button to test the connection. Testing will attempt to connect to the IoTDB server using the current parameters and execute a `SHOW VERSION` query. If successful, the server version information will be displayed; if failed, the specific error reason will be shown.
-5. Once parameters are confirmed correct, click "OK" to save. The data source will appear in the "User DSN" list, as shown in the example below with the name "123".
- 
- To modify the configuration of an existing data source, select it in the list and click the "Configure" button to edit again.
-
-#### 2.4.2 Connection String
-The connection string format is **semicolon-separated key-value pairs**, for example:
-```Bash
-Driver={IoTDB ODBC Driver};server=127.0.0.1;port=6667;uid=root;pwd=root;database=testdb;isTableModel=true;loglevel=2
-```
-Specific field attributes are introduced in the table below:
-
-| **Field Name** | **Description** | **Optional Values** | **Default Value** |
-| :--- | :--- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| :--- |
-| DSN | Data Source Name | Custom data source name | - |
-| uid | Database username | Any string | root |
-| pwd | Database password | Any string | root |
-| server | IoTDB server address | IP address | 127.0.0.1 |
-| port | IoTDB server port | Port number | 6667 |
-| database | Database name (only effective in Table Model mode) | Any string | Empty string |
-| loglevel | Log level | Integer value (0-4) | 4 (LOG_LEVEL_TRACE) |
-| isTableModel / tablemodel | Whether to enable Table Model mode | Boolean type, supports multiple representations: 1. 0, false, no, off: set to false; 2. 1, true, yes, on: set to true; 3. Other values default to true. | true |
-| sessiontimeoutms | Session timeout time (milliseconds) | 64-bit integer, defaults to `LLONG_MAX`; setting to `0` will be replaced with `LLONG_MAX`. Note: The server has a timeout setting: `private long queryTimeoutThreshold = 60000;` this item needs to be modified to get a timeout time exceeding 60 seconds. | LLONG_MAX |
-| batchsize | Batch size for fetching data each time | 64-bit integer, defaults to `1000`; setting to `0` will be replaced with `1000` | 1000 |
-
-Notes:
-* Field names are case-insensitive (automatically converted to lowercase for comparison).
-* Connection string format is semicolon-separated key-value pairs, e.g., `Driver={IoTDB ODBC Driver};server=127.0.0.1;port=6667;uid=root;pwd=root;database=testdb;isTableModel=true;loglevel=2`.
-* For boolean fields (`isTableModel`), multiple representation methods are supported.
-* All fields are optional; if not specified, default values are used.
-* Unsupported fields will be ignored and a warning logged, but will not affect the connection.
-* The default server interface port 6667 is the default port used by IoTDB's C++ Session interface. This ODBC driver uses the C++ Session interface to transfer data with IoTDB. If the C++ Session interface on the IoTDB server uses a non-default port, corresponding changes must be made in the ODBC connection string.
-
-#### 2.4.3 Relationship between Data Source Configuration and Connection String
-Configurations saved in the ODBC Data Source Administrator are written into the system's ODBC data source configuration as key-value pairs (corresponding to the registry `HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI` under Windows). When an application uses `SQLConnect` or specifies `DSN=DataSourceName` in the connection string, the driver reads these parameters from the system configuration.
-
-**The priority of the connection string is higher than the configuration saved in the DSN.** Specific rules are as follows:
-1. If the connection string contains `DSN=xxx` and does not contain `DRIVER=...`, the driver first loads all parameters of that DSN from the system configuration as base values.
-2. Then, parameters explicitly specified in the connection string will override parameters with the same name in the DSN.
-3. If the connection string contains `DRIVER=...`, no DSN parameters will be read from the system configuration; it will rely entirely on the connection string.
-
-For example: If the DSN is configured with `Server=192.168.1.100` and `Port=6667`, but the connection string is `DSN=MyDSN;Server=127.0.0.1`, then the actual connection will use `Server=127.0.0.1` (overridden by connection string) and `Port=6667` (from DSN).
-
-### 2.5 Logging
-Log output during driver runtime is divided into "Driver Self-Logs" and "ODBC Manager Tracing Logs". Note the impact of log levels on performance.
-
-#### 2.5.1 Driver Self-Logs
-* Output location: `apache_iotdb_odbc.log` in the user's home directory.
-* Log level: Configured via the `loglevel` parameter in the connection string (0-4; higher levels produce more detailed output).
-* Performance impact: High log levels will significantly reduce driver performance; recommended for debugging only.
-
-#### 2.5.2 ODBC Manager Tracing Logs
-* How to enable: Open "ODBC Data Source Administrator" → "Tracing" → "Start Tracing Now".
-* Precautions: Enabling this will greatly reduce driver performance; use only for troubleshooting.
-
-## 3. Interface Support
-
-### 3.1 Method List
-The driver's support status for standard ODBC APIs is as follows:
-
-| ODBC/Setup API | Function Function | Parameter List | Parameter Description |
-|:------------------|:---------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| :--- |
-| SQLAllocHandle | Allocate ODBC Handle | (SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandle) | HandleType: Type of handle to allocate (ENV/DBC/STMT/DESC); InputHandle: Parent context handle; OutputHandle: Pointer to the returned new handle. |
-| SQLBindCol | Bind column to result buffer | (SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValue, SQLLEN BufferLength, SQLLEN *StrLen_or_Ind) | StatementHandle: Statement handle; ColumnNumber: Column number; TargetType: C data type; TargetValue: Data buffer;BufferLength: Buffer length; StrLen_or_Ind: Returns data length or NULL indicator. |
-| SQLColAttribute | Get column attribute information | (SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier, SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength, SQLSMALLINT *StringLength, SQLLEN *NumericAttribute) | StatementHandle: Statement handle; ColumnNumber: Column number; FieldIdentifier: Attribute ID; CharacterAttribute: Character attribute output; BufferLength: Buffer length; StringLength: Returned length; NumericAttribute: Numeric attribute output. |
-| SQLColumns | Query table column information | (SQLHSTMT StatementHandle, SQLCHAR *CatalogName, SQLSMALLINT NameLength1, SQLCHAR *SchemaName, SQLSMALLINT NameLength2, SQLCHAR *TableName, SQLSMALLINT NameLength3, SQLCHAR *ColumnName, SQLSMALLINT NameLength4) | StatementHandle: Statement handle; Catalog/Schema/Table/ColumnName: Query object names; NameLength*: Corresponding name lengths. |
-| SQLConnect | Establish database connection | (SQLHDBC ConnectionHandle, SQLCHAR *ServerName, SQLSMALLINT NameLength1, SQLCHAR *UserName, SQLSMALLINT NameLength2, SQLCHAR *Authentication, SQLSMALLINT NameLength3) | ConnectionHandle: Connection handle; ServerName: Data source name; UserName: Username; Authentication: Password; NameLength*: String lengths. |
-| SQLDescribeCol | Describe columns in result set | (SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName, SQLSMALLINT BufferLength, SQLSMALLINT *NameLength, SQLSMALLINT *DataType, SQLULEN *ColumnSize, SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable) | StatementHandle: Statement handle; ColumnNumber: Column number; ColumnName: Column name output; BufferLength: Buffer length; NameLength: Returned column name length; DataType: SQL type; ColumnSize: Column size; DecimalDigits: Decimal digits; Nullable: Whether nullable. |
-| SQLDisconnect | Disconnect database connection | (SQLHDBC ConnectionHandle) | ConnectionHandle: Connection handle. |
-| SQLDriverConnect | Establish connection using connection string | (SQLHDBC ConnectionHandle, SQLHWND WindowHandle, SQLCHAR *InConnectionString, SQLSMALLINT StringLength1, SQLCHAR *OutConnectionString, SQLSMALLINT BufferLength, SQLSMALLINT *StringLength2, SQLUSMALLINT DriverCompletion) | ConnectionHandle: Connection handle; WindowHandle: Window handle;InConnectionString: Input connection string; StringLength1: Input length; OutConnectionString: Output connection string; BufferLength: Output buffer; StringLength2: Returned length; DriverCompletion: Connection prompt method. |
-| SQLEndTran | Commit or rollback transaction | (SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT CompletionType) | HandleType: Handle type; Handle: Connection or environment handle; CompletionType: Commit or rollback transaction. |
-| SQLExecDirect | Execute SQL statement directly | (SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength) | StatementHandle: Statement handle; StatementText: SQL text;TextLength: SQL length. |
-| SQLFetch | Fetch next row in result set | (SQLHSTMT StatementHandle) | StatementHandle: Statement handle. |
-| SQLFreeHandle | Free ODBC handle | (SQLSMALLINT HandleType, SQLHANDLE Handle) | HandleType: Handle type; Handle: Handle to free. |
-| SQLFreeStmt | Free statement-related resources | (SQLHSTMT StatementHandle, SQLUSMALLINT Option) | StatementHandle: Statement handle; Option: Free option (close cursor/reset parameters, etc.). |
-| SQLGetConnectAttr | Get connection attribute | (SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER BufferLength, SQLINTEGER *StringLength) | ConnectionHandle: Connection handle; Attribute: Attribute ID; Value: Returned attribute value; BufferLength: Buffer length; StringLength: Returned length. |
-| SQLGetData | Get result data | (SQLHSTMT StatementHandle, SQLUSMALLINT Col_or_Param_Num, SQLSMALLINT TargetType, SQLPOINTER TargetValue, SQLLEN BufferLength, SQLLEN *StrLen_or_Ind) | StatementHandle: Statement handle; Col_or_Param_Num: Column number; TargetType: C type; TargetValue: Data buffer; BufferLength: Buffer size; StrLen_or_Ind: Returned length or NULL flag. |
-| SQLGetDiagField | Get diagnostic field | (SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier, SQLPOINTER DiagInfo, SQLSMALLINT BufferLength, SQLSMALLINT *StringLength) | HandleType: Handle type; Handle: Handle; RecNumber: Record number; DiagIdentifier: Diagnostic field ID; DiagInfo: Output info; BufferLength: Buffer; StringLength: Returned length. |
-| SQLGetDiagRec | Get diagnostic record | (SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *Sqlstate, SQLINTEGER *NativeError, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLength) | HandleType: Handle type; Handle: Handle; RecNumber: Record number; Sqlstate: SQL state code; NativeError: Native error code; MessageText: Error message; BufferLength: Buffer; TextLength: Returned length. |
-| SQLGetInfo | Get database information | (SQLHDBC ConnectionHandle, SQLUSMALLINT InfoType, SQLPOINTER InfoValue, SQLSMALLINT BufferLength, SQLSMALLINT *StringLength) | ConnectionHandle: Connection handle; InfoType: Information type; InfoValue: Return value; BufferLength: Buffer length; StringLength: Returned length. |
-| SQLGetStmtAttr | Get statement attribute | (SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER BufferLength, SQLINTEGER *StringLength) | StatementHandle: Statement handle; Attribute: Attribute ID; Value: Return value; BufferLength: Buffer; StringLength: Returned length. |
-| SQLGetTypeInfo | Get data type information | (SQLHSTMT StatementHandle, SQLSMALLINT DataType) | StatementHandle: Statement handle; DataType: SQL data type. |
-| SQLMoreResults | Get more result sets | (SQLHSTMT StatementHandle) | StatementHandle: Statement handle. |
-| SQLNumResultCols | Get number of columns in result set | (SQLHSTMT StatementHandle, SQLSMALLINT *ColumnCount) | StatementHandle: Statement handle; ColumnCount: Returned column count. |
-| SQLRowCount | Get number of affected rows | (SQLHSTMT StatementHandle, SQLLEN *RowCount) | StatementHandle: Statement handle; RowCount: Returned number of affected rows. |
-| SQLSetConnectAttr | Set connection attribute | (SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER StringLength) | ConnectionHandle: Connection handle; Attribute: Attribute ID; Value: Attribute value; StringLength: Attribute value length. |
-| SQLSetEnvAttr | Set environment attribute | (SQLHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER StringLength) | EnvironmentHandle: Environment handle; Attribute: Attribute ID; Value: Attribute value; StringLength: Length. |
-| SQLSetStmtAttr | Set statement attribute | (SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER Value, SQLINTEGER StringLength) | StatementHandle: Statement handle; Attribute: Attribute ID; Value: Attribute value; StringLength: Length. |
-| SQLTables | Query table information | (SQLHSTMT StatementHandle, SQLCHAR *CatalogName, SQLSMALLINT NameLength1, SQLCHAR *SchemaName, SQLSMALLINT NameLength2, SQLCHAR *TableName, SQLSMALLINT NameLength3, SQLCHAR *TableType, SQLSMALLINT NameLength4) | StatementHandle: Statement handle; Catalog/Schema/TableName: Table names; TableType: Table type; NameLength*: Corresponding lengths. |
-
-### 3.2 Data Type Conversion
-The mapping relationship between IoTDB data types and standard ODBC data types is as follows:
-
-| **IoTDB Data Type** | **ODBC Data Type** |
-| :--- | :--- |
-| BOOLEAN | SQL_BIT |
-| INT32 | SQL_INTEGER |
-| INT64 | SQL_BIGINT |
-| FLOAT | SQL_REAL |
-| DOUBLE | SQL_DOUBLE |
-| TEXT | SQL_VARCHAR |
-| STRING | SQL_VARCHAR |
-| BLOB | SQL_LONGVARBINARY |
-| TIMESTAMP | SQL_BIGINT |
-| DATE | SQL_DATE |
-
-## 4. Operation Examples
-This chapter mainly introduces full-type operation examples for **C#**, **Python**, **C++**, **PowerBI**, and **Excel**, covering core operations such as data query, insertion, and deletion.
-
-### 4.1 C# Example
-
-```C#
-Here is the C# code with all comments and string literals translated into English:
-
-```csharp
-/*******
-Note: When the output contains Chinese characters, it may cause garbled text.
-This is because the table.Write() function cannot output strings in UTF-8 encoding
-and can only output using GB2312 (or another system default encoding). This issue
-may not occur in software like Power BI; it also does not occur when using the Console.WriteLine function.
-This is an issue with the ConsoleTable package.
-*****/
-
-using System.Data.Common;
-using System.Data.Odbc;
-using System.Reflection.PortableExecutable;
-using ConsoleTables;
-using System;
-
-/// Executes a SELECT query and outputs the results of fulltable in table format
-void Query(OdbcConnection dbConnection)
-{
- try
- {
- using (OdbcCommand dbCommand = dbConnection.CreateCommand())
- {
- dbCommand.CommandText = "select * from fulltable";
- using (OdbcDataReader dbReader = dbCommand.ExecuteReader())
- {
- var fCount = dbReader.FieldCount;
- Console.WriteLine($"fCount = {fCount}");
-
- // Output header row
- var columns = new string[fCount];
- for (var i = 0; i < fCount; i++)
- {
- var fName = dbReader.GetName(i);
- if (fName.Contains('.'))
- {
- fName = fName.Substring(fName.LastIndexOf('.') + 1);
- }
- columns[i] = fName;
- }
-
- // Output content rows
- var table = new ConsoleTable(columns);
- while (dbReader.Read())
- {
- var row = new object[fCount];
- for (var i = 0; i < fCount; i++)
- {
- if (dbReader.IsDBNull(i))
- {
- row[i] = null;
- continue;
- }
- row[i] = dbReader.GetValue(i);
- }
- table.AddRow(row);
- }
- table.Write();
- Console.WriteLine();
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.ToString());
- }
-}
-
-/// Executes non-query SQL statements (such as CREATE DATABASE, CREATE TABLE, INSERT, etc.)
-void Execute(OdbcConnection dbConnection, string command)
-{
- try
- {
- using (OdbcCommand dbCommand = dbConnection.CreateCommand())
- {
- try
- {
- dbCommand.CommandText = command;
- Console.WriteLine($"Execute command: {command}");
- dbCommand.ExecuteNonQuery();
- }
- catch (Exception ex)
- {
- Console.WriteLine($"CommandText error: {ex.Message}");
- }
- }
- }
- catch (OdbcException ex)
- {
- Console.WriteLine($"Database error: {ex.Message}");
- }
- catch (Exception ex)
- {
- Console.WriteLine($"Unknown error occurred: {ex.Message}");
- }
-}
-
-var dsn = "Apache IoTDB DSN";
-var user = "root";
-var password = "root";
-var server = "127.0.0.1";
-var database = "test";
-var connectionString = $"DSN={dsn};Server={server};UID={user};PWD={password};Database={database};loglevel=4";
-
-using (OdbcConnection dbConnection = new OdbcConnection(connectionString))
-{
- Console.WriteLine($"Start");
- try
- {
- dbConnection.Open();
- }
- catch (Exception ex)
- {
- Console.WriteLine($"Login failed: {ex.Message}");
- Console.WriteLine($"Stack Trace: {ex.StackTrace}");
- dbConnection.Dispose();
- return;
- }
- Console.WriteLine($"Successfully opened connection. database name = {dbConnection.Driver}");
-
- Execute(dbConnection, "CREATE DATABASE IF NOT EXISTS test");
- Execute(dbConnection, "use test");
- Console.WriteLine("use test Execute complete. Begin to setup fulltable.");
-
- Execute(dbConnection, "CREATE TABLE IF NOT EXISTS fullTable (time TIMESTAMP TIME, bool_col BOOLEAN FIELD, int32_col INT32 FIELD, int64_col INT64 FIELD, float_col FLOAT FIELD, double_col DOUBLE FIELD, text_col TEXT FIELD, string_col STRING FIELD, blob_col BLOB FIELD, timestamp_col TIMESTAMP FIELD, date_col DATE FIELD) WITH (TTL=315360000000)");
-
- string[] insertStatements = new string[]
- {
- "INSERT INTO fulltable VALUES (1735689600000, true, 100, 10000000000, 36.5, 128.689, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689600000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689660000, false, 101, 10000000001, 36.6, 128.789, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689660000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689720000, true, 102, 10000000002, 36.7, 128.889, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689720000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689780000, false, 103, 10000000003, 36.8, 128.989, 'Device temperature high alarm', 'DeviceA-Room1', '0x506C616E7444617462', 1735689780000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689840000, true, 104, 10000000004, 36.9, 129.089, 'Device status returned to normal', 'DeviceA-Room1', '0x506C616E7444617461', 1735689840000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689900000, false, 105, 10000000005, 37.0, 129.189, 'Device operating normally', 'DeviceB-Room2', '0x506C616E7444617463', 1735689900000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689960000, true, 106, 10000000006, 37.1, 129.289, 'Device operating normally', 'DeviceB-Room2', '0x506C616E7444617463', 1735689960000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690020000, false, 107, 10000000007, 37.2, 129.389, 'Device humidity low alarm', 'DeviceB-Room2', '0x506C616E7444617464', 1735690020000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690080000, true, 108, 10000000008, 37.3, 129.489, 'Device status returned to normal', 'DeviceB-Room2', '0x506C616E7444617463', 1735690080000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690140000, false, 109, 10000000009, 37.4, 129.589, 'Device operating normally', 'DeviceC-Room3', '0x506C616E7444617465', 1735690140000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690200000, true, 110, 10000000010, 37.5, 129.689, 'Device operating normally', 'DeviceC-Room3', '0x506C616E7444617465', 1735690200000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690260000, false, 111, 10000000011, 37.6, 129.789, 'Device voltage unstable alarm', 'DeviceC-Room3', '0x506C616E7444617466', 1735690260000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690320000, true, 112, 10000000012, 37.7, 129.889, 'Device status returned to normal', 'DeviceC-Room3', '0x506C616E7444617465', 1735690320000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690380000, false, 113, 10000000013, 37.8, 129.989, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690380000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690440000, true, 114, 10000000014, 37.9, 130.089, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690440000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690500000, false, 115, 10000000015, 38.0, 130.189, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690500000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690560000, true, 116, 10000000016, 38.1, 130.289, 'Device signal interrupted alarm', 'DeviceD-Room4', '0x506C616E7444617468', 1735690560000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690620000, false, 117, 10000000017, 38.2, 130.389, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690620000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690680000, true, 118, 10000000018, 38.3, 130.489, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690680000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690740000, false, 119, 10000000019, 38.4, 130.589, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690740000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690790000, false, 119, 10000000019, 38.4, 130.589, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690740000, '2026-01-04')"
- };
-
- foreach (var insert in insertStatements)
- {
- Execute(dbConnection, insert);
- }
- Console.WriteLine("fulltable setup complete. Begin to query.");
-
- Query(dbConnection); // Execute query and output results
-}
-```
-
-### 4.2 Python Example
-1. To access ODBC via Python, install the `pyodbc` package:
- ```Plain
- pip install pyodbc
- ```
-2. Full Code:
-
-
-```Python
-Here is the complete Python code with all comments and string literals translated into English:
-
-```python
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-Apache IoTDB ODBC Python example
-Use pyodbc to connect to the IoTDB ODBC driver and perform operations such as query and insert.
-For reference, see examples/cpp-example/test.cpp and examples/BasicTest/BasicTest/Program.cs
-"""
-
-import pyodbc
-
-def execute(conn: pyodbc.Connection, command: str) -> None:
- """Executes non-query SQL statements (such as USE, CREATE, INSERT, DELETE, etc.)"""
- try:
- with conn.cursor() as cursor:
- cursor.execute(command)
- # INSERT/UPDATE/DELETE require commit; session commands such as USE do not.
- cmd_upper = command.strip().upper()
- if cmd_upper.startswith(("INSERT", "UPDATE", "DELETE")):
- conn.commit()
- print(f"Execute command: {command}")
- except pyodbc.Error as ex:
- print(f"CommandText error: {ex}")
-
-def query(conn: pyodbc.Connection, sql: str) -> None:
- """Executes a SELECT query and outputs the results in table format"""
- try:
- with conn.cursor() as cursor:
- cursor.execute(sql)
- col_count = len(cursor.description)
- print(f"fCount = {col_count}")
-
- if col_count <= 0:
- return
-
- # Get column names (if the name contains '.', take the last segment, consistent with C++/C# samples).
- columns = []
- for i in range(col_count):
- col_name = cursor.description[i][0] or f"Column{i}"
- if "." in str(col_name):
- col_name = str(col_name).split(".")[-1]
- columns.append(str(col_name))
-
- # Fetch data rows
- rows = cursor.fetchall()
-
- # Simple table output
- col_widths = [max(len(str(col)), 4) for col in columns]
- for i, row in enumerate(rows):
- for j, val in enumerate(row):
- if j < len(col_widths):
- col_widths[j] = max(col_widths[j], len(str(val) if val is not None else "NULL"))
-
- # Print header
- header = " | ".join(str(c).ljust(col_widths[i]) for i, c in enumerate(columns))
- print(header)
- print("-" * len(header))
-
- # Print data rows
- for row in rows:
- values = []
- for i, val in enumerate(row):
- if val is None:
- cell = "NULL"
- else:
- cell = str(val)
- values.append(cell.ljust(col_widths[i]) if i < len(col_widths) else cell)
- print(" | ".join(values))
-
- print()
-
- except pyodbc.Error as ex:
- print(f"Query error: {ex}")
-
-def main() -> None:
- dsn = "Apache IoTDB DSN"
- user = "root"
- password = "root"
- server = "127.0.0.1"
- database = "test"
- connection_string = (
- f"DSN={dsn};Server={server};UID={user};PWD={password};"
- f"Database={database};loglevel=4"
- )
-
- print("Start")
-
- try:
- conn = pyodbc.connect(connection_string)
- except pyodbc.Error as ex:
- print(f"Login failed: {ex}")
- return
-
- try:
- driver_name = conn.getinfo(6) # SQL_DRIVER_NAME
- print(f"Successfully opened connection. driver = {driver_name}")
- except Exception:
- print("Successfully opened connection.")
-
- try:
- execute(conn, "CREATE DATABASE IF NOT EXISTS test")
- execute(conn, "use test")
- print("use test Execute complete. Begin to setup fulltable.")
-
- # Create the fulltable table and insert test data
- execute(
- conn,
- "CREATE TABLE IF NOT EXISTS fullTable (time TIMESTAMP TIME, bool_col BOOLEAN FIELD, "
- "int32_col INT32 FIELD, int64_col INT64 FIELD, float_col FLOAT FIELD, "
- "double_col DOUBLE FIELD, text_col TEXT FIELD, string_col STRING FIELD, "
- "blob_col BLOB FIELD, timestamp_col TIMESTAMP FIELD, date_col DATE FIELD) "
- "WITH (TTL=315360000000)",
- )
- insert_statements = [
- "INSERT INTO fulltable VALUES (1735689600000, true, 100, 10000000000, 36.5, 128.689, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689600000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689660000, false, 101, 10000000001, 36.6, 128.789, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689660000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689720000, true, 102, 10000000002, 36.7, 128.889, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689720000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689780000, false, 103, 10000000003, 36.8, 128.989, 'Device temperature high alarm', 'DeviceA-Room1', '0x506C616E7444617462', 1735689780000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689840000, true, 104, 10000000004, 36.9, 129.089, 'Device status returned to normal', 'DeviceA-Room1', '0x506C616E7444617461', 1735689840000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689900000, false, 105, 10000000005, 37.0, 129.189, 'Device operating normally', 'DeviceB-Room2', '0x506C616E7444617463', 1735689900000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689960000, true, 106, 10000000006, 37.1, 129.289, 'Device operating normally', 'DeviceB-Room2', '0x506C616E7444617463', 1735689960000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690020000, false, 107, 10000000007, 37.2, 129.389, 'Device humidity low alarm', 'DeviceB-Room2', '0x506C616E7444617464', 1735690020000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690080000, true, 108, 10000000008, 37.3, 129.489, 'Device status returned to normal', 'DeviceB-Room2', '0x506C616E7444617463', 1735690080000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690140000, false, 109, 10000000009, 37.4, 129.589, 'Device operating normally', 'DeviceC-Room3', '0x506C616E7444617465', 1735690140000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690200000, true, 110, 10000000010, 37.5, 129.689, 'Device operating normally', 'DeviceC-Room3', '0x506C616E7444617465', 1735690200000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690260000, false, 111, 10000000011, 37.6, 129.789, 'Device voltage unstable alarm', 'DeviceC-Room3', '0x506C616E7444617466', 1735690260000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690320000, true, 112, 10000000012, 37.7, 129.889, 'Device status returned to normal', 'DeviceC-Room3', '0x506C616E7444617465', 1735690320000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690380000, false, 113, 10000000013, 37.8, 129.989, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690380000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690440000, true, 114, 10000000014, 37.9, 130.089, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690440000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690500000, false, 115, 10000000015, 38.0, 130.189, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690500000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690560000, true, 116, 10000000016, 38.1, 130.289, 'Device signal interrupted alarm', 'DeviceD-Room4', '0x506C616E7444617468', 1735690560000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690620000, false, 117, 10000000017, 38.2, 130.389, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690620000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690680000, true, 118, 10000000018, 38.3, 130.489, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690680000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690740000, false, 119, 10000000019, 38.4, 130.589, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690740000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690790000, false, 119, 10000000019, 38.4, 130.589, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690740000, '2026-01-04')",
- ]
- for insert_sql in insert_statements:
- execute(conn, insert_sql)
- print("fulltable setup complete. Begin to query.")
- query(conn, "select * from fulltable")
- print("Query ok")
- finally:
- conn.close()
-
-if __name__ == "__main__":
- main()
-```
-
-
-### 4.3 C++ Example
-
-
-```C++
-Here is the complete C++ code with all comments and string literals translated into English:
-
-```cpp
-#define WIN32_LEAN_AND_MEAN
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#ifndef SQL_DIAG_COLUMN_SIZE
-#define SQL_DIAG_COLUMN_SIZE 33L
-#endif
-
-// Error handling function (core functionality preserved)
-void CheckOdbcError(SQLRETURN retCode, SQLSMALLINT handleType, SQLHANDLE handle, const char* functionName) {
- if (retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO) {
- return;
- }
-
- SQLCHAR sqlState[6];
- SQLCHAR message[SQL_MAX_MESSAGE_LENGTH];
- SQLINTEGER nativeError;
- SQLSMALLINT textLength;
- SQLRETURN errRet;
- errRet = SQLGetDiagRec(handleType, handle, 1, sqlState, &nativeError, message, sizeof(message), &textLength);
-
- std::cerr << "ODBC Error in " << functionName << ":\n";
- std::cerr << " SQL State: " << sqlState << "\n";
- std::cerr << " Native Error: " << nativeError << "\n";
- std::cerr << " Message: " << message << "\n";
- std::cerr << " SQLGetDiagRec Return: " << errRet << "\n";
-
- if (retCode == SQL_ERROR || retCode == SQL_INVALID_HANDLE) {
- exit(1);
- }
-}
-
-// Simplified table output - displays basic data only
-void PrintSimpleTable(const std::vector& headers,
- const std::vector>& rows) {
- // Print header row
- for (size_t i = 0; i < headers.size(); i++) {
- std::cout << headers[i];
- if (i < headers.size() - 1) std::cout << "\t";
- }
- std::cout << std::endl;
-
- // Print separator line
- for (size_t i = 0; i < headers.size(); i++) {
- std::cout << "----------------";
- if (i < headers.size() - 1) std::cout << "\t";
- }
- std::cout << std::endl;
-
- // Print data rows
- for (const auto& row : rows) {
- for (size_t i = 0; i < row.size(); i++) {
- std::cout << row[i];
- if (i < row.size() - 1) std::cout << "\t";
- }
- std::cout << std::endl;
- }
- std::cout << std::endl;
-}
-
-/// Executes a SELECT query and outputs the results of fulltable in table format
-void Query(SQLHDBC hDbc) {
- SQLHSTMT hStmt = SQL_NULL_HSTMT;
- SQLRETURN ret = SQL_SUCCESS;
-
- try {
- // Allocate statement handle
- ret = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
- if (!SQL_SUCCEEDED(ret)) {
- CheckOdbcError(ret, SQL_HANDLE_DBC, hDbc, "SQLAllocHandle(SQL_HANDLE_STMT)");
- return;
- }
-
- // Execute query
- const std::string sqlQuery = "select * from fulltable";
- std::cout << "Execute query: " << sqlQuery << std::endl;
-
- ret = SQLExecDirect(hStmt, reinterpret_cast(const_cast(sqlQuery.c_str())), SQL_NTS);
- if (!SQL_SUCCEEDED(ret)) {
- if (ret != SQL_NO_DATA) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLExecDirect(SELECT)");
- }
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- return;
- }
-
- // Get column count
- SQLSMALLINT colCount = 0;
- ret = SQLNumResultCols(hStmt, &colCount);
- if (!SQL_SUCCEEDED(ret)) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLNumResultCols");
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- return;
- }
-
- std::cout << "Column count = " << colCount << std::endl;
-
- // If no columns, return directly
- if (colCount <= 0) {
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- return;
- }
-
- // Get column names and type information
- std::vector columnNames;
- std::vector columnTypes(colCount);
- std::vector columnSizes(colCount);
- std::vector decimalDigits(colCount);
- std::vector nullable(colCount);
-
- // Get basic column information
- for (SQLSMALLINT i = 1; i <= colCount; i++) {
- SQLSMALLINT nameLength = 0;
- ret = SQLDescribeCol(hStmt, i, NULL, 0, &nameLength, NULL, NULL, NULL, NULL);
- if (!SQL_SUCCEEDED(ret)) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLDescribeCol (get length)");
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- return;
- }
-
- std::vector colNameBuffer(nameLength + 1);
- SQLSMALLINT actualNameLength = 0;
-
- ret = SQLDescribeCol(hStmt, i, colNameBuffer.data(), nameLength + 1,
- &actualNameLength, NULL, NULL, NULL, NULL);
- if (!SQL_SUCCEEDED(ret)) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLDescribeCol (get name)");
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- return;
- }
-
- std::string fullName(reinterpret_cast(colNameBuffer.data()));
-
- size_t pos = fullName.find_last_of('.');
- if (pos != std::string::npos) {
- columnNames.push_back(fullName.substr(pos + 1));
- } else {
- columnNames.push_back(fullName);
- }
-
- ret = SQLDescribeCol(hStmt, i, NULL, 0, NULL, &columnTypes[i-1],
- &columnSizes[i-1], &decimalDigits[i-1], &nullable[i-1]);
- if (!SQL_SUCCEEDED(ret)) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLDescribeCol (get type info)");
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- return;
- }
- }
-
- std::vector> tableRows;
-
- int rowCount = 0;
- // Fetch data for every row
- while (true) {
- ret = SQLFetch(hStmt);
- if (ret == SQL_NO_DATA) {
- break;
- }
-
- if (!SQL_SUCCEEDED(ret)) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLFetch");
- break;
- }
-
- std::vector row;
-
- for (SQLSMALLINT i = 1; i <= colCount; i++) {
- SQLLEN indicator = 0;
- std::string valueStr;
-
- SQLSMALLINT cType;
- size_t bufferSize;
- bool isCharacterType = false;
- const int maxBufferSize = 32768;
-
- switch (columnTypes[i-1]) {
- case SQL_CHAR:
- case SQL_VARCHAR:
- case SQL_LONGVARCHAR:
- case SQL_WCHAR:
- case SQL_WVARCHAR:
- case SQL_WLONGVARCHAR:
- cType = SQL_C_CHAR;
- if (columnSizes[i - 1] > 0) {
- bufferSize = min(maxBufferSize, static_cast(columnSizes[i-1]) * 4 + 1);
- } else {
- bufferSize = maxBufferSize;
- }
- isCharacterType = true;
- break;
-
- case SQL_DECIMAL:
- case SQL_NUMERIC:
- cType = SQL_C_CHAR;
- if (columnSizes[i - 1] > 0) {
- bufferSize = min(maxBufferSize, static_cast(columnSizes[i-1]) * 4 + 1);
- } else {
- bufferSize = maxBufferSize;
- }
- isCharacterType = true;
- break;
-
- case SQL_INTEGER:
- case SQL_SMALLINT:
- case SQL_TINYINT:
- case SQL_BIGINT:
- cType = SQL_C_SBIGINT;
- bufferSize = sizeof(SQLBIGINT);
- break;
-
- case SQL_REAL:
- case SQL_FLOAT:
- case SQL_DOUBLE:
- cType = SQL_C_DOUBLE;
- bufferSize = sizeof(double);
- break;
-
- case SQL_BIT:
- cType = SQL_C_BIT;
- bufferSize = sizeof(SQLCHAR);
- break;
-
- case SQL_DATE:
- case SQL_TYPE_DATE:
- cType = SQL_C_DATE;
- bufferSize = sizeof(SQL_DATE_STRUCT);
- break;
-
- case SQL_TIME:
- case SQL_TYPE_TIME:
- cType = SQL_C_TIME;
- bufferSize = sizeof(SQL_TIME_STRUCT);
- break;
-
- case SQL_TIMESTAMP:
- case SQL_TYPE_TIMESTAMP:
- cType = SQL_C_TIMESTAMP;
- bufferSize = sizeof(SQL_TIMESTAMP_STRUCT);
- break;
-
- default:
- cType = SQL_C_CHAR;
- bufferSize = 256;
- isCharacterType = true;
- break;
- }
-
- std::vector buffer(bufferSize);
-
- ret = SQLGetData(hStmt, i, cType, buffer.data(), bufferSize, &indicator);
-
- if (indicator == SQL_NULL_DATA) {
- valueStr = "NULL";
- }
- else if (ret != SQL_SUCCESS) {
- valueStr = "ERR_CONV";
- }
- else {
- if (cType == SQL_C_CHAR) {
- valueStr = reinterpret_cast(buffer.data());
- }
- else if (cType == SQL_C_SBIGINT) {
- SQLBIGINT intVal = *reinterpret_cast(buffer.data());
- valueStr = std::to_string(intVal);
- }
- else if (cType == SQL_C_DOUBLE) {
- double doubleVal = *reinterpret_cast(buffer.data());
- valueStr = std::to_string(doubleVal);
- }
- else if (cType == SQL_C_BIT) {
- valueStr = (*buffer.data() != 0) ? "TRUE" : "FALSE";
- }
- else if (cType == SQL_C_DATE) {
- SQL_DATE_STRUCT* date = reinterpret_cast(buffer.data());
- char dateStr[20];
- snprintf(dateStr, sizeof(dateStr), "%04d-%02d-%02d",
- date->year, date->month, date->day);
- valueStr = dateStr;
- }
- else if (cType == SQL_C_TIME) {
- SQL_TIME_STRUCT* time = reinterpret_cast(buffer.data());
- char timeStr[15];
- snprintf(timeStr, sizeof(timeStr), "%02d:%02d:%02d",
- time->hour, time->minute, time->second);
- valueStr = timeStr;
- }
- else if (cType == SQL_C_TIMESTAMP) {
- SQL_TIMESTAMP_STRUCT* ts = reinterpret_cast(buffer.data());
- char tsStr[30];
- snprintf(tsStr, sizeof(tsStr), "%04d-%02d-%02d %02d:%02d:%02d.%06d",
- ts->year, ts->month, ts->day,
- ts->hour, ts->minute, ts->second,
- ts->fraction / 1000);
- valueStr = tsStr;
- }
- else {
- valueStr = "UNKNOWN_TYPE";
- }
-
- if (isCharacterType && ret == SQL_SUCCESS_WITH_INFO) {
- SQLLEN actualSize = 0;
- SQLGetDiagField(SQL_HANDLE_STMT, hStmt, 0, SQL_DIAG_COLUMN_SIZE,
- &actualSize, SQL_IS_INTEGER, NULL);
-
- if (indicator > 0 && static_cast(indicator) > bufferSize - 1) {
- valueStr += "...";
- }
- }
-
- }
-
- row.push_back(valueStr);
- }
-
- tableRows.push_back(row);
- }
-
- if (!tableRows.empty()) {
- PrintSimpleTable(columnNames, tableRows);
- }
-
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- }
- catch (const std::exception& ex) {
- std::cerr << "Exception: " << ex.what() << std::endl;
- if (hStmt != SQL_NULL_HSTMT) {
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- }
- throw;
- }
- catch (...) {
- std::cerr << "Unknown exception occurred" << std::endl;
- if (hStmt != SQL_NULL_HSTMT) {
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- }
- throw;
- }
-}
-
-/// Executes non-query SQL statements (such as CREATE DATABASE, CREATE TABLE, INSERT, etc.)
-void Execute(SQLHDBC hDbc, const std::string& command) {
- SQLHSTMT hStmt = SQL_NULL_HSTMT;
- SQLRETURN ret;
-
- try {
- // Allocate statement handle
- ret = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
- CheckOdbcError(ret, SQL_HANDLE_DBC, hDbc, "SQLAllocHandle(SQL_HANDLE_STMT)");
-
- // Execute command
- ret = SQLExecDirect(hStmt, (SQLCHAR*)command.c_str(), SQL_NTS);
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
- CheckOdbcError(ret, SQL_HANDLE_STMT, hStmt, "SQLExecDirect");
- }
-
- // Free statement handle
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- }
- catch (...) {
- if (hStmt != SQL_NULL_HSTMT) {
- SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
- }
- throw;
- }
-}
-
-int main() {
- SQLHENV hEnv = SQL_NULL_HENV;
- SQLHDBC hDbc = SQL_NULL_HDBC;
- SQLRETURN ret;
-
- try {
- std::cout << "Start" << std::endl;
-
- // 1. Initialize ODBC environment
- ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
- CheckOdbcError(ret, SQL_HANDLE_ENV, hEnv, "SQLAllocHandle(SQL_HANDLE_ENV)");
-
- ret = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
- CheckOdbcError(ret, SQL_HANDLE_ENV, hEnv, "SQLSetEnvAttr");
-
- // 2. Establish connection
- ret = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
- CheckOdbcError(ret, SQL_HANDLE_ENV, hEnv, "SQLAllocHandle(SQL_HANDLE_DBC)");
-
- // Connection string
- std::string dsn = "Apache IoTDB DSN";
- std::string user = "root";
- std::string password = "root";
- std::string server = "127.0.0.1";
- std::string database = "test";
-
- std::string connectionString = "DSN=" + dsn + ";Server=" + server +
- ";UID=" + user + ";PWD=" + password +
- ";Database=" + database + ";loglevel=4";
- std::cout << "Using connection string: " << connectionString << std::endl;
-
- SQLCHAR outConnStr[1024];
- SQLSMALLINT outConnStrLen;
-
- ret = SQLDriverConnect(hDbc, NULL,
- (SQLCHAR*)connectionString.c_str(), SQL_NTS,
- outConnStr, sizeof(outConnStr),
- &outConnStrLen, SQL_DRIVER_COMPLETE);
-
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
- std::cerr << "Login failed" << std::endl;
- CheckOdbcError(ret, SQL_HANDLE_DBC, hDbc, "SQLDriverConnect");
- return 1;
- }
-
- // Get driver name
- SQLCHAR driverName[256];
- SQLSMALLINT nameLength;
- ret = SQLGetInfo(hDbc, SQL_DRIVER_NAME, driverName, sizeof(driverName), &nameLength);
- CheckOdbcError(ret, SQL_HANDLE_DBC, hDbc, "SQLGetInfo");
-
- std::cout << "Successfully opened connection. database name = " << driverName << std::endl;
-
- // 3. Execute operations
- Execute(hDbc, "CREATE DATABASE IF NOT EXISTS test");
- Execute(hDbc, "use test");
- std::cout << "use test Execute complete. Begin to setup fulltable." << std::endl;
-
- // Create fulltable table and insert test data
- Execute(hDbc, "CREATE TABLE IF NOT EXISTS fullTable (time TIMESTAMP TIME, bool_col BOOLEAN FIELD, int32_col INT32 FIELD, int64_col INT64 FIELD, float_col FLOAT FIELD, double_col DOUBLE FIELD, text_col TEXT FIELD, string_col STRING FIELD, blob_col BLOB FIELD, timestamp_col TIMESTAMP FIELD, date_col DATE FIELD) WITH (TTL=315360000000)");
- const char* insertStatements[] = {
- "INSERT INTO fulltable VALUES (1735689600000, true, 100, 10000000000, 36.5, 128.689, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689600000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689660000, false, 101, 10000000001, 36.6, 128.789, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689660000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689720000, true, 102, 10000000002, 36.7, 128.889, 'Device operating normally', 'DeviceA-Room1', '0x506C616E7444617461', 1735689720000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689780000, false, 103, 10000000003, 36.8, 128.989, 'Device temperature high alarm', 'DeviceA-Room1', '0x506C616E7444617462', 1735689780000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689840000, true, 104, 10000000004, 36.9, 129.089, 'Device status returned to normal', 'DeviceA-Room1', '0x506C616E7444617461', 1735689840000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689900000, false, 105, 10000000005, 37.0, 129.189, 'Device operating normally', 'DeviceB-Room2', '0x506C616E7444617463', 1735689900000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735689960000, true, 106, 10000000006, 37.1, 129.289, 'Device operating normally', 'DeviceB-Room2', '0x506C616E7444617463', 1735689960000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690020000, false, 107, 10000000007, 37.2, 129.389, 'Device humidity low alarm', 'DeviceB-Room2', '0x506C616E7444617464', 1735690020000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690080000, true, 108, 10000000008, 37.3, 129.489, 'Device status returned to normal', 'DeviceB-Room2', '0x506C616E7444617463', 1735690080000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690140000, false, 109, 10000000009, 37.4, 129.589, 'Device operating normally', 'DeviceC-Room3', '0x506C616E7444617465', 1735690140000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690200000, true, 110, 10000000010, 37.5, 129.689, 'Device operating normally', 'DeviceC-Room3', '0x506C616E7444617465', 1735690200000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690260000, false, 111, 10000000011, 37.6, 129.789, 'Device voltage unstable alarm', 'DeviceC-Room3', '0x506C616E7444617466', 1735690260000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690320000, true, 112, 10000000012, 37.7, 129.889, 'Device status returned to normal', 'DeviceC-Room3', '0x506C616E7444617465', 1735690320000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690380000, false, 113, 10000000013, 37.8, 129.989, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690380000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690440000, true, 114, 10000000014, 37.9, 130.089, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690440000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690500000, false, 115, 10000000015, 38.0, 130.189, 'Device operating normally', 'DeviceD-Room4', '0x506C616E7444617467', 1735690500000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690560000, true, 116, 10000000016, 38.1, 130.289, 'Device signal interrupted alarm', 'DeviceD-Room4', '0x506C616E7444617468', 1735690560000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690620000, false, 117, 10000000017, 38.2, 130.389, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690620000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690680000, true, 118, 10000000018, 38.3, 130.489, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690680000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690740000, false, 119, 10000000019, 38.4, 130.589, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690740000, '2026-01-04')",
- "INSERT INTO fulltable VALUES (1735690790000, false, 119, 10000000019, 38.4, 130.589, 'Device operating normally', 'DeviceE-Room5', '0x506C616E7444617469', 1735690740000, '2026-01-04')"
- };
- for (const char* sql : insertStatements) {
- Execute(hDbc, sql);
- }
- std::cout << "fulltable setup complete. Begin to query." << std::endl;
- Query(hDbc);
- std::cout << "Query ok" << std::endl;
-
- // 4. Clean up resources
- SQLDisconnect(hDbc);
- SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
- SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
-
- return 0;
- }
- catch (...) {
- // Exception cleanup
- if (hDbc != SQL_NULL_HDBC) {
- SQLDisconnect(hDbc);
- SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
- }
- if (hEnv != SQL_NULL_HENV) {
- SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
- }
-
- std::cerr << "Unexpected error!" << std::endl;
- return 1;
- }
-}
-```
-
-### 4.4 PowerBI Example
-1. Open PowerBI Desktop and create a new project.
-2. Click "Home" → "Get Data" → "More..." → "ODBC" → Click the "Connect" button.
-3. Data Source Selection: In the pop-up window, select "Data Source Name (DSN)" and choose `Apache IoTDB DSN` from the dropdown.
-4. Advanced Configuration:
- * Click "Advanced options" and fill in the configuration in the "Connection string" input box (example):
- ```Plain
- server=127.0.0.1;port=6667;database=test;isTableModel=true;loglevel=4
- ```
- * Notes:
- * The `dsn` item is optional; filling it in or not does not affect the connection.
- * `loglevel` ranges from 0-4: Level 0 (ERROR) has the least logs, Level 4 (TRACE) has the most detailed logs; set as needed.
- * `server`/`database`/`dsn`/`loglevel` are case-insensitive (e.g., can be written as `Server/DATABASE`).
- * If relevant information is configured in the DSN, you do not need to fill in any configuration information; the Driver Manager will automatically use the configuration filled in the DSN.
-5. Authentication: Enter the username (default `root`) and password (default `root`), then click "Connect".
-6. Data Loading: Select the table to be called in the interface (e.g., fulltable/table1) , and then click "Load" to view the data.
-
-### 4.5 Excel Example
-1. Open Excel and create a blank workbook.
-2. Click the "Data" tab → "From Other Sources" → "From Data Connection Wizard".
-3. Data Source Selection: Select "ODBC DSN" → Next → Select `Apache IoTDB DSN` → Next.
-4. Connection Configuration:
- * The input process for connection string, username, and password is exactly the same as in PowerBI. Reference format for connection string:
- ```Plain
- server=127.0.0.1;port=6667;database=test;isTableModel=true;loglevel=4
- ```
- * If relevant information is configured in the DSN, you do not need to fill in any configuration information; the Driver Manager will automatically use the configuration filled in the DSN.
-5. Table Selection: Choose the database and table you wish to access (e.g., fulltable), then click Next.
-6. Save Connection: Customize settings for the data connection file name, connection description, etc., then click "Finish".
-7. Import Data: Select the location to import the data into the worksheet (e.g., cell A1 of "Existing Worksheet"), click "OK" to complete data loading.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/API/Programming-Python-Native-API_timecho.md b/src/UserGuide/Master/Table/API/Programming-Python-Native-API_timecho.md
deleted file mode 100644
index 4dd1fe4ff..000000000
--- a/src/UserGuide/Master/Table/API/Programming-Python-Native-API_timecho.md
+++ /dev/null
@@ -1,752 +0,0 @@
-
-# Python Native API
-
-IoTDB provides a Python native client driver and a session pool management mechanism. These tools allow developers to interact with IoTDB in a programmatic and efficient manner. Using the Python API, developers can encapsulate time-series data into objects (e.g., `Tablet`, `NumpyTablet`) and insert them into the database directly, without the need to manually construct SQL statements. For multi-threaded operations, the `TableSessionPool` is recommended to optimize resource utilization and enhance performance.
-
-## 1. Prerequisites
-
-To use the IoTDB Python API, install the required package using pip:
-
-```shell
-pip3 install apache-iotdb>=2.0
-```
-Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.
-
-## 2. Read and Write Operations
-
-### 2.1 TableSession
-
-`TableSession` is a core class in IoTDB, enabling users to interact with the IoTDB database. It provides methods to execute SQL statements, insert data, and manage database sessions.
-
-#### Method Overview
-
-| **Method Name** | **Descripton** | **Parameter Type** | **Return Type** |
-| --------------------------- | ----------------------------------------------------- | ------------------------------------ | ---------------- |
-| insert | Inserts data into the database. | tablet: `Union[Tablet, NumpyTablet]` | None |
-| execute_non_query_statement | Executes non-query SQL statements like DDL/DML. | sql: `str` | None |
-| execute_query_statement | Executes a query SQL statement and retrieves results. | sql: `str` | `SessionDataSet` |
-| close | Closes the session and releases resources. | None | None |
-
-**Since V2.0.8.2**, `SessionDataSet` provides methods for batch DataFrame retrieval to efficiently handle large-volume queries:
-
-```python
-# Batch DataFrame retrieval
-has_next = result.has_next_df()
-if has_next:
- df = result.next_df()
- # Process DataFrame
-```
-
-**Method Details:**
-- `has_next_df()`: Returns `True`/`False` indicating whether more data exists
-- `next_df()`: Returns a `DataFrame` or `None`. Each call returns `fetchSize` rows (default: 5000 rows, controlled by Session's `fetch_size` parameter):
- - If remaining data ≥ `fetchSize`: returns `fetchSize` rows
- - If remaining data < `fetchSize`: returns all remaining rows
- - If traversal completes: returns `None`
-- Session validates `fetchSize` at initialization: if ≤0, resets to 5000 and logs warning: `fetch_size xxx is illegal, use default fetch_size 5000`
-
-**Note:** Avoid mixing different traversal methods (e.g., combining `todf()` with `next_df()`), which may cause unexpected errors.
-
-**Since V2.0.8.3**, the Python client has supported `TSDataType.OBJECT` for Tablet batch write and Session value serialization. Query results are read via the `Field` object. The related interfaces are defined as follows:
-
-| Function Name | Description | Parameters | Return Value |
-|---------------|-------------|------------|--------------|
-| `encode_object_cell` | Encodes a single OBJECT cell into wire-format bytes | `is_eof: bool`, `offset: int`, `content: bytes` | `bytes`: `|[eof 1B]|[offset 8B BE]|[payload]|` |
-| `decode_object_cell` | Parses a wire-format cell back into `eof`, `offset`, and `payload` | `cell: bytes` (length ≥ 9) | `Tuple[bool, int, bytes]`: `(is_eof, offset, payload)` |
-| `Tablet.add_value_object` | Writes an OBJECT cell at the specified row and column (internally calls `encode_object_cell`) | `row_index: int`, `column_index: int`, `is_eof: bool`, `offset: int`, `content: bytes` | `None` |
-| `Tablet.add_value_object_by_name` | Same as above, locates column by name | `column_name: str`, `row_index: int`, `is_eof: bool`, `offset: int`, `content: bytes` | `None` |
-| `NumpyTablet.add_value_object` | Same semantics as `Tablet.add_value_object`, column data is stored as `ndarray` | Same as above (`row_index`, `column_index`, ...) | `None` |
-| `Field.get_object_value` | Converts the value to a Python value based on the **target type** | `data_type: TSDataType` | Depends on type: For OBJECT: `str` decoded from the entire `self.value` in UTF-8 (see Field.py) |
-| `Field.get_string_value` | Returns a string representation | None | `str`; For OBJECT: `self.value.decode("utf-8")` |
-| `Field.get_binary_value` | Gets the binary data of TEXT/STRING/BLOB | None | `bytes` or `None`; **Throws an error for OBJECT columns and should not be called** |
-
-
-#### Sample Code
-
-```Python
-class TableSession(object):
-def insert(self, tablet: Union[Tablet, NumpyTablet]):
- """
- Insert data into the database.
-
- Parameters:
- tablet (Tablet | NumpyTablet): The tablet containing the data to be inserted.
- Accepts either a `Tablet` or `NumpyTablet`.
-
- Raises:
- IoTDBConnectionException: If there is an issue with the database connection.
- """
- pass
-
-def execute_non_query_statement(self, sql: str):
- """
- Execute a non-query SQL statement.
-
- Parameters:
- sql (str): The SQL statement to execute. Typically used for commands
- such as INSERT, DELETE, or UPDATE.
-
- Raises:
- IoTDBConnectionException: If there is an issue with the database connection.
- """
- pass
-
-def execute_query_statement(self, sql: str, timeout_in_ms: int = 0) -> "SessionDataSet":
- """
- Execute a query SQL statement and return the result set.
-
- Parameters:
- sql (str): The SQL query to execute.
- timeout_in_ms (int, optional): Timeout for the query in milliseconds. Defaults to 0,
- which means no timeout.
-
- Returns:
- SessionDataSet: The result set of the query.
-
- Raises:
- IoTDBConnectionException: If there is an issue with the database connection.
- """
- pass
-
-def close(self):
- """
- Close the session and release resources.
-
- Raises:
- IoTDBConnectionException: If there is an issue closing the connection.
- """
- pass
-```
-
-### 2.2 TableSessionConfig
-
-`TableSessionConfig` is a configuration class that sets parameters for creating a `TableSession` instance, defining essential settings for connecting to the IoTDB database.
-
-#### Parameter Configuration
-
-| **Parameter** | **Description** | **Type** | **Default Value** |
-| ------------------ | ------------------------------------- | -------- |-----------------------------------------------|
-| node_urls | List of database node URLs. | `list` | `["localhost:6667"]` |
-| username | Username for the database connection. | `str` | `"root"` |
-| password | Password for the database connection. | `str` | `"TimechoDB@2021"`,before V2.0.6 it is root |
-| database | Target database to connect to. | `str` | `None` |
-| fetch_size | Number of rows to fetch per query. | `int` | `5000` |
-| time_zone | Default session time zone. | `str` | `Session.DEFAULT_ZONE_ID` |
-| enable_compression | Enable data compression. | `bool` | `False` |
-
-#### Sample Code
-
-```Python
-class TableSessionConfig(object):
- """
- Configuration class for a TableSession.
-
- This class defines various parameters for connecting to and interacting
- with the IoTDB tables.
- """
-
- def __init__(
- self,
- node_urls: list = None,
- username: str = Session.DEFAULT_USER,
- password: str = Session.DEFAULT_PASSWORD,
- database: str = None,
- fetch_size: int = 5000,
- time_zone: str = Session.DEFAULT_ZONE_ID,
- enable_compression: bool = False,
- ):
- """
- Initialize a TableSessionConfig object with the provided parameters.
-
- Parameters:
- node_urls (list, optional): A list of node URLs for the database connection.
- Defaults to ["localhost:6667"].
- username (str, optional): The username for the database connection.
- Defaults to "root".
- password (str, optional): The password for the database connection.
- Defaults to "TimechoDB@2021",before V2.0.6 it is root
- database (str, optional): The target database to connect to. Defaults to None.
- fetch_size (int, optional): The number of rows to fetch per query. Defaults to 5000.
- time_zone (str, optional): The default time zone for the session.
- Defaults to Session.DEFAULT_ZONE_ID.
- enable_compression (bool, optional): Whether to enable data compression.
- Defaults to False.
- """
-```
-
-**Note:** After using a `TableSession`, make sure to call the `close` method to release resources.
-
-## 3. Session Pool
-
-### 3.1 TableSessionPool
-
-`TableSessionPool` is a session pool management class designed for creating and managing `TableSession` instances. It provides functionality to retrieve sessions from the pool and close the pool when it is no longer needed.
-
-#### Method Overview
-
-| **Method Name** | **Description** | **Return Type** | **Exceptions** |
-| --------------- | ------------------------------------------------------ | --------------- | -------------- |
-| get_session | Retrieves a new `TableSession` instance from the pool. | `TableSession` | None |
-| close | Closes the session pool and releases all resources. | None | None |
-
-#### Sample Code
-
-```Python
-def get_session(self) -> TableSession:
- """
- Retrieve a new TableSession instance.
-
- Returns:
- TableSession: A new session object configured with the session pool.
-
- Notes:
- The session is initialized with the underlying session pool for managing
- connections. Ensure proper usage of the session's lifecycle.
- """
-
-def close(self):
- """
- Close the session pool and release all resources.
-
- This method closes the underlying session pool, ensuring that all
- resources associated with it are properly released.
-
- Notes:
- After calling this method, the session pool cannot be used to retrieve
- new sessions, and any attempt to do so may raise an exception.
- """
-```
-
-### 3.2 TableSessionPoolConfig
-
-`TableSessionPoolConfig` is a configuration class used to define parameters for initializing and managing a `TableSessionPool` instance. It specifies the settings needed for efficient session pool management in IoTDB.
-
-#### Parameter Configuration
-
-| **Paramater** | **Description** | **Type** | **Default Value** |
-| ------------------ | ------------------------------------------------------------ | -------- | -------------------------- |
-| node_urls | List of IoTDB cluster node URLs. | `list` | None |
-| max_pool_size | Maximum size of the session pool, i.e., the maximum number of sessions allowed in the pool. | `int` | `5` |
-| username | Username for the connection. | `str` | `Session.DEFAULT_USER` |
-| password | Password for the connection. | `str` | `Session.DEFAULT_PASSWORD` |
-| database | Target database to connect to. | `str` | None |
-| fetch_size | Fetch size for query results | `int` | `5000` |
-| time_zone | Timezone-related `ZoneId` | `str` | `Session.DEFAULT_ZONE_ID` |
-| enable_redirection | Whether to enable redirection. | `bool` | `False` |
-| enable_compression | Whether to enable data compression. | `bool` | `False` |
-| wait_timeout_in_ms | Sets the connection timeout in milliseconds. | `int` | `10000` |
-| max_retry | Maximum number of connection retry attempts. | `int` | `3` |
-
-#### Sample Code
-
-```Python
-class TableSessionPoolConfig(object):
- """
- Configuration class for a TableSessionPool.
-
- This class defines the parameters required to initialize and manage
- a session pool for interacting with the IoTDB database.
- """
- def __init__(
- self,
- node_urls: list = None,
- max_pool_size: int = 5,
- username: str = Session.DEFAULT_USER,
- password: str = Session.DEFAULT_PASSWORD,
- database: str = None,
- fetch_size: int = 5000,
- time_zone: str = Session.DEFAULT_ZONE_ID,
- enable_redirection: bool = False,
- enable_compression: bool = False,
- wait_timeout_in_ms: int = 10000,
- max_retry: int = 3,
- ):
- """
- Initialize a TableSessionPoolConfig object with the provided parameters.
-
- Parameters:
- node_urls (list, optional): A list of node URLs for the database connection.
- Defaults to None.
- max_pool_size (int, optional): The maximum number of sessions in the pool.
- Defaults to 5.
- username (str, optional): The username for the database connection.
- Defaults to Session.DEFAULT_USER.
- password (str, optional): The password for the database connection.
- Defaults to Session.DEFAULT_PASSWORD.
- database (str, optional): The target database to connect to. Defaults to None.
- fetch_size (int, optional): The number of rows to fetch per query. Defaults to 5000.
- time_zone (str, optional): The default time zone for the session pool.
- Defaults to Session.DEFAULT_ZONE_ID.
- enable_redirection (bool, optional): Whether to enable redirection.
- Defaults to False.
- enable_compression (bool, optional): Whether to enable data compression.
- Defaults to False.
- wait_timeout_in_ms (int, optional): The maximum time (in milliseconds) to wait for a session
- to become available. Defaults to 10000.
- max_retry (int, optional): The maximum number of retry attempts for operations. Defaults to 3.
-
- """
-```
-
-**Notes:**
-
-- Ensure that `TableSession` instances retrieved from the `TableSessionPool` are properly closed after use.
-- After closing the `TableSessionPool`, it will no longer be possible to retrieve new sessions.
-
-### 3.3 SSL Connection
-
-#### 3.3.1 Server Certificate Configuration
-
-In the `conf/iotdb-system.properties` configuration file, locate or add the following configuration items:
-
-```
-enable_thrift_ssl=true
-key_store_path=/path/to/your/server_keystore.jks
-key_store_pwd=your_keystore_password
-```
-
-#### 3.3.2 Configure Python Client Certificate
-
-- Set `use_ssl` to True to enable SSL.
-- Specify the client certificate path using the `ca_certs` parameter.
-
-```
-use_ssl = True
-ca_certs = "/path/to/your/server.crt" # 或 ca_certs = "/path/to/your//ca_cert.pem"
-```
-**Example Code: Using SSL to Connect to IoTDB**
-
-```Python
-# 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.
-#
-
-from iotdb.SessionPool import PoolConfig, SessionPool
-from iotdb.Session import Session
-
-ip = "127.0.0.1"
-port_ = "6667"
-username_ = "root"
-password_ = "TimechoDB@2021",before V2.0.6 it is root
-# Configure SSL enabled
-use_ssl = True
-# Configure certificate path
-ca_certs = "/path/server.crt"
-
-
-def get_data():
- session = Session(
- ip, port_, username_, password_, use_ssl=use_ssl, ca_certs=ca_certs
- )
- session.open(False)
- with session.execute_query_statement("SHOW DATABASES") as session_data_set:
- print(session_data_set.get_column_names())
- while session_data_set.has_next():
- print(session_data_set.next())
-
- session.close()
-
-
-def get_data2():
- pool_config = PoolConfig(
- host=ip,
- port=port_,
- user_name=username_,
- password=password_,
- fetch_size=1024,
- time_zone="UTC+8",
- max_retry=3,
- use_ssl=use_ssl,
- ca_certs=ca_certs,
- )
- max_pool_size = 5
- wait_timeout_in_ms = 3000
- session_pool = SessionPool(pool_config, max_pool_size, wait_timeout_in_ms)
- session = session_pool.get_session()
- with session.execute_query_statement("SHOW DATABASES") as session_data_set:
- print(session_data_set.get_column_names())
- while session_data_set.has_next():
- print(session_data_set.next())
- session_pool.put_back(session)
- session_pool.close()
-
-
-if __name__ == "__main__":
- df = get_data()
-```
-
-## 4. Sample Code
-
-**Session** Example: You can find the full example code at [Session Example](https://github.com/apache/iotdb/blob/master/iotdb-client/client-py/table_model_session_example.py).
-
-**Session Pool** Example: You can find the full example code at [SessionPool Example](https://github.com/apache/iotdb/blob/master/iotdb-client/client-py/table_model_session_pool_example.py).
-
-Here is an excerpt of the sample code:
-
-```Python
-# 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.
-#
-import threading
-
-import numpy as np
-
-from iotdb.table_session_pool import TableSessionPool, TableSessionPoolConfig
-from iotdb.utils.IoTDBConstants import TSDataType
-from iotdb.utils.NumpyTablet import NumpyTablet
-from iotdb.utils.Tablet import ColumnType, Tablet
-
-
-def prepare_data():
- print("create database")
- # Get a session from the pool
- session = session_pool.get_session()
- session.execute_non_query_statement("CREATE DATABASE IF NOT EXISTS db1")
- session.execute_non_query_statement('USE "db1"')
- session.execute_non_query_statement(
- "CREATE TABLE table0 (id1 string id, attr1 string attribute, "
- + "m1 double "
- + "field)"
- )
- session.execute_non_query_statement(
- "CREATE TABLE table1 (id1 string tag, attr1 string attribute, "
- + "m1 double "
- + "field)"
- )
-
- print("now the tables are:")
- # show result
- with session.execute_query_statement("SHOW TABLES") as res:
- while res.has_next():
- print(res.next())
-
- session.close()
-
-
-def insert_data(num: int):
- print("insert data for table" + str(num))
- # Get a session from the pool
- session = session_pool.get_session()
- column_names = [
- "id1",
- "attr1",
- "m1",
- ]
- data_types = [
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.DOUBLE,
- ]
- column_types = [ColumnType.TAG, ColumnType.ATTRIBUTE, ColumnType.FIELD]
- timestamps = []
- values = []
- for row in range(15):
- timestamps.append(row)
- values.append(["id:" + str(row), "attr:" + str(row), row * 1.0])
- tablet = Tablet(
- "table" + str(num), column_names, data_types, values, timestamps, column_types
- )
- session.insert(tablet)
- session.execute_non_query_statement("FLush")
-
- np_timestamps = np.arange(15, 30, dtype=np.dtype(">i8"))
- np_values = [
- np.array(["id:{}".format(i) for i in range(15, 30)]),
- np.array(["attr:{}".format(i) for i in range(15, 30)]),
- np.linspace(15.0, 29.0, num=15, dtype=TSDataType.DOUBLE.np_dtype()),
- ]
-
- np_tablet = NumpyTablet(
- "table" + str(num),
- column_names,
- data_types,
- np_values,
- np_timestamps,
- column_types=column_types,
- )
- session.insert(np_tablet)
- session.close()
-
-
-def query_data():
- # Get a session from the pool
- session = session_pool.get_session()
-
- print("get data from table0")
- with session.execute_query_statement("select * from table0") as res:
- while res.has_next():
- print(res.next())
-
- print("get data from table1")
- with session.execute_query_statement("select * from table1") as res:
- while res.has_next():
- print(res.next())
-
- # Querying Table Data Using Batch DataFrame (Recommended for Large Datasets)
- print("get data from table0 using batch DataFrame")
- with session.execute_query_statement("select * from table0") as res:
- while res.has_next_df():
- print(res.next_df())
-
- session.close()
-
-
-def delete_data():
- session = session_pool.get_session()
- session.execute_non_query_statement("drop database db1")
- print("data has been deleted. now the databases are:")
- with session.execute_query_statement("show databases") as res:
- while res.has_next():
- print(res.next())
- session.close()
-
-
-# Create a session pool
-username = "root"
-password = "TimechoDB@2021",before V2.0.6 it is root
-node_urls = ["127.0.0.1:6667", "127.0.0.1:6668", "127.0.0.1:6669"]
-fetch_size = 1024
-database = "db1"
-max_pool_size = 5
-wait_timeout_in_ms = 3000
-config = TableSessionPoolConfig(
- node_urls=node_urls,
- username=username,
- password=password,
- database=database,
- max_pool_size=max_pool_size,
- fetch_size=fetch_size,
- wait_timeout_in_ms=wait_timeout_in_ms,
-)
-session_pool = TableSessionPool(config)
-
-prepare_data()
-
-insert_thread1 = threading.Thread(target=insert_data, args=(0,))
-insert_thread2 = threading.Thread(target=insert_data, args=(1,))
-
-insert_thread1.start()
-insert_thread2.start()
-
-insert_thread1.join()
-insert_thread2.join()
-
-query_data()
-delete_data()
-session_pool.close()
-print("example is finished!")
-```
-
-**Object Type Usage Example**
-
-```python
-import os
-
-import numpy as np
-import pytest
-
-from iotdb.utils.IoTDBConstants import TSDataType
-from iotdb.utils.NumpyTablet import NumpyTablet
-from iotdb.utils.Tablet import Tablet, ColumnType
-from iotdb.utils.object_column import decode_object_cell
-
-
-def _require_thrift():
- pytest.importorskip("iotdb.thrift.common.ttypes")
-
-
-def _session_endpoint():
- host = os.environ.get("IOTDB_HOST", "127.0.0.1")
- port = int(os.environ.get("IOTDB_PORT", "6667"))
- return host, port
-
-
-@pytest.fixture(scope="module")
-def table_session():
- _require_thrift()
- from iotdb.Session import Session
- from iotdb.table_session import TableSession, TableSessionConfig
-
- host, port = _session_endpoint()
- cfg = TableSessionConfig(
- node_urls=[f"{host}:{port}"],
- username=os.environ.get("IOTDB_USER", Session.DEFAULT_USER),
- password=os.environ.get("IOTDB_PASSWORD", Session.DEFAULT_PASSWORD),
- )
- ts = TableSession(cfg)
- yield ts
- ts.close()
-
-
-def test_table_numpy_tablet_object_columns(table_session):
- """
- Table model: Tablet.add_value_object / add_value_object_by_name,
- NumpyTablet.add_value_object, insert + query Field + decode_object_cell;
- Also includes writing OBJECT in two segments at the same timestamp
- (first with is_eof=False/offset=0, then with is_eof=True/offset=length of the first segment),
- and verifies the complete concatenated bytes using read_object(f1).
- """
- db = "test_py_object_e2e"
- table = "obj_tbl"
- table_session.execute_non_query_statement(f"CREATE DATABASE IF NOT EXISTS {db}")
- table_session.execute_non_query_statement(f"USE {db}")
- table_session.execute_non_query_statement(f"DROP TABLE IF EXISTS {table}")
- table_session.execute_non_query_statement(
- f"CREATE TABLE {table}("
- "device STRING TAG, temp FLOAT FIELD, f1 OBJECT FIELD, f2 OBJECT FIELD)"
- )
-
- column_names = ["device", "temp", "f1", "f2"]
- data_types = [
- TSDataType.STRING,
- TSDataType.FLOAT,
- TSDataType.OBJECT,
- TSDataType.OBJECT,
- ]
- column_types = [
- ColumnType.TAG,
- ColumnType.FIELD,
- ColumnType.FIELD,
- ColumnType.FIELD,
- ]
- timestamps = [100, 200]
- values = [
- ["d1", 1.5, None, None],
- ["d1", 2.5, None, None],
- ]
-
- tablet = Tablet(
- table, column_names, data_types, values, timestamps, column_types
- )
- tablet.add_value_object(0, 2, True, 0, b"first-row-obj")
- # Single-segment write for the entire object: is_eof=True and offset=0;
- # Segmented sequential writes must pass server-side offset/length validation
- tablet.add_value_object_by_name("f2", 0, True, 0, b"seg")
- tablet.add_value_object(1, 2, True, 0, b"second-f1")
- tablet.add_value_object(1, 3, True, 0, b"second-f2")
- table_session.insert(tablet)
-
- ts_arr = np.array([300, 400], dtype=TSDataType.INT64.np_dtype())
- np_vals = [
- np.array(["d1", "d1"]),
- np.array([1.0, 2.0], dtype=np.float32),
- np.array([None, None], dtype=object),
- np.array([None, None], dtype=object),
- ]
- np_tab = NumpyTablet(
- table, column_names, data_types, np_vals, ts_arr, column_types=column_types
- )
- np_tab.add_value_object(0, 2, True, 0, b"np-r0-f1")
- np_tab.add_value_object(0, 3, True, 0, b"np-r0-f2")
- np_tab.add_value_object(1, 2, True, 0, b"np-r1-f1")
- np_tab.add_value_object(1, 3, True, 0, b"np-r1-f2")
- table_session.insert(np_tab)
-
- # Segmented OBJECT: first with is_eof=False (continue transmission),
- # then with is_eof=True (last segment); offset is the length of written bytes
- chunk0 = bytes((i % 256) for i in range(512))
- chunk1 = b"\xab" * 64
- expected_segmented = chunk0 + chunk1
- seg1 = Tablet(
- table,
- column_names,
- data_types,
- [["d1", 3.0, None, None]],
- [500],
- column_types,
- )
- seg1.add_value_object(0, 2, False, 0, chunk0)
- seg1.add_value_object(0, 3, True, 0, b"f2-seg")
- table_session.insert(seg1)
- seg2 = Tablet(
- table,
- column_names,
- data_types,
- [["d1", 3.0, None, None]],
- [500],
- column_types,
- )
- seg2.add_value_object(0, 2, True, 512, chunk1)
- seg2.add_value_object(0, 3, True, 0, b"f2-seg")
- table_session.insert(seg2)
-
- with table_session.execute_query_statement(
- f"SELECT read_object(f1) FROM {table} WHERE time = 500"
- ) as ds:
- assert ds.has_next()
- row = ds.next()
- blob = row.get_fields()[0].get_binary_value()
- assert blob == expected_segmented
- assert not ds.has_next()
-
- seen = 0
- with table_session.execute_query_statement(
- f"SELECT device, temp, f1, f2 FROM {table} ORDER BY time"
- ) as ds:
- while ds.has_next():
- row = ds.next()
- fields = row.get_fields()
- assert fields[0].get_object_value(TSDataType.STRING) == "d1"
- assert fields[1].get_object_value(TSDataType.FLOAT) is not None
- for j in (2, 3):
- raw = fields[j].value
- assert isinstance(raw, (bytes, bytearray))
- eof, off, body = decode_object_cell(bytes(raw))
- assert isinstance(eof, bool) and isinstance(off, int)
- assert isinstance(body, bytes)
- fields[j].get_string_value()
- fields[j].get_object_value(TSDataType.OBJECT)
- seen += 1
- assert seen == 5
-
-
-if __name__ == "__main__":
- pytest.main([__file__, "-v", "-rs"])
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/API/RestAPI-V1_timecho.md b/src/UserGuide/Master/Table/API/RestAPI-V1_timecho.md
deleted file mode 100644
index 21ce0768c..000000000
--- a/src/UserGuide/Master/Table/API/RestAPI-V1_timecho.md
+++ /dev/null
@@ -1,363 +0,0 @@
-
-# RestAPI V1
-
-IoTDB's RESTful service can be used for querying, writing, and management operations. It uses the OpenAPI standard to define interfaces and generate frameworks.
-
-Note: As of version V2.0.8.2, the TimechoDB installation package does not include the REST service JAR file by default. Please contact the Timecho team to obtain the corresponding JAR file before using this service, and place it in the `timechodb_home/lib` or `timechodb_home/ext/external_service` directory.
-
-## 1. Enabling RESTful Service
-
-The RESTful service is disabled by default. To enable it, locate the `conf/iotdb-system.properties` file in the IoTDB installation directory, set `enable_rest_service` to `true`, and then restart the datanode process.
-
-```Properties
-enable_rest_service=true
-```
-
-## 2. Authentication
-
-All RESTful APIs adopt **Basic Authentication**, except the health check interface `/ping`.
-All requests must carry the `Authorization` information in the request header.
-
-1. Authentication Format
-```
-Authorization: Basic
-```
-The `` is generated by directly Base64-encoding the string in the format `username:password`.
-Quick generation methods are shown below:
-
-* Linux / macOS
-```bash
-echo -n "your_username:your_password" | base64
-eg: echo -n "root:TimechoDB@2021" | base64
-```
-
-* Windows
-```powershell
-# PowerShell
-[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("username:password"))
-eg: [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("root:TimechoDB@2021"))
-```
-```cmd
-# CMD
-powershell "[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(\"username:password\"))"
-eg: powershell "[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(\"root:TimechoDB@2021\"))"
-```
-
-2. Authentication Example
-
-Default username: `root`, password: `TimechoDB@2021`
-
-- Concatenated string: `root:TimechoDB@2021`
-- Base64 encoded result: `cm9vdDpUaW1lY2hvREJAMjAyMQ==`
-- Final Header:
-```
-Authorization: Basic cm9vdDpUaW1lY2hvREJAMjAyMQ==
-```
-
-3. Error Description
-- Incorrect username or password: returns HTTP status code `801`
-```json
-{"code":801,"message":"WRONG_LOGIN_PASSWORD"}
-```
-
-- Missing `Authorization` configuration: returns HTTP status code `800`
-```json
-{"code":800,"message":"INIT_AUTH_ERROR"}
-```
-
-
-## 3. Interface Definitions
-
-### 3.1 Ping
-
-The `/ping` endpoint can be used for online service health checks.
-
-- Request Method: GET
-
-- Request Path: `http://ip:port/ping`
-
-- Example Request:
-
- ```Bash
- curl http://127.0.0.1:18080/ping
- ```
-
-- HTTP Status Codes:
-
- - `200`: The service is working normally and can accept external requests.
-
- - `503`: The service is experiencing issues and cannot accept external requests.
-
- | Parameter Name | Type | Description |
- | :------------- | :------ | :--------------- |
- | code | integer | Status Code |
- | message | string | Code Information |
-
-- Response Example:
-
- - When the HTTP status code is `200`:
-
- ```JSON
- { "code": 200, "message": "SUCCESS_STATUS"}
- ```
-
- - When the HTTP status code is `503`:
-
- ```JSON
- { "code": 500, "message": "thrift service is unavailable"}
- ```
-
-**Note**: The `/ping` endpoint does not require authentication.
-
-### 3.2 Query Interface
-
-- Request Path: `/rest/table/v1/query`
-
-- Request Method: POST
-
-- Request Format:
-
- - Header: `application/json`
-
- - Request Parameters:
-
- | Parameter Name | Type | Required | Description |
- | :------------- | :----- | :------- | :----------------------------------------------------------- |
- | `database` | string | Yes | Database name |
- | `sql` | string | Yes | SQL query |
- | `row_limit` | int | No | Maximum number of rows to return in a single query. If not set, the default value from the configuration file (`rest_query_default_row_size_limit`) is used. If the result set exceeds this limit, status code `411` is returned. |
-
-- Response Format:
-
- | Parameter Name | Type | Description |
- | :------------- | :---- | :----------------------------------------------------------- |
- | `column_names` | array | Column names |
- | `data_types` | array | Data types of each column |
- | `values` | array | A 2D array where the first dimension represents rows, and the second dimension represents columns. Each element corresponds to a column, with the same length as `column_names`. |
-
-- Example Request:
-
- ```Bash
- curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X POST --data '{"database":"test","sql":"select s1,s2,s3 from test_table"}' http://127.0.0.1:18080/rest/table/v1/query
- ```
-
-- Example Response:
-
- ```JSON
- {
- "column_names": [
- "s1",
- "s2",
- "s3"
- ],
- "data_types": [
- "STRING",
- "BOOLEAN",
- "INT32"
- ],
- "values": [
- [
- "a11",
- true,
- 2024
- ],
- [
- "a11",
- false,
- 2025
- ]
- ]
- }
- ```
-
-### 3.3 Non-Query Interface
-
-- Request Path: `/rest/table/v1/nonQuery`
-
-- Request Method: POST
-
-- Request Format:
-
- - Header: `application/json`
-
- - Request Parameters:
-
- | Parameter Name | Type | Required | Description |
- | :------------- | :----- | :------- | :------------ |
- | `sql` | string | Yes | SQL statement |
- | `database` | string | No | Database name |
-
-- Response Format:
-
- | Parameter Name | Type | Description |
- | :------------- | :------ | :---------- |
- | `code` | integer | Status code |
- | `message` | string | Message |
-
-- Example Requests:
-
- - Create a database:
-
- ```Bash
- curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X POST --data '{"sql":"create database test","database":""}' http://127.0.0.1:18080/rest/table/v1/nonQuery
- ```
-
- - Create a table `test_table` in the `test` database:
-
- ```Bash
- curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X POST --data '{"sql":"CREATE TABLE table1 (time TIMESTAMP TIME,region STRING TAG,plant_id STRING TAG,device_id STRING TAG,model_id STRING ATTRIBUTE,maintenance STRING ATTRIBUTE,temperature FLOAT FIELD,humidity FLOAT FIELD,status Boolean FIELD,arrival_time TIMESTAMP FIELD) WITH (TTL=31536000000)","database":"test"}' http://127.0.0.1:18080/rest/table/v1/nonQuery
- ```
-
-- Example Response:
-
- ```JSON
- {
- "code": 200,
- "message": "SUCCESS_STATUS"
- }
- ```
-
-### 3.4 Batch Write Interface
-
-- Request Path: `/rest/table/v1/insertTablet`
-
-- Request Method: POST
-
-- Request Format:
-
- - Header: `application/json`
-
- - Request Parameters:
-
- | Parameter Name | Type | Required | Description |
- | :------------------ | :----- | :------- | :----------------------------------------------------------- |
- | `database` | string | Yes | Database name |
- | `table` | string | Yes | Table name |
- | `column_names` | array | Yes | Column names |
- | `column_categories` | array | Yes | Column categories (`TAG`, `FIELD`, `ATTRIBUTE`) |
- | `data_types` | array | Yes | Data types |
- | `timestamps` | array | Yes | Timestamp column |
- | `values` | array | Yes | Value columns. Each column's values can be `null`. A 2D array where the first dimension corresponds to timestamps, and the second dimension corresponds to columns. |
-
-- Response Format:
-
- | Parameter Name | Type | Description |
- | :------------- | :------ | :---------- |
- | `code` | integer | Status code |
- | `message` | string | Message |
-
-- Example Request:
-
- ```Bash
- curl -H "Content-Type:application/json" -H "Authorization:Basic cm9vdDpyb290" -X POST --data '{"database":"test","column_categories":["TAG","FIELD","FIELD"],"timestamps":[1739702535000,1739789055000],"column_names":["s1","s2","s3"],"data_types":["STRING","BOOLEAN","INT32"],"values":[["a11",true,2024],["a11",false,2025]],"table":"test_table"}' http://127.0.0.1:18080/rest/table/v1/insertTablet
- ```
-
-- Example Response:
-
- ```JSON
- {
- "code": 200,
- "message": "SUCCESS_STATUS"
- }
- ```
-
-## 4. Configuration
-
-The configuration file is located in `iotdb-system.properties`.
-
-- Set `enable_rest_service` to `true` to enable the module, or `false` to disable it. The default value is `false`.
-
- ```Properties
- enable_rest_service=true
- ```
-
-- Only effective when `enable_rest_service=true`. Set `rest_service_port` to a number (1025~65535) to customize the REST service socket port. The default value is `18080`.
-
- ```Properties
- rest_service_port=18080
- ```
-
-- Set `enable_swagger` to `true` to enable Swagger for displaying REST interface information, or `false` to disable it. The default value is `false`.
-
- ```Properties
- enable_swagger=false
- ```
-
-- The maximum number of rows that can be returned in a single query. If the result set exceeds this limit, only the rows within the limit will be returned, and status code `411` will be returned.
-
- ```Properties
- rest_query_default_row_size_limit=10000
- ```
-
-- Expiration time for caching client login information (used to speed up user authentication, in seconds, default is 8 hours).
-
- ```Properties
- cache_expire_in_seconds=28800
- ```
-
-- Maximum number of users stored in the cache (default is 100).
-
- ```Properties
- cache_max_num=100
- ```
-
-- Initial cache capacity (default is 10).
-
- ```Properties
- cache_init_num=10
- ```
-
-- Whether to enable SSL configuration for the REST service. Set `enable_https` to `true` to enable it, or `false` to disable it. The default value is `false`.
-
- ```Properties
- enable_https=false
- ```
-
-- Path to the `keyStore` (optional).
-
- ```Properties
- key_store_path=
- ```
-
-- Password for the `keyStore` (optional).
-
- ```Properties
- key_store_pwd=
- ```
-
-- Path to the `trustStore` (optional).
-
- ```Properties
- trust_store_path=""
- ```
-
-- Password for the `trustStore` (optional).
-
- ```Properties
- trust_store_pwd=""
- ```
-
-- SSL timeout time, in seconds.
-
- ```Properties
- idle_timeout_in_seconds=5000
- ```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Background-knowledge/Cluster-Concept_timecho.md b/src/UserGuide/Master/Table/Background-knowledge/Cluster-Concept_timecho.md
deleted file mode 100644
index 7ebd77297..000000000
--- a/src/UserGuide/Master/Table/Background-knowledge/Cluster-Concept_timecho.md
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-# Common Concepts
-
-## 1. SQL Dialect Related Concepts
-
-### 1.1 sql_dialect
-
-IoTDB supports two time-series data mode (SQL dialects), both managing devices and measurement points:
-
-- **Tree** **Mode**: Organizes data in a hierarchical path structure, where each path represents a measurement point of a device.
-- **Table** **Mode**: Organizes data in a relational table format, where each table corresponds to a type of device.
-
-Each dialect comes with its own SQL syntax and query patterns tailored to its data mode.
-
-### 1.2 Schema
-
-Schema refers to the metadata structure of the database, which can follow either a tree or table format. It includes definitions such as measurement point names, data types, and storage configurations.
-
-### 1.3 Device
-
-A device corresponds to a physical device in a real-world scenario, typically associated with multiple measurement points.
-
-### 1.4 Timeseries
-
-Also referred to as: physical quantity, time series, timeline, point, signal, metric, measurement value, etc.
-A measurement point is a time series consisting of multiple data points arranged in ascending timestamp order. It typically represents a collection point that periodically gathers physical quantities from its environment.
-
-### 1.5 Encoding
-
-Encoding is a compression technique that represents data in binary form, improving storage efficiency. IoTDB supports multiple encoding methods for different types of data. For details, refer to: [Compression and Encoding ](../Technical-Insider/Encoding-and-Compression.md)。
-
-### 1.6 Compression
-
- After encoding, IoTDB applies additional compression techniques to further reduce data size and improve storage efficiency. Various compression algorithms are supported. For details, refer to: [ Compression and Encoding](../Technical-Insider/Encoding-and-Compression.md)。
-
-## 2. Distributed System Related Concepts
-
-IoTDB supports distributed deployments, typically in a 3C3D cluster model (3 ConfigNodes, 3 DataNodes), as illustrated below:
-
-
-
-### 2.1 Key Concepts
-
-- **Nodes** (*ConfigNode,* *DataNode**, AINode*)
-- **Regions** (*SchemaRegion, DataRegion*)
-- **Replica Groups**
-
-Below is an introduction to these concepts.
-
-
-### 2.2 Nodes
-
-An IoTDB cluster consists of three types of nodes, each with distinct responsibilities:
-
-- **ConfigNode (Management Node)** Manages cluster metadata, configuration, user permissions, schema, and partitioning. It also handles distributed scheduling and load balancing. All ConfigNodes are replicated for high availability.
-- **DataNode (Storage and Computation Node)** Handles client requests, stores data, and executes computations.
-- **AINode (Analytics Node)** Provides machine learning capabilities, allowing users to register pre-trained models and perform inference via SQL. It includes built-in time-series modes and common ML algorithms for tasks like prediction and anomaly detection.
-
-### 2.3 Data Partitioning
-
-IoTDB divides schema and data into **Regions**, which are managed by DataNodes.
-
-- **SchemaRegion**: Stores schema information (devices and measurement points). Regions with the same RegionID across different DataNodes serve as replicas.
-- **DataRegion**: Stores time-series data for a subset of devices over a specified time period. Regions with the same RegionID across different DataNodes act as replicas.
-
-For more details, see [Cluster Data Partitioning](../Technical-Insider/Cluster-data-partitioning.md)
-
-### 2.4 Replica Groups
-
-Replica groups ensure high availability by maintaining multiple copies of schema and data. The recommended replication configurations are:
-
-| **Category** | **Configuration Item** | **Standalone Recommended** | **Cluster Recommended** |
-| ------------ | ------------------------- | -------------------------- | ----------------------- |
-| Metadata | schema_replication_factor | 1 | 3 |
-| Data | data_replication_factor | 1 | 2 |
-
-
-## 3. Deployment Related Concepts
-
-IoTDB has two operation modes: standalone mode and cluster mode.
-
-### 3.1 Standalone Mode
-
-An IoTDB standalone instance includes 1 ConfigNode and 1 DataNode, i.e., 1C1D.
-
-- **Features**: Easy for developers to install and deploy, with low deployment and maintenance costs and convenient operations.
-- **Use Cases**: Scenarios with limited resources or low high-availability requirements, such as edge servers.
-- **Deployment Method**: [Stand-Alone Deployment](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md)
-
-
-### 3.2 Dual-Active Mode
-
-Dual-Active Deployment is a feature of TimechoDB, where two independent instances synchronize bidirectionally and can provide services simultaneously. If one instance stops and restarts, the other instance will resume data transfer from the breakpoint.
-
-> An IoTDB Dual-Active instance typically consists of 2 standalone nodes, i.e., 2 sets of 1C1D. Each instance can also be a cluster.
-
-- **Features**: The high-availability solution with the lowest resource consumption.
-- **Use Cases**: Scenarios with limited resources (only two servers) but requiring high availability.
-- **Deployment Method**: [Dual-Active Deployment](../Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md)
-
-### 3.3 Cluster Mode
-
-An IoTDB cluster instance consists of 3 ConfigNodes and no fewer than 3 DataNodes, typically 3 DataNodes, i.e., 3C3D. If some nodes fail, the remaining nodes can still provide services, ensuring high availability of the database. Performance can be improved by adding DataNodes.
-
-- **Features**: High availability, high scalability, and improved system performance by adding DataNodes.
-- **Use Cases**: Enterprise-level application scenarios requiring high availability and reliability.
-- **Deployment Method**: [Cluster Deployment](../Deployment-and-Maintenance/Cluster-Deployment_timecho.md)
-
-
-### 3.4 Feature Summary
-
-| **Dimension** | **Stand-Alone Mode** | **Dual-Active Mode** | **Cluster Mode** |
-| :-------------------------- | :------------------------------------------------------- | :------------------------------------------------------ | :------------------------------------------------------ |
-| Use Cases | Edge-side deployment, low high-availability requirements | High-availability services, disaster recovery scenarios | High-availability services, disaster recovery scenarios |
-| Number of Machines Required | 1 | 2 | ≥3 |
-| Security and Reliability | Cannot tolerate single-point failure | High, can tolerate single-point failure | High, can tolerate single-point failure |
-| Scalability | Can expand DataNodes to improve performance | Each instance can be scaled as needed | Can expand DataNodes to improve performance |
-| Performance | Can scale with the number of DataNodes | Same as one of the instances | Can scale with the number of DataNodes |
-
-- Notes: The deployment steps for Stand-Alone Mode and Cluster Mode are similar (adding ConfigNodes and DataNodes one by one), with differences only in the number of replicas and the minimum number of nodes required to provide services.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Background-knowledge/Data-Model-and-Terminology_timecho.md b/src/UserGuide/Master/Table/Background-knowledge/Data-Model-and-Terminology_timecho.md
deleted file mode 100644
index 88537b320..000000000
--- a/src/UserGuide/Master/Table/Background-knowledge/Data-Model-and-Terminology_timecho.md
+++ /dev/null
@@ -1,388 +0,0 @@
-
-
-# Modeling Scheme Design
-
-This section introduces how to transform time series data application scenarios into IoTDB time series mode.
-
-## 1. Time Series Data Mode
-
-Before designing an IoTDB data mode, it's essential to understand time series data and its underlying structure. For more details, refer to: [Time Series Data Mode](../Background-knowledge/Navigating_Time_Series_Data_timecho.md)
-
-## 2. Tree-Table Twin Mode in IoTDB
-
-IoTDB offers tree-table twin mode, each with its distinct characteristics as follows:
-
-**Tree Mode**: It manages data points as objects, with each data point corresponding to a time series. The data point names, segmented by dots, form a tree-like directory structure that corresponds one-to-one with the physical world, making the read and write operations on data points straightforward and intuitive.
-
-**Table Mode**: It is recommended to create a table for each type of device. The collection of physical quantities from devices of the same type shares certain commonalities (such as the collection of temperature and humidity physical quantities), allowing for flexible and rich data analysis.
-
-### 2.1 Mode Characteristics
-
-Tree-table twin mode syntaxes have their own applicable scenarios.
-
-The following table compares the tree mode and the table mode from various dimensions, including applicable scenarios and typical operations. Users can choose the appropriate mode based on their specific usage requirements to achieve efficient data storage and management.
-
-
-
- Dimension
- Tree Mode
- Table Mode
-
-
- Applicable Scenarios
- Measurements management, monitoring scenarios
- Device management, analysis scenarios
-
-
- Typical Operations
- Read and write operations by specifying data point paths
- Data filtering and analysis through tags
-
-
- Structural Characteristics
- Flexible addition and deletion, similar to a file system
- Template-based management, facilitating data governance
-
-
- Syntax Characteristics
- Concise and flexible
- Rich analysis
-
-
- Performance Comparison
- Similar
-
-
-
-**Notes:**
-
-- Both mode spaces can coexist within the same cluster instance. Each mode follows distinct syntax and database naming conventions, and they remain isolated by default.
-
-## 2.2 Model Selection
-
-IoTDB supports model selection through various client tools. The configuration methods for different clients are as follows:
-
-1. [Command-Line Interface (CLI)](../Tools-System/CLI_timecho.md)
-
-When connecting via CLI, specify the model using the `sql_dialect` parameter (default: tree model).
-
-```bash
-# Tree model
-start-cli.sh(bat)
-start-cli.sh(bat) -sql_dialect tree
-
-# Table model
-start-cli.sh(bat) -sql_dialect table
-```
-
-2. [SQL](../User-Manual/Maintenance-commands_timecho.md#_2-1-setting-the-connected-model)
-
-Use the `SET` statement to switch models in SQL:
-
-```sql
--- Tree model
-IoTDB> SET SQL_DIALECT=TREE
-
--- Table model
-IoTDB> SET SQL_DIALECT=TABLE
-```
-
-3. Application Programming Interfaces (APIs)
-
-For multi-language APIs, create connections via model-specific session/session pool classes. Examples:
-
-* [Java Native API](../API/Programming-Java-Native-API_timecho.md)
-
-```java
-// Tree model
-SessionPool sessionPool =
- new SessionPool.Builder()
- .nodeUrls(nodeUrls)
- .user(username)
- .password(password)
- .maxSize(3)
- .build();
-
-// Table model
-ITableSessionPool tableSessionPool =
- new TableSessionPoolBuilder()
- .nodeUrls(nodeUrls)
- .user(username)
- .password(password)
- .maxSize(1)
- .build();
-```
-
-* [Python Native API](../API/Programming-Python-Native-API_timecho.md)
-
-```python
-# Tree model
-session = Session(
- ip=ip,
- port=port,
- user=username,
- password=password,
- fetch_size=1024,
- zone_id="UTC+8",
- enable_redirection=True
-)
-
-# Table model
-config = TableSessionPoolConfig(
- node_urls=node_urls,
- username=username,
- password=password,
- database=database,
- max_pool_size=max_pool_size,
- fetch_size=fetch_size,
- wait_timeout_in_ms=wait_timeout_in_ms,
-)
-session_pool = TableSessionPool(config)
-```
-
-* [C++ Native API](../API/Programming-Cpp-Native-API_timecho.md)
-
-```cpp
-// Tree model
-session = new Session(hostip, port, username, password);
-
-// Table model
-session = (new TableSessionBuilder())
- ->host(ip)
- ->rpcPort(port)
- ->username(username)
- ->password(password)
- ->build();
-```
-
-* [Go Native API](../API/Programming-Go-Native-API_timecho.md)
-
-```go
-// Tree model
-config := &client.PoolConfig{
- Host: host,
- Port: port,
- UserName: user,
- Password: password,
-}
-sessionPool = client.NewSessionPool(config, 3, 60000, 60000, false)
-defer sessionPool.Close()
-
-// Table model
-config := &client.PoolConfig{
- Host: host,
- Port: port,
- UserName: user,
- Password: password,
- Database: dbname,
-}
-sessionPool := client.NewTableSessionPool(config, 3, 60000, 4000, false)
-defer sessionPool.Close()
-```
-
-* [C# Native API](../API/Programming-CSharp-Native-API_timecho.md)
-
-```csharp
-// Tree model
-var session_pool = new SessionPool(host, port, pool_size);
-
-// Table model
-var tableSessionPool = new TableSessionPool.Builder()
- .SetNodeUrls(nodeUrls)
- .SetUsername(username)
- .SetPassword(password)
- .SetFetchSize(1024)
- .Build();
-```
-
-* [JDBC](../API/Programming-JDBC_timecho.md)
-
-For the table model, include `sql_dialect=table` in the JDBC URL:
-
-```java
-// Tree model
-Class.forName("org.apache.iotdb.jdbc.IoTDBDriver");
-Connection connection = DriverManager.getConnection(
- "jdbc:iotdb://127.0.0.1:6667/", username, password);
-
-// Table model
-Class.forName("org.apache.iotdb.jdbc.IoTDBDriver");
-Connection connection = DriverManager.getConnection(
- "jdbc:iotdb://127.0.0.1:6667?sql_dialect=table", username, password);
-```
-
-## 2.3 Tree-to-Table Conversion
-
-IoTDB supports **tree-to-table conversion**, as shown in the figure below:
-
-
-
-This feature allows existing tree-model data to be transformed into table views. Users can then query the same dataset using either model. Detailed instructions are available in [Tree-to-Table View](../User-Manual/Tree-to-Table_timecho.md). **Note**: SQL statements for creating tree-to-table views **must be executed in table mode**.
-
-
-## 3. Application Scenarios
-
-The application scenarios mainly include three categories:
-
-- Scenario 1: Using the tree mode for data reading and writing.
-
-- Scenario 2: Using the table mode for data reading and writing.
-
-- Scenario 3: Sharing the same dataset, using the tree mode for data reading and writing, and the table mode for data analysis.
-
-### 3.1 Scenario 1: Tree Mode
-
-#### 3.1.1 Characteristics
-
-- Simple and intuitive, corresponding one-to-one with monitoring points in the physical world.
-
-- Flexible like a file system, allowing the design of any branch structure.
-
-- Suitable for industrial monitoring scenarios such as DCS and SCADA.
-
-#### 3.1.2 Basic Concepts
-
-| **Concept** | **Definition** |
-| ---------------------------- | ------------------------------------------------------------ |
-| **Database** | **Definition**: A path prefixed with `root.`. **Naming Recommendation**: Only include the next level node under `root`, such as `root.db`. **Quantity Recommendation**: The upper limit is related to memory. A single database can fully utilize machine resources; there is no need to create multiple databases for performance reasons. **Creation Method**: Recommended to create manually, but can also be created automatically when a time series is created (defaults to the next level node under `root`). |
-| **Time Series (Data Point)** | **Definition**: A path prefixed with the database path, segmented by `.`, and can contain any number of levels, such as `root.db.turbine.device1.metric1`. Each time series can have different data types. **Naming Recommendation**: Only include unique identifiers (similar to a composite primary key) in the path, generally not exceeding 10 levels. Typically, place tags with low cardinality (fewer distinct values) at the front to facilitate system compression of common prefixes. **Quantity Recommendation**: The total number of time series manageable by the cluster is related to total memory; refer to the resource recommendation section. There is no limit to the number of child nodes at any level. **Creation Method**: Can be created manually or automatically during data writing. |
-| **Device** | **Definition**: The second-to-last level is the device, such as `device1` in `root.db.turbine.device1.metric1`. **Creation Method**: Cannot create a device alone; it exists as time series are created. |
-
-#### 3.1.3 Mode Examples
-
-##### 3.1.3.1 How to mode when managing multiple types of devices?
-
-- If different types of devices in the scenario have different hierarchical paths and data point sets, create branches under the database node by device type. Each device type can have a different data point structure.
-
-
-
-
-
-##### 3.1.3.2 How to mode when there are no devices, only data points?
-
-- For example, in a monitoring system for a station, each data point has a unique number but does not correspond to any specific device.
-
-
-
-
-
-##### 3.1.3.3 How to mode when a device has both sub-devices and data points?
-
-- For example, in an energy storage scenario, each layer of the structure monitors its voltage and current. The following mode approach can be used.
-
-
-
-
-
-
-### 3.2 Scenario 2: Table Mode
-
-#### 3.2.1 Characteristics
-
-- Modes and manages device time series data using time series tables, facilitating analysis with standard SQL.
-
-- Suitable for device data analysis or migrating data from other databases to IoTDB.
-
-#### 3.2.2 Basic Concepts
-
-- Database: Can manage multiple types of devices.
-
-- Time Series Table: Corresponds to a type of device.
-
-| **Category** | **Definition** |
-| -------------------------------- | ------------------------------------------------------------ |
-| **Time Column (TIME)** | Each time series table must have a time column named `time`, with the data type `TIMESTAMP`. |
-| **Tag Column (TAG)** \| | Unique identifiers (composite primary key) for devices, ranging from 0 to multiple. Tag information cannot be modified or deleted but can be added. Recommended to arrange from coarse to fine granularity. |
-| **Data Point Column (FIELD)** \| | A device can collect 1 to multiple data points, with values changing over time. There is no limit to the number of data point columns; it can reach hundreds of thousands. |
-| **Attribute Column (ATTRIBUTE)** | Supplementary descriptions of devices, not changing over time. Device attribute information can range from 0 to multiple and can be updated or added. A small number of static attributes that may need modification can be stored here. |
-
-**Data Filtering Efficiency**: Time Column = Tag Column > Attribute Column > Data Point Column.
-
-#### 3.2.3 Mode Examples
-
-##### 3.2.3.1 How to mode when managing multiple types of devices?
-
-- Recommended to create a table for each type of device, with each table having different tags and data point sets.
-
-- Even if devices are related or have hierarchical relationships, it is recommended to create a table for each type of device.
-
-
-
-
-
-##### 3.2.3.2 How to mode when there are no device identifier columns or attribute columns?
-
-- There is no limit to the number of columns; it can reach hundreds of thousands.
-
-
-
-
-
-##### 3.2.3.3 How to mode when a device has both sub-devices and data points?
-
-- Each device has multiple sub-devices and data point information. It is recommended to create a table for each type of device for management.
-
-
-
-
-
-### 3.3 Scenario 3: Dual-Mode Integration
-
-#### 3.3.1 Characteristics
-
-- Ingeniously combines the advantages of the tree mode and table mode, sharing the same dataset, with flexible writing and rich querying.
-
-- During the data writing phase, the tree mode syntax is used, supporting flexible data access and expansion.
-
-- During the data analysis phase, the table mode syntax is used, allowing users to perform complex data analysis using standard SQL queries.
-
-#### 3.3.2 Mode Examples
-
-##### 3.3.2.1 How to mode when managing multiple types of devices?
-
-- Different types of devices in the scenario have different hierarchical paths and data point sets.
-
-- **Tree Mode**T: Create branches under the database node by device type, with each device type having a different data point structure.
-
-- **Table View**T: Create a table view for each type of device, with each table view having different tags and data point sets.
-
-
-
-
-
-##### 3.3.2.2 How to mode when there are no device identifier columns or attribute columns?
-
-- **Tree Mode**: Each data point has a unique number but does not correspond to any specific device.
-- **Table View**: Place all data points into a single table. There is no limit to the number of data point columns; it can reach hundreds of thousands. If data points have the same data type, they can be treated as the same type of device.
-
-
-
-
-
-##### 3.3.2.3 How to mode when a device has both sub-devices and data points?
-
-- **Tree Mode**: Mode each layer of the structure according to the monitoring points in the physical world.
-- **Table View**: Create multiple tables to manage each layer of structural information according to device classification.
-
-
-
-
diff --git a/src/UserGuide/Master/Table/Background-knowledge/Data-Type_timecho.md b/src/UserGuide/Master/Table/Background-knowledge/Data-Type_timecho.md
deleted file mode 100644
index d35af9d07..000000000
--- a/src/UserGuide/Master/Table/Background-knowledge/Data-Type_timecho.md
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
-# Data Type
-
-## 1. Basic Data Types
-
-IoTDB supports the following data types:
-
-- **BOOLEAN** (Boolean value)
-- **INT32** (32-bit integer)
-- **INT64** (64-bit integer)
-- **FLOAT** (Single-precision floating-point number)
-- **DOUBLE** (Double-precision floating-point number)
-- **TEXT** (Text data, suitable for long strings, Not recommended)
-- **STRING** (String data with additional statistical information for optimized queries)
-- **BLOB** (Large binary object)
-- **OBJECT** (Large Binary Object)
- > Supported since V2.0.8
-- **TIMESTAMP** (Timestamp, representing precise moments in time)
-- **DATE** (Date, storing only calendar date information)
-
-The difference between **STRING** and **TEXT**:
-
-- **STRING** stores text data and includes additional statistical information to optimize value-filtering queries.
-- **TEXT** is suitable for storing long text strings without additional query optimization.
-
-The differences between **OBJECT** and **BLOB** types are as follows:
-
-| | **OBJECT** | **BLOB** |
-|----------------------|-------------------------------------------------------------------------------------------------------------------------|--------------------------------------|
-| **Write Amplification** (Lower is better) | Low (Write amplification factor is always 1) | High (Write amplification factor = 2 + number of merges) |
-| **Space Amplification** (Lower is better) | Low (Merge & release on write) | High (Merge on read and release on compact) |
-| **Query Results** | When querying an OBJECT column by default, returns metadata like: `(Object) XX.XX KB`. Actual OBJECT data storage path: `${data_dir}/object_data`. Use `READ_OBJECT` function to retrieve raw content | Directly returns raw binary content |
-
-
-### 1.1 Data Type Compatibility
-
-If the written data type does not match the registered data type of a series:
-
-- **Incompatible types** → The system will issue an error.
-- **Compatible types** → The system will automatically convert the written data type to match the registered type.
-
-The compatibility of data types is shown in the table below:
-
-| Registered Data Type | Compatible Write Data Types |
-|:---------------------|:---------------------------------------|
-| BOOLEAN | BOOLEAN |
-| INT32 | INT32 |
-| INT64 | INT32, INT64, TIMESTAMP |
-| FLOAT | INT32, FLOAT |
-| DOUBLE | INT32, INT64, FLOAT, DOUBLE, TIMESTAMP |
-| TEXT | TEXT, STRING |
-| STRING | TEXT, STRING |
-| BLOB | TEXT, STRING, BLOB |
-| OBJECT | OBJECT |
-| TIMESTAMP | INT32, INT64, TIMESTAMP |
-| DATE | DATE |
-
-## 2. Timestamp Types
-
-A timestamp represents the moment when data is recorded. IoTDB supports two types:
-
-- **Absolute timestamps**: Directly specify a point in time.
-- **Relative timestamps**: Define time offsets from a reference point (e.g., `now()`).
-
-### 2.1 Absolute Timestamp
-
-IoTDB supports timestamps in two formats:
-
-1. **LONG**: Milliseconds since the Unix epoch (1970-01-01 00:00:00 UTC).
-2. **DATETIME**: Human-readable date-time strings. (including **DATETIME-INPUT** and **DATETIME-DISPLAY** subcategories).
-
-When entering a timestamp, users can use either a LONG value or a DATETIME string. Supported input formats include:
-
-
-
-**DATETIME-INPUT Type Supports Format**
-
-
-| format |
-| :--------------------------- |
-| yyyy-MM-dd HH:mm:ss |
-| yyyy/MM/dd HH:mm:ss |
-| yyyy.MM.dd HH:mm:ss |
-| yyyy-MM-dd HH:mm:ssZZ |
-| yyyy/MM/dd HH:mm:ssZZ |
-| yyyy.MM.dd HH:mm:ssZZ |
-| yyyy/MM/dd HH:mm:ss.SSS |
-| yyyy-MM-dd HH:mm:ss.SSS |
-| yyyy.MM.dd HH:mm:ss.SSS |
-| yyyy-MM-dd HH:mm:ss.SSSZZ |
-| yyyy/MM/dd HH:mm:ss.SSSZZ |
-| yyyy.MM.dd HH:mm:ss.SSSZZ |
-| ISO8601 standard time format |
-
-
-
-
-> **Note:** `ZZ` represents a time zone offset (e.g., `+0800` for Beijing Time, `-0500` for Eastern Standard Time).
-
-IoTDB supports timestamp display in **LONG** format or **DATETIME-DISPLAY** format, allowing users to customize time output.
-
-
-
-**Syntax for Custom Time Formats in DATETIME-DISPLAY**
-
-
-| Symbol | Meaning | Presentation | Examples |
-| :----: | :-------------------------: | :----------: | :--------------------------------: |
-| G | era | era | era |
-| C | century of era (>=0) | number | 20 |
-| Y | year of era (>=0) | year | 1996 |
-| | | | |
-| x | weekyear | year | 1996 |
-| w | week of weekyear | number | 27 |
-| e | day of week | number | 2 |
-| E | day of week | text | Tuesday; Tue |
-| | | | |
-| y | year | year | 1996 |
-| D | day of year | number | 189 |
-| M | month of year | month | July; Jul; 07 |
-| d | day of month | number | 10 |
-| | | | |
-| a | halfday of day | text | PM |
-| K | hour of halfday (0~11) | number | 0 |
-| h | clockhour of halfday (1~12) | number | 12 |
-| | | | |
-| H | hour of day (0~23) | number | 0 |
-| k | clockhour of day (1~24) | number | 24 |
-| m | minute of hour | number | 30 |
-| s | second of minute | number | 55 |
-| S | fraction of second | millis | 978 |
-| | | | |
-| z | time zone | text | Pacific Standard Time; PST |
-| Z | time zone offset/id | zone | -0800; -08:00; America/Los_Angeles |
-| | | | |
-| ' | escape for text | delimiter | |
-| '' | single quote | literal | ' |
-
-
-
-### 2.2 Relative Timestamp
-
-Relative timestamps allow specifying time offsets from **now()** or a **DATETIME** reference.
-
-The formal definition is:
-
-```Plain
-Duration = (Digit+ ('Y'|'MO'|'W'|'D'|'H'|'M'|'S'|'MS'|'US'|'NS'))+
-RelativeTime = (now() | DATETIME) ((+|-) Duration)+
-```
-
-
-
- **The syntax of the duration unit**
-
-
- | Symbol | Meaning | Presentation | Examples |
- | :----: | :---------: | :----------------------: | :------: |
- | y | year | 1y=365 days | 1y |
- | mo | month | 1mo=30 days | 1mo |
- | w | week | 1w=7 days | 1w |
- | d | day | 1d=1 day | 1d |
- | | | | |
- | h | hour | 1h=3600 seconds | 1h |
- | m | minute | 1m=60 seconds | 1m |
- | s | second | 1s=1 second | 1s |
- | | | | |
- | ms | millisecond | 1ms=1000_000 nanoseconds | 1ms |
- | us | microsecond | 1us=1000 nanoseconds | 1us |
- | ns | nanosecond | 1ns=1 nanosecond | 1ns |
-
-
-
-**Examples:**
-
-```Plain
-now() - 1d2h // A time 1 day and 2 hours earlier than the server time
-now() - 1w // A time 1 week earlier than the server time
-```
-
-> **Note:** There must be spaces on both sides of `+` and `-` operators.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Background-knowledge/Navigating_Time_Series_Data_timecho.md b/src/UserGuide/Master/Table/Background-knowledge/Navigating_Time_Series_Data_timecho.md
deleted file mode 100644
index c60e112d5..000000000
--- a/src/UserGuide/Master/Table/Background-knowledge/Navigating_Time_Series_Data_timecho.md
+++ /dev/null
@@ -1,51 +0,0 @@
-
-# Timeseries Data Model
-
-## 1. What is Time Series Data?
-
-In today's interconnected world, industries such as the Internet of Things (IoT) and manufacturing are undergoing rapid digital transformation. Sensors are widely deployed on various devices to collect real-time operational data. For example:
-
-- **Motors** record voltage and current.
-- **Wind Turbines** track blade speed, angular velocity, and power output.
-- **Vehicles** capture GPS coordinates, speed, and fuel consumption.
-- **Bridges** monitor vibration frequency, deflection, and displacement.
-
-Sensor data collection has permeated almost every industry, generating vast amounts of **time series data**.
-
-
-
-Each data collection point is referred to as a **measurement point** (also known as a physical quantity, time series, signal, metric, or measurement value). As time progresses, new data is continuously recorded for each measurement point, forming a **time series**. In tabular form, a time series consists of two columns: **timestamp** and **value**. When visualized, a time series appears as a trend chart over time, resembling an "electrocardiogram" of a device.
-
-
-
-Given the vast amount of time-series data generated by sensors, structuring this data effectively is essential for digital transformation across industries. Therefore, time-series data modeling is primarily centered around **devices** and **sensors**.
-
-## 2. Key Concepts in Time Series Data
-
-Several fundamental concepts define time-series data:
-
-| **Device** | Also known as an entity or equipment, a device is a real-world object that generates time-series data. In IoTDB, a device serves as a logical grouping of multiple time series. A device could be a physical machine, a measuring instrument, or a collection of sensors. Examples include: - Energy sector: A wind turbine, identified by parameters such as region, power station, line, model, and instance. - Manufacturing sector: A robotic arm, uniquely identified by an IoT platform-assigned ID. - Connected vehicles: A car, identified by its Vehicle Identification Number (VIN). - Monitoring systems: A CPU, identified by attributes such as data center, rack, hostname, and device type. |
-| ------------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| **FIELD** | Also referred to as a physical quantity, signal, metric, or status point, a field represents a specific measurable property recorded by a sensor. Each field corresponds to a measurement point that periodically captures environmental data. Examples include: - Energy and power: Current, voltage, wind speed, rotational speed. - Connected vehicles: Fuel level, vehicle speed, latitude, longitude. - Manufacturing: Temperature, humidity. Under the **table model**, the total number of **measurement points** is the sum of measurement points of all tables (measurement points per table = number of devices × number of field columns). For detailed statistics methods, please refer to [Metadata Query](../Basic-Concept/Table-Management_timecho.md#_1-7-metadata-query) |
-| **Data Point** | A data point consists of a timestamp and a value. The timestamp is typically stored as a long integer, while the value can be of various data types such as BOOLEAN, FLOAT, or INT32. In tabular format, a data point corresponds to a single row in a time-series dataset, while in graphical representation, it is a single point on a time-series chart. |
-| **Frequency** | The sampling frequency determines how often a sensor records data within a given timeframe. For example, if a temperature sensor records data once per second, its sampling frequency is 1Hz (1 sample per second). |
-| **TTL** | TTL (Time-to-Live) defines the retention period of stored data. Once the TTL expires, the data is automatically deleted. IoTDB allows different TTL values for different datasets, enabling automated, periodic data deletion. Proper TTL configuration helps: - Manage disk space efficiently, preventing storage overflow. - Maintain high query performance. - Reduce memory resource consumption. |
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Basic-Concept/Database-Management_timecho.md b/src/UserGuide/Master/Table/Basic-Concept/Database-Management_timecho.md
deleted file mode 100644
index 2ac3e52fd..000000000
--- a/src/UserGuide/Master/Table/Basic-Concept/Database-Management_timecho.md
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-# Database Management
-
-## 1. Database Management
-
-### 1.1 Create a Database
-
-This command is used to create a database.
-
-**Syntax:**
-
-```SQL
- CREATE DATABASE (IF NOT EXISTS)? (WITH properties)?
-```
-
-**Note: **
-
-1. ``: The name of the database, with the following characteristics:
- - Case-insensitive. After creation, it will be displayed uniformly in lowercase.
- - Can include commas (`,`), underscores (`_`), numbers, letters, and Chinese characters.
- - Maximum length is 64 characters.
- - Names with special characters or Chinese characters must be enclosed in double quotes (`""`).
-
-2. `WITH properties`: Property names are case-insensitive. For more details, refer to the case sensitivity rules [case-sensitivity](../SQL-Manual/Identifier.md#2-case-sensitivity)。Configurable properties include:
-
-| Property | Description | Default Value |
-| ----------------------- | ------------------------------------------------------------ | -------------------- |
-| TTL | Automatic data expiration time, in milliseconds | `INF` |
-| TIME_PARTITION_INTERVAL | Time partition interval for the database, in milliseconds | `604800000` (7 days) |
-| SCHEMA_REGION_GROUP_NUM | Number of metadata replica groups; generally does not require modification | `1` |
-| DATA_REGION_GROUP_NUM | Number of data replica groups; generally does not require modification | `2` |
-
-**Examples:**
-
-```SQL
-CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000);
-```
-
-### 1.2 Use a Database
-
-Specify the current database as the namespace for table operations.
-
-**Syntax:**
-
-```SQL
-USE
-```
-
-**Example:**
-
-```SQL
-USE database1;
-```
-
-### 1.3 View the Current Database
-
-Displays the name of the currently connected database. If no USE statement has been executed, the default is `null`.
-
-**Syntax:**
-
-```SQL
-SHOW CURRENT_DATABASE
-```
-
-**Example:**
-
-```SQL
-USE database1;
-SHOW CURRENT_DATABASE;
-```
-```shell
-+---------------+
-|CurrentDatabase|
-+---------------+
-| database1|
-+---------------+
-```
-
-
-### 1.4 View All Databases
-
-Displays all databases and their properties.
-
-**Syntax:**
-
-```SQL
-SHOW DATABASES (DETAILS)?
-```
-
-**Columns Explained:**
-
-
-| Column Name | Description |
-| ----------------------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| database | Name of the database. |
-| TTL | Data retention period. If TTL is specified when creating a database, it applies to all tables within the database. You can also set or update the TTL of individual tables using [create table](../Basic-Concept/Table-Management_timecho.md#11-create-a-table) 、[alter table](../Basic-Concept/Table-Management_timecho.md#14-update-tables) . |
-| SchemaReplicationFactor | Number of metadata replicas, ensuring metadata high availability. This can be configured in the `iotdb-system.properties` file under the `schema_replication_factor` property. |
-| DataReplicationFactor | Number of data replicas, ensuring data high availability. This can be configured in the `iotdb-system.properties` file under the `data_replication_factor` property. |
-| TimePartitionInterval | Time partition interval, determining how often data is grouped into directories on disk. The default is typically one week. |
-| Model | Returned when using the `DETAILS` option, showing the data model corresponding to each database (e.g., timeseries tree model or device table model). |
-
-**Examples:**
-
-```SQL
-SHOW DATABASES DETAILS;
-```
-```shell
-+------------------+-------+-----------------------+---------------------+---------------------+--------------------+------------------+
-| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|DataRegionGroupNum|
-+------------------+-------+-----------------------+---------------------+---------------------+--------------------+------------------+
-| database1| INF| 1| 1| 604800000| 1| 2|
-|information_schema| INF| null| null| null| null| null|
-+------------------+-------+-----------------------+---------------------+---------------------+--------------------+------------------+
-```
-
-### 1.5 Update a Database
-
-Used to modify some attributes in the database.
-
-**Syntax:**
-
-```SQL
-ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments
-```
-
-**Note:**
-
-1. The `ALTER DATABASE` operation currently only supports modifications to the database's `SCHEMA_REGION_GROUP_NUM`, `DATA_REGION_GROUP_NUM`, and `TTL` attributes.
-
-**Example:**
-
-```SQL
-ALTER DATABASE database1 SET PROPERTIES TTL=31536000000;
-```
-
-### 1.6 Delete a Database
-
-Deletes the specified database and all associated tables and data.
-
-**Syntax:**
-
-```SQL
-DROP DATABASE (IF EXISTS)?
-```
-
-**Note:**
-
-1. A database currently in use can still be dropped.
-2. Deleting a database removes all its tables and stored data.
-
-**Example:**
-
-```SQL
-DROP DATABASE IF EXISTS database1;
-```
diff --git a/src/UserGuide/Master/Table/Basic-Concept/Query-Data_timecho.md b/src/UserGuide/Master/Table/Basic-Concept/Query-Data_timecho.md
deleted file mode 100644
index 47976fb45..000000000
--- a/src/UserGuide/Master/Table/Basic-Concept/Query-Data_timecho.md
+++ /dev/null
@@ -1,590 +0,0 @@
-
-
-# Query Data
-
-## 1. Syntax Overview
-
-```SQL
-SELECT ⟨select_list⟩
- FROM ⟨tables⟩ | patternRecognition
- [WHERE ⟨condition⟩]
- [GROUP BY ⟨groups⟩]
- [HAVING ⟨group_filter⟩]
- [WINDOW windowDefinition (',' windowDefinition)*)]
- [FILL ⟨fill_methods⟩]
- [ORDER BY ⟨order_expression⟩]
- [OFFSET ⟨n⟩]
- [LIMIT ⟨n⟩];
-```
-
-The IoTDB table model query syntax supports the following clauses:
-
-- **SELECT Clause**: Specifies the columns to be included in the result. Details: [SELECT Clause](../SQL-Manual/Select-Clause_timecho.md)
-- **FROM Clause**: Indicates the data source for the query, which can be a single table, multiple tables joined using the `JOIN` clause, or a subquery. Details: [FROM & JOIN Clause](../SQL-Manual/From-Join-Clause.md)
-- **WHERE Clause**: Filters rows based on specific conditions. Logically executed immediately after the `FROM` clause. Details: [WHERE Clause](../SQL-Manual/Where-Clause.md)
-- **GROUP BY Clause**: Used for aggregating data, specifying the columns for grouping. Details: [GROUP BY Clause](../SQL-Manual/GroupBy-Clause.md)
-- **HAVING Clause**: Applied after the `GROUP BY` clause to filter grouped data, similar to `WHERE` but operates after grouping. Details:[HAVING Clause](../SQL-Manual/Having-Clause.md)
-- **FILL Clause**: Handles missing values in query results by specifying fill methods (e.g., previous non-null value or linear interpolation) for better visualization and analysis. Details:[FILL Clause](../SQL-Manual/Fill-Clause.md)
-- **ORDER BY Clause**: Sorts query results in ascending (`ASC`) or descending (`DESC`) order, with optional handling for null values (`NULLS FIRST` or `NULLS LAST`). Details: [ORDER BY Clause](../SQL-Manual/OrderBy-Clause.md)
-- **OFFSET Clause**: Specifies the starting position for the query result, skipping the first `OFFSET` rows. Often used with the `LIMIT` clause. Details: [LIMIT and OFFSET Clause](../SQL-Manual/Limit-Offset-Clause.md)
-- **LIMIT Clause**: Limits the number of rows in the query result. Typically used in conjunction with the `OFFSET` clause for pagination. Details: [LIMIT and OFFSET Clause](../SQL-Manual/Limit-Offset-Clause.md)
-
-## 2. Clause Execution Order
-
-
-
-
-## 3. Common Query Examples
-
-### 3.1 Sample Dataset
-
-The [Example Data page](../Reference/Sample-Data.md)page provides SQL statements to construct table schemas and insert data. By downloading and executing these statements in the IoTDB CLI, you can import the data into IoTDB. This data can be used to test and run the example SQL queries included in this documentation, allowing you to reproduce the described results.
-
-### 3.2 Basic Data Query
-
-**Example 1: Filter by Time**
-
-```SQL
-IoTDB> SELECT time, temperature, humidity
- FROM table1
- WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00;
-```
-
-**Result**:
-
-```SQL
-+-----------------------------+-----------+--------+
-| time|temperature|humidity|
-+-----------------------------+-----------+--------+
-|2024-11-28T08:00:00.000+08:00| 85.0| null|
-|2024-11-28T09:00:00.000+08:00| null| 40.9|
-|2024-11-28T10:00:00.000+08:00| 85.0| 35.2|
-|2024-11-28T11:00:00.000+08:00| 88.0| 45.1|
-|2024-11-27T16:38:00.000+08:00| null| 35.1|
-|2024-11-27T16:39:00.000+08:00| 85.0| 35.3|
-|2024-11-27T16:40:00.000+08:00| 85.0| null|
-|2024-11-27T16:41:00.000+08:00| 85.0| null|
-|2024-11-27T16:42:00.000+08:00| null| 35.2|
-|2024-11-27T16:43:00.000+08:00| null| null|
-|2024-11-27T16:44:00.000+08:00| null| null|
-+-----------------------------+-----------+--------+
-Total line number = 11
-It costs 0.075s
-```
-
-**Example 2: Filter by** **Value**
-
-```SQL
-IoTDB> SELECT time, temperature, humidity
- FROM table1
- WHERE temperature > 89.0;
-```
-
-**Result**:
-
-```SQL
-+-----------------------------+-----------+--------+
-| time|temperature|humidity|
-+-----------------------------+-----------+--------+
-|2024-11-29T18:30:00.000+08:00| 90.0| 35.4|
-|2024-11-26T13:37:00.000+08:00| 90.0| 35.1|
-|2024-11-26T13:38:00.000+08:00| 90.0| 35.1|
-|2024-11-30T09:30:00.000+08:00| 90.0| 35.2|
-|2024-11-30T14:30:00.000+08:00| 90.0| 34.8|
-+-----------------------------+-----------+--------+
-Total line number = 5
-It costs 0.156s
-```
-
-**Example 3: Filter by Attribute**
-
-```SQL
-IoTDB> SELECT time, temperature, humidity
- FROM table1
- WHERE model_id ='B';
-```
-
-**Result**:
-
-```SQL
-+-----------------------------+-----------+--------+
-| time|temperature|humidity|
-+-----------------------------+-----------+--------+
-|2024-11-27T16:38:00.000+08:00| null| 35.1|
-|2024-11-27T16:39:00.000+08:00| 85.0| 35.3|
-|2024-11-27T16:40:00.000+08:00| 85.0| null|
-|2024-11-27T16:41:00.000+08:00| 85.0| null|
-|2024-11-27T16:42:00.000+08:00| null| 35.2|
-|2024-11-27T16:43:00.000+08:00| null| null|
-|2024-11-27T16:44:00.000+08:00| null| null|
-+-----------------------------+-----------+--------+
-Total line number = 7
-It costs 0.106s
-```
-
-**Example 3:Multi device time aligned query**
-
-```SQL
-IoTDB> SELECT date_bin_gapfill(1d, TIME) AS a_time,
- device_id,
- AVG(temperature) AS avg_temp
- FROM table1
- WHERE TIME >= 2024-11-26 13:00:00
- AND TIME <= 2024-11-27 17:00:00
- GROUP BY 1, device_id FILL METHOD PREVIOUS;
-```
-
-**Result**:
-
-```SQL
-+-----------------------------+---------+--------+
-| a_time|device_id|avg_temp|
-+-----------------------------+---------+--------+
-|2024-11-26T08:00:00.000+08:00| 100| 90.0|
-|2024-11-27T08:00:00.000+08:00| 100| 90.0|
-|2024-11-26T08:00:00.000+08:00| 101| 90.0|
-|2024-11-27T08:00:00.000+08:00| 101| 85.0|
-+-----------------------------+---------+--------+
-Total line number = 4
-It costs 0.048s
-```
-
-### 3.3 Aggregation Query
-
-**Example**: Calculate the average, maximum, and minimum temperature for each `device_id` within a specific time range.
-
-```SQL
-IoTDB> SELECT device_id, AVG(temperature) as avg_temp, MAX(temperature) as max_temp, MIN(temperature) as min_temp
- FROM table1
- WHERE time >= 2024-11-26 00:00:00 AND time <= 2024-11-29 00:00:00
- GROUP BY device_id;
-```
-
-**Result**:
-
-```SQL
-+---------+--------+--------+--------+
-|device_id|avg_temp|max_temp|min_temp|
-+---------+--------+--------+--------+
-| 100| 87.6| 90.0| 85.0|
-| 101| 85.0| 85.0| 85.0|
-+---------+--------+--------+--------+
-Total line number = 2
-It costs 0.278s
-```
-
-### 3.4 Latest Point Query
-
-**Example**: Retrieve the latest record for each `device_id`, including the temperature value and the timestamp of the last record.
-
-```SQL
-IoTDB> SELECT device_id,last(time),last_by(temperature,time)
- FROM table1
- GROUP BY device_id;
-```
-
-**Result**:
-
-```SQL
-+---------+-----------------------------+-----+
-|device_id| _col1|_col2|
-+---------+-----------------------------+-----+
-| 100|2024-11-29T18:30:00.000+08:00| 90.0|
-| 101|2024-11-30T14:30:00.000+08:00| 90.0|
-+---------+-----------------------------+-----+
-Total line number = 2
-It costs 0.090s
-```
-
-### 3.5 Downsampling Query
-
-**Example**: Group data by day and calculate the average temperature using `date_bin_gapfill` function.
-
-```SQL
-IoTDB> SELECT device_id,date_bin(1d ,time) as day_time, AVG(temperature) as avg_temp
- FROM table1
- WHERE time >= 2024-11-26 00:00:00 AND time <= 2024-11-30 00:00:00
- GROUP BY device_id,date_bin(1d ,time);
-```
-
-**Result**:
-
-```SQL
-+---------+-----------------------------+--------+
-|device_id| day_time|avg_temp|
-+---------+-----------------------------+--------+
-| 100|2024-11-29T08:00:00.000+08:00| 90.0|
-| 100|2024-11-28T08:00:00.000+08:00| 86.0|
-| 100|2024-11-26T08:00:00.000+08:00| 90.0|
-| 101|2024-11-29T08:00:00.000+08:00| 85.0|
-| 101|2024-11-27T08:00:00.000+08:00| 85.0|
-+---------+-----------------------------+--------+
-Total line number = 5
-It costs 0.066s
-```
-### 3.6 Multi device downsampling alignment query
-
-#### 3.6.1 Sampling Frequency is the Same, but Time is Different
-
-**Table 1: Sampling Frequency: 1s**
-
-| Time | device_id | temperature |
-| ------------ | --------- | ----------- |
-| 00:00:00.001 | d1 | 90.0 |
-| 00:00:01.002 | d1 | 85.0 |
-| 00:00:02.101 | d1 | 85.0 |
-| 00:00:03.201 | d1 | null |
-| 00:00:04.105 | d1 | 90.0 |
-| 00:00:05.023 | d1 | 85.0 |
-| 00:00:06.129 | d1 | 90.0 |
-
-**Table 2: Sampling Frequency: 1s**
-
-| Time | device_id | humidity |
-| ------------ | --------- | -------- |
-| 00:00:00.003 | d1 | 35.1 |
-| 00:00:01.012 | d1 | 37.2 |
-| 00:00:02.031 | d1 | null |
-| 00:00:03.134 | d1 | 35.2 |
-| 00:00:04.201 | d1 | 38.2 |
-| 00:00:05.091 | d1 | 35.4 |
-| 00:00:06.231 | d1 | 35.1 |
-
-**Example: Querying the downsampled data of table1:**
-
-```SQL
-IoTDB> SELECT date_bin_gapfill(1s, TIME) AS a_time,
- first(temperature) AS a_value
- FROM table1
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+
-| a_time|a_value|
-+-----------------------------+-------+
-|2025-05-13T00:00:00.000+08:00| 90.0|
-|2025-05-13T00:00:01.000+08:00| 85.0|
-|2025-05-13T00:00:02.000+08:00| 85.0|
-|2025-05-13T00:00:03.000+08:00| 85.0|
-|2025-05-13T00:00:04.000+08:00| 90.0|
-|2025-05-13T00:00:05.000+08:00| 85.0|
-|2025-05-13T00:00:06.000+08:00| 90.0|
-+-----------------------------+-------+
-```
-
-**Example: Querying the downsampled data of table2:**
-
-```SQL
-IoTDB> SELECT date_bin_gapfill(1s, TIME) AS b_time,
- first(humidity) AS b_value
- FROM table2
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+
-| b_time|b_value|
-+-----------------------------+-------+
-|2025-05-13T00:00:00.000+08:00| 35.1|
-|2025-05-13T00:00:01.000+08:00| 37.2|
-|2025-05-13T00:00:02.000+08:00| 37.2|
-|2025-05-13T00:00:03.000+08:00| 35.2|
-|2025-05-13T00:00:04.000+08:00| 38.2|
-|2025-05-13T00:00:05.000+08:00| 35.4|
-|2025-05-13T00:00:06.000+08:00| 35.1|
-+-----------------------------+-------+
-```
-
-**Example: Aligning multiple sequences by integer time:**
-
-```SQL
-IoTDB> SELECT time,
- a_value,
- b_value
- FROM
- (SELECT date_bin_gapfill(1s, TIME) AS time,
- first(temperature) AS a_value
- FROM table1
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS) A
- JOIN
- (SELECT date_bin_gapfill(1s, TIME) AS time,
- first(humidity) AS b_value
- FROM table2
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS) B
- USING (time)
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+-------+
-| time|a_value|b_value|
-+-----------------------------+-------+-------+
-|2025-05-13T00:00:00.000+08:00| 90.0| 35.1|
-|2025-05-13T00:00:01.000+08:00| 85.0| 37.2|
-|2025-05-13T00:00:02.000+08:00| 85.0| 37.2|
-|2025-05-13T00:00:03.000+08:00| 85.0| 35.2|
-|2025-05-13T00:00:04.000+08:00| 90.0| 38.2|
-|2025-05-13T00:00:05.000+08:00| 85.0| 35.4|
-|2025-05-13T00:00:06.000+08:00| 90.0| 35.1|
-+-----------------------------+-------+-------+
-```
-
-- **Retaining NULL Values**: When NULL values have special significance or when you wish to preserve the null values in the data, you can choose to omit FILL METHOD PREVIOUS to avoid filling in the gaps.
-**Example:**
-
-```SQL
-IoTDB> SELECT time,
- a_value,
- b_value
- FROM
- (SELECT date_bin_gapfill(1s, TIME) AS time,
- first(temperature) AS a_value
- FROM table1
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1) A
- JOIN
- (SELECT date_bin_gapfill(1s, TIME) AS time,
- first(humidity) AS b_value
- FROM table2
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1) B
- USING (time)
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+-------+
-| time|a_value|b_value|
-+-----------------------------+-------+-------+
-|2025-05-13T00:00:00.000+08:00| 90.0| 35.1|
-|2025-05-13T00:00:01.000+08:00| 85.0| 37.2|
-|2025-05-13T00:00:02.000+08:00| 85.0| null|
-|2025-05-13T00:00:03.000+08:00| null| 35.2|
-|2025-05-13T00:00:04.000+08:00| 90.0| 38.2|
-|2025-05-13T00:00:05.000+08:00| 85.0| 35.4|
-|2025-05-13T00:00:06.000+08:00| 90.0| 35.1|
-+-----------------------------+-------+-------+
-```
-#### 3.6.2 Different Sampling Frequencies, Different Times
-
-**Table 1: Sampling Frequency: 1s**
-
-| Time | device_id | temperature |
-| ------------ | --------- | ----------- |
-| 00:00:00.001 | d1 | 90.0 |
-| 00:00:01.002 | d1 | 85.0 |
-| 00:00:02.101 | d1 | 85.0 |
-| 00:00:03.201 | d1 | null |
-| 00:00:04.105 | d1 | 90.0 |
-| 00:00:05.023 | d1 | 85.0 |
-| 00:00:06.129 | d1 | 90.0 |
-
-**Table 3: Sampling Frequency: 2s**
-
-| Time | device_id | humidity |
-| ------------ | --------- | -------- |
-| 00:00:00.005 | d1 | 35.1 |
-| 00:00:02.106 | d1 | 37.2 |
-| 00:00:04.187 | d1 | null |
-| 00:00:06.156 | d1 | 35.1 |
-
-**Example: Querying the downsampled data of table1:**
-
-```SQL
-IoTDB> SELECT date_bin_gapfill(1s, TIME) AS a_time,
- first(temperature) AS a_value
- FROM table1
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+
-| a_time|a_value|
-+-----------------------------+-------+
-|2025-05-13T00:00:00.000+08:00| 90.0|
-|2025-05-13T00:00:01.000+08:00| 85.0|
-|2025-05-13T00:00:02.000+08:00| 85.0|
-|2025-05-13T00:00:03.000+08:00| 85.0|
-|2025-05-13T00:00:04.000+08:00| 90.0|
-|2025-05-13T00:00:05.000+08:00| 85.0|
-|2025-05-13T00:00:06.000+08:00| 90.0|
-+-----------------------------+-------+
-```
-**Example: Querying the downsampled data of table3:**
-
-```SQL
-IoTDB> SELECT date_bin_gapfill(1s, TIME) AS c_time,
- first(humidity) AS c_value
- FROM table3
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+
-| c_time|c_value|
-+-----------------------------+-------+
-|2025-05-13T00:00:00.000+08:00| 35.1|
-|2025-05-13T00:00:01.000+08:00| 35.1|
-|2025-05-13T00:00:02.000+08:00| 37.2|
-|2025-05-13T00:00:03.000+08:00| 37.2|
-|2025-05-13T00:00:04.000+08:00| 37.2|
-|2025-05-13T00:00:05.000+08:00| 37.2|
-|2025-05-13T00:00:06.000+08:00| 35.1|
-+-----------------------------+-------+
-```
-
-**Example: Aligning multiple sequences by the higher sampling frequency:**
-
-```SQL
-IoTDB> SELECT time,
- a_value,
- c_value
- FROM
- (SELECT date_bin_gapfill(1s, TIME) AS time,
- first(temperature) AS a_value
- FROM table1
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS) A
- JOIN
- (SELECT date_bin_gapfill(1s, TIME) AS time,
- first(humidity) AS c_value
- FROM table3
- WHERE device_id = 'd1'
- AND TIME >= 2025-05-13 00:00:00.000
- AND TIME <= 2025-05-13 00:00:07.000
- GROUP BY 1 FILL METHOD PREVIOUS) C
- USING (time)
-```
-
-**Result:**
-
-```SQL
-+-----------------------------+-------+-------+
-| time|a_value|c_value|
-+-----------------------------+-------+-------+
-|2025-05-13T00:00:00.000+08:00| 90.0| 35.1|
-|2025-05-13T00:00:01.000+08:00| 85.0| 35.1|
-|2025-05-13T00:00:02.000+08:00| 85.0| 37.2|
-|2025-05-13T00:00:03.000+08:00| 85.0| 37.2|
-|2025-05-13T00:00:04.000+08:00| 90.0| 37.2|
-|2025-05-13T00:00:05.000+08:00| 85.0| 37.2|
-|2025-05-13T00:00:06.000+08:00| 90.0| 35.1|
-+-----------------------------+-------+-------+
-```
-
-### 3.7 Missing Data Filling
-
-**Example**: Query the records within a specified time range where `device_id` is '100'. If there are missing data points, fill them using the previous non-null value.
-
-```SQL
-IoTDB> SELECT time, temperature, humidity
- FROM table1
- WHERE time >= 2024-11-26 00:00:00 and time <= 2024-11-30 11:00:00
- AND region='East' AND plant_id='1001' AND device_id='101'
- FILL METHOD PREVIOUS;
-```
-
-**Result**:
-
-```SQL
-+-----------------------------+-----------+--------+
-| time|temperature|humidity|
-+-----------------------------+-----------+--------+
-|2024-11-27T16:38:00.000+08:00| null| 35.1|
-|2024-11-27T16:39:00.000+08:00| 85.0| 35.3|
-|2024-11-27T16:40:00.000+08:00| 85.0| 35.3|
-|2024-11-27T16:41:00.000+08:00| 85.0| 35.3|
-|2024-11-27T16:42:00.000+08:00| 85.0| 35.2|
-|2024-11-27T16:43:00.000+08:00| 85.0| 35.2|
-|2024-11-27T16:44:00.000+08:00| 85.0| 35.2|
-+-----------------------------+-----------+--------+
-Total line number = 7
-It costs 0.101s
-```
-
-### 3.8 Sorting & Pagination
-
-**Example**: Query records from the table, sorting by `humidity` in descending order and placing null values (NULL) at the end. Skip the first 2 rows and return the next 8 rows.
-
-```SQL
-IoTDB> SELECT time, temperature, humidity
- FROM table1
- ORDER BY humidity desc NULLS LAST
- OFFSET 2
- LIMIT 10;
-```
-
-**Result**:
-
-```SQL
-+-----------------------------+-----------+--------+
-| time|temperature|humidity|
-+-----------------------------+-----------+--------+
-|2024-11-28T09:00:00.000+08:00| null| 40.9|
-|2024-11-29T18:30:00.000+08:00| 90.0| 35.4|
-|2024-11-27T16:39:00.000+08:00| 85.0| 35.3|
-|2024-11-28T10:00:00.000+08:00| 85.0| 35.2|
-|2024-11-30T09:30:00.000+08:00| 90.0| 35.2|
-|2024-11-27T16:42:00.000+08:00| null| 35.2|
-|2024-11-26T13:38:00.000+08:00| 90.0| 35.1|
-|2024-11-26T13:37:00.000+08:00| 90.0| 35.1|
-|2024-11-27T16:38:00.000+08:00| null| 35.1|
-|2024-11-30T14:30:00.000+08:00| 90.0| 34.8|
-+-----------------------------+-----------+--------+
-Total line number = 10
-It costs 0.093s
-```
diff --git a/src/UserGuide/Master/Table/Basic-Concept/TTL-Delete-Data_timecho.md b/src/UserGuide/Master/Table/Basic-Concept/TTL-Delete-Data_timecho.md
deleted file mode 100644
index de696fa1d..000000000
--- a/src/UserGuide/Master/Table/Basic-Concept/TTL-Delete-Data_timecho.md
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-# TTL Delete Data
-
-## 1. Overview
-
-Time-to-Live (TTL) is a mechanism for defining the lifespan of data in a database. In IoTDB, TTL allows setting table-level expiration policies, enabling the system to automatically delete outdated data periodically. This helps manage disk space efficiently, maintain high query performance, and reduce memory usage.
-
-TTL values are specified in milliseconds, and once data exceeds its defined lifespan, it becomes unavailable for queries and cannot be written to. However, the physical deletion of expired data occurs later during the compaction process. Note that changes to TTL settings can briefly impact the accessibility of data.
-
-**Notes:**
-
-1. TTL defines the expiration time of data in milliseconds, independent of the time precision configuration file.
-2. Modifying TTL settings can cause temporary variations in data accessibility.
-3. The system eventually removes expired data, though this process may involve some delay.。
-4. The TTL expiration check is based on the data point timestamp, not the write time.
-
-## 2. Set TTL
-
-In the table model, IoTDB’s TTL operates at the granularity of individual tables. You can set TTL directly on a table or at the database level. When TTL is configured at the database level, it serves as the default for new tables created within the database. However, each table can still have its own independent TTL settings.
-
-**Note:** Modifying the database-level TTL does not retroactively affect the TTL settings of existing tables.
-
-### 2.1 Set TTL for Tables
-
-If TTL is specified when creating a table using SQL, the table’s TTL takes precedence. Refer to [Table-Management](../Basic-Concept/Table-Management_timecho.md)for details.
-
-Example 1: Setting TTL during table creation:
-
-```SQL
-CREATE TABLE test3 ("site" string id, "temperature" int32) with (TTL=3600);
-```
-
-Example 2: Changing TTL for an existing table:
-
-```SQL
-ALTER TABLE tableB SET PROPERTIES TTL=3600;
-```
-
-**Example 3:** If TTL is not specified or set to the default value, it will inherit the database's TTL. By default, the database TTL is `'INF'` (infinite):
-
-```SQL
-CREATE TABLE test3 ("site" string id, "temperature" int32) with (TTL=DEFAULT);
-CREATE TABLE test3 ("site" string id, "temperature" int32);
-ALTER TABLE tableB set properties TTL=DEFAULT;
-```
-
-### 2.2 Set TTL for Databases
-
-Tables without explicit TTL settings inherit the TTL of their database. Refer to [Database-Management](../Basic-Concept/Database-Management_timecho.md)for details.
-
-Example 4: A database with TTL=3600000 creates tables inheriting this TTL:
-
-```SQL
-CREATE DATABASE db WITH (ttl=3600000);
-use db;
-CREATE TABLE test3 ("site" string id, "temperature" int32);
-```
-
-Example 5: A database without a TTL setting creates tables without TTL:
-
-```SQL
-CREATE DATABASE db;
-use db;
-CREATE TABLE test3 ("site" string id, "temperature" int32);
-```
-
-Example 6: Setting a table with no TTL explicitly (TTL=INF) in a database with a configured TTL:
-
-```SQL
-CREATE DATABASE db WITH (ttl=3600000);
-use db;
-CREATE TABLE test3 ("site" string id, "temperature" int32) with (ttl='INF');
-```
-
-## 3. Remove TTL
-
-To cancel a TTL setting, modify the table's TTL to 'INF'. Note that IoTDB does not currently support modifying the TTL of a database.
-
-```SQL
-ALTER TABLE tableB set properties TTL='INF';
-```
-
-## 4. View TTL Information
-
-Use the SHOW DATABASES and SHOW TABLES commands to view TTL details for databases and tables. Refer to [Database-Management](../Basic-Concept/Database-Management_timecho.md)、 [Table-Management](../Basic-Concept/Table-Management_timecho.md)for details.
-
-> Note: TTL settings in tree-model will also be shown.
-
-Example Output:
-
-```SQL
-IoTDB> show databases;
-+---------+-------+-----------------------+---------------------+---------------------+
-| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|
-+---------+-------+-----------------------+---------------------+---------------------+
-|test_prop| 300| 1| 3| 100000|
-| test2| 300| 1| 1| 604800000|
-+---------+-------+-----------------------+---------------------+---------------------+
-
-IoTDB> show databases details;
-+---------+-------+-----------------------+---------------------+---------------------+-----+
-| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|Model|
-+---------+-------+-----------------------+---------------------+---------------------+-----+
-|test_prop| 300| 1| 3| 100000|TABLE|
-| test2| 300| 1| 1| 604800000| TREE|
-+---------+-------+-----------------------+---------------------+---------------------+-----+
-IoTDB> show tables;
-+---------+-------+
-|TableName|TTL(ms)|
-+---------+-------+
-| grass| 1000|
-| bamboo| 300|
-| flower| INF|
-+---------+-------+
-
-IoTDB> show tables details;
-+---------+-------+----------+
-|TableName|TTL(ms)| Status|
-+---------+-------+----------+
-| bean| 300|PRE_CREATE|
-| grass| 1000| USING|
-| bamboo| 300| USING|
-| flower| INF| USING|
-+---------+-------+----------+
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Basic-Concept/Table-Management_timecho.md b/src/UserGuide/Master/Table/Basic-Concept/Table-Management_timecho.md
deleted file mode 100644
index f2e1bb2cd..000000000
--- a/src/UserGuide/Master/Table/Basic-Concept/Table-Management_timecho.md
+++ /dev/null
@@ -1,321 +0,0 @@
-
-
-# Table Management
-
-Before starting to use the table management functionality, we recommend familiarizing yourself with the following related background knowledge for a better understanding and application of the table management features:
-* [Timeseries Data Model](../Background-knowledge/Navigating_Time_Series_Data_timecho.md): Understand the basic concepts and characteristics of time series data to establish a foundation for data modeling.
-* [Modeling Scheme Design](../Background-knowledge/Data-Model-and-Terminology_timecho.md): Master the IoTDB time series model and its applicable scenarios to provide a design basis for table management.
-
-## 1. Table Management
-
-### 1.1 Create a Table
-
-#### 1.1.1 Manually create a table with CREATE
-
-Manually create a table within the current or specified database.The format is "database name. table name".
-
-**Syntax:**
-
-```SQL
-createTableStatement
- : CREATE TABLE (IF NOT EXISTS)? qualifiedName
- '(' (columnDefinition (',' columnDefinition)*)? ')'
- charsetDesc?
- comment?
- (WITH properties)?
- ;
-
-charsetDesc
- : DEFAULT? (CHAR SET | CHARSET | CHARACTER SET) EQ? identifierOrString
- ;
-
-columnDefinition
- : identifier columnCategory=(TAG | ATTRIBUTE | TIME) charsetName? comment?
- | identifier type (columnCategory=(TAG | ATTRIBUTE | TIME | FIELD))? charsetName? comment?
- ;
-
-charsetName
- : CHAR SET identifier
- | CHARSET identifier
- | CHARACTER SET identifier
- ;
-
-comment
- : COMMENT string
- ;
-```
-
-**Note:**
-
-1. When creating a table, you do not need to specify a time column. IoTDB automatically adds a column named "time" and places it as the first column. All other columns can be added by enabling the `enable_auto_create_schema` option in the database configuration, or through the session interface for automatic creation or by using table modification statements.
-2. Since version V2.0.8.2, tables support custom naming of the time column during creation. The order of the custom time column in the table is determined by the order in the creation SQL. The related constraints are as follows:
-
- - When the column category is set to TIME, the data type must be TIMESTAMP.
- - Each table allows at most one time column (columnCategory = TIME).
- - If no time column is explicitly defined, no other column can use "time" as its name to avoid conflicts with the system's default time column naming.
-3. The column category can be omitted and defaults to FIELD. When the column category is TAG or ATTRIBUTE, the data type must be STRING (can be omitted).
-4. The TTL of a table defaults to the TTL of its database. If the default value is used, this attribute can be omitted or set to default.
-5. table name has the following characteristics:
-
- - It is case-insensitive and, upon successful creation, is uniformly displayed in lowercase.
- - The name can include special characters, such as `~!`"%`, etc.
- - Table names containing special characters or Chinese characters must be enclosed in double quotation marks ("") during creation.
-
- - Note: In SQL, special characters or Chinese table names must be enclosed in double quotes. In the native API, no additional quotes are needed; otherwise, the table name will include the quote characters.
- - When naming a table, the outermost double quotation marks (`""`) will not appear in the actual table name.
- - ```sql
- -- In SQL
- "a""b" --> a"b
- """""" --> ""
- -- In API
- "a""b" --> "a""b"
- ```
-6. columnDefinition column names have the same characteristics as table names and can include the special character `.`.
-7. COMMENT adds a comment to the table.
-
-**Examples:**
-
-```SQL
-CREATE TABLE table1 (
- time TIMESTAMP TIME,
- region STRING TAG,
- plant_id STRING TAG,
- device_id STRING TAG,
- model_id STRING ATTRIBUTE,
- maintenance STRING ATTRIBUTE COMMENT 'maintenance',
- temperature FLOAT FIELD COMMENT 'temperature',
- humidity FLOAT FIELD COMMENT 'humidity',
- status Boolean FIELD COMMENT 'status',
- arrival_time TIMESTAMP FIELD COMMENT 'arrival_time'
-) COMMENT 'table1' WITH (TTL=31536000000);
-```
-
-Note: If your terminal does not support multi-line paste (e.g., Windows CMD), please reformat the SQL statement into a single line before execution.
-
-### 1.2 View Tables
-
-Used to view all tables and their properties in the current or a specified database.
-
-**Syntax:**
-
-```SQL
-SHOW TABLES (DETAILS)? ((FROM | IN) database_name)?
-```
-
-**Note:**
-
-1. If the `FROM` or `IN` clause is specified, the command lists all tables in the specified database.
-2. If neither `FROM` nor `IN` is specified, the command lists all tables in the currently selected database. If no database is selected (`USE` statement not executed), an error is returned.
-3. When the `DETAILS` option is used, the command shows the current state of each table:
- 1. `USING`: The table is available and operational.
- 2. `PRE_CREATE`: The table is in the process of being created or the creation has failed; the table is not available.
- 3. `PRE_DELETE`: The table is in the process of being deleted or the deletion has failed; the table will remain permanently unavailable.
-
-**Examples:**
-
-```sql
-show tables details from database1;
-```
-```shell
-+---------------+-----------+------+-------+
-| TableName| TTL(ms)|Status|Comment|
-+---------------+-----------+------+-------+
-| table1|31536000000| USING| table1|
-+---------------+-----------+------+-------+
-```
-
-### 1.3 View Table Columns
-
-Used to view column names, data types, categories, and states of a table.
-
-**Syntax:**
-
-```SQL
-(DESC | DESCRIBE) (DETAILS)?
-```
-
-**Note:** If the `DETAILS` option is specified, detailed state information of the columns is displayed:
-
-- `USING`: The column is in normal use.
-- `PRE_DELETE`: The column is being deleted or the deletion has failed; it is permanently unavailable.
-
-
-
-**Examples:**
-
-```sql
-desc table1 details;
-```
-```shell
-+------------+---------+---------+------+------------+
-| ColumnName| DataType| Category|Status| Comment|
-+------------+---------+---------+------+------------+
-| time|TIMESTAMP| TIME| USING| null|
-| region| STRING| TAG| USING| null|
-| plant_id| STRING| TAG| USING| null|
-| device_id| STRING| TAG| USING| null|
-| model_id| STRING|ATTRIBUTE| USING| null|
-| maintenance| STRING|ATTRIBUTE| USING| maintenance|
-| temperature| FLOAT| FIELD| USING| temperature|
-| humidity| FLOAT| FIELD| USING| humidity|
-| status| BOOLEAN| FIELD| USING| status|
-|arrival_time|TIMESTAMP| FIELD| USING|arrival_time|
-+------------+---------+---------+------+------------+
-```
-
-### 1.4 View Table Creation Statement
-
-Retrieves the complete definition statement of a table or view under the table model. This feature automatically fills in all default values that were omitted during creation, so the displayed statement may differ from the original CREATE statement.
-
-> This feature is supported starting from v2.0.5.
-
-**Syntax:**
-
-```SQL
-SHOW CREATE TABLE
-```
-
-**Note::**
-
-1. This statement does not support queries on system tables.
-
-**Example:**
-
-```SQL
-show create table table1;
-```
-```shell
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Table| Create Table|
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|table1|CREATE TABLE "table1" ("region" STRING TAG,"plant_id" STRING TAG,"device_id" STRING TAG,"model_id" STRING ATTRIBUTE,"maintenance" STRING ATTRIBUTE,"temperature" FLOAT FIELD,"humidity" FLOAT FIELD,"status" BOOLEAN FIELD,"arrival_time" TIMESTAMP FIELD) WITH (ttl=31536000000)|
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Total line number = 1
-```
-
-
-### 1.5 Update Tables
-
-Used to update a table, including adding or deleting columns, modify column type (V2.0.8.2) and configuring table properties.
-
-**Syntax:**
-
-```SQL
-#addColumn;
-ALTER TABLE (IF EXISTS)? tableName=qualifiedName ADD COLUMN (IF NOT EXISTS)? column=columnDefinition;
-#dropColumn;
-| ALTER TABLE (IF EXISTS)? tableName=qualifiedName DROP COLUMN (IF EXISTS)? column=identifier;
-#setTableProperties;
-// set TTL can use this;
-| ALTER TABLE (IF EXISTS)? tableName=qualifiedName SET PROPERTIES propertyAssignments;
-| COMMENT ON TABLE tableName=qualifiedName IS 'table_comment';
-| COMMENT ON COLUMN tableName.column IS 'column_comment';
-#changeColumndatatype;
-| ALTER TABLE (IF EXISTS)? tableName=qualifiedName ALTER COLUMN (IF EXISTS)? column=identifier SET DATA TYPE new_type=type;
-```
-
-**Note::**
-
-1. The `SET PROPERTIES` operation currently only supports configuring the `TTL` property of a table
-2. The delete column function only supports deleting the ATTRIBUTE and FILD columns, and the TAG column does not support deletion.
-3. The modified comment will overwrite the original comment. If null is specified, the previous comment will be erased.
-4. Since version V2.0.8.2, modifying the data type of a column is supported. Currently, only columns with Category type FIELD can be modified.
-
- * If the time series is concurrently deleted during the modification process, an error will be reported.
- * The new data type must be compatible with the original type. The specific compatibility is shown in the following table:
-
-**Example:**
-
-add column
-```SQL
-ALTER TABLE table1 ADD COLUMN IF NOT EXISTS a TAG COMMENT 'a';
-ALTER TABLE table1 ADD COLUMN IF NOT EXISTS b FLOAT FIELD COMMENT 'b';
-```
-set TTL
-```SQL
-ALTER TABLE table1 set properties TTL=3600;
-```
-set comment
-```SQL
-COMMENT ON TABLE table1 IS 'table1';
-COMMENT ON COLUMN table1.a IS null;
-```
-alter column datatype
-```SQL
-ALTER TABLE table1 ALTER COLUMN IF EXISTS b SET DATA TYPE DOUBLE;
-```
-
-### 1.6 Delete Tables
-
-Used to delete a table.
-
-**Syntax:**
-
-```SQL
-DROP TABLE (IF EXISTS)?
-```
-
-**Examples:**
-
-```SQL
-DROP TABLE table1;
-DROP TABLE database1.table1;
-```
-
-## 1.7 Metadata Query
-Under the table model, the **total number of measurement points** equals the sum of measurement points of all tables. Currently, the number of measurement points in a single table can be calculated with the formula:
-**Measurement points per single table = Number of devices × Number of field columns**.
-Support for directly querying measurement points under the table model via SQL statements will be available in future updates. Please stay tuned.
-
-Take `table1` in the [sample data](../Reference/Sample-Data.md) as an example.
-
-In the organizational structure of this sample, there are three tag columns (`region`, `plant_id`, `device_id`) and four field columns (`temperature`, `humidity`, `status`, `arrival_time`).
-
-A unique device is identified by the combination of all tag columns. Each unique combination of `region` + `plant_id` + `device_id` represents an independent device.
-
-The sample data defines 2 regions: Beijing and Shanghai. Details are as follows:
-- **Beijing**: 1 factory with ID 1001
- - 2 devices under this factory: IDs 100 and 101
-- **Shanghai**: 2 factories with IDs 3001 and 3002
- - Factory 3001: 2 devices (IDs 100, 101)
- - Factory 3002: 2 devices (IDs 100, 101)
-
-In total, there are 6 unique tag combinations in the table, corresponding to 6 independent devices.
-
-### Complete Calculation Example for Single-Table Measurement Points
-1. Query the number of devices
-```sql
-IoTDB:database1> count devices from table1;
-+--------------+
-|count(devices)|
-+--------------+
-| 6|
-+--------------+
-Total line number = 1
-It costs 0.019s
-```
-
-2. Calculate the total measurement points of the single table
-- Number of devices: 6
-- Number of field columns: 4
-- Total measurement points of the table: **6 × 4 = 24**
-
diff --git a/src/UserGuide/Master/Table/Basic-Concept/Write-Updata-Data_timecho.md b/src/UserGuide/Master/Table/Basic-Concept/Write-Updata-Data_timecho.md
deleted file mode 100644
index 38436f17d..000000000
--- a/src/UserGuide/Master/Table/Basic-Concept/Write-Updata-Data_timecho.md
+++ /dev/null
@@ -1,398 +0,0 @@
-
-
-# Write & Update Data
-
-## 1. SQL Insertion
-
-### 1.1 Syntax
-
-In IoTDB, data insertion follows the general syntax:
-
-```SQL
-INSERT INTO [(COLUMN_NAME[, COLUMN_NAME]*)]? VALUES (COLUMN_VALUE[, COLUMN_VALUE]*)
-```
-
-**Basic Constraints**:
-
-1. Tables cannot be automatically created using `INSERT` statements.
-2. Columns not specified in the `INSERT` statement will automatically be filled with `null`.
-3. If no timestamp is provided, the system will use the current time (`now()`).
-4. If a column value does not exist for the identified device, the insertion will overwrite any existing `null` values with the new data.
-5. If a column value already exists for the identified device, a new insertion will update the column with the new value.
-6. Writing duplicate timestamps will update the values in the columns corresponding to the original timestamps.
-7. When an INSERT statement does not specify column names (e.g., INSERT INTO table VALUES (...)), the values in VALUES must strictly follow the physical order of columns in the table (this order can be checked via the DESC table command).
-
-Since attributes generally do not change over time, it is recommended to update attribute values using the `UPDATE` statement described below,Please refer to the following [Data Update](#2-data-updates).
-
-
-
-
-
-
-### 1.2 Specified Column Insertion
-
-It is possible to insert data for specific columns. Columns not specified will remain `null`.
-
-**Example:**
-
-```SQL
-INSERT INTO table1(region, plant_id, device_id, time, temperature, humidity) VALUES ('Hamburg', '1001', '100', '2025-11-26 13:37:00', 90.0, 35.1);
-
-INSERT INTO table1(region, plant_id, device_id, time, temperature) VALUES ('Hamburg', '1001', '100', '2025-11-26 13:38:00', 91.0);
-```
-
-### 1.3 Null Value Insertion
-
-You can explicitly set `null` values for tag columns, attribute columns, and field columns.
-
-**Example**:
-
-Equivalent to the above partial column insertion.
-
-```SQL
-# Equivalent to the example above;
-INSERT INTO table1(region, plant_id, device_id, model_id, maintenance, time, temperature, humidity) VALUES ('Hamburg', '1001', '100', null, null, '2025-11-26 13:37:00', 90.0, 35.1);
-
-INSERT INTO table1(region, plant_id, device_id, model_id, maintenance, time, temperature, humidity) VALUES ('Hamburg', '1001', '100', null, null, '2025-11-26 13:38:00', 91.0, null);
-```
-
-If no tag columns are included, the system will automatically create a device with all tag column values set to `null`.
-
-> **Note:** This operation will not only automatically populate existing tag columns in the table with `null` values but will also populate any newly added tag columns with `null` values in the future.
-
-### 1.4 Multi-Row Insertion
-
-IoTDB supports inserting multiple rows of data in a single statement to improve efficiency.
-
-**Example**:
-
-```SQL
-INSERT INTO table1
-VALUES
-('2025-11-26 13:37:00', 'Frankfurt', '1001', '100', 'A', '180', 90.0, 35.1, true, '2025-11-26 13:37:34'),
-('2025-11-26 13:38:00', 'Frankfurt', '1001', '100', 'A', '180', 90.0, 35.1, true, '2025-11-26 13:38:25');
-
-INSERT INTO table1
-(region, plant_id, device_id, model_id, maintenance, time, temperature, humidity, status, arrival_time)
-VALUES
-('Frankfurt', '1001', '100', 'A', '180', '2025-11-26 13:37:00', 90.0, 35.1, true, '2025-11-26 13:37:34'),
-('Frankfurt', '1001', '100', 'A', '180', '2025-11-26 13:38:00', 90.0, 35.1, true, '2025-11-26 13:38:25');
-```
-
-#### Notes
-
-- Referencing non-existent columns in SQL will result in an error code `COLUMN_NOT_EXIST(616)`.
-- Data type mismatches between the insertion data and the column's data type will result in an error code `DATA_TYPE_MISMATCH(614)`.
-
-
-### 1.5 Query Write-back
-
-The IoTDB table model supports the **append-only query write-back** feature, implemented via the `INSERT INTO QUERY` statement. This feature allows writing the results of a query into an **existing** table.
-
-> **Note**: This feature is available starting from version V2.0.6.
-
-#### 1.5.1 Syntax Definition
-
-sql
-
-```sql
-INSERT INTO table_name [ ( column [, ... ] ) ] query
-```
-
-The **query** component supports three formats, which are illustrated with examples below.
-
-Using the [sample data](../Reference/Sample-Data.md) as the data source, first create the target table:
-
-sql
-
-```sql
-CREATE TABLE target_table ( time TIMESTAMP TIME, region STRING TAG, device_id STRING TAG, temperature FLOAT FIELD );
-Msg: The statement is executed successfully.
-```
-
-1. Write-back via Standard Query Statement
-
-The `query` part is a direct `select ... from ...` query.
-
-**Example**: Use a standard query statement to write the `time`, `region`, `device_id`, and `temperature` data of the Beijing region from `table1` into `target_table`.
-
-sql
-
-```sql
-insert into target_table select time,region,device_id,temperature from table1 where region = 'Beijing';
-Msg: The statement is executed successfully.
-```
-```sql
-select * from target_table where region='Beijing';
-```
-```shell
-+-----------------------------+--------+-----------+-------------+
-| time| region| device_id| temperature|
-+-----------------------------+--------+-----------+-------------+
-|2024-11-26T13:37:00.000+08:00| Beijing| 100| 90.0|
-|2024-11-26T13:38:00.000+08:00| Beijing| 100| 90.0|
-|2024-11-27T16:38:00.000+08:00| Beijing| 101| null|
-|2024-11-27T16:39:00.000+08:00| Beijing| 101| 85.0|
-|2024-11-27T16:40:00.000+08:00| Beijing| 101| 85.0|
-|2024-11-27T16:41:00.000+08:00| Beijing| 101| 85.0|
-|2024-11-27T16:42:00.000+08:00| Beijing| 101| null|
-|2024-11-27T16:43:00.000+08:00| Beijing| 101| null|
-|2024-11-27T16:44:00.000+08:00| Beijing| 101| null|
-+-----------------------------+--------+-----------+-------------+
-Total line number = 9
-It costs 0.029s
-```
-
-2. Write-back via Table Reference Query
-
-The `query` part uses the table reference syntax `table source_table`.
-
-**Example**: Use a table reference query to write data from `table3` into `target_table`.
-
-sql
-
-```sql
-insert into target_table(time,device_id,temperature) table table3;
-Msg: The statement is executed successfully.
-```
-```sql
-select * from target_table where region is null;
-```
-```shell
-+-----------------------------+------+-----------+-------------+
-| time|region| device_id| temperature|
-+-----------------------------+------+-----------+-------------+
-|2025-05-13T00:00:00.001+08:00| null| d1| 90.0|
-|2025-05-13T00:00:01.002+08:00| null| d1| 85.0|
-|2025-05-13T00:00:02.101+08:00| null| d1| 85.0|
-|2025-05-13T00:00:03.201+08:00| null| d1| null|
-|2025-05-13T00:00:04.105+08:00| null| d1| 90.0|
-|2025-05-13T00:00:05.023+08:00| null| d1| 85.0|
-|2025-05-13T00:00:06.129+08:00| null| d1| 90.0|
-+-----------------------------+------+-----------+-------------+
-Total line number = 7
-It costs 0.015s
-```
-
-3. Write-back via Subquery
-
-The `query` part is a parenthesized subquery.
-
-**Example**: Use a subquery to write the `time`, `region`, `device_id`, and `temperature` data from `table1` whose timestamps match the records of the Shanghai region in `table2` into `target_table`.
-
-sql
-
-```sql
-insert into target_table (select t1.time, t1.region as region, t1.device_id as device_id, t1.temperature as temperature from table1 t1 where t1.time in (select t2.time from table2 t2 where t2.region = 'Shanghai'));
-Msg: The statement is executed successfully.
-```
-```sql
-select * from target_table where region = 'Shanghai';
-```
-```shell
-+-----------------------------+---------+-----------+-------------+
-| time| region| device_id| temperature|
-+-----------------------------+---------+-----------+-------------+
-|2024-11-28T08:00:00.000+08:00| Shanghai| 100| 85.0|
-|2024-11-29T11:00:00.000+08:00| Shanghai| 100| null|
-+-----------------------------+---------+-----------+-------------+
-Total line number = 2
-It costs 0.014s
-```
-
-#### 1.5.2 Notes
-
-* The source table in the `query` and the target table `table_name` are allowed to be the same table, e.g., `INSERT INTO testtb SELECT * FROM testtb`.
-* The target table **must already exist**; otherwise, the error message `550: Table 'xxx.xxx' does not exist` will be thrown.
-* The number and types of query result columns must exactly match those of the target table. Object type is currently not supported, and no implicit type conversion is supported. If types mismatch, the error `701: Insert query has mismatched column types` will be raised.
-* You can specify a subset of columns in the target table, provided the following rules are met:
- * The timestamp column must be included; otherwise, the error message `701: time column can not be null` will be thrown.
- * At least one **FIELD** column must be included; otherwise, the error message `701: No Field column present` will be thrown.
- * **TAG** columns are optional.
- * The number of specified columns can be less than that of the target table. Missing columns will be automatically filled with `NULL` values.
-* For Java applications, the `INSERT INTO QUERY` statement can be executed using the [executeNonQueryStatement](../API/Programming-Java-Native-API_timecho.md#_3-1-itablesession-interface) method.
-* For REST API access, the `INSERT INTO QUERY` statement can be executed via the [/rest/table/v1/nonQuery](../API/RestAPI-V1_timecho.md#_3-3-non-query-interface) endpoint.
-* `INSERT INTO QUERY` does **not** support the `EXPLAIN` and `EXPLAIN ANALYZE` commands.
-* To execute the query write-back statement successfully, users must have the following permissions:
- * The `SELECT` permission on the source tables involved in the query.
- * The `WRITE` permission on the target table.
- * For more details about user permissions, refer to [Authority Management](../User-Manual/Authority-Management_timecho.md).
-
-
-### 1.6 Writing Object Type
-
-To avoid oversized Object write requests, values of **Object** type can be split into segments and written sequentially. In SQL, the `to_object(isEOF, offset, content)` function must be used for value insertion.
-
-> Supported since V2.0.8
-
-**Syntax:**
-
-```SQL
-INSERT INTO tableName(time, columnName) VALUES(timeValue, TO_OBJECT(isEOF, offset, content));
-```
-
-**Parameters:**
-
-| Name | Data Type | Description |
-|---------|--------------------|-----------------------------------------------------------------------------|
-| isEOF | BOOLEAN | Whether the current write contains the last segment of the Object |
-| offset | INT64 | Starting offset of the current segment within the Object |
-| content | Hexadecimal (HEX) | Content of the current segment |
-
-**Examples:**
-
-Add an Object-type column `s1` to table `table1`:
-
-```SQL
-ALTER TABLE table1 ADD COLUMN IF NOT EXISTS s1 OBJECT FIELD COMMENT 'object type';
-```
-
-1. **Non-segmented write**
-
-```SQL
-INSERT INTO table1(time, device_id, s1) VALUES(NOW(), 'tag1', TO_OBJECT(TRUE, 0, X'696F746462'));
-```
-
-2. **Segmented write**
-
-```SQL
--- First write: TO_OBJECT(FALSE, 0, X'696F');
-INSERT INTO table1(time, device_id, s1) VALUES(1, 'tag1', TO_OBJECT(FALSE, 0, X'696F'));
-
--- Second write: TO_OBJECT(FALSE, 2, X'7464');
-INSERT INTO table1(time, device_id, s1) VALUES(1, 'tag1', TO_OBJECT(FALSE, 2, X'7464'));
-
--- Third write: TO_OBJECT(TRUE, 4, X'62');
-INSERT INTO table1(time, device_id, s1) VALUES(1, 'tag1', TO_OBJECT(TRUE, 4, X'62'));
-```
-
-**Notes:**
-
-1. If only partial segments of an Object are written, querying the column will return `NULL`. Data becomes accessible only after all segments are successfully written.
-2. During segmented writes, if the `offset` of the current write does not match the current size of the Object, the write operation will fail.
-3. If `offset=0` is used after partial writes, the existing content will be overwritten with new data.
-
-
-## 2. Schema-less Writing
-
-When performing data writing through Session, IoTDB supports schema-less writing: there is no need to manually create tables beforehand. The system automatically constructs the table structure based on the information in the write request, and then directly executes the data writing operation.
-
-**Example:**
-
-```Java
-try (ITableSession session =
- new TableSessionBuilder()
- .nodeUrls(Collections.singletonList("127.0.0.1:6667"))
- .username("root")
- .password("root")
- .build()) {
-
- session.executeNonQueryStatement("CREATE DATABASE db1");
- session.executeNonQueryStatement("use db1");
-
- // Insert data without manually creating the table
- List columnNameList =
- Arrays.asList("region_id", "plant_id", "device_id", "model", "temperature", "humidity");
- List dataTypeList =
- Arrays.asList(
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.STRING,
- TSDataType.FLOAT,
- TSDataType.DOUBLE);
- List columnTypeList =
- new ArrayList<>(
- Arrays.asList(
- ColumnCategory.TAG,
- ColumnCategory.TAG,
- ColumnCategory.TAG,
- ColumnCategory.ATTRIBUTE,
- ColumnCategory.FIELD,
- ColumnCategory.FIELD));
- Tablet tablet = new Tablet("table1", columnNameList, dataTypeList, columnTypeList, 100);
- for (long timestamp = 0; timestamp < 100; timestamp++) {
- int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(rowIndex, timestamp);
- tablet.addValue("region_id", rowIndex, "1");
- tablet.addValue("plant_id", rowIndex, "5");
- tablet.addValue("device_id", rowIndex, "3");
- tablet.addValue("model", rowIndex, "A");
- tablet.addValue("temperature", rowIndex, 37.6F);
- tablet.addValue("humidity", rowIndex, 111.1);
- if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
- session.insert(tablet);
- tablet.reset();
- }
- }
- if (tablet.getRowSize() != 0) {
- session.insert(tablet);
- tablet.reset();
- }
-}
-```
-
-After execution, you can verify the table creation using the following command:
-
-```SQL
-desc table1;
-```
-```shell
-+-----------+---------+-----------+
-| ColumnName| DataType| Category|
-+-----------+---------+-----------+
-| time|TIMESTAMP| TIME|
-| region_id| STRING| TAG|
-| plant_id| STRING| TAG|
-| device_id| STRING| TAG|
-| model| STRING| ATTRIBUTE|
-|temperature| FLOAT| FIELD|
-| humidity| DOUBLE| FIELD|
-+-----------+---------+-----------+
-```
-
-
-## 3. Data Updates
-
-### 3.1 Syntax
-
-```SQL
-UPDATE SET updateAssignment (',' updateAssignment)* (WHERE where=booleanExpression)?
-
-updateAssignment
- : identifier EQ expression
- ;
-```
-
-**Note:**
-
-- Updates are allowed only on `ATTRIBUTE` columns.
-- `WHERE` conditions:
- - Can only include `TAG` and `ATTRIBUTE` columns; `FIELD` and `TIME` columns are not allowed.
- - Aggregation functions are not supported.
-- The result of the `SET` assignment expression must be a `string` type and follow the same constraints as the `WHERE` clause.
-
-**Example**:
-
-```SQL
-update table1 set b = a where substring(a, 1, 1) like '%';
-```
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/AINode_Deployment_Upgrade_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/AINode_Deployment_Upgrade_timecho.md
deleted file mode 100644
index 31a27cfb9..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/AINode_Deployment_Upgrade_timecho.md
+++ /dev/null
@@ -1,290 +0,0 @@
-
-# AINode Deployment
-
-## 1. AINode Introduction
-
-### 1.1 Capability Introduction
-
-AINode is the third type of endogenous node provided by TimechoDB after ConfigNode and DataNode. By interacting with the DataNodes and ConfigNodes of an TimechoDB cluster, this node extends the capability for machine learning analysis on time series. AINode integrates model management, training, and inference within the database engine. It supports performing time series analysis tasks on specified time series data using registered models through simple SQL statements and also supports registering and using custom machine learning models. AINode currently integrates machine learning algorithms and self-developed models for common time series analysis scenarios (e.g., forecasting).
-
-### 1.2 Deployment Modes
-
-AINode is an additional component outside the TimechoDB cluster and is deployed using a separate installation package.
-
-
-
-
-
-
-## 2. Installation Preparation
-
-### 2.1 Installation Package Acquisition
-
-The key directory structure after extracting the AINode installation package (`timechodb--ainode-bin.zip`) is as follows:
-
-| Directory | Type | Description |
-| :--- | :--- | :--- |
-| lib | Folder | Executable programs and dependencies for AINode |
-| sbin | Folder | Operation scripts for AINode, used to start or stop AINode |
-| conf | Folder | Configuration files and version declaration file for AINode |
-
-### 2.2 Pre-installation Verification
-
-To ensure the AINode installation package you obtained is complete and correct, it is recommended to perform an SHA512 verification before installation and deployment.
-
-**Preparation:**
-
-- Obtain the official SHA512 checksum: Please contact Timecho staff.
-
-**Verification Steps (using Linux as an example):**
-
-1. Open a terminal, navigate to the directory containing the installation package (e.g., `/data/ainode`):
-
-```bash
-cd /data/ainode
-```
-
-2. Execute the following command to calculate the hash value:
-
-```bash
-sha512sum timechodb-{version}-ainode-bin.zip
-```
-
-3. The terminal will output the result (left side is the SHA512 checksum, right side is the filename):
-
-```SQL
-(base) root@hadoop@1:/data/ainode (0.664s)
-sha512sum timechodb-2.0.6.1-ainode-bin.zip
-4d5a6a64935b4f0459bc9ed214c4563aa7a6a5941024336e9416212424707f27bdfdfc70f4c528b51b812687d660014adc1b8add699498ea67ff17c7e619a6f0 timechodb-2.0.6.1-ainode-bin.zip
-```
-
-4. Compare the output with the official SHA512 checksum. If they match, you can proceed with the AINode installation and deployment steps below.
-
-**Notes:**
-
-- If the verification results do not match, please contact Timecho staff to obtain a new installation package.
-- If you encounter a "file not found" prompt during verification, check if the file path is correct or if the installation package was downloaded completely.
-
-### 2.3 Environment Requirements
-
-- Recommended operating environment: Linux, macOS.
-- TimechoDB Version: >= V2.0.8.
-
-#### 2.3.1 Resource Configuration Recommendations
-
-> Note: The resource configuration recommendations in this section apply only to **model inference tasks**. Guidelines for model training tasks will be provided in subsequent releases.
-
-The following are baseline resource configurations for model inference running on a single NVIDIA RTX 4090 (24 GB VRAM). For model inference on AINode, overall throughput can be improved by horizontally scaling the number of GPUs. It is generally recommended to deploy servers with 1, 2, 4 or 8 GPUs.
-
-Specifications of inference tasks used in benchmark tests:
-- **Univariate inference**: Historical sequence length: 2880, prediction length: 720
-- **Covariate inference**: Historical sequence length: 2880, prediction length: 720, with 20 known covariates
-
-| Number of GPUs (NVIDIA 4090, 24 GB VRAM) | Recommended CPU Cores | Recommended Memory (GB) | Supported QPS for Univariate Inference | Supported QPS for Covariate Inference |
-|------------------------------------------|-----------------------|-------------------------|-----------------------------------------|---------------------------------------|
-| 1 GPU | 16 cores | 24 GB | 100 | 10 |
-| 2 GPUs | 32 cores | 48 GB | 200 | 20 |
-| 4 GPUs | 64 cores | 96 GB | 400 | 40 |
-| 8 GPUs | 128 cores | 192 GB | 800 | 80 |
-
-**Notes**:
-- The CPU and memory configurations above follow this general rule: allocate 16 CPU cores per GPU, and set system memory equal to GPU VRAM at a ratio of 1:1.
-- The throughput figures are benchmark references. Actual performance may vary depending on model type, data complexity and deployment environment.
-- The throughput of univariate and covariate inference shall be evaluated separately as required, and the two values cannot be summed directly.
-
-
-## 3. Installation, Deployment, and Usage
-
-### 3.1 Installing AINode
-
-Download the AINode installation package, import it into a dedicated folder, switch to that folder, and extract the package.
-
-```bash
-unzip timechodb--ainode-bin.zip
-```
-
-### 3.2 Modifying Configuration Items
-
-AINode supports modifying some necessary parameters. You can find the following parameters in the `/TIMECHODB_AINODE_HOME/conf/iotdb-ainode.properties` file and make persistent modifications:
-
-| Name | Description | Type | Default Value |
-| :--- | :--- | :--- | :--- |
-| `cluster_name` | The cluster identifier the AINode is to join | String | `defaultCluster` |
-| `ain_seed_config_node` | The ConfigNode address for AINode registration upon startup | String | `127.0.0.1:10710` |
-| `ain_cluster_ingress_address` | The rpc address of the DataNode from which AINode pulls data | String | `127.0.0.1` |
-| `ain_cluster_ingress_port` | The rpc port of the DataNode from which AINode pulls data | Integer | `6667` |
-| `ain_cluster_ingress_username` | The client username for the DataNode from which AINode pulls data | String | `root` |
-| `ain_cluster_ingress_password` | The client password for the DataNode from which AINode pulls data | String | `root` |
-| `ain_rpc_address` | The address for AINode service provision and communication (internal service communication interface) | String | `127.0.0.1` |
-| `ain_rpc_port` | The port for AINode service provision and communication | String | `10810` |
-| `ain_system_dir` | AINode metadata storage path. The starting directory for relative paths is OS-dependent; using an absolute path is recommended. | String | `data/AINode/system` |
-| `ain_models_dir` | AINode model file storage path. The starting directory for relative paths is OS-dependent; using an absolute path is recommended. | String | `data/AINode/models` |
-| `ain_thrift_compression_enabled` | Whether to enable Thrift compression mechanism for AINode. 0-disable, 1-enable. | Boolean | `0` |
-
-### 3.3 Importing Built-in Weight Files
-
-*If the deployment environment has network connectivity and can access HuggingFace, the system will automatically pull the built-in model weight files. This step can be skipped.*
-*For offline environments, contact Timecho staff to obtain the model weight folder and place it under the `/TIMECHODB_AINODE_HOME/data/ainode/models/builtin` directory.*
-**NOTE:** Pay attention to the directory hierarchy. The parent directory for all built-in model weights should be `builtin`.
-
-### 3.4 Starting AINode
-
-After completing the deployment of ConfigNodes, you can add an AINode to support time series model management and inference functionality. After specifying the TimechoDB cluster information in the configuration items, you can execute the corresponding command to start the AINode and join the TimechoDB cluster.
-
-```bash
-# Startup command
-# Linux and macOS systems
-bash sbin/start-ainode.sh
-
-# Windows system
-sbin\start-ainode.bat
-
-# Background startup command (recommended for long-term operation)
-# Linux and macOS systems
-bash sbin/start-ainode.sh -d
-
-# Windows system
-sbin\start-ainode.bat -d
-```
-
-### 3.5 Activating AINode
-
-1. Refer to TimechoDB Activation: [Activation Method](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md#_2-6-activate-database)
-
-2. You can verify AINode activation as follows. When the status shows `ACTIVATED`, it indicates successful activation.
-
-```SQL
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort| Version| BuildInfo|ActivateStatus|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710| | xxxxxxx| ACTIVATED|
-| 1| DataNode|Running| 127.0.0.1| 10730| | xxxxxxx| ACTIVATED|
-| 2| AINode|Running| 127.0.0.1| 10810| | xxxxxxx| ACTIVATED|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-Total line number = 3
-It costs 0.002s
-IoTDB> show activation
-+---------------+---------+-----------------------------+
-| LicenseInfo| Usage| Limit|
-+---------------+---------+-----------------------------+
-| Status|ACTIVATED| -|
-| ExpiredTime| -|2025-07-16T00:00:00.000+08:00|
-| DataNodeLimit| 1| Unlimited|
-| AiNodeLimit| 1| 1|
-| CpuLimit| 11| Unlimited|
-| DeviceLimit| 0| Unlimited|
-|TimeSeriesLimit| 0| 9,999|
-+---------------+---------+-----------------------------+
-Total line number = 7
-It costs 0.013s
-```
-
-### 3.6 Checking AINode Node Status
-
-During startup, AINode automatically joins the TimechoDB cluster. After starting AINode, you can enter an SQL query in the command line. Seeing the AINode node in the cluster with a `Running` status (as shown below) indicates a successful join.
-
-```sql
-TimechoDB> show cluster
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort| Version| BuildInfo|ActivateStatus|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710| | xxxxxxx| ACTIVATED|
-| 1| DataNode|Running| 127.0.0.1| 10730| | xxxxxxx| ACTIVATED|
-| 2| AINode|Running| 127.0.0.1| 10810| | xxxxxxx| ACTIVATED|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-```
-
-Additionally, you can check the model status using the `show models` command. If the model status is incorrect, please verify the weight file path.
-
-```sql
-IoTDB> show models
-+---------------------+---------+--------+--------+
-| ModelId|ModelType|Category| State|
-+---------------------+---------+--------+--------+
-| arima| sktime| builtin| active|
-| holtwinters| sktime| builtin| active|
-|exponential_smoothing| sktime| builtin| active|
-| naive_forecaster| sktime| builtin| active|
-| stl_forecaster| sktime| builtin| active|
-| gaussian_hmm| sktime| builtin| active|
-| gmm_hmm| sktime| builtin| active|
-| stray| sktime| builtin| active|
-| timer_xl| timer| builtin| active|
-| sundial| sundial| builtin| active|
-| chronos2| t5| builtin| active|
-+---------------------+---------+--------+--------+
-```
-
-### 3.7 Stopping AINode
-
-If you need to stop a running AINode node, execute the corresponding shutdown script. It supports specifying the port via the `-p` parameter, which corresponds to the `ain_rpc_port` configuration item.
-
-```bash
-# Linux / macOS
-bash sbin/stop-ainode.sh
-bash sbin/stop-ainode.sh -p # Specify port
-
-# Windows
-sbin\stop-ainode.bat
-sbin\stop-ainode.bat -p # Specify port
-```
-
-After stopping AINode, you can still see the AINode node in the cluster, but its status will be `UNKNOWN` (as shown below). AINode functionality will be unavailable at this time.
-
-```sql
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort| Version| BuildInfo|ActivateStatus|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710| | xxxxxxx| ACTIVATED|
-| 1| DataNode|Running| 127.0.0.1| 10730| | xxxxxxx| ACTIVATED|
-| 2| AINode|UNKNOWN| 127.0.0.1| 10810| | xxxxxxx| ACTIVATED|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-```
-
-If you need to restart the node, re-execute the startup script.
-
-### 3.8 Upgrading AINode
-If you need to upgrade the version of the current AINode, follow these steps:
-
-1. Stop the current AINode service
- - Run the stop command and ensure the service has completely exited before proceeding with subsequent operations.
-
- ```bash
- # Linux / MacOS
- bash sbin/stop-ainode.sh
- bash sbin/stop-ainode.sh -p # Specify port
-
- # Windows
- sbin\stop-ainode.bat
- sbin\stop-ainode.bat -p # Specify port
- ```
-
-2. Replace core files
- - Delete the `lib` and `sbin` directories of the current version, then copy the `lib` and `sbin` directories from the new version to the corresponding locations.
- - Back up the modified configuration files in the `conf` directory, then replace the `conf` folder and synchronize your modified configurations to the corresponding files.
-
-3. Update built-in model weights (optional)
- - If the new version includes updates to built-in models, relevant information will be announced in the [Release History](../IoTDB-Introduction/Release-history_timecho.md). You may contact Timecho staff to obtain the latest weight package, and replace it in the `data/ainode/models/builtin` directory.
-
-4. After the upgrade is complete, start the AINode service and check the node status. For detailed commands, refer to Sections 3.4 and 3.6.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/AINode_Deployment_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/AINode_Deployment_timecho.md
deleted file mode 100644
index 08882b31d..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/AINode_Deployment_timecho.md
+++ /dev/null
@@ -1,319 +0,0 @@
-
-# AINode Deployment
-
-## 1. AINode Introduction
-
-### 1.1 Capability Introduction
-
-AINode is the third type of endogenous node provided by IoTDB after the Configurable Node and DataNode. This node extends its ability to perform machine learning analysis on time series by interacting with the DataNode and Configurable Node of the IoTDB cluster. It supports the introduction of existing machine learning models from external sources for registration and the use of registered models to complete time series analysis tasks on specified time series data through simple SQL statements. The creation, management, and inference of models are integrated into the database engine. Currently, machine learning algorithms or self-developed models are available for common time series analysis scenarios, such as prediction and anomaly detection.
-
-### 1.2 Delivery Method
-AINode is an additional package outside the IoTDB cluster, with independent installation.
-
-### 1.3 Deployment mode
-
-
-
-
-
-## 2. Installation preparation
-
-### 2.1 Get installation package
-
-Unzip and install the package
-`(timechodb--ainode-bin.zip)`, The directory structure after unpacking the installation package is as follows:
-
-| **Catalogue** | **Type** | **Explain** |
-| ----------- | -------- |-----------------------------------------------------------------------|
-| lib | folder | Python package files for AINode |
-| sbin | folder | The running script of AINode can start, remove, and stop AINode |
-| conf | folder | Configuration files for AINode, and runtime environment setup scripts |
-| LICENSE | file | Certificate |
-| NOTICE | file | Tips |
-| README_ZH.md | file | Explanation of the Chinese version of the markdown format |
-| README.md | file | Instructions |
-
-### 2.2 Pre-installation Check
-
-To ensure the AINode installation package you obtained is complete and valid, we recommend performing an SHA512 verification before proceeding with the installation and deployment.
-
-#### Preparation:
-
-- Obtain the officially released SHA512 checksum:please contact Timecho Team to re-obtain the installation package.
-
-#### Verification Steps (Linux as an Example):
-
-1. Open the terminal and navigate to the directory where the installation package is stored (e.g., /data/ainode):
- ```Bash
- cd /data/ainode
- ```
-2. Execute the following command to calculate the hash value:
- ```Bash
- sha512sum timechodb-{version}-ainode-bin.zip
- ```
-3. The terminal will output a result (the left part is the SHA512 checksum, and the right part is the file name):
-
-
-
-4. Compare the output result with the official SHA512 checksum. Once confirmed that they match, you can proceed with the installation and deployment of AINode as per the procedures below.
-
-#### Notes:
-
-- If the verification results do not match, please contact Timecho Team to re-obtain the installation package.
-- If a "file not found" prompt appears during verification, check whether the file path is correct or if the installation package has been fully downloaded.
-
-### 2.3 Environmental Preparation
-
-1. Recommended operating systems: Ubuntu, MacOS
-2. IoTDB version: >= V 2.0.5.1
-3. Runtime environment
- - Python version between 3.9 and 3.12, with pip and venv tools installed;
-
-## 3. Installation steps
-
-### 3.1 Install AINode
-
-1. Ensure Python version is between 3.9 and 3.12:
-```shell
-python --version
-# or
-python3 --version
-```
-
-2. Download and import AINode into a dedicated folder, switch to the folder, and unzip the package:
-```shell
- unzip timechodb--ainode-bin.zip
- ```
-3. Activate AINode:
-
-- Enter the IoTDB CLI
-
-```sql
-# For Linux or macOS
-./start-cli.sh -sql_dialect table
-
-# For Windows
-./start-cli.bat -sql_dialect table
-```
-
-- Run the following command to retrieve the machine code required for activation:
-
-```sql
-show system info
-```
-
-- Copy the returned machine code and send it to the Timecho team:
-
-```sql
-+--------------------------------------------------------------+
-| SystemInfo|
-+--------------------------------------------------------------+
-| 01-TE5NLES4-UDDWCMYE|
-+--------------------------------------------------------------+
-```
-
-- Enter the activation code provided by the Timecho team in the CLI using the following format. Wrap the activation code in single quotes ('):
-
-```sql
-IoTDB> activate '01-D4EYQGPZ-EAUJJODW-NUKRDR6F-TUQS3B75-EDZFLK3A-6BOKJFFZ-ALDHOMN7-NB2E4BHI-7ZK'
-```
-
-- You can verify the activation using the following method: when the status shows ACTIVATED, it indicates successful activation.
-
-```sql
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort| Version| BuildInfo|ActivateStatus|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710| | xxxxxxx| ACTIVATED|
-| 1| DataNode|Running| 127.0.0.1| 10730| | xxxxxxx| ACTIVATED|
-| 2| AINode|Running| 127.0.0.1| 10810| | xxxxxxx| ACTIVATED|
-+------+----------+-------+---------------+------------+--------------+-----------+--------------+
-
-IoTDB> show activation
-+---------------+---------+-----------------------------+
-| LicenseInfo| Usage| Limit|
-+---------------+---------+-----------------------------+
-| Status|ACTIVATED| -|
-| ExpiredTime| -|2025-07-16T00:00:00.000+08:00|
-| DataNodeLimit| 1| Unlimited|
-| AiNodeLimit| 1| 1|
-| CpuLimit| 11| Unlimited|
-| DeviceLimit| 0| Unlimited|
-|TimeSeriesLimit| 0| 9,999|
-+---------------+---------+-----------------------------+
-
-```
-
-### 3.2 Configuration item modification
-
-AINode supports modifying some necessary parameters. You can find the following parameters in the `conf/iotdb-ainode.properties` file and make persistent modifications to them:
-
-| **Name** | **Description** | **Type** | **Default Value** |
-| ------------------------------ | ------------------------------------------------------------ | -------- | ------------------ |
-| cluster_name | Identifier of the cluster AINode joins | string | defaultCluster |
-| ain_seed_config_node | Address of the ConfigNode registered when AINode starts | String | 127.0.0.1:10710 |
-| ain_cluster_ingress_address | RPC address of the DataNode for AINode to pull data | String | 127.0.0.1 |
-| ain_cluster_ingress_port | RPC port of the DataNode for AINode to pull data | Integer | 6667 |
-| ain_cluster_ingress_username | Client username for AINode to pull data from the DataNode | String | root |
-| ain_cluster_ingress_password | Client password for AINode to pull data from the DataNode | String | root |
-| ain_cluster_ingress_time_zone | Client time zone for AINode to pull data from the DataNode | String | UTC+8 |
-| ain_inference_rpc_address | Address for AINode to provide services and communication (internal interface) | String | 127.0.0.1 |
-| ain_inference_rpc_port | Port for AINode to provide services and communication | String | 10810 |
-| ain_system_dir | Metadata storage path for AINode (relative path starts from OS-dependent directory; absolute path is recommended) | String | data/AINode/system |
-| ain_models_dir | Path to store model files for AINode (relative path starts from OS-dependent directory; absolute path is recommended) | String | data/AINode/models |
-| ain_thrift_compression_enabled | Whether to enable Thrift compression for AINode (0=disabled, 1=enabled) | Boolean | 0 |
-
-### 3.3 Importing Weight Files
-
-> Offline environment only (Online environments can skip this step)
->
-Contact Timecho team to obtain the model weight files, then place them in the /IOTDB_AINODE_HOME/data/ainode/models/weights/ directory.
-
-
-### 3.4 Start AINode
-
-After completing the deployment of Seed Config Node, the registration and inference functions of the model can be supported by adding AINode nodes. After specifying the information of the IoTDB cluster in the configuration file, the corresponding instruction can be executed to start AINode and join the IoTDB cluster。
-
-- Networking environment startup
-
-Start command
-
-```shell
- # Start command
- # Linux and MacOS systems
- bash sbin/start-ainode.sh
-
- # Windows systems
- sbin\start-ainode.bat
-
- # Backend startup command (recommended for long-term running)
- # Linux and MacOS systems
- nohup bash sbin/start-ainode.sh > myout.file 2>& 1 &
-
- # Windows systems
- nohup bash sbin\start-ainode.bat > myout.file 2>& 1 &
- ```
-
-### 3.5 Detecting the status of AINode nodes
-
-During the startup process of AINode, the new AINode will be automatically added to the IoTDB cluster. After starting AINode, you can enter SQL in the command line to query. If you see an AINode node in the cluster and its running status is Running (as shown below), it indicates successful joining.
-
-
-```shell
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+-------+-----------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort|Version| BuildInfo|
-+------+----------+-------+---------------+------------+-------+-----------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710|UNKNOWN|190e303-dev|
-| 1| DataNode|Running| 127.0.0.1| 10730|UNKNOWN|190e303-dev|
-| 2| AINode|Running| 127.0.0.1| 10810|UNKNOWN|190e303-dev|
-+------+----------+-------+---------------+------------+-------+-----------+
-```
-
-### 3.6 Stop AINode
-
-If you need to stop a running AINode node, execute the corresponding shutdown script.
-
-Stop command
-
-```shell
- # Linux / MacOS
- bash sbin/stop-ainode.sh
-
- #Windows
- sbin\stop-ainode.bat
- ```
-
-After stopping AINode, you can still see AINode nodes in the cluster, whose running status is UNKNOWN (as shown below), and the AINode function cannot be used at this time.
-
- ```shell
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+-------+-----------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort|Version| BuildInfo|
-+------+----------+-------+---------------+------------+-------+-----------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710|UNKNOWN|190e303-dev|
-| 1| DataNode|Running| 127.0.0.1| 10730|UNKNOWN|190e303-dev|
-| 2| AINode|UNKNOWN| 127.0.0.1| 10790|UNKNOWN|190e303-dev|
-+------+----------+-------+---------------+------------+-------+-----------+
-```
-If you need to restart the node, you need to execute the startup script again.
-
-## 4. common problem
-
-### 4.1 An error occurs when starting AINode stating that the venv module cannot be found
-
-When starting AINode using the default method, a Python virtual environment will be created in the installation package directory and dependencies will be installed, so it is required to install the venv module. Generally speaking, Python 3.10 and above versions come with built-in VenV, but for some systems with built-in Python environments, this requirement may not be met. There are two solutions when this error occurs (choose one or the other):
-
-To install the Venv module locally, taking Ubuntu as an example, you can run the following command to install the built-in Venv module in Python. Or install a Python version with built-in Venv from the Python official website.
-
- ```shell
-apt-get install python3.10-venv
-```
-Install version 3.10.0 of venv into AINode in the AINode path.
-
- ```shell
-../Python-3.10.0/python -m venv venv(Folder Name)
-```
-When running the startup script, use ` -i ` to specify an existing Python interpreter path as the running environment for AINode, eliminating the need to create a new virtual environment.
-
-### 4.2 The SSL module in Python is not properly installed and configured to handle HTTPS resources
-WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
-You can install OpenSSLS and then rebuild Python to solve this problem
-> Currently Python versions 3.6 to 3.9 are compatible with OpenSSL 1.0.2, 1.1.0, and 1.1.1.
-
-Python requires OpenSSL to be installed on our system, the specific installation method can be found in [link](https://stackoverflow.com/questions/56552390/how-to-fix-ssl-module-in-python-is-not-available-in-centos)
-
- ```shell
-sudo apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev uuid-dev lzma-dev liblzma-dev
-sudo -E ./configure --with-ssl
-make
-sudo make install
-```
-
-### 4.3 Pip version is lower
-
-A compilation issue similar to "error: Microsoft Visual C++14.0 or greater is required..." appears on Windows
-
-The corresponding error occurs during installation and compilation, usually due to insufficient C++version or Setup tools version. You can check it in
-
- ```shell
-./python -m pip install --upgrade pip
-./python -m pip install --upgrade setuptools
-```
-
-
-### 4.4 Install and compile Python
-
-Use the following instructions to download the installation package from the official website and extract it:
- ```shell
-.wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz
-tar Jxf Python-3.10.0.tar.xz
-```
-Compile and install the corresponding Python package:
- ```shell
-cd Python-3.10.0
-./configure prefix=/usr/local/python3
-make
-sudo make install
-python3 --version
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Cluster-Deployment_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
deleted file mode 100644
index 04f6f2342..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Cluster-Deployment_timecho.md
+++ /dev/null
@@ -1,624 +0,0 @@
-
-# Cluster Deployment
-
-This guide describes how to manually deploy a cluster instance consisting of 3 ConfigNodes and 3 DataNodes (commonly referred to as a 3C3D cluster).
-
-
-
-
-
-
-## 1. Prerequisites
-
-1. **System Preparation**: Ensure the system has been configured according to the [System Requirements](../Deployment-and-Maintenance/Environment-Requirements.md).
-
-2. **IP Configuration**: It is recommended to use hostnames for IP configuration to prevent issues caused by IP address changes. Set the hostname by editing the `/etc/hosts` file. For example, if the local IP is `192.168.1.3` and the hostname is `iotdb-1`, run:
-
-```Bash
-echo "192.168.1.3 iotdb-1" >> /etc/hosts
-```
-
-Use the hostname for `cn_internal_address` and `dn_internal_address` in IoTDB configuration.
-
-3. **Unmodifiable Parameters**: Some parameters cannot be changed after the first startup. Refer to the [Parameter Configuration](#22-parameters-configuration) section.
-
-
-4. **Installation Path**: Ensure the installation path contains no spaces or non-ASCII characters to prevent runtime issues.
-5. **User Permissions**: Choose one of the following permissions during installation and deployment:
- - **Root User (Recommended)**: This avoids permission-related issues.
- - **Non-Root User**:
- - Use the same user for all operations, including starting, activating, and stopping services.
- - Avoid using `sudo`, which can cause permission conflicts.
-
-6. **Monitoring Panel**: Deploy a monitoring panel to track key performance metrics. Contact the Timecho team for access and refer to the [Monitoring Board Install and Deploy](../Deployment-and-Maintenance/Monitoring-panel-deployment.md).
-
-7. **Health Check Tool**: Before installation, the health check tool can help inspect the operating environment of IoTDB nodes and obtain detailed inspection results. The usage method of the IoTDB health check tool can be found in:[Health Check Tool](../Tools-System/Health-Check-Tool.md).
-
-
-## 2. Preparation
-
-1. Obtain the TimechoDB installation package: `timechodb-{version}-bin.zip` following [IoTDB-Package](../Deployment-and-Maintenance/IoTDB-Package_timecho.md))
-
-2. Configure the operating system environment according to [Environment Requirement](../Deployment-and-Maintenance/Environment-Requirements.md))
-
-### 2.1 Pre-installation Check
-
-To ensure the IoTDB Enterprise Edition installation package you obtained is complete and authentic, we recommend performing an SHA512 verification before proceeding with the installation and deployment.
-
-#### Preparation:
-
-- Obtain the officially released SHA512 checksum: Find the "SHA512 Checksum" corresponding to each version in the [Release History](../IoTDB-Introduction/Release-history_timecho.md) document.
-
-#### Verification Steps (Linux as an Example):
-
-1. Open the terminal and navigate to the directory where the installation package is stored (e.g., /data/iotdb):
- ```Bash
- cd /data/iotdb
- ```
-2. Execute the following command to calculate the hash value:
- ```Bash
- sha512sum timechodb-{version}-bin.zip
- ```
-3. The terminal will output a result (the left part is the SHA512 checksum, and the right part is the file name):
-
-
-
-4. Compare the output result with the official SHA512 checksum. Once confirmed that they match, you can proceed with the installation and deployment operations in accordance with the procedures below.
-
-#### Notes:
-
-- If the verification results do not match, please contact Timecho Team to re-obtain the installation package.
-- If a "file not found" prompt appears during verification, check whether the file path is correct or if the installation package has been fully downloaded.
-
-## 3. Installation Steps
-
-Taking a cluster with three Linux servers with the following information as example:
-
-| Node IP | Hostname | Services |
-| ------------- | -------- | -------------------- |
-| 11.101.17.224 | iotdb-1 | ConfigNode, DataNode |
-| 11.101.17.225 | iotdb-2 | ConfigNode, DataNode |
-| 11.101.17.226 | iotdb-3 | ConfigNode, DataNode |
-
-### 3.1 Configure Hostnames
-
-On all three servers, configure the hostnames by editing the `/etc/hosts` file. Use the following commands:
-
-```Bash
-echo "11.101.17.224 iotdb-1" >> /etc/hosts
-echo "11.101.17.225 iotdb-2" >> /etc/hosts
-echo "11.101.17.226 iotdb-3" >> /etc/hosts
-```
-
-### 3.2 Extract Installation Package
-
-Unzip the installation package and navigate to the directory:
-
-```Plain
-unzip timechodb-{version}-bin.zip
-cd timechodb-{version}-bin
-```
-
-### 3.3 Parameters Configuration
-
-#### 3.3.1 Memory Configuration
-
-Edit the following files for memory allocation:
-
-- **ConfigNode**: `./conf/confignode-env.sh` (or `.bat` for Windows)
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------ | :--------------------------------- | :---------- | :-------------- | :-------------------------------------- |
-| MEMORY_SIZE | Total memory allocated to the node | Automatically calculated based on system memory, defaulting to 30% of the system memory. | As needed | Save changes without immediate execution; modifications take effect after service restart. |
-
-
-- **DataNode**: `./conf/datanode-env.sh` (or `.bat` for Windows)
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------ | :--------------------------------- |:-----------------------------------------------------------------------------------------| :-------------- | :-------------------------------------- |
-| MEMORY_SIZE | Total memory allocated to the node | Automatically calculated based on system memory, defaulting to 50% of the system memory. | As needed | Save changes without immediate execution; modifications take effect after service restart. |
-
-
-#### 3.3.2 General Configuration
-
-Set the following parameters in `./conf/iotdb-system.properties`. Refer to `./conf/iotdb-system.properties.template` for a complete list.
-
-**Cluster-Level Parameters**:
-
-| **Parameter** | **Description** | **11.101.17.224** | **11.101.17.225** | **11.101.17.226** |
-| :------------------------ | :----------------------------------------------------------- | :---------------- | :---------------- | :---------------- |
-| cluster_name | Name of the cluster | defaultCluster | defaultCluster | defaultCluster |
-| schema_replication_factor | Metadata replication factor; DataNode count shall not be fewer than this value | 3 | 3 | 3 |
-| data_replication_factor | Data replication factor; DataNode count shall not be fewer than this value | 2 | 2 | 2 |
-
-**ConfigNode Parameters**:
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **11.101.17.224** | **11.101.17.225** | **11.101.17.226** | **Notes** |
-| :------------------ | :----------------------------------------------------------- | :-------------- | :----------------------------------------------------------- | :---------------- | :---------------- | :---------------- | :--------------------------------------------------------- |
-| cn_internal_address | Address used for internal communication within the cluster | 127.0.0.1 | Server's IPv4 address or hostname. Use hostname to avoid issues when the IP changes. | iotdb-1 | iotdb-2 | iotdb-3 | This parameter cannot be modified after the first startup. |
-| cn_internal_port | Port used for internal communication within the cluster | 10710 | 10710 | 10710 | 10710 | 10710 | This parameter cannot be modified after the first startup. |
-| cn_consensus_port | Port used for consensus protocol communication among ConfigNode replicas | 10720 | 10720 | 10720 | 10720 | 10720 | This parameter cannot be modified after the first startup. |
-| cn_seed_config_node | Address of the ConfigNode for registering and joining the cluster. (e.g.,`cn_internal_address:cn_internal_port`) | 127.0.0.1:10710 | Address and port of the seed ConfigNode (e.g., `cn_internal_address:cn_internal_port`) | iotdb-1:10710 | iotdb-1:10710 | iotdb-1:10710 | This parameter cannot be modified after the first startup. |
-
-**DataNode Parameters**:
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **11.101.17.224** | **11.101.17.225** | **11.101.17.226** | **Notes** |
-| :------------------------------ | :----------------------------------------------------------- |:----------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| :---------------- | :---------------- | :---------------- | :--------------------------------------------------------- |
-| dn_rpc_address | Address for the client RPC service | 127.0.0.1 | By default, the local machine can directly access it. For non-local access, please modify this configuration item to the IPv4 address or hostname of the server where it is located. It is recommended to use the IPv4 address of the server where it is located. | iotdb-1 | iotdb-2 | iotdb-3 | Effective after restarting the service. |
-| dn_rpc_port | Port for the client RPC service | 6667 | 6667 | 6667 | 6667 | 6667 | Effective after restarting the service. |
-| dn_internal_address | Address used for internal communication within the cluster | 127.0.0.1 | Server's IPv4 address or hostname. Use hostname to avoid issues when the IP changes. | iotdb-1 | iotdb-2 | iotdb-3 | This parameter cannot be modified after the first startup. |
-| dn_internal_port | Port used for internal communication within the cluster | 10730 | 10730 | 10730 | 10730 | 10730 | This parameter cannot be modified after the first startup. |
-| dn_mpp_data_exchange_port | Port used for receiving data streams | 10740 | 10740 | 10740 | 10740 | 10740 | This parameter cannot be modified after the first startup. |
-| dn_data_region_consensus_port | Port used for data replica consensus protocol communication | 10750 | 10750 | 10750 | 10750 | 10750 | This parameter cannot be modified after the first startup. |
-| dn_schema_region_consensus_port | Port used for metadata replica consensus protocol communication | 10760 | 10760 | 10760 | 10760 | 10760 | This parameter cannot be modified after the first startup. |
-| dn_seed_config_node | Address of the ConfigNode for registering and joining the cluster.(e.g.,`cn_internal_address:cn_internal_port`) | 127.0.0.1:10710 | Address of the first ConfigNode | iotdb-1:10710 | iotdb-1:10710 | iotdb-1:10710 | This parameter cannot be modified after the first startup. |
-
-**Note:** Ensure files are saved after editing. Tools like VSCode Remote do not save changes automatically.
-
-### 3.4 Start ConfigNode Instances
-
-1. Start the first ConfigNode (`iotdb-1`) as the seed node
-
-```Bash
- # Unix/OS X
- cd sbin
- ./start-confignode.sh -d # The "-d" flag starts the process in the background.
-
- # Windows
- # Before version V2.0.4.x
- .\start-confignode.bat
-
- # V2.0.4.x and later versions
- .\windows\start-confignode.bat
- ```
-
-2. Start the remaining ConfigNodes (`iotdb-2` and `iotdb-3`) in sequence.
-
-If the startup fails, refer to the [Common Issues](#5-common-issues) section below for troubleshooting.
-
-### 3.5 Start DataNode Instances
-
-On each server, navigate to the `sbin` directory and start the DataNode:
-
-```Bash
- # Unix/OS X
- cd sbin
- ./start-datanode.sh -d # The "-d" flag starts the process in the background.
-
- # Windows
- # Before version V2.0.4.x
- .\start-datanode.bat
-
- # V2.0.4.x and later versions
- .\windows\start-datanode.bat
- ```
-
-### 3.6 Activate the Database
-
-#### Option 1: Command-Based Activation
-
-1. Enter the IoTDB CLI on any node of the cluster:
-
-**Linux** or **MacOS**
-
-```Bash
-# Before version V2.0.6.x
-Shell> bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.6.x and later versions
-Shell > bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021 -sql_dialect table
-```
-**Windows**
-
-```Bash
-# Before version V2.0.4.x
-Shell> sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.4.x and later versions, before version V2.0.6.x
-Shell> sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.6.x and later versions
-Shell > sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021 -sql_dialect table
-```
-
-2. Execute the following command to obtain the machine code required for activation:
-
-```SQL
-IoTDB> show system info
-```
-```shell
-+--------------------------------------------------------------+
-| SystemInfo|
-+--------------------------------------------------------------+
-|01-TE5NLES4-UDDWCMYE,01-GG5NLES4-XXDWCMYE,01-FF5NLES4-WWWWCMYE|
-+--------------------------------------------------------------+
-Total line number = 1
-```
-
-3. Execute the following statement to obtain the version number of the database to be activated:
-
-```SQL
-IoTDB> show version
-```
-```shell
-+-------+---------+
-|Version|BuildInfo|
-+-------+---------+
-|2.0.9.2| 5ea21bc|
-+-------+---------+
-Total line number = 1
-```
-
-4. Provide the obtained machine code and version number to the Timecho team.
-
-5. Enter the activation codes provided by the Timecho team in the CLI in sequence using the following format. Wrap the activation code in single quotes ('):
-
-```SQL
-IoTDB> activate '01-D4EYQGPZ-EAUJJODW-NUKRDR6F-TUQS3B75-EDZFLK3A-6BOKJFFZ-ALDHOMN7-NB2E4BHI-7ZKGFVK6-GCIFXA4T-UG3XJTTD-SHJV6F2P-Q27B4OMJ-R47ZDIM3-UUASUXG2-OQXGVZCO-MMYKICZU-TWFQYYAO-ZOAGOKJA-NYHQTA5U-EWAR4EP5-MRC6R2CI-PKUTKRCT-7UDGRH3F-7BYV4P5D-6KKIA===,01-D4EYQGPZ-EAUJJODW-NUKRDR6F-TUQS3B75-EDZFLK3A-6BOKJFFZ-ALDHOMN7-NB2E4BHI-7ZKGFVK6-GCIFXA4T-UG3XJTTD-SHJV6F2P-Q27B4OMJ-R47ZDIM3-UUASUXG2-OQXGVZCO-MMYKICZU-TWFQYYAO-ZOAGOKJA-NYHQTA5U-EWAR4EP5-MRC6R2CI-PKUTKRCT-7UDGRH3F-7BYV4P5D-6KKIA===,01-D4EYQGPZ-EAUJJODW-NUKRDR6F-TUQS3B75-EDZFLK3A-6BOKJFFZ-ALDHOMN7-NB2E4BHI-7ZKGFVK6-GCIFXA4T-UG3XJTTD-SHJV6F2P-Q27B4OMJ-R47ZDIM3-UUASUXG2-OQXGVZCO-MMYKICZU-TWFQYYAO-ZOAGOKJA-NYHQTA5U-EWAR4EP5-MRC6R2CI-PKUTKRCT-7UDGRH3F-7BYV4P5D-6KKIA==='
-```
-
-- Note : The activation operation only needs to be performed once on any machine in the cluster.
-
-#### Option 2: File-Based Activation
-
-1. Start all ConfigNodes and DataNodes.
-2. Copy the `system_info` file from the `activation` directory on each server and send them to the Timecho team.
-3. Place the license files provided by the Timecho team into the corresponding `activation` folder for each node.
-
-
-### 3.7 Verify Activation
-
-In the CLI, you can check the activation status by running the `show activation` command; the example below shows a status of ACTIVATED, indicating successful activation.
-
-```sql
-IoTDB> show activation
-+---------------+---------+-----------------------------+
-| LicenseInfo| Usage| Limit|
-+---------------+---------+-----------------------------+
-| Status|ACTIVATED| -|
-| ExpiredTime| -|2026-04-30T00:00:00.000+08:00|
-| DataNodeLimit| 1| Unlimited|
-| CpuLimit| 16| Unlimited|
-| DeviceLimit| 30| Unlimited|
-|TimeSeriesLimit| 72| 1,000,000,000|
-+---------------+---------+-----------------------------+
-```
-
-
-### 3.8 One-click Cluster Start and Stop
-
-#### 3.8.1 Overview
-
-Within the root directory of IoTDB, the `sbin `subdirectory houses the `start-all.sh` and `stop-all.sh` scripts, which work in concert with the `iotdb-cluster.properties` configuration file located in the `conf` subdirectory. This synergy enables the one-click initiation or termination of all nodes within the cluster from a single node. This approach facilitates efficient management of the IoTDB cluster's lifecycle, streamlining the deployment and operational maintenance processes.
-
-This following section will introduce the specific configuration items in the `iotdb-cluster.properties` file.
-
-#### 3.8.2 Configuration Items
-
-> Note:
->
-> * When the cluster changes, this configuration file needs to be manually updated.
-> * If the `iotdb-cluster.properties` configuration file is not set up and the `start-all.sh` or `stop-all.sh` scripts are executed, the scripts will, by default, start or stop the ConfigNode and DataNode nodes located in the IOTDB\_HOME directory where the scripts reside.
-> * It is recommended to configure SSH passwordless login: If not configured, the script will prompt for the server password after execution to facilitate subsequent start, stop, or destroy operations. If already configured, there is no need to enter the server password during script execution.
-
-* confignode\_address\_list
-
-| **Name** | **confignode\_address\_list** |
-| :----------------: |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Description | A list of IP addresses or hostname of the hosts where the ConfigNodes to be started/stopped are located. If there are multiple, they should be separated by commas. |
-| Type | String |
-| Default | None |
-| Effective | After restarting the system |
-
-* datanode\_address\_list
-
-| **Name** | **datanode\_address\_list** |
-| :----------------: |:------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Description | A list of IP addresses or hostname of the hosts where the DataNodes to be started/stopped are located. If there are multiple, they should be separated by commas. |
-| Type | String |
-| Default | None |
-| Effective | After restarting the system |
-
-* ssh\_account
-
-| **Name** | **ssh\_account** |
-| :----------------: | :------------------------------------------------------------------------------------------------- |
-| Description | The username used to log in to the target hosts via SSH. All hosts must have the same username. |
-| Type | String |
-| Default | root |
-| Effective | After restarting the system |
-
-* ssh\_port
-
-| **Name** | **ssh\_port** |
-| :----------------: | :---------------------------------------------------------------------------------- |
-| Description | The SSH port exposed by the target hosts. All hosts must have the same SSH port. |
-| Type | int |
-| Default | 22 |
-| Effective | After restarting the system |
-
-* confignode\_deploy\_path
-
-| **Name** | **confignode\_deploy\_path** |
-| :----------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Description | The path on the target hosts where all ConfigNodes to be started/stopped are located. All ConfigNodes must be in the same directory on their respective hosts. eg: `/data/demo/apache-iotdb-1.3.1-all-bin`|
-| Type | String |
-| Default | None |
-| Effective | After restarting the system |
-
-* datanode\_deploy\_path
-
-| **Name** | **datanode\_deploy\_path** |
-| :----------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Description | The path on the target hosts where all DataNodes to be started/stopped are located. All DataNodes must be in the same directory on their respective hosts.eg: `/data/demo/apache-iotdb-1.3.1-all-bin` |
-| Type | String |
-| Default | None |
-| Effective | After restarting the system |
-
-
-#### 3.8.3 Quick Example
-
-1. Configuration File: `iotdb-cluster.properties`
-```properties
-# Configure ConfigNode node addresses, separated by commas
-confignode_address_list=172.xx.xx.16,172.xx.xx.17,172.xx.xx.18
-
-# Configure DataNode node addresses, separated by commas
-datanode_address_list=172.xx.xx.16,172.xx.xx.17,172.xx.xx.18
-
-# SSH login username for target deployment servers
-ssh_account=root
-
-# SSH service port number
-ssh_port=22
-
-# IoTDB installation directory (the program will be deployed into this path on remote nodes)
-confignode_deploy_path=/data/demo/apache-iotdb-1.3.1-all-bin
-datanode_deploy_path=/data/demo/apache-iotdb-1.3.1-all-bin
-```
-
-2. Run `./start-all.sh` to launch cluster and verify status
- Connect to IoTDB CLI and execute `show cluster`. A successful output is shown below:
-```SQL
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+--------------+-----------+----------------+
-|NodeID| NodeType| Status|InternalAddress|InternalPort| Version| BuildInfo| ActivateStatus|
-+------+----------+-------+---------------+------------+--------------+-----------+----------------+
-| 0|ConfigNode|Running| 172.xx.xx.16| 10710| 1.3.1| 0xxxxxx| ACTIVATED|
-| 1|ConfigNode|Running| 172.xx.xx.18| 10710| 1.3.1| 0xxxxxx| ACTIVATED|
-| 2|ConfigNode|Running| 172.xx.xx.17| 10710| 1.3.1| 0xxxxxx| ACTIVATED|
-| 3| DataNode|Running| 172.xx.xx.18| 10730| 1.3.1| 0xxxxxx| ACTIVATED|
-| 4| DataNode|Running| 172.xx.xx.17| 10730| 1.3.1| 0xxxxxx| ACTIVATED|
-| 5| DataNode|Running| 172.xx.xx.16| 10730| 1.3.1| 0xxxxxx| ACTIVATED|
-+------+----------+-------+---------------+------------+--------------+-----------+----------------+
-```
-
-
-## 4. Maintenance
-
-### 4.1 ConfigNode Maintenance
-
-ConfigNode maintenance includes adding and removing ConfigNodes. Common use cases include:
-
-- **Cluster Expansion:** If the cluster contains only 1 ConfigNode, adding 2 more ConfigNodes enhances high availability, resulting in a total of 3 ConfigNodes.
-- **Cluster Fault Recovery:** If a ConfigNode's machine fails and it cannot function normally, remove the faulty ConfigNode and add a new one to the cluster.
-
-**Note:** After completing ConfigNode maintenance, ensure that the cluster contains either 1 or 3 active ConfigNodes. Two ConfigNodes do not provide high availability, and more than three ConfigNodes can degrade performance.
-
-#### 4.1.1 Adding a ConfigNode
-
-**Linux / MacOS :**
-
-```Bash
-sbin/start-confignode.sh
-```
-
-**Windows:**
-
-```Bash
-# Before version V2.0.4.x
-sbin\start-confignode.bat
-
-# V2.0.4.x and later versions
-sbin\windows\start-confignode.bat
-```
-
-#### 4.1.2 Removing a ConfigNode
-
-1. Connect to the cluster using the CLI and confirm the internal address and port of the ConfigNode to be removed:
-
-```Plain
-show confignodes;
-```
-
-Example output:
-
-```Plain
-IoTDB> show confignodes
-+------+-------+---------------+------------+--------+
-|NodeID| Status|InternalAddress|InternalPort| Role|
-+------+-------+---------------+------------+--------+
-| 0|Running| 127.0.0.1| 10710| Leader|
-| 1|Running| 127.0.0.1| 10711|Follower|
-| 2|Running| 127.0.0.1| 10712|Follower|
-+------+-------+---------------+------------+--------+
-Total line number = 3
-It costs 0.030s
-```
-
-2. Remove the ConfigNode using the script:
-
-**Linux / MacOS:**
-
-```Bash
-sbin/remove-confignode.sh [confignode_id]
-# Or:
-sbin/remove-confignode.sh [cn_internal_address:cn_internal_port]
-```
-
-**Windows:**
-
-```Bash
-# Before version V2.0.4.x
-sbin\remove-confignode.bat [confignode_id]
-# Or:
-sbin\remove-confignode.bat [cn_internal_address:cn_internal_port]
-
-# V2.0.4.x and later versions
-sbin\windows\remove-confignode.bat [confignode_id]
-# Or:
-sbin\windows\remove-confignode.bat [cn_internal_address:cn_internal_port]
-```
-
-### 4.2 DataNode Maintenance
-
-DataNode maintenance includes adding and removing DataNodes. Common use cases include:
-
-- **Cluster Expansion:** Add new DataNodes to increase cluster capacity.
-- **Cluster Fault Recovery:** If a DataNode's machine fails and it cannot function normally, remove the faulty DataNode and add a new one to the cluster.
-
-**Note:** During and after DataNode maintenance, ensure that the number of active DataNodes is not fewer than the data replication factor (usually 2) or the schema replication factor (usually 3).
-
-#### 4.2.1 Adding a DataNode
-
-**Linux / MacOS:**
-
-```Bash
-sbin/start-datanode.sh
-```
-
-**Windows:**
-
-```Bash
-# Before version V2.0.4.x
-sbin\start-datanode.bat
-
-# V2.0.4.x and later versions
-sbin\windows\start-datanode.bat
-```
-
-**Note:** After adding a DataNode, the cluster load will gradually balance across all nodes as new writes arrive and old data expires (if TTL is set).
-
-#### 4.2.2 Removing a DataNode
-
-1. Connect to the cluster using the CLI and confirm the RPC address and port of the DataNode to be removed:
-
-```sql
-show datanodes;
-```
-
-Example output:
-
-```sql
-IoTDB> show datanodes
-+------+-------+----------+-------+-------------+---------------+
-|NodeID| Status|RpcAddress|RpcPort|DataRegionNum|SchemaRegionNum|
-+------+-------+----------+-------+-------------+---------------+
-| 1|Running| 0.0.0.0| 6667| 0| 0|
-| 2|Running| 0.0.0.0| 6668| 1| 1|
-| 3|Running| 0.0.0.0| 6669| 1| 0|
-+------+-------+----------+-------+-------------+---------------+
-Total line number = 3
-It costs 0.110s
-```
-
-2. Remove the DataNode using the script:
-
-**Linux / MacOS:**
-
-```Bash
-sbin/remove-datanode.sh [dn_rpc_address:dn_rpc_port]
-```
-
-**Windows:**
-
-```Bash
-# Before version V2.0.4.x
-sbin\remove-datanode.bat [dn_rpc_address:dn_rpc_port]
-
-# V2.0.4.x and later versions
-sbin\windows\remove-datanode.bat [dn_rpc_address:dn_rpc_port]
-```
-
-### 4.3 Cluster Maintenance
-
-For more details on cluster maintenance, please refer to: [Cluster Maintenance](../User-Manual/Load-Balance.md)
-
-## 5. Common Issues
-
-1. Activation Fails Repeatedly
- - Use the `ls -al` command to verify that the ownership of the installation directory matches the current user.
- - Check the ownership of all files in the `./activation` directory to ensure they belong to the current user.
-
-2. ConfigNode Fails to Start
- 1. Review the startup logs to check if any parameters, which cannot be modified after the first startup, were changed.
- 2. Check the logs for any other errors. If unresolved, contact technical support for assistance.
- 3. If the deployment is fresh or data can be discarded, clean the environment and redeploy using the following steps:
-
- **Clean the Environment**
-
- 1. Stop all ConfigNode and DataNode processes:
- ```Bash
- sbin/stop-standalone.sh
- ```
-
- 2. Check for any remaining processes:
- ```Bash
- jps
- # or
- ps -ef | grep iotdb
- ```
-
- 3. If processes remain, terminate them manually:
- ```Bash
- kill -9
-
- #For systems with a single IoTDB instance, you can clean up residual processes with:
- ps -ef | grep iotdb | grep -v grep | tr -s ' ' ' ' | cut -d ' ' -f2 | xargs kill -9
- ```
-
- 4. Delete the `data` and `logs` directories:
- ```Bash
- cd /data/iotdb
- rm -rf data logs
- ```
-
-## 6. Appendix
-
-### 6.1 ConfigNode Parameters
-
-| Parameter | Description | Required |
-| :-------- | :---------------------------------------------------------- | :------- |
-| -d | Starts the process in daemon mode (runs in the background). | No |
-
-### 6.2 DataNode Parameters
-
-| Parameter | Description | Required |
-| :-------- | :----------------------------------------------------------- | :------- |
-| -v | Displays version information. | No |
-| -f | Runs the script in the foreground without backgrounding it. | No |
-| -d | Starts the process in daemon mode (runs in the background). | No |
-| -p | Specifies a file to store the process ID for process management. | No |
-| -c | Specifies the path to the configuration folder; the script loads configuration files from this location. | No |
-| -g | Prints detailed garbage collection (GC) information. | No |
-| -H | Specifies the path for the Java heap dump file, used during JVM memory overflow. | No |
-| -E | Specifies the file for JVM error logs. | No |
-| -D | Defines system properties in the format `key=value`. | No |
-| -X | Passes `-XX` options directly to the JVM. | No |
-| -h | Displays the help instructions. | No |
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Database-Resources_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/Database-Resources_timecho.md
deleted file mode 100644
index bb15f8a36..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Database-Resources_timecho.md
+++ /dev/null
@@ -1,222 +0,0 @@
-
-# Database Resources
-## 1. CPU
-
-
-
- Number of timeseries (frequency<=1HZ)
- CPU
- Number of nodes
-
-
- standalone
- Dual-Active
- Distributed
-
-
- Within 100000
- 2-4 cores
- 1
- 2
- 3
-
-
- Within 300000
- 4-8 cores
- 1
- 2
- 3
-
-
- Within 500000
- 8-16 cores
- 1
- 2
- 3
-
-
- Within 1000000
- 16-32 cores
- 1
- 2
- 3
-
-
- Within 2000000
- 32-48 cores
- 1
- 2
- 3
-
-
- Within 10000000
- 48core
- 1
- 2
- Please contact Timecho Business for consultation
-
-
- Over 10000000
- Please contact Timecho Business for consultation
-
-
-
-
-> Supported CPU models: Kunpeng, Phytium, Sunway, Hygon, Zhaoxin, Loongson
-
-## 2. Memory
-
-
-
- Number of timeseries (frequency<=1HZ)
- Memory
- Number of nodes
-
-
- standalone
- Dual-Active
- Distributed
-
-
- Within 100000
- 2-4G
- 1
- 2
- 3
-
-
- Within 300000
- 6-12G
- 1
- 2
- 3
-
-
- Within 500000
- 12-24G
- 1
- 2
- 3
-
-
- Within 1000000
- 24-48G
- 1
- 2
- 3
-
-
- Within 2000000
- 48-96G
- 1
- 2
- 3
-
-
- Within 10000000
- 128G
- 1
- 2
- Please contact Timecho Business for consultation
-
-
- Over 10000000
- Please contact Timecho Business for consultation
-
-
-
-
-> Flexible memory configuration options are provided. Users can adjust them in the datanode-env file. For details and configuration guidelines, please refer to [datanode-env](../Reference/System-Config-Manual.md#_3-2-datanode-env-sh-bat)
-
-**Note**: For dedicated hardware allocation and throughput references for AI model inference scenarios, refer to Section **[2.3.1 Resource Configuration Recommendations](../Deployment-and-Maintenance/AINode_Deployment_Upgrade_timecho.md#_2-3-1-resource-configuration-recommendations)** in the AINode deployment documentation.
-
-## 3. Storage (Disk)
-### 3.1 Storage space
-Calculation Formula:
-
-```Plain
-Storage Space = Number of Measurement Points * Sampling Frequency (Hz) * Size of Each Data Point (Bytes, see the table below) * Storage Duration * Replication Factor / Compression Ratio
-```
-
-Data Point Size Calculation Table:
-
-
-
-
- Data Type
- Timestamp (Bytes)
- Value (Bytes)
- Total Data Point Size (Bytes)
-
-
-
- Boolean
- 8
- 1
- 9
-
-
- INT32 / FLOAT (Single Precision)
- 8
- 4
- 12
-
-
- INT64 / DOUBLE (Double Precision)
- 8
- 8
- 16
-
-
- TEXT (String)
- 8
- Average = a
- 8+a
-
-
-
-Example:
-
-- Scenario: 1,000 devices, 100 measurement points per device, i.e. 100,000 sequences in total. Data type is INT32. Sampling frequency is 1Hz (once per second). Storage duration is 1 year. Replication factor is 3.
-- Full Calculation:
- ```Plain
- 1,000 devices * 100 measurement points * 12 bytes per data point * 86,400 seconds per day * 365 days per year * 3 replicas / 10 compression ratio = 11 TB
- ```
-- Simplified Calculation:
- ```Plain
- 1,000 * 100 * 12 * 86,400 * 365 * 3 / 10 = 11 TB
- ```
-### 3.2 Storage Configuration
-
-- For systems with > 10 million measurement points or high query loads, SSD is recommended.
-
-## 4. Network (NIC)
-When the write throughput does not exceed 10 million points per second, a gigabit network card is required. When the write throughput exceeds 10 million points per second, a 10-gigabit network card is required.
-
-| **Write** **Throughput** **(Data Points/Second)** | **NIC** **Speed** |
-| ------------------------------------------------- | -------------------- |
-| < 10 million | 1 Gbps (Gigabit) |
-| ≥ 10 million | 10 Gbps (10 Gigabit) |
-
-## 5. Additional Notes
-
-- IoTDB supports second-level cluster scaling . Data migration is not required when adding new nodes, so there is no need to worry about limited cluster capacity based on current data estimates. You can add new nodes to the cluster when scaling is needed in the future.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Deployment-form_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/Deployment-form_timecho.md
deleted file mode 100644
index b2daee47f..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Deployment-form_timecho.md
+++ /dev/null
@@ -1,63 +0,0 @@
-
-# Deployment form
-
-IoTDB has two operation modes: standalone mode and cluster mode.
-
-## 1. Standalone Mode
-
-An IoTDB standalone instance includes 1 ConfigNode and 1 DataNode, i.e., 1C1D.
-
-- **Features**: Easy for developers to install and deploy, with low deployment and maintenance costs and convenient operations.
-- **Use Cases**: Scenarios with limited resources or low high-availability requirements, such as edge servers.
-- **Deployment Method**: [Stand-Alone Deployment](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md)
-
-## 2. Dual-Active Mode
-
-Dual-Active Deployment is a feature of TimechoDB, where two independent instances synchronize bidirectionally and can provide services simultaneously. If one instance stops and restarts, the other instance will resume data transfer from the breakpoint.
-
-> An IoTDB Dual-Active instance typically consists of 2 standalone nodes, i.e., 2 sets of 1C1D. Each instance can also be a cluster.
-
-- **Features**: The high-availability solution with the lowest resource consumption.
-- **Use Cases**: Scenarios with limited resources (only two servers) but requiring high availability.
-- **Deployment Method**: [Dual-Active Deployment](../Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md)
-
-## 3. Cluster Mode
-
-An IoTDB cluster instance consists of 3 ConfigNodes and no fewer than 3 DataNodes, typically 3 DataNodes, i.e., 3C3D. If some nodes fail, the remaining nodes can still provide services, ensuring high availability of the database. Performance can be improved by adding DataNodes.
-
-- **Features**: High availability, high scalability, and improved system performance by adding DataNodes.
-- **Use Cases**: Enterprise-level application scenarios requiring high availability and reliability.
-- **Deployment Method**: [Cluster Deployment](../Deployment-and-Maintenance/Cluster-Deployment_timecho.md)
-
-
-
-## 4. Feature Summary
-
-| **Dimension** | **Stand-Alone Mode** | **Dual-Active Mode** | **Cluster Mode** |
-| :-------------------------- | :------------------------------------------------------- | :------------------------------------------------------ | :------------------------------------------------------ |
-| Use Cases | Edge-side deployment, low high-availability requirements | High-availability services, disaster recovery scenarios | High-availability services, disaster recovery scenarios |
-| Number of Machines Required | 1 | 2 | ≥3 |
-| Security and Reliability | Cannot tolerate single-point failure | High, can tolerate single-point failure | High, can tolerate single-point failure |
-| Scalability | Can expand DataNodes to improve performance | Each instance can be scaled as needed | Can expand DataNodes to improve performance |
-| Performance | Can scale with the number of DataNodes | Same as one of the instances | Can scale with the number of DataNodes |
-
-- The deployment steps for Stand-Alone Mode and Cluster Mode are similar (adding ConfigNodes and DataNodes one by one), with differences only in the number of replicas and the minimum number of nodes required to provide services.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Docker-Deployment_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/Docker-Deployment_timecho.md
deleted file mode 100644
index a0d4293d9..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Docker-Deployment_timecho.md
+++ /dev/null
@@ -1,487 +0,0 @@
-
-# Docker Deployment
-
-## 1. Environment Preparation
-
-### 1.1 Install Docker
-
-```Bash
-#Taking Ubuntu as an example. For other operating systems, you can search for installation methods on your own.
-#step1: Install necessary system tools
-sudo apt-get update
-sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
-#step2: Install GPG certificate
-curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
-#step3: Add the software source
-sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
-#step4: Update and install Docker CE
-sudo apt-get -y update
-sudo apt-get -y install docker-ce
-#step5: Set Docker to start automatically on boot
-sudo systemctl enable docker
-#step6: Verify if Docker is installed successfully
-docker --version #Display version information, indicating successful installation.
-```
-
-### 1.2 Install Docker Compose
-
-```Bash
-#Installation command
-curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-chmod +x /usr/local/bin/docker-compose
-ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
-#Verify the installation
-docker-compose --version #Display version information, indicating successful installation.
-```
-
-### 1.3 Install dmidecode
-
-By default, Linux servers should already have dmidecode. If not, you can use the following command to install it.
-
-```Bash
-sudo apt-get install dmidecode
-```
-
-After installing `dmidecode`, you can locate its installation path by running:`whereis dmidecode`. Assuming the result is `/usr/sbin/dmidecode`, please remember this path as it will be used in the YML file of Docker Compose later.
-
-### 1.4 Obtain the Container Image
-
-For the TimechoDB container image, you can contact the Timecho team to acquire it.
-
-## 2. Stand-Alone Deployment
-
-This section demonstrates how to deploy a standalone Docker version of 1C1D.
-
-### 2.1 Load the Image File
-
-For example, if the IoTDB container image file you obtained is named: `iotdb-enterprise-2.0.x.x-standalone-docker.tar.gz`, use the following command to load the image:
-
-```Bash
-docker load -i iotdb-enterprise-2.0.x.x-standalone-docker.tar.gz
-```
-
-To view the loaded image, use the following command:
-
-```Bash
-docker images
-```
-
-
-
-### 2.2 Create a Docker Bridge Network
-
-```Bash
-docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
-```
-
-### 2.3 Write the Docker-Compose YML File
-
-Assume the IoTDB installation directory and the YML file are placed under the `/docker-iotdb` folder. The directory structure is as follows:`docker-iotdb/iotdb`, `/docker-iotdb/docker-compose-standalone.yml`
-
-```Bash
-docker-iotdb:
-├── iotdb #Iotdb installation directory
-│── docker-compose-standalone.yml #YML file for standalone Docker Composer
-```
-
-The complete content of `docker-compose-standalone.yml` is as follows:
-
-```Bash
-version: "3"
-services:
- iotdb-service:
- image: timecho/timechodb:2.0.2.1-standalone #The image used
- hostname: iotdb
- container_name: iotdb
- restart: always
- ports:
- - "6667:6667"
- environment:
- - cn_internal_address=iotdb
- - cn_internal_port=10710
- - cn_consensus_port=10720
- - cn_seed_config_node=iotdb:10710
- - dn_rpc_address=iotdb
- - dn_internal_address=iotdb
- - dn_rpc_port=6667
- - dn_internal_port=10730
- - dn_mpp_data_exchange_port=10740
- - dn_schema_region_consensus_port=10750
- - dn_data_region_consensus_port=10760
- - dn_seed_config_node=iotdb:10710
- privileged: true
- volumes:
- - ./iotdb/activation:/iotdb/activation
- - ./iotdb/data:/iotdb/data
- - ./iotdb/logs:/iotdb/logs
- - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro
- - /dev/mem:/dev/mem:ro
- networks:
- iotdb:
- ipv4_address: 172.18.0.6
- # Note: Some environments set an extremely high container nofile limit (~2^30 = 1073741824).
- # This can make the startup step "Checking whether the ports are already occupied..." appear to hang (lsof slow).
- # If you see that line for a long time, lower the nofile limit by uncommenting below:
- # ulimits:
- # nofile:
- # soft: 1048576
- # hard: 1048576
-networks:
- iotdb:
- external: true
-```
-
-### 2.4 First Startup
-
-Use the following command to start:
-
-```Bash
-cd /docker-iotdb
-docker-compose -f docker-compose-standalone.yml up
-```
-
-Since the system is not activated yet, it will exit immediately after the first startup, which is normal. The purpose of the first startup is to generate the machine code file for the activation process.
-
-
-
-### 2.5 Apply for Activation
-
-- After the first startup, a `system_info` file will be generated in the physical machine directory `/docker-iotdb/iotdb/activation`. Copy this file and send it to the Timecho team.
-
- 
-
-- Once you receive the `license` file, copy it to the `/docker-iotdb/iotdb/activation` folder.
-
- 
-
-### 2.6 Start IoTDB Again
-
-```Bash
-docker-compose -f docker-compose-standalone.yml up -d
-```
-
-
-
-### 2.7 Verify the Deployment
-
-- Check the logs: If you see the following message, the startup is successful.
-
- ```Bash
- docker logs -f iotdb-datanode #View log command
- 2024-07-19 12:02:32,608 [main] INFO o.a.i.db.service.DataNode:231 - Congratulations, IoTDB DataNode is set up successfully. Now, enjoy yourself!
- ```
-
- 
-
-- Enter the container and check the service status:
-
- View the launched container
-
- ```Bash
- docker ps
- ```
-
- 
-
- Enter the container, log in to the database through CLI, and use the show cluster command to view the service status and activation status
-
- ```Bash
- docker exec -it iotdb /bin/bash #Enter the container
- ./start-cli.sh -h iotdb #Log in to the database
- IoTDB> show cluster #Check the service status
- ```
-
- If all services are in the `running` state, the IoTDB deployment is successful.
-
- 
-
-### 2.8 Map the `/conf` Directory (Optional)
-
-If you want to modify configuration files directly on the physical machine, you can map the `/conf` folder from the container. Follow these steps:
-
-**Step 1**: Copy the `/conf` directory from the container to `/docker-iotdb/iotdb/conf`:
-
-```Bash
-docker cp iotdb:/iotdb/conf /docker-iotdb/iotdb/conf
-```
-
-**Step 2**: Add the mapping in `docker-compose-standalone.yml`:
-
-```Bash
- volumes:
- - ./iotdb/conf:/iotdb/conf # Add this mapping for the /conf folder
- - ./iotdb/data:/iotdb/data
- - ./iotdb/logs:/iotdb/logs
- - /dev/mem:/dev/mem:ro
-```
-
-**Step 3**: Restart IoTDB:
-
-```Bash
-docker-compose -f docker-compose-standalone.yml up -d
-```
-
-## 3. Cluster Deployment
-
-This section describes how to manually deploy a cluster consisting of 3 ConfigNodes and 3 DataNodes, commonly referred to as a 3C3D cluster.
-
-
-
-
-
-**Note: The cluster version currently only supports host and overlay networks, and does not support bridge networks.**
-
-Below, we demonstrate how to deploy a 3C3D cluster using the host network as an example.
-
-### 3.1 Set Hostnames
-
-Assume there are 3 Linux servers with the following IP addresses and service roles:
-
-| Node IP | Hostname | Services |
-| :---------- | :------- | :------------------- |
-| 192.168.1.3 | iotdb-1 | ConfigNode, DataNode |
-| 192.168.1.4 | iotdb-2 | ConfigNode, DataNode |
-| 192.168.1.5 | iotdb-3 | ConfigNode, DataNode |
-
-On each of the 3 machines, configure the hostnames by editing the `/etc/hosts` file. Use the following commands:
-
-```Bash
-echo "192.168.1.3 iotdb-1" >> /etc/hosts
-echo "192.168.1.4 iotdb-2" >> /etc/hosts
-echo "192.168.1.5 iotdb-3" >> /etc/hosts
-```
-
-### 3.2 Load the Image File
-
-For example, if the IoTDB container image file is named `iotdb-enterprise-2.0.x.x.3-standalone-docker.tar.gz`, execute the following command on all 3 servers to load the image:
-
-```Bash
-docker load -i iotdb-enterprise-2.0.x.x-standalone-docker.tar.gz
-```
-
-To view the loaded images, run:
-
-```Bash
-docker images
-```
-
-
-
-### 3.3. Write the Docker-Compose YML Files
-
-Here, we assume the IoTDB installation directory and YML files are placed under the `/docker-iotdb` folder. The directory structure is as follows:
-
-```Bash
-docker-iotdb:
-├── confignode.yml #ConfigNode YML file
-├── datanode.yml #DataNode YML file
-└── iotdb #IoTDB installation directory
-```
-
-On each server, create two YML files: `confignode.yml` and `datanode.yml`. Examples are provided below:
-
-**confignode.yml:**
-
-```Bash
-#confignode.yml
-version: "3"
-services:
- iotdb-confignode:
- image: iotdb-enterprise:2.0.x.x-standalone #The image used
- hostname: iotdb-1|iotdb-2|iotdb-3 #Choose from three options based on the actual situation
- container_name: iotdb-confignode
- command: ["bash", "-c", "entrypoint.sh confignode"]
- restart: always
- environment:
- - cn_internal_address=iotdb-1|iotdb-2|iotdb-3 #Choose from three options based on the actual situation
- - cn_internal_port=10710
- - cn_consensus_port=10720
- - cn_seed_config_node=iotdb-1:10710 #The default first node is the seed node
- - schema_replication_factor=3 #Number of metadata copies
- - data_replication_factor=2 #Number of data replicas
- privileged: true
- volumes:
- - ./iotdb/activation:/iotdb/activation
- - ./iotdb/data:/iotdb/data
- - ./iotdb/logs:/iotdb/logs
- - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro
- - /dev/mem:/dev/mem:ro
- network_mode: "host" #Using the host network
- # Note: Some environments set an extremely high container nofile limit (~2^30 = 1073741824).
- # This can make the startup step "Checking whether the ports are already occupied..." appear to hang (lsof slow).
- # If you see that line for a long time, lower the nofile limit by uncommenting below:
- # ulimits:
- # nofile:
- # soft: 1048576
- # hard: 1048576
-```
-
-**datanode.yml:**
-
-```Bash
-#datanode.yml
-version: "3"
-services:
- iotdb-datanode:
- image: iotdb-enterprise:2.0.x.x-standalone #The image used
- hostname: iotdb-1|iotdb-2|iotdb-3 #Choose from three options based on the actual situation
- container_name: iotdb-datanode
- command: ["bash", "-c", "entrypoint.sh datanode"]
- restart: always
- ports:
- - "6667:6667"
- privileged: true
- environment:
- - dn_rpc_address=iotdb-1|iotdb-2|iotdb-3 #Choose from three options based on the actual situation
- - dn_internal_address=iotdb-1|iotdb-2|iotdb-3 #Choose from three options based on the actual situation
- - dn_seed_config_node=iotdb-1:10710 #The default first node is the seed node
- - dn_rpc_port=6667
- - dn_internal_port=10730
- - dn_mpp_data_exchange_port=10740
- - dn_schema_region_consensus_port=10750
- - dn_data_region_consensus_port=10760
- - schema_replication_factor=3 #Number of metadata copies
- - data_replication_factor=2 #Number of data replicas
- volumes:
- - ./iotdb/activation:/iotdb/activation
- - ./iotdb/data:/iotdb/data
- - ./iotdb/logs:/iotdb/logs
- - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro
- - /dev/mem:/dev/mem:ro
- network_mode: "host" #Using the host network
- # Note: Some environments set an extremely high container nofile limit (~2^30 = 1073741824).
- # This can make the startup step "Checking whether the ports are already occupied..." appear to hang (lsof slow).
- # If you see that line for a long time, lower the nofile limit by uncommenting below:
- # ulimits:
- # nofile:
- # soft: 1048576
- # hard: 1048576
-```
-
-### 3.4 Start ConfigNode for the First Time
-
-Start the ConfigNode on all 3 servers. **Note the startup order**: Start `iotdb-1` first, followed by `iotdb-2` and `iotdb-3`.
-
-Run the following command on each server:
-
-```Bash
-cd /docker-iotdb
-docker-compose -f confignode.yml up -d #Background startup
-```
-
-### 3.5 Apply for Activation
-
-- After starting the 3 ConfigNodes for the first time, a `system_info` file will be generated in the `/docker-iotdb/iotdb/activation` directory on each physical machine. Copy the `system_info` files from all 3 servers and send them to the Timecho team.
-
- 
-
-- Place the 3 `license` files into the corresponding `/docker-iotdb/iotdb/activation` folders on each ConfigNode server.
-
- 
-
-- Once the `license` files are placed in the `activation` folders, the ConfigNodes will automatically activate. **No restart is required for the ConfigNodes.**
-
-### 3.6 Start DataNode
-
-Start the DataNode on all 3 servers:
-
-```Bash
-cd /docker-iotdb
-docker-compose -f datanode.yml up -d #Background startup
-```
-
-
-
-### 3.7 Verify Deployment
-
-- Check the logs: If you see the following message, the DataNode has started successfully.
-
- ```Bash
- docker logs -f iotdb-datanode #View log command
- 2024-07-20 16:50:48,937 [main] INFO o.a.i.db.service.DataNode:231 - Congratulations, IoTDB DataNode is set up successfully. Now, enjoy yourself!
- ```
-
- 
-
-- Enter the container and check the service status:
-
- View the launched container
-
- ```Bash
- docker ps
- ```
-
- 
-
- Enter any container, log in to the database via CLI, and use the `show cluster` command to check the service status:
-
-```Bash
-docker exec -it iotdb-datanode /bin/bash #Entering the container
-./start-cli.sh -h iotdb-1 #Log in to the database
-IoTDB> show cluster #View status
-```
-
-If all services are in the `running` state, the IoTDB deployment is successful.
-
- 
-
-### 3.8 Map the `/conf` Directory (Optional)
-
-If you want to modify configuration files directly on the physical machine, you can map the `/conf` folder from the container. Follow these steps:
-
-**Step 1**: Copy the `/conf` directory from the container to `/docker-iotdb/iotdb/conf` on all 3 servers:
-
-```Bash
-docker cp iotdb-confignode:/iotdb/conf /docker-iotdb/iotdb/conf
-or
-docker cp iotdb-datanode:/iotdb/conf /docker-iotdb/iotdb/conf
-```
-
-**Step 2**: Add the `/conf` directory mapping in both `confignode.yml` and `datanode.yml` on all 3 servers:
-
-```Bash
-#confignode.yml
- volumes:
- - ./iotdb/conf:/iotdb/conf #Add mapping for this /conf folder
- - ./iotdb/activation:/iotdb/activation
- - ./iotdb/data:/iotdb/data
- - ./iotdb/logs:/iotdb/logs
- - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro
- - /dev/mem:/dev/mem:ro
-
-#datanode.yml
- volumes:
- - ./iotdb/conf:/iotdb/conf #Add mapping for this /conf folder
- - ./iotdb/activation:/iotdb/activation
- - ./iotdb/data:/iotdb/data
- - ./iotdb/logs:/iotdb/logs
- - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro
- - /dev/mem:/dev/mem:ro
-```
-
-**Step 3**: Restart IoTDB on all 3 servers:
-
-```Bash
-cd /docker-iotdb
-docker-compose -f confignode.yml up -d
-docker-compose -f datanode.yml up -d
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
deleted file mode 100644
index ac07865bd..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md
+++ /dev/null
@@ -1,208 +0,0 @@
-
-# Dual Active Deployment
-
-## 1. What is a double active version?
-
-Dual-active mode refers to two independent instances (either standalone or clusters) with completely independent configurations. These instances can simultaneously handle external read and write operations, with real-time bi-directional synchronization and breakpoint recovery capabilities.
-
-Key features include:
-
-- **Mutual Backup of Instances**: If one instance stops service, the other remains unaffected. When the stopped instance resumes, the other instance will synchronize newly written data. Businesses can bind both instances for read and write operations, achieving high availability.
-- **Cost-Effective Deployment**: The dual-active deployment solution achieves high availability with only two physical nodes, offering cost advantages. Additionally, physical resource isolation for the two instances can be ensured by leveraging dual-ring power and network designs, enhancing operational stability.
-
-**Note:** The dual-active functionality is exclusively available in enterprise-grade TimechoDB.
-
-
-
-## 2. Prerequisites
-
-1. **Hostname Configuration**: It is recommended to prioritize hostname over IP during deployment to avoid issues where the database cannot start due to later changes in the host IP. For instance, if the local IP is `192.168.1.3` and the hostname is `iotdb-1`, configure it in `/etc/hosts` using:
-
-```Bash
-echo "192.168.1.3 iotdb-1" >> /etc/hosts
-```
-
-Use the hostname to configure IoTDB’s `cn_internal_address` and `dn_internal_address`.
-
-2. **Immutable Parameters**: Some parameters cannot be changed after the initial startup. Follow the steps in the "Installation Steps" section to configure them correctly.
-
-3. **Monitoring Panel**: Deploying a monitoring panel is recommended to monitor key performance indicators and stay informed about the database’s operational status. Contact the Timecho team to obtain the monitoring panel and refer to the corresponding [Monitoring Panel Deployment](../Deployment-and-Maintenance/Monitoring-panel-deployment.md) for deployment steps.
-
-## 3. Installation Steps
-
-This guide uses two standalone nodes, A and B, to deploy the dual-active version of TimechoDB. The IP addresses and hostnames for the nodes are as follows:
-
-| Machine | IP Address | Hostname |
-| ------- | ----------- | -------- |
-| A | 192.168.1.3 | iotdb-1 |
-| B | 192.168.1.4 | iotdb-2 |
-
-### 3.1 Install Two Independent TimechoDB Instances
-
-Install TimechoDB on both machines (A and B) independently. For detailed instructions, refer to the standalone [Stand-Alone Deployment](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md)or cluster [Cluster Deployment](../Deployment-and-Maintenance/Cluster-Deployment_timecho.md)deployment guides.
-
-Ensure that configurations for A and B are consistent for optimal dual-active performance.
-
-### 3.2 Configure Data Synchronization from Machine A to Machine B
-
-- Connect to the database on Machine A using the CLI tool from the `sbin` directory:
-
-```Bash
-# Unix/OS X
-./sbin/start-cli.sh -h iotdb-1
-
-# Windows
-# Before version V2.0.4.x
-.\sbin\start-cli.bat -h iotdb-1
-
-# V2.0.4.x and later versions
-.\sbin\windows\start-cli.bat -h iotdb-1
-```
-
-- Then create and start a data synchronization process. Use the following SQL command:
-
-```Bash
-create pipe AB
-with source (
- 'source.mode.double-living' ='true'
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'sink.ip'='iotdb-2',
- 'sink.port'='6667'
-)
-```
-
-- **Note:** To avoid infinite data loops, ensure the parameter `source.mode.double-living` is set to `true` on both A and B. This prevents retransmission of data received through the other instance's pipe.
-
-### 3.3 Configure Data Synchronization from Machine B to Machine A
-
-- Connect to the database on Machine B:
-
-```Bash
-# Unix/OS X
-./sbin/start-cli.sh -h iotdb-2
-
-# Windows
-# Before version V2.0.4.x
-.\sbin\start-cli.bat -h iotdb-2
-
-# V2.0.4.x and later versions
-.\sbin\windows\start-cli.bat -h iotdb-2
-```
-
-- Then create and start the synchronization process with the following SQL command:
-
-```Bash
-create pipe BA
-with source (
-'source.mode.double-living' ='true'
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'sink.ip'='iotdb-1',
- 'sink.port'='6667'
-)
-```
-
-- **Note:** To avoid infinite data loops, ensure the parameter `source.mode.double-living` is set to `true` on both A and B. This prevents retransmission of data received through the other instance's pipe.
-
-### 3.4 Verify Deployment
-
-#### Check Cluster Status
-
-Run the `show cluster` command on both nodes to verify the status of the TimechoDB services:
-
-```Bash
-show cluster
-```
-
-**Machine A**:
-
-
-
-**Machine B**:
-
-
-
-Ensure all `ConfigNode` and `DataNode` processes are in the `Running` state.
-
-#### Check Synchronization Status
-
-Use the `show pipes` command on both nodes:
-
-```Bash
-show pipes
-```
-
-Confirm that all pipes are in the `RUNNING` state:
-
-On machine A:
-
-
-
-On machine B:
-
-
-
-### 3.5 Stop the Dual-Active Instances
-
-To stop the dual-active instances:
-
-On machine A:
-
-```SQL
-# Unix/OS X
-./sbin/start-cli.sh -h iotdb-1 # Log in to CLI
-IoTDB> stop pipe AB # Stop data synchronization
-./sbin/stop-standalone.sh # Stop database service
-
-# Windows
-# Before version V2.0.4.x
-.\sbin\start-cli.bat -h iotdb-1
-IoTDB> stop pipe AB
-.\sbin\stop-standalone.bat
-
-# V2.0.4.x and later versions
-.\sbin\windows\start-cli.bat -h iotdb-1
-IoTDB> stop pipe AB
-.\sbin\windows\stop-standalone.bat
-```
-
-On machine B:
-
-```SQL
-# Unix/OS X
-./sbin/start-cli.sh -h iotdb-2 # Log in to CLI
-IoTDB> stop pipe BA # Stop data synchronization
-./sbin/stop-standalone.sh # Stop database service
-
-# Windows
-# Before version V2.0.4.x
-.\sbin\start-cli.bat -h iotdb-2
-IoTDB> stop pipe BA
-.\sbin\stop-standalone.bat
-
-# V2.0.4.x and later versions
-.\sbin\windows\start-cli.bat -h iotdb-2
-IoTDB> stop pipe BA
-.\sbin\windows\stop-standalone.bat
-```
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/IoTDB-Package_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/IoTDB-Package_timecho.md
deleted file mode 100644
index c2bffcf22..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/IoTDB-Package_timecho.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-# Obtain TimechoDB
-
-## 1. How to obtain TimechoDB
-
-The TimechoDB installation package can be obtained through product trial application or by directly contacting the Timecho team.
-
-## 2. Installation Package Structure
-
-After unpacking the installation package(`iotdb-enterprise-{version}-bin.zip`),you will see the directory structure is as follows:
-
-| **Catologue** | **Type** | **Description** |
-| :--------------- | :------- | :----------------------------------------------------------- |
-| activation | Folder | Directory for activation files, including the generated machine code and the TimechoDB activation code obtained from Timecho staff. *(This directory is generated after starting the ConfigNode, enabling you to obtain the activation code.)* |
-| conf | Folder | Configuration files directory, containing ConfigNode, DataNode, JMX, and logback configuration files. |
-| data | Folder | Default data file directory, containing data files for ConfigNode and DataNode. *(This directory is generated after starting the program.)* |
-| lib | Folder | Library files directory. |
-| licenses | Folder | Directory for open-source license certificates. |
-| logs | Folder | Default log file directory, containing log files for ConfigNode and DataNode. *(This directory is generated after starting the program.)* |
-| sbin | Folder | Main scripts directory, containing scripts for starting, stopping, and managing the database. |
-| tools | Folder | Tools directory. |
-| ext | Folder | Directory for pipe, trigger, and UDF plugin-related files. |
-| LICENSE | File | Open-source license file. |
-| NOTICE | File | Open-source notice file. |
-| README_ZH.md | File | User manual (Chinese version). |
-| README.md | File | User manual (English version). |
-| RELEASE_NOTES.md | File | Release notes. |
-
-Note: As of version V2.0.8.2, the TimechoDB installation package does not include the MQTT service and REST service JAR files by default. If you need to use them, please contact the Timecho team to obtain them.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md b/src/UserGuide/Master/Table/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
deleted file mode 100644
index b2e601dd2..000000000
--- a/src/UserGuide/Master/Table/Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md
+++ /dev/null
@@ -1,319 +0,0 @@
-
-# Stand-Alone Deployment
-
-This guide introduces how to set up a standalone TimechoDB instance, which includes one ConfigNode and one DataNode (commonly referred to as 1C1D).
-
-## 1. Prerequisites
-
-1. **System Preparation**: Ensure the system has been configured according to the [System Requirements](../Deployment-and-Maintenance/Environment-Requirements.md).
-
-2. **IP Configuration**: It is recommended to use hostnames for IP configuration to prevent issues caused by IP address changes. Set the hostname by editing the `/etc/hosts` file. For example, if the local IP is `192.168.1.3` and the hostname is `iotdb-1`, run:
-
-```Bash
-echo "192.168.1.3 iotdb-1" >> /etc/hosts
-```
-
-Use the hostname for `cn_internal_address` and `dn_internal_address` in IoTDB configuration.
-
-3. **Unmodifiable Parameters**: Some parameters cannot be changed after the first startup. Refer to the [Parameter Configuration](#22-parameters-configuration) section.
-
-4. **Installation Path**: Ensure the installation path contains no spaces or non-ASCII characters to prevent runtime issues.
-
-5. **User Permissions**: Choose one of the following permissions during installation and deployment:
- - **Root User (Recommended)**: This avoids permission-related issues.
- - **Non-Root User**:
- - Use the same user for all operations, including starting, activating, and stopping services.
- - Avoid using `sudo`, which can cause permission conflicts.
-
-6. **Monitoring Panel**: Deploy a monitoring panel to track key performance metrics. Contact the Timecho team for access and refer to the [Monitoring Board Install and Deploy](../Deployment-and-Maintenance/Monitoring-panel-deployment.md).
-
-7. **Health Check Tool**: Before installation, the health check tool can help inspect the operating environment of IoTDB nodes and obtain detailed inspection results. The usage method of the IoTDB health check tool can be found in:[Health Check Tool](../Tools-System/Health-Check-Tool.md).
-
-
-## 2. Installation Steps
-
-### 2.1 Pre-installation Check
-
-To ensure the IoTDB Enterprise Edition installation package you obtained is complete and authentic, we recommend performing an SHA512 verification before proceeding with the installation and deployment.
-
-#### Preparation:
-
-- Obtain the officially released SHA512 checksum: Find the "SHA512 Checksum" corresponding to each version in the [Release History](../IoTDB-Introduction/Release-history_timecho.md) document.
-
-#### Verification Steps (Linux as an Example):
-
-1. Open the terminal and navigate to the directory where the installation package is stored (e.g., /data/iotdb):
- ```Bash
- cd /data/iotdb
- ```
-2. Execute the following command to calculate the hash value:
- ```Bash
- sha512sum timechodb-{version}-bin.zip
- ```
-3. The terminal will output a result (the left part is the SHA512 checksum, and the right part is the file name):
-
-
-
-4. Compare the output result with the official SHA512 checksum. Once confirmed that they match, you can proceed with the installation and deployment operations in accordance with the procedures below.
-
-#### Notes:
-
-- If the verification results do not match, please contact Timecho Team to re-obtain the installation package.
-- If a "file not found" prompt appears during verification, check whether the file path is correct or if the installation package has been fully downloaded.
-
-### 2.2 Extract Installation Package
-
-Unzip the installation package and navigate to the directory:
-
-```Bash
-unzip timechodb-{version}-bin.zip
-cd timechodb-{version}-bin
-```
-
-### 2.3 Parameters Configuration
-
-#### 2.3.1 Memory Configuration
-
-Edit the following files for memory allocation:
-
-- **ConfigNode**: `./conf/confignode-env.sh` (or `.bat` for Windows)
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------ | :--------------------------------- | :---------- | :-------------- | :-------------------------------------- |
-| MEMORY_SIZE | Total memory allocated to the node | Automatically calculated based on system memory, defaulting to 30% of the system memory. | As needed | Save changes without immediate execution; modifications take effect after service restart. |
-
-
-- **DataNode**: `./conf/datanode-env.sh` (or `.bat` for Windows)
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------ | :--------------------------------- |:-----------------------------------------------------------------------------------------| :-------------- | :-------------------------------------- |
-| MEMORY_SIZE | Total memory allocated to the node | Automatically calculated based on system memory, defaulting to 50% of the system memory. | As needed | Save changes without immediate execution; modifications take effect after service restart. |
-
-
-#### 2.3.2 General Configuration
-
-Set the following parameters in `conf/iotdb-system.properties`. Refer to `conf/iotdb-system.properties.template` for a complete list.
-
-**Cluster-Level Parameters**:
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------------------ | :-------------------------- | :------------- | :-------------- | :----------------------------------------------------------- |
-| cluster_name | Name of the cluster | defaultCluster | Customizable | Support hot loading, but it is not recommended to change the cluster name by manually modifying the configuration file. |
-| schema_replication_factor | Number of metadata replicas | 1 | 1 | In standalone mode, set this to 1. This value cannot be modified after the first startup. |
-| data_replication_factor | Number of data replicas | 1 | 1 | In standalone mode, set this to 1. This value cannot be modified after the first startup. |
-
-**ConfigNode Parameters**:
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------------ | :----------------------------------------------------------- | :-------------- | :----------------------------------------------------------- | :--------------------------------------------------------- |
-| cn_internal_address | Address used for internal communication within the cluster | 127.0.0.1 | Server's IPv4 address or hostname. Use hostname to avoid issues when the IP changes. | This parameter cannot be modified after the first startup. |
-| cn_internal_port | Port used for internal communication within the cluster | 10710 | 10710 | This parameter cannot be modified after the first startup. |
-| cn_consensus_port | Port used for consensus protocol communication among ConfigNode replicas | 10720 | 10720 | This parameter cannot be modified after the first startup. |
-| cn_seed_config_node | Address of the ConfigNode for registering and joining the cluster. (e.g.,`cn_internal_address:cn_internal_port`) | 127.0.0.1:10710 | Use `cn_internal_address:cn_internal_port` | This parameter cannot be modified after the first startup. |
-
-**DataNode Parameters**:
-
-| **Parameter** | **Description** | **Default** | **Recommended** | **Notes** |
-| :------------------------------ | :----------------------------------------------------------- | :-------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| :--------------------------------------------------------- |
-| dn_rpc_address | Address for the client RPC service | 127.0.0.1 | By default, the local machine can directly access it. For non-local access, please modify this configuration item to the IPv4 address or hostname of the server where it is located. It is recommended to use the IPv4 address of the server where it is located. | Effective after restarting the service. |
-| dn_rpc_port | Port for the client RPC service | 6667 | 6667 | Effective after restarting the service. |
-| dn_internal_address | Address used for internal communication within the cluster | 127.0.0.1 | Server's IPv4 address or hostname. Use hostname to avoid issues when the IP changes. | This parameter cannot be modified after the first startup. |
-| dn_internal_port | Port used for internal communication within the cluster | 10730 | 10730 | This parameter cannot be modified after the first startup. |
-| dn_mpp_data_exchange_port | Port used for receiving data streams | 10740 | 10740 | This parameter cannot be modified after the first startup. |
-| dn_data_region_consensus_port | Port used for data replica consensus protocol communication | 10750 | 10750 | This parameter cannot be modified after the first startup. |
-| dn_schema_region_consensus_port | Port used for metadata replica consensus protocol communication | 10760 | 10760 | This parameter cannot be modified after the first startup. |
-| dn_seed_config_node | Address of the ConfigNode for registering and joining the cluster. (e.g.,`cn_internal_address:cn_internal_port`) | 127.0.0.1:10710 | Use `cn_internal_address:cn_internal_port` | This parameter cannot be modified after the first startup. |
-
-### 2.4 Start ConfigNode
-
-Navigate to the `sbin` directory and start ConfigNode:
-
-```Bash
-# Unix/OS X
-./sbin/start-confignode.sh -d # The "-d" flag starts the process in the background.
-
-# Windows
-# Before version V2.0.4.x
-.\sbin\start-confignode.bat
-
-# V2.0.4.x and later versions
-.\sbin\windows\start-confignode.bat
-```
-
-If the startup fails, refer to the [Common Issues](#3-common-issues)。 section below for troubleshooting.
-
-
-
-### 2.5 Start DataNode
-
-Navigate to the `sbin` directory of IoTDB and start the DataNode:
-
-```Bash
-# Unix/OS X
-./sbin/start-datanode.sh -d # The "-d" flag starts the process in the background.
-
-# Windows
-# Before version V2.0.4.x
-.\sbin\start-datanode.bat
-
-# V2.0.4.x and later versions
-.\sbin\windows\start-datanode.bat
-```
-
-### 2.6 Activate the Database
-
-#### Option 1: Command-Based Activation
-
-1. Enter the IoTDB CLI.
-
-**Linux** or **MacOS**
-
-```Bash
-# Before version V2.0.6.x
-Shell> bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.6.x and later versions
-Shell > bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021 -sql_dialect table
-```
-**Windows**
-
-```Bash
-# Before version V2.0.4.x
-Shell> sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.4.x and later versions, before version V2.0.6.x
-Shell> sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.6.x and later versions
-Shell > sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021 -sql_dialect table
-```
-
-
-2. Execute the following command to obtain the machine code required for activation:
-
-```SQL
-show system info
-```
-```Bash
-+--------------------------------------------------------------+
-| SystemInfo|
-+--------------------------------------------------------------+
-| 01-TE5NLES4-UDDWCMYE|
-+--------------------------------------------------------------+
-Total line number = 1
-```
-
-3. Execute the following statement to obtain the version number of the database to be activated:
-
-```SQL
-IoTDB> show version
-```
-```shell
-+-------+---------+
-|Version|BuildInfo|
-+-------+---------+
-|2.0.9.2| 5ea21bc|
-+-------+---------+
-Total line number = 1
-```
-
-4. Provide the obtained machine code and version number to the Timecho team.
-
-5. Enter the activation codes provided by the Timecho team in the CLI in sequence using the following format. Wrap the activation code in single quotes ('):
-
-```SQL
-IoTDB> activate '01-D4EYQGPZ-EAUJJODW-NUKRDR6F-TUQS3B75-EDZFLK3A-6BOKJFFZ-ALDHOMN7-NB2E4BHI-7ZKGFVK6-GCIFXA4T-UG3XJTTD-SHJV6F2P-Q27B4OMJ-R47ZDIM3-UUASUXG2-OQXGVZCO-MMYKICZU-TWFQYYAO-ZOAGOKJA-NYHQTA5U-EWAR4EP5-MRC6R2CI-PKUTKRCT-7UDGRH3F-7BYV4P5D-6KKIA==='
-```
-
-#### Option 2: File-Based Activation
-
-1. After starting the Confignode and Datanode nodes, enter the `activation` folder and send the `system_info` file to the Timecho team.
-2. Receive the `license` file returned by the staff.
-3. Place the `license` file into the `activation` folder of the corresponding node.
-
-
-### 2.7 Verify Activation
-
-In the CLI, you can check the activation status by running the `show activation` command. Check the `ClusterActivationStatus` field. If it shows `ACTIVATED`, the database has been successfully activated.
-
-
-
-## 3. Common Issues
-1. Activation Fails Repeatedly
-
- 1. Use the `ls -al` command to verify that the ownership of the installation directory matches the current user.
- 2. Check the ownership of all files in the `./activation` directory to ensure they belong to the current user.
-
-2. ConfigNode Fails to Start
-
- 1. Review the startup logs to check if any parameters, which cannot be modified after the first startup, were changed.
- 2. Check the logs for any other errors. If unresolved, contact technical support for assistance.
- 3. If the deployment is fresh or data can be discarded, clean the environment and redeploy using the following steps:
-
- **Clean the Environment**
-
- 1. Stop all ConfigNode and DataNode processes:
- ```Bash
- sbin/stop-standalone.sh
- ```
-
- 2. Check for any remaining processes:
- ```Bash
- jps
- # or
- ps -ef | grep iotdb
- ```
-
- 3. If processes remain, terminate them manually:
- ```Bash
- kill -9
-
- #For systems with a single IoTDB instance, you can clean up residual processes with:
- ps -ef | grep iotdb | grep -v grep | tr -s ' ' ' ' | cut -d ' ' -f2 | xargs kill -9
- ```
-
- 4. Delete the `data` and `logs` directories:
- ```Bash
- cd /data/iotdb
- rm -rf data logs
- ```
-
-## 4. Appendix
-
-### 4.1 ConfigNode Parameters
-
-| Parameter | Description | Required |
-| :-------- | :---------------------------------------------------------- | :------- |
-| -d | Starts the process in daemon mode (runs in the background). | No |
-
-### 4.2 DataNode Parameters
-
-| Parameter | Description | Required |
-| :-------- | :----------------------------------------------------------- | :------- |
-| -v | Displays version information. | No |
-| -f | Runs the script in the foreground without backgrounding it. | No |
-| -d | Starts the process in daemon mode (runs in the background). | No |
-| -p | Specifies a file to store the process ID for process management. | No |
-| -c | Specifies the path to the configuration folder; the script loads configuration files from this location. | No |
-| -g | Prints detailed garbage collection (GC) information. | No |
-| -H | Specifies the path for the Java heap dump file, used during JVM memory overflow. | No |
-| -E | Specifies the file for JVM error logs. | No |
-| -D | Defines system properties in the format `key=value`. | No |
-| -X | Passes `-XX` options directly to the JVM. | No |
-| -h | Displays the help instructions. | No |
diff --git a/src/UserGuide/Master/Table/Ecosystem-Integration/Ecosystem-Overview_timecho.md b/src/UserGuide/Master/Table/Ecosystem-Integration/Ecosystem-Overview_timecho.md
deleted file mode 100644
index 96d73ffc1..000000000
--- a/src/UserGuide/Master/Table/Ecosystem-Integration/Ecosystem-Overview_timecho.md
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-# Overview
-
-IoTDB Ecosystem Integration Bridges the Full Pipeline of Time-Series Data:
-- Through data collection, it enables second-level device connectivity.
-- Via data integration, it constructs cross-cloud pipelines.
-- Leveraging programming frameworks, it accelerates business logic development.
-- With computing engines, it accomplishes distributed processing.
-- Through visualization and SQL development, it implements analytical strategies.
-- Finally, by interfacing with IoT platforms, it achieves edge-cloud synergy—building a complete intelligent closed loop from the physical world to digital decision-making.
-
-
-
-The following documentation will help you quickly and comprehensively understand the usage of various integration tools at each stage:
-
-- Computing Engine
- - Spark [Spark](./Spark-IoTDB.md)
-- SQL Development
- - DBeaver [DBeaver](./DBeaver.md)
- - DataGrip [DataGrip ](./DataGrip.md)
-- Programming Framework
- - Spring Boot Starter [Spring Boot Starter](./Spring-Boot-Starter.md)
- - Mybatis Generator [Mybatis Generator](./Mybatis-Generator.md)
- - MyBatisPlus Generator [MyBatisPlus Generator](./MyBatisPlus-Generator.md)
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Ecosystem-Integration/SeaTunnel_timecho.md b/src/UserGuide/Master/Table/Ecosystem-Integration/SeaTunnel_timecho.md
deleted file mode 100644
index 115a94e1d..000000000
--- a/src/UserGuide/Master/Table/Ecosystem-Integration/SeaTunnel_timecho.md
+++ /dev/null
@@ -1,193 +0,0 @@
-
-
-
-# Apache SeaTunnel
-
-## 1. Overview
-
-SeaTunnel is a distributed integration platform designed for massive data. Leveraging its high performance and elastic scaling capabilities, it connects multi-source heterogeneous data links through standardized Connectors (composed of Source and Sink). The platform uniformly abstracts various data sources into the SeaTunnelRow format via Source. After dynamic resource scheduling and batch processing optimization, it efficiently writes data to different storage systems through Sink. Through the deep integration of the IoTDB Connector with SeaTunnel, it not only addresses core challenges in time-series data scenarios such as **high-throughput writing, multi-source governance, and complex analysis**, but also helps enterprises quickly build **low-cost, highly reliable, and easily scalable** data infrastructure in fields like the Internet of Things and industrial internet, leveraging the out-of-the-box connector ecosystem and automated operation and maintenance capabilities.
-
-## 2. Usage Steps
-
-### 2.1 Environment Preparation
-
-#### 2.1.1 Software Requirements
-
-| Software | Version | Installation Reference |
-| ------------- | ------------- |-----------------------------------------------------------|
-| IoTDB | >= 2.0.5 | [Quick Start](../QuickStart/QuickStart_timecho.md) |
-| SeaTunnel | 2.3.12 | [Official Website](https://seatunnel.apache.org/download) |
-
-* Thrift Version Conflict Resolution (Only required for Spark engine):
-
-```Bash
-# Remove older Thrift from Spark
-rm -f $SPARK_HOME/jars/libthrift*
-# Copy IoTDB's Thrift library to Spark classpath
-cp $IOTDB_HOME/lib/libthrift* $SPARK_HOME/jars/
-```
-
-#### 2.1.2 Dependency Configuration
-
-1. JDBC
-
-* Spark/Flink Engine: Place the [JDBC driver JAR](https://mvnrepository.com/artifact/org.apache.iotdb/iotdb-jdbc) into the `${SEATUNNEL_HOME}/plugins/` directory.
-* SeaTunnel Zeta Engine: Place the [JDBC driver JAR](https://mvnrepository.com/artifact/org.apache.iotdb/iotdb-jdbc) into the `${SEATUNNEL_HOME}/lib/` directory.
-
-2. Connector
-
-Place the corresponding version of the [SeaTunnel Connector](https://mvnrepository.com/artifact/org.apache.seatunnel/connector-iotdb) into the `${SEATUNNEL_HOME}/plugins/` directory.
-
-### 2.2 Reading Data (IoTDB Source Connector)
-
-#### 2.2.1 Configuration Parameters
-
-| **Parameter** | **Type** | **Required** | **Default** | **Description** |
-| -------------------------- | -------- | ------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------- |
-| `node_urls` | string | yes | - | IoTDB cluster address, format: `"host1:port"` or `"host1:port,host2:port"` |
-| `username` | string | yes | - | IoTDB username |
-| `password` | string | yes | - | IoTDB password |
-| `sql_dialect` | string | no | tree | IoTDB model: `tree` for tree model; `table` for table model |
-| `sql` | string | yes | - | SQL query statement to execute |
-| `database` | string | no | - | Database name, only effective in table model |
-| `schema` | config | yes | - | Data schema definition |
-| `fetch_size` | int | no | - | Number of data rows fetched per request from IoTDB during query execution |
-| `lower_bound` | long | no | - | Lower bound of time range (used for data partitioning by time column) |
-| `upper_bound` | long | no | - | Upper bound of time range (used for data partitioning by time column) |
-| `num_partitions` | int | no | - | Number of partitions (used when partitioning by time column): 1 partition: uses the full time range If partitions < (upper_bound - lower_bound), the difference is used as actual partitions |
-| `thrift_default_buffer_size`| int | no | - | Thrift protocol buffer size |
-| `thrift_max_frame_size` | int | no | - | Thrift maximum frame size |
-| `enable_cache_leader` | boolean | no | - | Whether to enable leader node caching |
-| `version` | string | no | - | Client SQL semantic version (`V_0_12` / `V_0_13`) |
-
-#### 2.2.2 Configuration Example
-
-1. Create a new file `iotdb_source_example.conf` in the `${SEATUNNEL_HOME}/config/` directory:
-
-```bash
-env {
- parallelism = 2 # Parallelism set to 2
- job.mode = "BATCH" # Batch mode
-}
-
-source {
- IoTDB {
- node_urls = "localhost:6667"
- username = "root"
- password = "root"
- sql_dialect = "table"
- sql = "SELECT time,device_id,city,s1,s2,s3,s4 FROM tcollector.table1"
- schema {
- fields {
- time = timestamp
- device_id = string
- city= string
- s1= int
- s2= bigint
- s3= float
- s4= double
- }
- }
- }
-}
-
-sink {
- Console {
- } # Output to console
-}
-```
-
-2. Run SeaTunnel with the following command:
-
-```Bash
-./bin/seatunnel.sh --config config/iotdb_source_example.conf -e local
-```
-
-3. For more details, please refer to the official Apache SeaTunnel documentation on [IoTDB Source Connector](https://seatunnel.apache.org/docs/2.3.12/connector-v2/source/IoTDB).
-
-### 2.3 Writing Data (IoTDB Sink Connector)
-
-#### 2.3.1 Configuration Parameters
-
-| **Parameter** | **Type** | **Required** | **Default** | **Description** |
-| ----------------------------- | --------- | ------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `node_urls` | Array | yes | - | IoTDB cluster address, format: `["host1:port"]` or `["host1:port","host2:port"]` |
-| `username` | String | yes | - | IoTDB username |
-| `password` | String | yes | - | IoTDB password |
-| `sql_dialect` | String | no | tree | IoTDB model: `tree` for tree model; `table` for table model |
-| `storage_group` | String | yes | - | IoTDB tree model: specifies the storage group for devices (path prefix) e.g., deviceId = \${storage_group} + "." + \${key_device}; IoTDB table model: specifies the database |
-| `key_device` | String | yes | - | IoTDB tree model: field name in SeaTunnelRow that specifies the IoTDB device ID; IoTDB table model: field name in SeaTunnelRow that specifies the IoTDB table name |
-| `key_timestamp` | String | no | processing time | IoTDB tree model: field name in SeaTunnelRow that specifies the IoTDB timestamp (if not specified, processing time is used as timestamp); IoTDB table model: field name in SeaTunnelRow that specifies the IoTDB time column (if not specified, processing time is used as timestamp) |
-| `key_measurement_fields` | Array | no | See description | IoTDB tree model: field names in SeaTunnelRow that specify the list of IoTDB measurements (if not specified, includes all fields except `key_device` and `key_timestamp`); IoTDB table model: field names in SeaTunnelRow that specify the IoTDB field columns (if not specified, includes all fields except `key_device`, `key_timestamp`, `key_tag_fields`, `key_attribute_fields`) |
-| `key_tag_fields` | Array | no | - | IoTDB tree model: not applicable; IoTDB table model: field names in SeaTunnelRow that specify the IoTDB tag columns |
-| `key_attribute_fields` | Array | no | - | IoTDB tree model: not applicable; IoTDB table model: field names in SeaTunnelRow that specify the IoTDB attribute columns |
-| `batch_size` | Integer | no | 1024 | For batch writing, data is flushed to IoTDB when the buffer reaches `batch_size` or when the time reaches `batch_interval_ms` |
-| `max_retries` | Integer | no | - | Number of retries on failed flush |
-| `retry_backoff_multiplier_ms` | Integer | no | - | Multiplier used to generate the next backoff delay |
-| `max_retry_backoff_ms` | Integer | no | - | Maximum wait time before retrying a request to IoTDB |
-| `default_thrift_buffer_size` | Integer | no | - | Initial buffer size for Thrift client in IoTDB |
-| `max_thrift_frame_size` | Integer | no | - | Maximum frame size for Thrift client in IoTDB |
-| `zone_id` | string | no | - | IoTDB client `java.time.ZoneId` |
-| `enable_rpc_compression` | Boolean | no | - | Enable RPC compression in IoTDB client |
-| `connection_timeout_in_ms` | Integer | no | - | Maximum time (in milliseconds) to wait when connecting to IoTDB |
-
-#### 2.3.2 Configuration Example
-
-1. Create a new file `iotdb_sink_example.conf` in the `${SEATUNNEL_HOME}/config/` directory:
-
-```bash
-# Define runtime environment
-env {
- parallelism = 4
- job.mode = "BATCH"
-}
-
-source{
- Jdbc {
- url = "jdbc:mysql://localhost:3306/demo_db?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"
- driver = "com.mysql.cj.jdbc.Driver"
- connection_check_timeout_sec = 100
- user = "root"
- password = "IoTDB@2024"
- query = "select * from device"
- }
-}
-sink {
- IoTDB {
- node_urls = ["localhost:6667"]
- username = "root"
- password = "root"
- sql_dialect = "table"
- storage_group = "seatunnel"
- key_device = "id"
- key_timestamp = "intime"
- }
-}
-```
-
-2. Run SeaTunnel with the following command:
-
-```Bash
-./bin/seatunnel.sh --config config/iotdb_sink_example.conf -e local
-```
-
-3. For more configuration parameters and examples, please refer to the official Apache SeaTunnel documentation on [IoTDB Sink Connector](https://seatunnel.apache.org/docs/2.3.12/connector-v2/sink/IoTDB).
diff --git a/src/UserGuide/Master/Table/IoTDB-Introduction/IoTDB-Introduction_timecho.md b/src/UserGuide/Master/Table/IoTDB-Introduction/IoTDB-Introduction_timecho.md
deleted file mode 100644
index f74257551..000000000
--- a/src/UserGuide/Master/Table/IoTDB-Introduction/IoTDB-Introduction_timecho.md
+++ /dev/null
@@ -1,299 +0,0 @@
-
-# IoTDB Introduction
-
-TimechoDB is a high-performance, cost-efficient, and IoT-native time-series database developed by Timecho. As an enterprise-grade extension of Apache IoTDB, it is designed to tackle the complexities of managing large-scale time-series data in IoT environments. These challenges include high-frequency data sampling, massive data volumes, out-of-order data, extended processing times, diverse analytical demands, and high storage and maintenance costs.
-
-TimechoDB enhances Apache IoTDB with superior functionality, optimized performance, enterprise-grade reliability, and an intuitive toolset, enabling industrial users to streamline data operations and unlock deeper insights.
-
-- [Quick Start](../QuickStart/QuickStart_timecho.md): Download, Deploy, and Use
-
-## 1. TimechoDB Data Management Solution
-
-The Timecho ecosystem provides an integrated **collect-store-use** solution, covering the complete lifecycle of time-series data, from acquisition to analysis.
-
-
-
-Key components include:
-
-1. **Time-Series Database (TimechoDB)**:
- 1. The primary storage and processing engine for time-series data, based on Apache IoTDB.
- 2. Offers **high compression, advanced** **query** **capabilities, real-time stream processing, high availability, and scalability**.
- 3. Provides **security features, multi-language APIs, and seamless integration with external systems**.
-2. **Time-Series Standard File Format** **(Apache** **TsFile)**:
- 1. A high-performance storage format originally developed by Timecho’s core contributors.
- 2. Enables **efficient compression and fast querying**.
- 3. Powers TimechoDB’s **data collection, storage, and analysis pipeline**, ensuring unified data management
-3. **Time-Series AI Engine** **(AINode)**:
- 1. Integrates **machine learning and deep learning** for time-series analytics.
- 2. Extracts actionable insights directly from TimechoDB-stored data.
-4. **Data Collection Framework**:
- 1. Supports **various industrial protocols, resumable transfers, and network barrier penetration**.
- 2. Facilitates **reliable data acquisition in challenging industrial environments**.
-
-## 2. TimechoDB Architecture
-
-The diagram below illustrates a common cluster deployment (3 ConfigNodes, 3 DataNodes) of TimechoDB:
-
-
-
-## 3. Key Features
-
-TimechoDB offers the following advantages:
-
-**Flexible Deployment:**
-
-- Supports one-click cloud deployment, on-premise installation, and seamless terminal-cloud synchronization.
-- Adapts to hybrid, edge, and cloud-native architectures
-
-**Cost-Efficient Storage:**
-
-- Utilizes high compression ratio storage, eliminating the need for separate real-time and historical databases.
-- Supports unified data management across different time horizons.
-
-**Hierarchical** **Data** **Organization:**
-
-- Mirrors real-world industrial structures through hierarchical measurement point modeling.
-- Enables directory-based navigation, search, and retrieval.
-
-**High-Throughput Read****&****Write:**
-
-- Optimized for millions of concurrent device connections.
-- Handles multi-frequency and out-of-order data ingestion with high efficiency.
-
-**Advanced Time-Series Query Semantics** **:**
-
-- Features a native time-series computation engine with built-in timestamp alignment.
-- Provides nearly 100 aggregation and analytical functions, enabling AI-powered time-series insights.
-
-**Enterprise-Grade High Availability** **:**
-
-- Distributed HA architecture ensures 24/7 real-time database services.
-- Automated resource balancing when nodes are added, removed, or overheated.
-- Supports heterogeneous clusters with varying hardware configurations.
-
-**Operational Simplicity** **:**
-
-- Standard SQL query syntax for ease of use.
-- Multi-language APIs for flexible development.
-- Comes with a comprehensive toolset, including an intuitive management console
-
-**Robust Ecosystem Integration:**
-
-- Seamlessly integrates with big data frameworks (Hadoop, Spark) and visualization tools (Grafana, ThingsBoard, DataEase).
-- Supports device management for industrial IoT environments.
-
-## 4. Enterprise-level Enhancements
-
-TimechoDB extends Apache IoTDB with advanced industrial-grade capabilities, including tiered storage, cloud-edge collaboration, visualization tools, and security upgrades.
-
-**Dual-Active Deployment:**
-
-- Implements active-active high availability, ensuring continuous operations.
-- Two independent clusters perform real-time bidirectional synchronization.
-- Both systems accept external writes and maintain eventual consistency.
-
-**Seamless Data Synchronization** **:**
-
-- Built-in synchronization module supports real-time and batch data aggregation from field devices to central hubs.
-- Supports full, partial, and cascading aggregation.
-- Includes enterprise-ready plugins for cross air-gap transmission, encrypted transmission, and compression.
-
-**Tiered** **Storage:**
-
-- Dynamically categorizes data into hot, warm, and cold tiers.
-- Efficiently balances SSD, HDD, and cloud storage utilization.
-- Automatically optimizes data access speed and storage costs.
-
-**Enhanced Security** **:**
-
-- Implements whitelist-based access control and audit logging.
-- Strengthens data governance and risk mitigation.
-
-**Feature Comparison**:
-
-
-
- Function
- Apache IoTDB
- TimechoDB
-
-
- Deployment Mode
- Stand-Alone Deployment
- √
- √
-
-
- Distributed Deployment
- √
- √
-
-
- Dual Active Deployment
- -
- √
-
-
- Container Deployment
- Partial support
- √
-
-
- Database Functionality
- Sensor Management
- √
- √
-
-
- Write Data
- √
- √
-
-
- Query Data
- √
- √
-
-
- Continuous Query
- √
- √
-
-
- Trigger
- √
- √
-
-
- User Defined Function
- √
- √
-
-
- Permission Management
- √
- √
-
-
- Data Synchronisation
- Only file synchronization, no built-in plugins
- Real time synchronization+file synchronization, enriched with built-in plugins
-
-
- Stream Processing
- Only framework, no built-in plugins
- Framework+rich built-in plugins
-
-
- Tiered Storage
- -
- √
-
-
- View
- -
- √
-
-
- White List
- -
- √
-
-
- Audit Log
- -
- √
-
-
- Supporting Tools
- Workbench
- -
- √
-
-
- Cluster Management Tool
- -
- √
-
-
- System Monitor Tool
- -
- √
-
-
- Localization
- Localization Compatibility Certification
- -
- √
-
-
- Technical Support
- Expert Support
- -
- √
-
-
- Use Training
- -
- √
-
-
-
-
-### 4.1 Higher Efficiency and Stability
-
-TimechoDB achieves up to 10x performance improvements over Apache IoTDB in mission-critical workloads, and provides rapid fault recovery for industrial environments.
-
-### 4.2 Comprehensive Management Tools
-
-TimechoDB simplifies deployment, monitoring, and maintenance through an intuitive toolset:
-
-- **Cluster Monitoring Dashboard**
- - Real-time insights into IoTDB and underlying OS health.
- - 100+ performance metrics for in-depth monitoring and optimization.
- -
- - 
- -
- - 
- -
- - 
- -
-- **Database Console** **:**
- - Simplifies interaction with an intuitive GUI for metadata management, SQL execution, user permissions, and system configuration.
-- **Cluster Management Tool** **:**
- - Provides **one-click operations** for cluster deployment, scaling, start/stop, and configuration updates.
- - 
-
-### 4.3 Professional Enterprise Technical Services
-
-TimechoDB offers **vendor-backed enterprise services** to support industrial-scale deployments:
-
-- **On-Site Installation & Training**: Hands-on guidance for fast adoption.
-- **Expert Consulting & Advisory**: Performance tuning and expert support.
-- **Emergency Support & Remote Assistance**: Minimized downtime for mission-critical operations.
-- **Custom Development & Optimization**: Tailored solutions for unique industrial use cases.
-
-Compared to Apache IoTDB’s 2-3 month release cycle, TimechoDB delivers faster updates and same-day critical issue resolutions, ensuring production stability.
-
-### 4.4 Ecosystem Compatibility & Compliance
-
-imechoDB is self-developed, supports mainstream CPUs & operating systems, and meets industry compliance standards, making it a reliable choice for enterprise IoT deployments.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/IoTDB-Introduction/Release-history_timecho.md b/src/UserGuide/Master/Table/IoTDB-Introduction/Release-history_timecho.md
deleted file mode 100644
index 77764aaef..000000000
--- a/src/UserGuide/Master/Table/IoTDB-Introduction/Release-history_timecho.md
+++ /dev/null
@@ -1,703 +0,0 @@
-
-# Release History
-
-## 1. TimechoDB (Database Core)
-
-
-### V2.0.9.4
-> Release Date: 2026.06.10
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.9.4-bin.zip
-> SHA512 Checksum: 040ebdd9e45d93535e9628cf377003d560be83cec9737f5a5fbd0c3a93a12810814094752eac3eacdfec5cddcf433fa83e76edc14be34c73c1a54d9b937ea1b5
-
-Version 2.0.9.4 primarily optimizes table model AINode inference, fixes several product defects, and provides comprehensive improvements to database monitoring, performance, and stability. Specific release contents are as follows:
-
-- AINode: Table model covariate inference models adaptively support filling null values
-
-
-### V2.0.9.3
-> Release Date: 2026.05.14
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.9.3-bin.zip
-> SHA512 Checksum: f6c5d50cbf8902503289884f073593c650ffdc8edbebfabf27f6ab4499630749331aa4ed09dd34627a39fa8dee27b4d7e2689d0ed1cf23c76dd9c7270f9fae2a
-
-Version 2.0.9.3 of AINode newly supports registering multiple models by using the same model code with different model weights. It also includes enhancements and bug fixes for previous versions, with comprehensive improvements to database monitoring, performance and stability. Details are as follows:
-
-- AINode: [Supports registering custom models with the same model code and different model weights](../AI-capability/AINode_Upgrade_timecho.md#_4-3-register-custom-models)
-
-
-### V2.0.9.2
-> Release Date: 2026.05.11
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.9.2-bin.zip
-> SHA512 Checksum: 10d3f34b6e65ad5c09b1cf3538ee27e181cc38c5fedf6acfd7d7053797ca23c76245683536275b69bd478aa1e43364351eceef1948832ab663a7398665af9eff
-
-Version 2.0.9.2 adds import and export capabilities for the Object data type, and introduces the new `tsfile-backup` script (currently supported only for table model scenarios). It also brings optimizations and bug fixes for legacy versions, with overall upgrades to database monitoring, performance and stability. Details are as follows:
-
-- Scripts & Tools: [The `import-data` script for TsFile format](../Tools-System/Data-Import-Tool_timecho.md#_2-4-tsfile-format) supports Object type data import for table models
-- Scripts & Tools: New[ `tsfile-backup` script ](../Tools-System/Data-Export-Tool_timecho.md#_3-tsfilebackup-based-on-pipe-framework)added for table models
-- Stream Processing Module: PIPE for table models supports [local export and remote transmission of Object type data](../User-Manual/Data-Sync_timecho.md#_3-9-object-type-data-export)
-- System Module: [Audit logs](../User-Manual/Audit-Log_timecho.md) support slow request quantity statistics
-
-### V2.0.9.1
-> Release Date: 2026.05.11
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.9.1-bin.zip
-> SHA512 Checksum: 18ff3801ba58550e06ef0aa4bf4465e8ce1b31d1aecb9c6899eb843f5d9187d3cc575e930ee38d96b87b17067e2b21f1852ab5127eac7480cf5051c20a68894b
-
-Version 2.0.9.1 endows AINode with covariate classification inference capability, supports schema-level and table-level storage space statistics. It adds set operations, CTE and multiple built-in functions for data query, enables SQL debugging via DEBUG statements, and supports configuring auto-start on boot. This version also contains legacy version improvements, bug fixes, and comprehensive enhancements to database monitoring, performance and stability. Details are as follows:
-
-- AINode: Table models support [time series data classification inference](../AI-capability/AINode_Upgrade_timecho.md#_4-1-model-inference)
-- Query Module: Table models support [set operations (UNION/INTERSECT/EXCEPT)](../SQL-Manual/Set-Operations_timecho.md) and [Common Table Expressions (CTE)](../SQL-Manual/Common-Table-Expression_timecho.md)
-- Query Module: Newly added [IF scalar function](../SQL-Manual/Basis-Function_timecho.md#_8-3-if-expression), [binary functions](../SQL-Manual/Basis-Function_timecho.md#_7-binary-functions) and [APPROX_PERCENTILE aggregate function](../SQL-Manual/Basis-Function_timecho.md#_2-aggregate-functions) for table models
-- Query Module: Supports [DEBUG SQL](../User-Manual/Maintenance-commands_timecho.md#_6-query-debugging) for query debugging and optimizes the result set of [Explain Analyze](../User-Manual/Query-Performance-Analysis.md)
-- Query Module: Supports [schema-level](../../latest/User-Manual/Maintenance-commands_timecho.md#_1-10-view-disk-space-usage) and [table-level](../Reference/System-Tables_timecho.md#_2-22-table-disk-usage) storage space occupancy statistics; the[ `SHOW CONFIGURATION` statement](../User-Manual/Maintenance-commands_timecho.md#_1-13-view-node-configuration) is available to view cluster configuration information
-- Scripts & Tools: Data and metadata import/export tools support the SSL protocol
-- Scripts & Tools: Command-line tool adds access [history display](../Tools-System/CLI_timecho.md#_4-access-history-feature) capability
-- System Module: Supports [system auto-start](../User-Manual/Auto-Start-On-Boot_timecho.md) configuration
-- Others: Fixed security vulnerability CVE-2026-28564
-
-
-### V2.0.8.3
-> Release Date: 2026.04.21
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.8.3-bin.zip
-> SHA512 Checksum: 4b95bea87cc375bc455897dcf4cec80692421fa5c3eee746e1095b94288611d4afdd94aa8dad70340757d041757758924701cbdb2b73b49fb8730c4caac2a126
-
-Version 2.0.8.3 enables reading and writing Object type data via Python. It also includes optimizations and bug fixes for previous versions, with comprehensive upgrades to database monitoring, performance and stability. Details are as follows:
-
-- Interface Module: [Python Native API](../API/Programming-Python-Native-API_timecho.md) supports reading and writing Object type data for table models
-
-
-### V2.0.8.2
-
-> Release Date: 2026.03.31
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name:timechodb-2.0.8.2-bin.zip
-> SHA512 Checksum:02ab10e3e94786dd5676e0a69609eef192afd90d87f4d8d7bd44e7e9cbc8a18d61ba5668bae56cb8e4416ac71a877f760963b72ca7838d7c39ae10f1ed321d89
-
-Version 2.0.8.2 adds support for modifying the full path of time series in the tree model, customizing the Time column name in the table model, changing data types in both tree and table models, and includes the ODBC Driver, among other features. It also introduces improvements and bug fixes for earlier versions, with comprehensive enhancements to database monitoring, performance, and stability. The detailed release notes are as follows:
-
-- Storage Module: The tree model supports [modifying the full name of time series](../../latest/Basic-Concept/Operate-Metadata_timecho.md#_2-4-修改时间序列名称) and [changing the data type of time series](../../latest/Basic-Concept/Operate-Metadata_timecho.md#_2-3-修改时间序列数据类型).
-- Storage Module: The table model supports [modifying column data types](../Basic-Concept/Table-Management_timecho.md#_1-5-修改表) and [customizing the Time column name](../Basic-Concept/Table-Management_timecho.md#_1-1-创建表).
-- Interface Module: Adds support for the [ODBC Driver](../API/Programming-ODBC_timecho.md); the Python SessionDataset supports fetching DataFrames in batches; the MQTT service is externalized, and a new system table named Services is added for service queries.
-- AI Node: The table model supports adaptive [covariate inference](../AI-capability/AINode_Upgrade_timecho.md#_4-1-模型推理).
-- Stream Processing Module: The tree model data synchronization PIPE statement supports specifying multiple precise paths.
-
-
-### V2.0.8.1
-
-> Release Date: 2026.02.04
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name:timechodb-2.0.8.1-bin.zip
-> SHA512 Checksum: 49d97cbf488443f8e8e73cc39f6f320b3bc84b194aed90af695ebd5771650b5e5b6a3abb0fb68059bd01827260485b903c035657b337442f4fdd32c877f2aca3
-
-V2.0.8.1 introduces the **Object data type** to table models, significantly enhances audit logging capabilities, optimizes the tree model’s **OPC UA protocol**, adds **covariate-based forecasting** support in AINode, and enables **concurrent inference** in AINode. Additionally, comprehensive improvements have been made to database monitoring, performance, and stability. The detailed release notes are as follows:
-
-- **Query Module**: Added a list view of available DataNode instances, allowing users to [view each node's RPC address and port](../User-Manual/Maintenance-commands_timecho.md#_1-7-viewing-available-nodes).
-- **Query Module**: Introduced a new system table for [statistical query latency analysis](../Reference/System-Tables_timecho.md#_2-20-queries-costs-histogram).
-- **Storage Module**: Added SQL support to retrieve the full definition statements for [tables](../Basic-Concept/Table-Management_timecho.md#_1-4-view-table-creation-statement) and [views](../User-Manual/Tree-to-Table_timecho.md#_2-4-viewing-table-views).
-- **Storage Module**: Optimized the tree model’s [OPC UA protocol](../../latest/API/Programming-OPC-UA_timecho.md).
-- **System Module**: Added support for the [Object data type](../Background-knowledge/Data-Type_timecho.md) in table models.
-- **System Module**: Significantly enhanced and upgraded the [audit log](../User-Manual/Audit-Log_timecho.md) functionality.
-- **System Module**: Added a new system table to monitor [DataNode connection status](../Reference/System-Tables_timecho.md#_2-18-connections).
-- **AINode**: Integrated the built-in **Chronos-2** model, supporting [covariate-based forecasting](../AI-capability/AINode_Upgrade_timecho.md).
-- **AINode**: Built-in models **Timer-XL** and **Sundial** now support [concurrent inference](../AI-capability/AINode_Upgrade_timecho.md).
-- **Stream Processing Module**: When creating a full-data synchronization pipe, it will be [automatically split](../User-Manual/Data-Sync_timecho.md#_2-1-create-a-task) into two independent pipes—one for real-time data and one for historical data—whose remaining event counts can be monitored separately via the `SHOW PIPES` statement.
-- **Others**: Fixed security vulnerabilities **CVE-2025-12183**, **CVE-2025-66566**, and **CVE-2025-11226**.
-
-### V2.0.6.6
-
-> Release Date: 2026.01.20
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.6.6-bin.zip
-> SHA512 Checksum: d12e60b8119690d63c501d0c2afcd527e39df8a8786198e35b53338e21939e1a9244805e710d81cbb62d02c2739909d7e8227c029660a0cd9ea7ca718cf9bdf6
-
-V2.0.6.6 primarily optimizes query performance for time series in the tree model, while delivering comprehensive improvements in database monitoring, performance, and stability. Specific release contents are as follows:
-
-* **Query Module**: Improved query performance for `SHOW/COUNT TIMESERIES/DEVICES` statements.
-* **Others**: Fixed security vulnerabilities CVE-2025-12183, CVE-2025-66566, and CVE-2025-11226.
-
-
-### V2.0.6.4
-
-> Release Date: 2025.11.17
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: timechodb-2.0.6.4-bin.zip
-> SHA512 Checksum: 57b9998cc14632862c32b6781c70db1c52caf8172b5d45d27cc214cab50d3afd4230ed0754e1c1a4ed825666bf971dc81fbb7d3b93261e57e9dabc20e794a2b8
-
-V2.0.6.4 focuses on enhancements to the storage and AINode modules, resolves several product defects, and provides comprehensive improvements in database monitoring, performance, and stability. Specific release contents are as follows:
-
-* **Storage Module**: Added support for modifying the encoding and compression methods of time series in the tree model.
-* **AINode**: Introduced one-click deployment and optimized model inference capabilities.
-
-### V2.0.6.1
-
-> Release Date: 2025.09.19
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.6.1-bin.zip
-> SHA512 Checksum: c88e3e2c0dbd06578bd0697ca9992880b300baee2c4906ba1f952134e37ae2fa803a6af236f4541d318b75f43a498b5d5bfbbc7c445783271076c36e696e4dd0
-
-V2.0.6.1 introduces the new table model query write-back function, access control blacklist/whitelist function, bitwise operation functions (built-in scalar functions), and push-downable time functions. Comprehensive enhancements to database monitoring, performance, and stability are also included. Key updates:
-
-* **Query Module:**
- * Supports the table model query write-back function
- * The table model row pattern recognition supports the use of aggregate functions to capture continuous data for analytical calculation
- * The table model adds built-in scalar functions - bitwise operation functions
- * The table model adds push-downable EXTRACT time functions
-* **System Module:**
- * Adds access control, supporting users to customize and configure blacklist/whitelist functions
-* **Others:**
- * The default user password is updated to "TimechoDB@2021" with higher security strength
-
-### V2.0.5.2
-
-> Release Date: 2025.08.08
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.5.2-bin.zip
-> SHA512 Checksum: a00a4075c9937b7749c454f71d2480fea5e9ff9659c0628b132e30e2f256c7c537cd91dca4f6be924db0274bb180946a1b88e460c025bf82fdb994a3c2c7b91e
-
-V2.0.5.2 introduces addresses certain product defects, optimizes the data synchronization function,Comprehensive enhancements to database monitoring, performance, and stability are also included.
-
-
-### V2.0.5.1
-
-> Release Date: 2025.07.14
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.5.1-bin.zip
-> SHA512 Checksum: aa724755b659bf89a60da6f2123dfa91fe469d2e330ed9bd029e8f36dd49212f3d83b1025e9da26cb69315e02f65c7e9a93922e40df4f2aa4c7f8da8da2a4cea
-
-V2.0.5.1 introduces **tree-to-table view**, **window functions** and the **approx\_most\_frequent** aggregate function for the table model, along with support for **LEFT & RIGHT JOIN** and **ASOF LEFT JOIN**. AINode adds two built-in models: **Timer-XL** and **Timer-Sundial**, supporting inference and fine-tuning for tree and table models. Comprehensive enhancements to database monitoring, performance, and stability are also included. Key updates:
-
-* **Query Module:**
- * Supports manually creating tree-to-table views
- * Adds window functions for table model
- * Adds approx\_most\_frequent aggregate function
- * Extends JOIN support: LEFT/RIGHT JOIN, ASOF LEFT JOIN
- * Enables row pattern recognition (captures continuous data for analysis)
- * New system tables: VIEWS (view metadata), MODELS (model info), etc.
-* **System Module:**
- * Adds TsFile data encryption
-* **AI Module:**
- * New built-in models: Timer-XL and Timer-Sundial
- * Supports inference/fine-tuning for tree and table models
-* **Others:**
- * Enables data publishing via OPC DA protocol
-
-### 2.x Other historical versions
-
-#### V2.0.4.2
-
-> Release Date: 2025.06.21
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.4.2-bin.zip
-> SHA512 Checksum: 31f26473ac90988ce970dac8d0950671bde918f9af6f2f6a6c2bf99a53aa1c0a459c53a137b18ff0b28e70952e9c4b6acb50029e0b2e38837b969eb8f78f2939
-
-V2.0.4.2 adds support for passing TOPIC to custom MQTT plugins. Includes comprehensive improvements to monitoring, performance, and stability.
-
-#### V2.0.4.1
-
-> Release Date: 2025.06.03
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.4.1-bin.zip
-> SHA512 Checksum: 93ac08bfae06aff6db04849f474458433026f66778f4f5c402eb22f1a7cb14d8096daf0a9e9cc365ddfefd4f8ca4443b2a9fb6461906f056b1e6a344990beb3a
-
-V2.0.4.1 introduces **User-Defined Table Functions (UDTF)** and multiple built-in table functions for the table model, adds the **approx\_count\_distinct** aggregate function, and enables **ASOF INNER JOIN on timestamp columns**. Script tools are categorized, with Windows-specific scripts separated out. Key updates:
-
-* **Query Module:**
- * Adds UDTFs and built-in table functions
- * Supports ASOF INNER JOIN on timestamps
- * Adds approx\_count\_distinct aggregate function
-* **Stream Processing:**
- * Supports asynchronous TsFile loading via SQL
-* **System Module:**
- * Disaster-aware load balancing strategy for replica selection during downsizing
- * Compatibility with Windows Server 2025
-* **Scripts & Tools:**
- * Categorized scripts; isolated Windows-specific tools
-
-#### V2.0.3.4
-
-> Release Date: 2025.06.13
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.3.4-bin.zip
-> SHA512 Checksum: d80d34b7d3890def75b17c491fc4c13efc36153a5950a9b23744755d04d6adb5d6ab9ec970101183fef7bfeb8a559ef92fce90d2d22f7b7fd5795cd5589461bb
-
-V2.0.3.4 upgrades the user password encryption algorithm to **SHA-256**. Includes comprehensive monitoring, performance, and stability improvements.
-
-#### V2.0.3.3
-
-> Release Date: 2025.05.16
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.3.3-bin.zip
-> SHA512 Checksum: f47e3fb45f869dbe690e7cfaa93f95e5e08a462b362aa9d7ccac7ee5b55022dc8f62db12009dfde055f278f3003ff9ea7c22849d52a3ef2c25822f01ade78591
-
-V2.0.3.3 introduces **metadata import/export scripts for table models**, **Spark ecosystem integration**, and adds **timestamps to AINode results**. New aggregate/scalar functions are added. Key updates:
-
-* **Query Module:**
- * New aggregate function: count\_if; scalar functions: greatest/least
- * Significant optimization for full-table count(\*) queries
-* **AI Module:**
- * Timestamps added to AINode results
-* **System Module:**
- * Optimized metadata performance for table model
- * Active monitoring & loading of TsFiles
- * New metrics: TsFile parsing time, Tablet conversion count
-* **Ecosystem Integration:**
- * Spark integration for table model
-* **Scripts & Tools:**
- * import-schema/export-schema scripts support table model metadata
-
-#### V2.0.3.2
-
-> Release Date: 2025.05.15
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.3.2-bin.zip
-> SHA512 Checksum: 76bd294de4b01782e5dd621a996aeb448e4581f98c70fb5b72b17dc392c2e1227c0d26bd3df5533669a80f217a83a566bc6ec926b7efd21ce7a89b894cd33e19
-
-V2.0.3.2 resolves product defects, optimizes node removal, and enhances monitoring, performance, and stability.
-
-#### V2.0.2.1
-
-> Release Date: 2025.04.07
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.2.1-bin.zip
-> SHA512 Checksum: a41be3f8c57e6a39ac165f1d6ab92c9ed790b0712528f31662c58617f4c94e6bfc9392a9c1ef2fc5bdd8c7ca79901389f368cbdbec3e5b1d5c1ce155b2f1a457
-
-V2.0.2.1 adds **table model permission management**, **user management**, and **operation authentication**, alongside UDFs, system tables, and nested queries. Data subscription mechanisms are optimized. Key updates:
-
-* **Query Module:**
- * Added UDF management: User-Defined Scalar Functions (UDSF) & Aggregate Functions (UDAF)
- * Configurable URI-based loading for UDF/PipePlugin/Trigger/AINode JARs
- * Permission/user management with operation authentication
- * New system tables and maintenance statements
-* **System Module:**
- * CSharp client supports table model
- * New C++ Session write APIs for table model
- * Multi-tier storage supports S3-compliant non-AWS object storage
- * New pattern\_match function
-* **Data Sync:**
- * Table model metadata sync and delete propagation
-
-#### V2.0.1.2
-
-> Release Date: 2025.01.25
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: timechodb-2.0.1.2-bin.zip
-> SHA512 Checksum: 51c2fa5da2974a8a3c8871dec1c49bd98e5d193a13ef33ac7801adb833a1e360d74f0160bcdf33c7ffb23a5c5e0f376e26a4315cf877f1459483356285b85349
-
-V2.0.1.2 officially implements **dual-model configuration (tree + table)**. The table model supports **standard SQL queries**, diverse functions/operators, stream processing, and Benchmarking. Python client adds four new data types, and script tools support TsFile/CSV/SQL import/export. Key updates:
-
-* **Time-Series Table Model:**
- * Standard SQL: SELECT, WHERE, JOIN, GROUP BY, ORDER BY, LIMIT, nested queries
-* **Query Module:**
- * Logical operators, math functions, time-series functions (e.g., DIFF)
- * Configurable URI-based JAR loading
-* **Storage Module:**
- * Session API writes with auto-metadata creation
- * Python client supports: String, Blob, Date, Timestamp
- * Optimized compaction task priority
-* **Stream Processing:**
- * Auth info specification on sender side
- * TsFile Load for table model
- * Plugin adaptation for table model
-* **System Module:**
- * Enhanced DataNode downsizing stability
- * Supports DROP DATABASE in read-only mode
-* **Scripts & Tools:**
- * Benchmark adapted for table model
- * Support for String/Blob/Date/Timestamp in Benchmark
- * import-data/export-data: Universal support for TsFile/CSV/SQL
-* **Ecosystem Integration:**
- * Kubernetes Operator support
-
-
-### V1.3.7.3
-
-> Release Date: 2026.06.02
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: iotdb-enterprise-1.3.7.3-bin.zip
-> SHA512 Checksum: 8e6cde061421a552b9855f39f9cccd4838c820dc15ef0ad2a7c23a54cd6cc4f06c35190c1f428784e6a4d5463dd1b794f58ff5cdf891f27f6d0be4d3ab00bf6f
-
-V1.3.7.3 primarily optimizes query module and data synchronization capabilities, fixes several product defects, and provides comprehensive improvements to database monitoring, performance, and stability. Specific release contents are as follows:
-
-- Query Module: Optimized `Last` queries, aligned series queries, reverse-order time filter queries, and other scenarios.
-- Metadata Module: Optimized device creation validation for activated series and their child paths.
-- Data Synchronization: Optimized the retry mechanism after synchronization failures.
-- Data Synchronization: Cross-network-gateway synchronization plugin supports configuring the real-time write transmission timeout.
-- Interface Module: Added error code validation to the Go client write interface.
-- Interface Module: Optimized C# client connection pool management.
-
-
-### V1.3.7.2
-
-> Release Date: 2026.04.07
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: iotdb-enterprise-1.3.7.2-bin.zip
-> SHA512 Checksum: 787766af64992069f0db0ac8b250b461d799307b3ce06b0782fc25752c8c5307fa2205c9e3a38a41685b81bb6b4b5c1ec9f71a395bfad285caf90de7b8224783
-
-V1.3.7.2 primarily optimizes data synchronization and query module capabilities, fixes several product defects, and provides comprehensive improvements to database monitoring, performance, and stability. Specific release contents are as follows:
-
-- Data Synchronization: Optimized distribution performance for Pipe complex path matching scenarios.
-- Query Module: The `SHOW QUERIES` statement now includes client IP, query timeout, server wait time, and other information.
-- Ecosystem Integration: Supports IoTDB pushing data to an external OPC Server in OPC Client mode.
-
-
-### V1.3.6.6
-
-> Release Date: 2026.01.20
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: iotdb-enterprise-1.3.6.6-bin.zip
-> SHA512 Checksum: 590d3ead053298c6df0ede637572ba598b9b684f8b35ab874bd4452f765e1421938f4cca2cf0423af2e806592aa8b15bdd25b41df7de809435a4d0239fc04790
-
-V1.3.6.6 enhances data read/write capabilities, resolves several product defects, and delivers comprehensive improvements in database monitoring, performance, and stability.
-
-
-### V1.3.6.3
-
-> Release Date: 2026.01.04
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: iotdb-enterprise-1.3.6.3-bin.zip
-> SHA512 Checksum: 43719a1384f59f63cb0029cdda0aba433383cd1a0f5ebc142e54f8aa6623cc30a7efb3e3aef7f3d485d5e07bec91be215c92ed21b5201613d5cc44044251c978
-
-V1.3.6.3 focuses on deep optimizations in two core areas—query performance and memory management—while comprehensively enhancing database monitoring, performance, and stability. Specific release contents are as follows:
-
-* **Query Module**: Optimized query performance across multiple scenarios, including multi-series `Last` queries.
-* **Query Module**: Added a new `FastLastQuery` interface in the Java SDK for more efficient `Last` query operations.
-* **Query Module**: Modified the tree model’s `fetchSchema` to return results in segmented streaming mode, improving response speed under large-data-volume conditions.
-* **Storage Module**: Enhanced memory management to mitigate memory leak risks and ensure long-term system stability.
-* **Storage Module**: Optimized the file compaction mechanism to improve compaction efficiency and reduce storage resource consumption.
-* **Others**: Fixed security vulnerabilities CVE-2025-12183, CVE-2025-66566, and CVE-2025-11226.
-
-### V1.3.6.1
-
-> Release Date: 2025.12.09
-> Download Link: Please contact Timecho Team to obtain the download link
-> Package Name: iotdb-enterprise-1.3.6.1-bin.zip
-> SHA512 Checksum: 9fb6a6870aa2133bfc40508324a7d97ee078d0d44895beef7b0a331edd203419119fb02b933f585b6c4a6fe9b59708a053d7cf65206b22b1a4f01a5fe518424c
-
-V1.3.6.1 focuses on deep optimization of data synchronization stability, while delivering comprehensive improvements in database monitoring, performance, and stability. Specific release contents are as follows:
-
-* **Data Synchronization**: Enhanced Pipe SQL parameter configuration to support specifying asynchronous loading methods.
-* **Data Synchronization**: Introduced syntactic sugar that automatically splits full-data Pipe creation SQL into real-time and historical synchronization components.
-* **System Module**: Added a global configuration option for data-type-specific compression strategies, enabling on-demand adjustment of storage compression policies.
-
-
-### V1.3.5.11
-
-> Release Date: 2025.09.24
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.11-bin.zip
-> SHA512 Checksum: f18419e20c0d7e9316febee5a053306a97268cb07e18e6933716c2ef98520fbbe051dfa1da02a9c83e8481a839ce35525ce6c50f890f821e3d760f550c75f804
-
-V1.3.5.11 version primarily optimizes the data synchronization function, fixes certain product defects, and includes comprehensive enhancements to database monitoring, performance, and stability.
-
-### V1.3.5.10
-
-> Release Date: 2025.08.27
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.10-bin.zip
-> SHA512 Checksum: 3aea6d2318f52b39bfb86dae9ff06fe1b719fdeceaabb39278c9a73544e1ceaf0660339f9342abb888c8281a0fb6144179dac9bb0c40ba0ecc66bac4dd7cbe80
-
-V1.3.5.10 version fixes certain product defects and includes comprehensive enhancements to database monitoring, performance, and stability.
-
-### V1.3.5.9
-
-> Release Date: 2025.08.25
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.9-bin.zip
-> SHA512 Checksum: 95b7a6790e94dc88e355a81e5a54b10ee87bdadae69ba0b215273967b3422178d5ee81fa5adf1c5380a67dbb30cf9782eaa3cbfd6ec744b0fd9a91c983ee8f70
-
-V1.3.5.9 version optimizes memory control, fixes certain product defects, and includes comprehensive enhancements to database monitoring, performance, and stability.
-
-### 1.x Other historical versions
-
-#### V1.3.5.8
-
-> Release Date: 2025.08.19
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.8-bin.zip
-> SHA512 Checksum: aa9802301614e20294a7f2fc4c149ba20d58213d9b74e8f8c607e0f4860949bad164bce2851b63c1d39b7568d62975ab257c269b3a9c168a29ea3945b6d28982
-
-V1.3.5.8 version optimizes the data synchronization function, fixes certain product defects, and includes comprehensive enhancements to database monitoring, performance, and stability.
-
-#### V1.3.5.7
-
-> Release Date: 2025.08.13
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.7-bin.zip
-> SHA512 Checksum: 17374a440267aed3507dcc8cf4dc8703f8136d5af30d16206a6e1101e378cbbc50eda340b1598a12df35fe87d96db20f7802f0e64033a013d4b81499198663d4
-
-V1.3.5.7 version optimizes the data synchronization function, fixes certain product defects, and includes comprehensive enhancements to database monitoring, performance, and stability.
-
-#### V1.3.5.6
-
-> Release Date: 2025.07.16
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.6-bin.zip
-> SHA512 Checksum: 05b9fda4d98ba8a1c9313c0831362ed3d667ce07cb00acaeabcf6441a6d67dff7da27f3fda2a5e1b3c3b85d1e5c730a534f3aa2f0c731b8c03ef447203b32493
-
-V1.3.5.6 introduces a new configuration switch to disable the data subscription feature. It optimizes the C++ high-availability client and addresses PIPE synchronization latency issues in normal operation, restart, and deletion scenarios, along with query performance for large TEXT objects. Comprehensive enhancements to database monitoring, performance, and stability are also included.
-
-#### V1.3.5.4
-
-> Release Date: 2025.06.19
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.4-bin.zip
-> SHA512 Checksum: edac5f8b70dd67b3f84d3e693dc025a10b41565143afa15fc0c4937f8207479ffe2da787cc9384440262b1b05748c23411373c08606c6e354ea3dcdba0371778
-
-V1.3.5.4 fixes several product defects and optimizes the node removal functionality. It also delivers comprehensive improvements to database monitoring, performance, and stability.
-
-#### V1.3.5.3
-
-> Release Date: 2025.06.13
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.3-bin.zip
-> SHA512 Checksum: 5f807322ceec9e63a6be86108cc57e7ad4251b99a6c28baf11256ab65b2145768e9110409f89834d5f4256094a8ad995775c0e59a17224ff2627cd9354e09d82
-
-V1.3.5.3 focuses on optimizing data synchronization capabilities, including persisting PIPE transmission progress and adding monitoring metrics for PIPE event transfer time. Related defects have been resolved. Additionally, the encryption algorithm for user passwords has been upgraded to SHA-256. Comprehensive enhancements to database monitoring, performance, and stability are included.
-
-#### V1.3.5.2
-
-> Release Date: 2015.06.10
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.2-bin.zip
-> SHA512 Checksum: 4c0a5db76c6045dfd27cce303546155cdb402318024dae5f999f596000d7b038b13bbeac39068331b5c6e2c80bc1d89cd346dd0be566fe2fe865007d441d9d05
-
-V1.3.5.2 primarily optimizes data synchronization features, adding support for cascading configurations via parameters and ensuring fully consistent ordering between synchronized and real-time writes. It also enables partitioned sending of historical and real-time data after system restarts. Comprehensive enhancements to database monitoring, performance, and stability are included.
-
-#### V1.3.5.1
-
-> Release Date: 2025.05.15
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.5.1-bin.zip
-> SHA512 Checksum: 91f22bafbdd4d580126ed59ba1ba99d14209f10ce4a0a4bd7d731943ac99fdb6ebfab6e3a1e294a7cb7f46367e9fd4252b0d9ac4d4240ddedf6d85658e48f212
-
-V1.3.5.1 resolves several product defects and delivers comprehensive improvements to database monitoring, performance, and stability.
-
-#### V1.3.4.2
-
-> Release Date: 2025.04.14
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.4.2-bin.zip
-> SHA512 Checksum: 52fbd79f5e7256e7d04edc8f640bb8d918e837fedd1e64642beb2b2b25e3525b5f5a4c92235f88f6f7b59bfcdf096e4ea52ab85bfef0b69274334470017a2c5b
-
-V1.3.4.2 enhances the data synchronization function by supporting bi-directional active-active synchronization of data forwarded through external PIPE sources.
-
-#### V1.3.4.1
-
-> Release Date: 2025.01.08
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.4.1-bin.zip
-> SHA512 Checksum: e9d46516f1f25732a93cc915041a8e59bca77cf8a1018c89d18ed29598540c9f2bdf1ffae9029c87425cecd9ecb5ebebea0334c7e23af11e28d78621d4a78148
-
-V1.3.4.1 introduces pattern matching functions, continuously optimizes the data subscription mechanism, improves stability, and extends import-data/export-data scripts to support new data types while unifying TsFile, CSV and SQL import/export formats. Comprehensive improvements have been made to database monitoring, performance and stability. Key updates:
-
-* Query Module: Configurable URI-based JAR loading for UDFs, PipePlugins, Triggers and AINodes
-* System Module: Extended UDF functionality with new pattern\_match function
-* Data Sync: Supports specifying authentication info at sender
-* Ecosystem: Kubernetes Operator support
-* Scripts: import-data/export-data now supports strings, BLOBs, dates and timestamps
-* Scripts: Unified import/export support for TsFile, CSV and SQL formats
-
-#### V1.3.3.3
-
-> Release Date: 2024.10.31
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.3.3-bin.zip
-> SHA512 Checksum: 4a3eceda479db3980e9c8058628e71ba5a16fbfccf70894e8181aea5e014c7b89988d0093f6d42df29d478340a33878602a3924bec13f442a48611cec4e0e961
-
-V1.3.3.3 improves restart recovery performance, enables DataNodes to actively monitor/load TsFiles with observability metrics, supports automatic loading at receivers when senders transfer files to specified directories, and adds Alter Source capability for Pipes. Comprehensive improvements to monitoring, performance and stability include:
-
-* Data Sync: Automatic type conversion for inconsistent data at receivers
-* Data Sync: Enhanced observability with ops/latency metrics for internal APIs
-* Data Sync: OPC-UA sink plugin supports CS mode and non-anonymous access
-* Subscription: SDK supports create\_if\_not\_exists and drop\_if\_exists APIs
-* Stream Processing: Alter Pipe supports Alter Source
-* System: Added latency monitoring for REST module
-* Scripts: Auto-loading TsFiles from specified directories
-* Scripts: import-tsfile supports remote server execution
-* Scripts: Kubernetes Helm support
-* Scripts: Python client supports new data types (string, BLOB, date, timestamp)
-
-#### V1.3.3.2
-
-> Release Date: 2024.08.15
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.3.2-bin.zip
-> SHA512 Checksum: 32733610da40aa965e5e9263a869d6e315c5673feaefad43b61749afcf534926398209d9ca7fff866c09deb92c09d950c583cea84be5a6aa2c315e1c7e8cfb74
-
-V1.3.3.2 adds metrics for mods file reading time, merge sort memory usage and dispatch latency, supports configurable time partition origin adjustment, enables automatic subscription termination based on pipe completion markers, and improves merge memory control. Key updates:
-
-* Query: Explain Analyze shows mods file read time
-* Query: Explain Analyze shows merge sort memory and dispatch latency
-* Storage: Added configurable file splitting during compaction
-* System: Configurable time partition origin
-* Stream Processing: Auto-terminate subscriptions on pipe completion markers
-* Data Sync: Configurable RPC compression levels
-* Scripts: Export filters only root.\_\_system paths
-
-#### V1.3.3.1
-
-> Release Date: 2024.07.12
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.3.1-bin.zip
-> SHA512 Checksum: 1fdffbc1f18bfabfa3463a5a6fbc4f6ba6ab686942f9e85e7e6be1840fb8700e0147e5e73fd52201656ae6adb572cc2e5ecc61bcad6fa4c5a4048c4207e3c6c0
-
-V1.3.3.1 adds tiered storage throttling, supports username/password auth specification at sync senders, optimizes ambiguous WARN logs at receivers, improves restart performance, and merges configuration files. Key updates:
-
-* Query: Optimized Filter performance for faster aggregation/WHERE queries
-* Query: Java Session evenly distributes SQL requests across nodes
-* System: Merged config files into iotdb-system.properties
-* Storage: Added tiered storage throttling
-* Data Sync: Username/password auth specification at senders
-* System: Optimized restart recovery time
-
-#### V1.3.2.2
-
-> Release Date: 2024.06.04
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.2.2-bin.zip
-> SHA512 Checksum: ad73212a0b5025d18d2481163f6b2d4f604e06eb5e391cc6cba7bf4e42792e115b527ed8bfb5cd95d20a150645c8b4d56a531889dac229ce0f63139a27267322
-
-V1.3.2.2 introduces EXPLAIN ANALYZE for SQL profiling, UDAF framework, automatic data deletion at disk thresholds, metadata sync, path-specific data point counting, and SQL import/export scripts. Supports rolling cluster upgrades and cluster-wide plugin distribution with comprehensive monitoring/performance improvements. Key updates:
-
-* Storage: Improved insertRecords performance
-* Storage: SpaceTL feature for auto-deletion at disk thresholds
-* Query: EXPLAIN ANALYZE for SQL stage-level profiling
-* Query: New UDAF framework
-* Query: New envelope demodulation analysis in UDFs
-* Query: MaxBy/MinBy functions returning timestamps with values
-* Query: Faster value-filtered queries
-* Data Sync: Wildcard path matching
-* Data Sync: Metadata synchronization (including attributes/permissions)
-* Stream Processing: ALTER PIPE for hot plugin updates
-* System: TsFile load statistics in data point counting
-* Scripts: Local upgrade/backup via hard links
-* Scripts: New export-data/import-data for CSV/TsFile/SQL formats
-* Scripts: Windows window title differentiation for ConfigNode/DataNode/Cli
-
-#### V1.3.1.4
-
-> Release Date: 2024.04.23
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.1.4-bin.zip
-> SHA512 Checksum: 8547702061d52e2707c750a624730eb2d9b605b60661efa3c8f11611ca1685aeb51b6f8a93f94c1b30bf2e8764139489c9fbb76cf598cfa8bf9c874b2a7c57eb
-
-V1.3.1.4 adds cluster activation status viewing, variance/stddev aggregation functions, FILL timeout settings, TsFile repair command, one-click info collection scripts, and cluster control scripts while optimizing views and stream processing. Key updates:
-
-* Query: FILL clause timeout threshold
-* Query: REST V2 returns column types
-* Data Sync: Simplified time range specification
-* Data Sync: SSL support (iotdb-thrift-ssl-sink)
-* System: SQL query for cluster activation status
-* System: Tiered storage transfer rate control
-* System: Enhanced observability (node divergence, task scheduling)
-* System: Optimized default logging
-* Scripts: One-click cluster control scripts (start-all/stop-all)
-* Scripts: One-click info collection scripts (collect-info)
-
-#### V1.3.0.4
-
-> Release Date: 2024.01.03
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.3.0.4-bin.zip
-> SHA512 Checksum: 3c07798f37c07e776e5cd24f758e8aaa563a2aae0fb820dad5ebf565ad8a76c765b896d44e7fdb7dad2e46ffd4262af901c765f9bf6af926bc62103118e38951
-
-V1.3.0.4 introduces the AINode machine learning framework, upgrades permission granularity to time-series level, and optimizes views/stream processing for better usability and stability. Key updates:
-
-* Query: New AINode ML framework
-* Query: Fixed slow SHOW PATH responses
-* Security: Time-series granular permissions
-* Security: SSL client-server encryption
-* Stream Processing: New metrics monitoring
-* Query: LAST queries on non-writable views
-* System: Improved data point counting accuracy
-
-#### V1.2.0.1
-
-> Release Date: 2023.06.30
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.2.0.1-bin.zip
-> SHA512 Checksum: dcf910d0c047d148a6c52fa9ee03a4d6bc3ff2a102dc31c0864695a25268ae933a274b093e5f3121689063544d7c6b3b635e5e87ae6408072e8705b3c4e20bf0
-
-V1.2.0.1 introduces stream processing framework, dynamic templates, substring/replace/round functions, enhances SHOW REGION/TIMESERIES/VARIABLE statements and Session APIs while optimizing monitoring metrics. Key updates:
-
-* Stream Processing: New framework
-* Metadata: Dynamic template expansion
-* Storage: New SPRINTZ/RLBE encoding and LZMA2 compression
-* Query: New CAST, ROUND, SUBSTR, REPLACE functions
-* Query: New TIME\_DURATION, MODE aggregation
-* Query: CASE WHEN syntax support
-* Query: ORDER BY expression support
-* Interface: Python API multi-node connection
-* Interface: Python client write redirection
-* Interface: Batch sequence creation via templates
-
-#### V1.1.0.1
-
-> Release Date: 2023.04.03
-> Download Link: Please contact Timecho Team to obtain the download link
-> Installation Package Name: iotdb-enterprise-1.1.0.1.zip
-> SHA512 Checksum: 58df58fc8b11afeec8436678842210ec092ac32f6308656d5356b7819acc199f1aec4b531635976b091b61d6736f0d9706badcabeaa5de50939e5c331c1dc804
-
-V1.1.0.1 introduces GROUP BY VARIATION/CONDITION, DIFF/COUNT\_IF functions, and pipeline execution engine while fixing issues including:
-
-* Aligned sequence LAST queries with ORDER BY TIMESERIES
-* LIMIT & OFFSET failures
-* Post-restart metadata template errors
-* Sequence creation after database deletion
-
-Key updates:
-
-* Query: ALIGN BY DEVICE supports ORDER BY TIME
-* Query: SHOW QUERIES/KILL QUERY commands
-* System: SHOW REGIONS per database
-* System: SHOW VARIABLES for cluster parameters
-* Query: GROUP BY VARIATION/CONDITION
-* Query: SELECT INTO type casting
-* Query: New DIFF (scalar), COUNT\_IF (aggregate)
-* System: SHOW REGIONS creation time
-* System: Configurable dn\_rpc\_port/address
-
-## 2. Workbench (Console Tool)
-
-
-| **Version** | **Description** | **Supported IoTDB Versions** | **SHA512 checksum** |
-| ----------- | ------------------------------------------------------------ | ----------------------------------- | ------------------------------------------------------------ |
-| V2.1.1 | Optimize the measuring point selection on the trend interface to support scenarios without devices | V2.0 and above | aa05fd4d9f33f07c0949bc2d6546bb4b9791ed5ea94bcef27e2bf51ea141ec0206f1c12466aced7bf3449e11ad68d65378d697f3d10cb4881024a83746029a65 |
-| V2.0.1-beta | The first version of the V2.x series, supporting dual models of tree and table | V2.0 and above | 0ca0d5029874ed8ada9c7d1cb562370b3a46913eed66d39c08759287ccc8bf332cf80bb8861e788614b61ae5d53a9f5605f553e1a607e856f395eb5102e7cc4d |
-| V1.5.7 | Optimize the point list by splitting point names into device names and points, ensure the point selection area supports horizontal scrolling, and align the export file column order with the page display. | All 1.x versions from V1.3.4 onward | d3cd4a63372ca5d6217b67dddf661980c6a442b3b1564235e9ad34fc254d681febd58c2cc59c6273ffbfd8a1b003b9adb130ecfaaebe1942003b0d07427b1fcc |
-| V1.5.6 | Enhanced CSV import/export: optional tags/aliases on import; support for measurement descriptions with backtick-quoted quotes on export. | All 1.x versions from V1.3.4 onward | 276ac1ea341f468bf6d29489c9109e9aa61afe2d1caaab577bc40603c6f4120efccc36b65a58a29ce6a266c21b46837aad6128f84ba5e676231ea9e6284a35e5 |
-| V1.5.5 | Added server clock functionality and support for activating Enterprise Edition license databases | All 1.x versions from V1.3.4 onward | b18d01b70908d503a25866d1cc69d14e024d5b10ca6fcc536932fdbef8257c66e53204663ce3be5548479911aca238645be79dfd7ee7e65a07ab3c0f68c497f6 |
-| V1.5.4 | Added authentication for Prometheus settings in Instance Management | All 1.x versions from V1.3.4 onward | adc7e13576913f9e43a9671fed02911983888da57be98ec8fbbb2593600d310f69619d32b22b569520c88e29f100d7ccae995b20eba757dbb1b2825655719335 |
-| V1.5.1 | Added AI analysis and pattern matching | All 1.x versions from V1.3.2 onward | 4f2053a2a3b2b255ce195268d6cd245278f3be32ba4cf68be1552c386d78ed4424f7bdc9d8e68c6b8260b3e398c8fd23ff342439c4e88e1e777c62640d2279f9 |
-| V1.4.0 | Added tree model display and English UI | All 1.x versions from V1.3.2 onward | 734077f3bb5e1719d20b319d8b554ce30718c935cb0451e02b2c9267ff770e9c2d63b958222f314f16c2e6e62bf78b643255249b574ee6f37d00e123433981e8 |
-| V1.3.1 | Enhanced analysis methods and import templates | All 1.x versions from V1.3.2 onward | 134f87101cc7f159f8a22ac976ad2a3a295c5435058ee0a15160892aac46ac61dd3cfb0633b4aea9cc7415bf904d0ae65aaf77d663f027d864204d81fb34768b |
-| V1.3.0 | Added DB configuration and UI refinements | All 1.x versions from V1.3.2 onward | 94a137fc5c681b211f3e076472a9c5875d59e7f0cd6d7409cb8f66bb9e4f87577a0f12dd500e2bcb99a435860c82183e4a6514b638bcb4aecfb48f184730f3f1 |
-| V1.2.6 | Optimized permission controls | All 1.x versions from V1.3.1 onward | f345b7edcbe245a561cb94ec2e4f4d40731fe205f134acadf5e391e5874c5c2477d9f75f15dbaf36c3a7cb6506823ac6fbc2a0ccce484b7c4cc71ec0fbdd9901 |
-| V1.2.5 | Added "Common Templates" and caching | All 1.x versions from V1.3.0 onward | 37376b6cfbef7df8496e255fc33627de01bd68f636e50b573ed3940906b6f3da1e8e8b25260262293b8589718f5a72180fa15e5823437bf6dc51ed7da0c583f7 |
-| V1.2.4 | Added import/export for calculations, time alignment field | All 1.x versions from V1.2.2 onward | 061ad1add38c109c1a90b06f1ddb7797bd45e84a34a4f77154ee48b90bdc7ecccc1e25eaa53fbbc98170d99facca93e3536192dd8d10a50ce505f59923ce6186 |
-| V1.2.3 | Added activation details and analysis features | All 1.x versions from V1.2.2 onward | 254f5b7451300f6f99937d27fd7a5b20847d5293f53e0eaf045ac9235c7ea011785716b800014645ed5d2161078b37e1d04f3c59589c976614fb801c4da982e1 |
-| V1.2.2 | Optimized point description display | All 1.x versions from V1.2.2 onward | 062e520d010082be852d6db0e2a3aa6de594eb26aeb608da28a212726e378cd4ea30fca5e1d2c3231ebd8de29e94ca9641f1fabc1cea46acfb650c37b7681b4e |
-| V1.2.1 | Added sync monitoring panel, Prometheus hints | All 1.x versions from V1.2.2 onward | 8a3bcf87982ad5004528829b121f2d3945429deb77069917a42a8c8d2e2e2a2c24a398aaa87003920eeacc0c692f1ed39eac52a696887aa085cce011f0ddd745 |
-| V1.2.0 | Major Workbench upgrade | All 1.x versions from V1.2.0 onward | ea1f7d3a4c0c6476a195479e69bbd3b3a2da08b5b2bb70b0a4aba988a28b5db5a209d4e2c697eb8095dfdf130e29f61f2ddf58c5b51d002c8d4c65cfc13106b3 |
diff --git a/src/UserGuide/Master/Table/QuickStart/QuickStart_timecho.md b/src/UserGuide/Master/Table/QuickStart/QuickStart_timecho.md
deleted file mode 100644
index 918214f34..000000000
--- a/src/UserGuide/Master/Table/QuickStart/QuickStart_timecho.md
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-# Quick Start
-
-This document will guide you through methods to get started quickly with IoTDB.
-
-## 1. How to Install and Deploy?
-
-This guide will assist you in quickly installing and deploying IoTDB. You can quickly navigate to the content you need to review through the following document links:
-
-1. Prepare the necessary machine resources: The deployment and operation of IoTDB require consideration of various aspects of machine resource configuration. For specific resource configurations, please refer to [Database Resource](../Deployment-and-Maintenance/Database-Resources_timecho.md)
-
-2. Complete system configuration preparations: IoTDB's system configuration involves multiple aspects. For an introduction to key system configurations, please see [System Requirements](../Deployment-and-Maintenance/Environment-Requirements.md)
-
-3. Obtain the installation package: You can contact the Timecho Team to get the IoTDB installation package to ensure you download the latest and most stable version. For the specific structure of the installation package, please refer to[Obtain TimechoDB](../Deployment-and-Maintenance/IoTDB-Package_timecho.md)
-
-4. Install the database and activate it: Depending on your actual deployment architecture, you can choose from the following tutorials for installation and deployment:
-
- - Stand-Alone Deployment: [Stand-Alone Deployment ](../Deployment-and-Maintenance/Stand-Alone-Deployment_timecho.md)
-
- - Distributed(Cluster) Deployment:[Distributed(Cluster) Deployment](../Deployment-and-Maintenance/Cluster-Deployment_timecho.md)
-
- - Dual-Active Deployment:[Dual-Active Deployment](../Deployment-and-Maintenance/Dual-Active-Deployment_timecho.md)
-
-> ❗️Note: We currently still recommend direct installation and deployment on physical/virtual machines. For Docker deployment, please refer to [Docker Deployment](../Deployment-and-Maintenance/Docker-Deployment_timecho.md)
-
-5. Install supporting tools: The TimechoDB provides supporting tools such as a monitoring panel, which is recommended to be installed when deploying the TimechoDB to facilitate a more convenient usage:
-
- - Monitoring Panel: Provides hundreds of database monitoring metrics for fine-grained monitoring of IoTDB and its operating system, assisting in system optimization, performance tuning, and bottleneck detection. For installation steps, please see [Monitoring-panel Deployment ](../Deployment-and-Maintenance/Monitoring-panel-deployment.md)
-
-
-## 2. How to Use IoTDB?
-
-1. Database Modeling Design: Database modeling is a crucial step in creating a database system, involving the design of data structures and relationships to ensure that the organization of data meets the needs of specific applications. The following documents will help you quickly understand IoTDB's modeling design:
-
- - Introduction to Time Series Concepts: [Navigating Time Series Data](../Background-knowledge/Navigating_Time_Series_Data_timecho.md)
-
- - Introduction to Modeling Design:[Data Model and Terminology](../Background-knowledge/Data-Model-and-Terminology_timecho.md)
-
- - Introduction to Database:[Database Management](../Basic-Concept/Database-Management_timecho.md)
-
- - Introduction to Tables: [Table Management](../Basic-Concept/Table-Management_timecho.md)
-
-2. Data Insertion & Updates: IoTDB provides multiple methods for inserting real-time data, and supports data write-back. For basic data insertion and updating operations, please see [Write&Updata Data](../Basic-Concept/Write-Updata-Data_timecho.md)
-
-3. Data Querying: IoTDB offers a rich set of data querying capabilities. For a basic introduction to data querying, please see [Query Data](../Basic-Concept/Query-Data.md). It includes pattern queries and window functions applicable to time-series featured analysis. For detailed introductions, please refer to [Pattern Query](../User-Manual/Pattern-Query_timecho.md) and [Window Function](../User-Manual/Window-Function_timecho.md).
-
-4. Data Deletion: IoTDB supports two deletion methods: SQL-based deletion and automatic expiration deletion (TTL).
-
- - SQL-Based Deletion: For a basic introduction, please refer to [Delete Data](../Basic-Concept/Delete-Data.md)
-
- - Automatic Expiration Deletion (TTL): For a basic introduction, please see [TTL Delete Data](../Basic-Concept/TTL-Delete-Data_timecho.md)
-
-5. Advanced Features: In addition to common database functions such as insertion and querying, IoTDB also supports features like "data synchronization." For specific usage methods, please refer to the respective documents:
-
- - Data Synchronization: [Data Sync](../User-Manual/Data-Sync_timecho.md)
-
-6. Application Programming Interfaces (APIs): IoTDB provides various application programming interfaces (APIs) to facilitate developers' interaction with IoTDB in applications. Currently supported interfaces include [Java Native API](../API/Programming-Java-Native-API_timecho.md)、[Python Native API](../API/Programming-Python-Native-API_timecho.md)、[JDBC](../API/Programming-JDBC_timecho.md), and more. For more programming interfaces, please refer to the [Application Programming Interfaces] section on the official website.
-
-## 3. What other convenient tools are available?
-
-In addition to its own rich features, IoTDB is complemented by a comprehensive suite of peripheral tools. This guide will help you quickly understand and use these tools:
-
- - Monitoring Panel: A tool for detailed monitoring of IoTDB and its operating system, covering hundreds of database monitoring indicators such as database performance and system resources, helping system optimization and bottleneck identification. For a detailed usage introduction, please refer to [Monitor Tool](../Tools-System/Monitor-Tool_timecho.md)
-
-
-## 4. Want to learn more technical details?
-
-If you want to explore IoTDB’s internal mechanisms further, refer to the following documents:
-
- - Data Partitioning and Load Balancing: IoTDB is designed with a partitioning strategy and load balancing algorithm to enhance cluster availability and performance. For more details, please see [Cluster data partitioning](../Technical-Insider/Cluster-data-partitioning.md)
-
- - Compression & Encoding: IoTDB employs various encoding and compression techniques optimized for different data types to improve storage efficiency. For more details, please see [Encoding and Compression](../Technical-Insider/Encoding-and-Compression.md)
-
-
diff --git a/src/UserGuide/Master/Table/Reference/System-Config-Manual_timecho.md b/src/UserGuide/Master/Table/Reference/System-Config-Manual_timecho.md
deleted file mode 100644
index f96a33713..000000000
--- a/src/UserGuide/Master/Table/Reference/System-Config-Manual_timecho.md
+++ /dev/null
@@ -1,3374 +0,0 @@
-
-
-# Config Manual
-
-## 1. IoTDB Configuration Files
-
-The configuration files for IoTDB are located in the `conf` folder under the IoTDB installation directory. Key configuration files include:
-
-1. `confignode-env.sh` **/** `confignode-env.bat`:
- 1. Environment configuration file for ConfigNode.
- 2. Used to configure memory size and other environment settings for ConfigNode.
-2. `datanode-env.sh` **/** `datanode-env.bat`:
- 1. Environment configuration file for DataNode.
- 2. Used to configure memory size and other environment settings for DataNode.
-3. `iotdb-system.properties`:
- 1. Main configuration file for IoTDB.
- 2. Contains configurable parameters for IoTDB.
-4. `iotdb-system.properties.template`:
- 1. Template for the `iotdb-system.properties` file.
- 2. Provides a reference for all available configuration parameters.
-
-## 2. Modify Configurations
-
-### 2.1 **Modify Existing Parameters**:
-
-- Parameters already present in the `iotdb-system.properties` file can be directly modified.
-
-### 2.2 **Adding New Parameters**:
-
-- For parameters not listed in `iotdb-system.properties`, you can find them in the `iotdb-system.properties.template` file.
-- Copy the desired parameter from the template file to `iotdb-system.properties` and modify its value.
-
-### 2.3 Configuration Update Methods
-
-Different configuration parameters have different update methods, categorized as follows:
-
-1. **Modify before the first startup.**:
- 1. These parameters can only be modified before the first startup of ConfigNode/DataNode.
- 2. Modifying them after the first startup will prevent ConfigNode/DataNode from starting.
-2. **Restart Required for Changes to Take Effect**:
- 1. These parameters can be modified after ConfigNode/DataNode has started.
- 2. However, a restart of ConfigNode/DataNode is required for the changes to take effect.
-3. **Hot Reload**:
- 1. These parameters can be modified while ConfigNode/DataNode is running.
- 2. After modification, use the following SQL commands to apply the changes:
- - `load configuration`: Reloads the configuration.
- - `set configuration key1 = 'value1'`: Updates specific configuration parameters.
-
-## 3. Environment Parameters
-
-The environment configuration files (`confignode-env.sh/bat` and `datanode-env.sh/bat`) are used to configure Java environment parameters for ConfigNode and DataNode, such as JVM settings. These configurations are passed to the JVM when ConfigNode or DataNode starts.
-
-### 3.1 **confignode-env.sh/bat**
-
-- MEMORY_SIZE
-
-| Name | MEMORY_SIZE |
-| ----------- | ------------------------------------------------------------ |
-| Description | Memory size allocated when IoTDB ConfigNode starts. |
-| Type | String |
-| Default | Depends on the operating system and machine configuration. Defaults to 3/10 of the machine's memory, capped at 16G. |
-| Effective | Restart required |
-
-- ON_HEAP_MEMORY
-
-| Name | ON_HEAP_MEMORY |
-| ----------- | ------------------------------------------------------------ |
-| Description | On-heap memory size available for IoTDB ConfigNode. Previously named `MAX_HEAP_SIZE`. |
-| Type | String |
-| Default | Depends on the `MEMORY_SIZE` configuration. |
-| Effective | Restart required |
-
-- OFF_HEAP_MEMORY
-
-| Name | OFF_HEAP_MEMORY |
-| ----------- | ------------------------------------------------------------ |
-| Description | Off-heap memory size available for IoTDB ConfigNode. Previously named `MAX_DIRECT_MEMORY_SIZE`. |
-| Type | String |
-| Default | Depends on the `MEMORY_SIZE` configuration. |
-| Effective | Restart required |
-
-### 3.2 **datanode-env.sh/bat**
-
-- MEMORY_SIZE
-
-| Name | MEMORY_SIZE |
-| ----------- | ------------------------------------------------------------ |
-| Description | Memory size allocated when IoTDB DataNode starts. |
-| Type | String |
-| Default | Depends on the operating system and machine configuration. Defaults to 1/2 of the machine's memory. |
-| Effective | Restart required |
-
-- ON_HEAP_MEMORY
-
-| Name | ON_HEAP_MEMORY |
-| ----------- | ------------------------------------------------------------ |
-| Description | On-heap memory size available for IoTDB DataNode. Previously named `MAX_HEAP_SIZE`. |
-| Type | String |
-| Default | Depends on the `MEMORY_SIZE` configuration. |
-| Effective | Restart required |
-
-- OFF_HEAP_MEMORY
-
-| Name | OFF_HEAP_MEMORY |
-| ----------- | ------------------------------------------------------------ |
-| Description | Off-heap memory size available for IoTDB DataNode. Previously named `MAX_DIRECT_MEMORY_SIZE`. |
-| Type | String |
-| Default | Depends on the `MEMORY_SIZE` configuration. |
-| Effective | Restart required |
-
-## 4. System Parameters (`iotdb-system.properties.template`)
-
-The `iotdb-system.properties` file contains various configurations for managing IoTDB clusters, nodes, replication, directories, monitoring, SSL, connections, object storage, tier management, and REST services. Below is a detailed breakdown of the parameters:
-
-### 4.1 Cluster Configuration
-
-- cluster_name
-
-| Name | cluster_name |
-| ----------- | --------------------------------------------------------- |
-| Description | Name of the cluster. |
-| Type | String |
-| Default | default_cluster |
-| Effective | Use CLI: `set configuration cluster_name='xxx'`. |
-| Note | Changes are distributed across nodes. Changes may not propagate to all nodes in case of network issues or node failures. Nodes that fail to update must manually modify `cluster_name` in their configuration files and restart. Under normal circumstances, it is not recommended to modify `cluster_name` by manually modifying configuration files or to perform hot-loading via `load configuration` method. |
-
-### 4.2 Seed ConfigNode
-
-- cn_seed_config_node
-
-| Name | cn_seed_config_node |
-| ----------- | ------------------------------------------------------------ |
-| Description | Address of the seed ConfigNode for Confignode to join the cluster. |
-| Type | String |
-| Default | 127.0.0.1:10710 |
-| Effective | Modify before the first startup. |
-
-- dn_seed_config_node
-
-| Name | dn_seed_config_node |
-| ----------- | ------------------------------------------------------------ |
-| Description | Address of the seed ConfigNode for Datanode to join the cluster. |
-| Type | String |
-| Default | 127.0.0.1:10710 |
-| Effective | Modify before the first startup. |
-
-### 4.3 Node RPC Configuration
-
-- cn_internal_address
-
-| Name | cn_internal_address |
-| ----------- | ---------------------------------------------- |
-| Description | Internal address for ConfigNode communication. |
-| Type | String |
-| Default | 127.0.0.1 |
-| Effective | Modify before the first startup. |
-
-- cn_internal_port
-
-| Name | cn_internal_port |
-| ----------- | ------------------------------------------- |
-| Description | Port for ConfigNode internal communication. |
-| Type | Short Int : [0,65535] |
-| Default | 10710 |
-| Effective | Modify before the first startup. |
-
-- cn_consensus_port
-
-| Name | cn_consensus_port |
-| ----------- | ----------------------------------------------------- |
-| Description | Port for ConfigNode consensus protocol communication. |
-| Type | Short Int : [0,65535] |
-| Default | 10720 |
-| Effective | Modify before the first startup. |
-
-- dn_rpc_address
-
-| Name | dn_rpc_address |
-| ----------- |---------------------------------|
-| Description | Address for client RPC service. |
-| Type | String |
-| Default | 127.0.0.1 |
-| Effective | Restart required. |
-
-- dn_rpc_port
-
-| Name | dn_rpc_port |
-| ----------- | ---------------------------- |
-| Description | Port for client RPC service. |
-| Type | Short Int : [0,65535] |
-| Default | 6667 |
-| Effective | Restart required. |
-
-- dn_internal_address
-
-| Name | dn_internal_address |
-| ----------- | -------------------------------------------- |
-| Description | Internal address for DataNode communication. |
-| Type | string |
-| Default | 127.0.0.1 |
-| Effective | Modify before the first startup. |
-
-- dn_internal_port
-
-| Name | dn_internal_port |
-| ----------- | ----------------------------------------- |
-| Description | Port for DataNode internal communication. |
-| Type | int |
-| Default | 10730 |
-| Effective | Modify before the first startup. |
-
-- dn_mpp_data_exchange_port
-
-| Name | dn_mpp_data_exchange_port |
-| ----------- | -------------------------------- |
-| Description | Port for MPP data exchange. |
-| Type | int |
-| Default | 10740 |
-| Effective | Modify before the first startup. |
-
-- dn_schema_region_consensus_port
-
-| Name | dn_schema_region_consensus_port |
-| ----------- | ------------------------------------------------------------ |
-| Description | Port for Datanode SchemaRegion consensus protocol communication. |
-| Type | int |
-| Default | 10750 |
-| Effective | Modify before the first startup. |
-
-- dn_data_region_consensus_port
-
-| Name | dn_data_region_consensus_port |
-| ----------- | ------------------------------------------------------------ |
-| Description | Port for Datanode DataRegion consensus protocol communication. |
-| Type | int |
-| Default | 10760 |
-| Effective | Modify before the first startup. |
-
-- dn_join_cluster_retry_interval_ms
-
-| Name | dn_join_cluster_retry_interval_ms |
-| ----------- | --------------------------------------------------- |
-| Description | Interval for DataNode to retry joining the cluster. |
-| Type | long |
-| Default | 5000 |
-| Effective | Restart required. |
-
-### 4.4 Replication configuration
-
-- config_node_consensus_protocol_class
-
-| Name | config_node_consensus_protocol_class |
-| ----------- | ------------------------------------------------------------ |
-| Description | Consensus protocol for ConfigNode replication, only supports RatisConsensus |
-| Type | String |
-| Default | org.apache.iotdb.consensus.ratis.RatisConsensus |
-| Effective | Modify before the first startup. |
-
-- schema_replication_factor
-
-| Name | schema_replication_factor |
-| ----------- | ------------------------------------------------------------ |
-| Description | Default schema replication factor for databases. |
-| Type | int32 |
-| Default | 1 |
-| Effective | Restart required. Takes effect on the new database after restarting. |
-
-- schema_region_consensus_protocol_class
-
-| Name | schema_region_consensus_protocol_class |
-| ----------- | ------------------------------------------------------------ |
-| Description | Consensus protocol for schema region replication. Only supports RatisConsensus when multi-replications. |
-| Type | String |
-| Default | org.apache.iotdb.consensus.ratis.RatisConsensus |
-| Effective | Modify before the first startup. |
-
-- data_replication_factor
-
-| Name | data_replication_factor |
-| ----------- | ------------------------------------------------------------ |
-| Description | Default data replication factor for databases. |
-| Type | int32 |
-| Default | 1 |
-| Effective | Restart required. Takes effect on the new database after restarting. |
-
-- data_region_consensus_protocol_class
-
-| Name | data_region_consensus_protocol_class |
-| ----------- | ------------------------------------------------------------ |
-| Description | Consensus protocol for data region replication. Supports IoTConsensus or RatisConsensus when multi-replications. |
-| Type | String |
-| Default | org.apache.iotdb.consensus.iot.IoTConsensus |
-| Effective | Modify before the first startup. |
-
-### 4.5 Directory configuration
-
-- cn_system_dir
-
-| Name | cn_system_dir |
-| ----------- | ----------------------------------------------------------- |
-| Description | System data storage path for ConfigNode. |
-| Type | String |
-| Default | data/confignode/system(Windows:data\\configndoe\\system) |
-| Effective | Restart required |
-
-- cn_consensus_dir
-
-| Name | cn_consensus_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Consensus protocol data storage path for ConfigNode. |
-| Type | String |
-| Default | data/confignode/consensus(Windows:data\\configndoe\\consensus) |
-| Effective | Restart required |
-
-- cn_pipe_receiver_file_dir
-
-| Name | cn_pipe_receiver_file_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Directory for pipe receiver files in ConfigNode. |
-| Type | String |
-| Default | data/confignode/system/pipe/receiver(Windows:data\\confignode\\system\\pipe\\receiver) |
-| Effective | Restart required |
-
-- dn_system_dir
-
-| Name | dn_system_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Schema storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. |
-| Type | String |
-| Default | data/datanode/system(Windows:data\\datanode\\system) |
-| Effective | Restart required |
-
-- dn_data_dirs
-
-| Name | dn_data_dirs |
-| ----------- | ------------------------------------------------------------ |
-| Description | Data storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. |
-| Type | String |
-| Default | data/datanode/data(Windows:data\\datanode\\data) |
-| Effective | Restart required |
-
-- dn_multi_dir_strategy
-
-| Name | dn_multi_dir_strategy |
-| ----------- | ------------------------------------------------------------ |
-| Description | The strategy used by IoTDB to select directories in `data_dirs` for TsFiles. You can use either the simple class name or the fully qualified class name. The system provides the following two strategies: 1. SequenceStrategy: IoTDB selects directories sequentially, iterating through all directories in `data_dirs` in a round-robin manner. 2. MaxDiskUsableSpaceFirstStrategy IoTDB prioritizes the directory in `data_dirs` with the largest disk free space. To implement a custom strategy: 1. Inherit the `org.apache.iotdb.db.storageengine.rescon.disk.strategy.DirectoryStrategy `class and implement your own strategy method. 2. Fill in the configuration item with the fully qualified class name of your implementation (package name + class name, e.g., `UserDefineStrategyPackage`). 3. Add the JAR file containing your custom class to the project. |
-| Type | String |
-| Default | SequenceStrategy |
-| Effective | Hot reload. |
-
-- dn_consensus_dir
-
-| Name | dn_consensus_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Consensus log storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. |
-| Type | String |
-| Default | data/datanode/consensus(Windows:data\\datanode\\consensus) |
-| Effective | Restart required |
-
-- dn_wal_dirs
-
-| Name | dn_wal_dirs |
-| ----------- | ------------------------------------------------------------ |
-| Description | Write-ahead log (WAL) storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. |
-| Type | String |
-| Default | data/datanode/wal(Windows:data\\datanode\\wal) |
-| Effective | Restart required |
-
-- dn_tracing_dir
-
-| Name | dn_tracing_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Tracing root directory for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. |
-| Type | String |
-| Default | datanode/tracing(Windows:datanode\\tracing) |
-| Effective | Restart required |
-
-- dn_sync_dir
-
-| Name | dn_sync_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Sync storage path for DataNode.By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. |
-| Type | String |
-| Default | data/datanode/sync(Windows:data\\datanode\\sync) |
-| Effective | Restart required |
-
-- sort_tmp_dir
-
-| Name | sort_tmp_dir |
-| ----------- | ------------------------------------------------- |
-| Description | Temporary directory for sorting operations. |
-| Type | String |
-| Default | data/datanode/tmp(Windows:data\\datanode\\tmp) |
-| Effective | Restart required |
-
-- dn_pipe_receiver_file_dirs
-
-| Name | dn_pipe_receiver_file_dirs |
-| ----------- | ------------------------------------------------------------ |
-| Description | Directory for pipe receiver files in DataNode. |
-| Type | String |
-| Default | data/datanode/system/pipe/receiver(Windows:data\\datanode\\system\\pipe\\receiver) |
-| Effective | Restart required |
-
-- iot_consensus_v2_receiver_file_dirs
-
-| Name | iot_consensus_v2_receiver_file_dirs |
-| ----------- | ------------------------------------------------------------ |
-| Description | Directory for IoTConsensus V2 receiver files. |
-| Type | String |
-| Default | data/datanode/system/pipe/consensus/receiver(Windows:data\\datanode\\system\\pipe\\consensus\\receiver) |
-| Effective | Restart required |
-
-- iot_consensus_v2_deletion_file_dir
-
-| Name | iot_consensus_v2_deletion_file_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | Directory for IoTConsensus V2 deletion files. |
-| Type | String |
-| Default | data/datanode/system/pipe/consensus/deletion(Windows:data\\datanode\\system\\pipe\\consensus\\deletion) |
-| Effective | Restart required |
-
-### 4.6 Metric Configuration
-
-- cn_metric_reporter_list
-
-| Name | cn_metric_reporter_list |
-| ----------- | ----------------------------------------- |
-| Description | Systems for reporting ConfigNode metrics. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-- cn_metric_level
-
-| Name | cn_metric_level |
-| ----------- | --------------------------------------- |
-| Description | Level of detail for ConfigNode metrics. |
-| Type | String |
-| Default | IMPORTANT |
-| Effective | Restart required. |
-
-- cn_metric_async_collect_period
-
-| Name | cn_metric_async_collect_period |
-| ----------- | ------------------------------------------------------------ |
-| Description | Period for asynchronous metric collection in ConfigNode (in seconds). |
-| Type | int |
-| Default | 5 |
-| Effective | Restart required. |
-
-- cn_metric_prometheus_reporter_port
-
-| Name | cn_metric_prometheus_reporter_port |
-| ----------- | --------------------------------------------------- |
-| Description | Port for Prometheus metric reporting in ConfigNode. |
-| Type | int |
-| Default | 9091 |
-| Effective | Restart required. |
-
-- dn_metric_reporter_list
-
-| Name | dn_metric_reporter_list |
-| ----------- | --------------------------------------- |
-| Description | Systems for reporting DataNode metrics. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-- dn_metric_level
-
-| Name | dn_metric_level |
-| ----------- | ------------------------------------- |
-| Description | Level of detail for DataNode metrics. |
-| Type | String |
-| Default | IMPORTANT |
-| Effective | Restart required. |
-
-- dn_metric_async_collect_period
-
-| Name | dn_metric_async_collect_period |
-| ----------- | ------------------------------------------------------------ |
-| Description | Period for asynchronous metric collection in DataNode (in seconds). |
-| Type | int |
-| Default | 5 |
-| Effective | Restart required. |
-
-- dn_metric_prometheus_reporter_port
-
-| Name | dn_metric_prometheus_reporter_port |
-| ----------- | ------------------------------------------------- |
-| Description | Port for Prometheus metric reporting in DataNode. |
-| Type | int |
-| Default | 9092 |
-| Effective | Restart required. |
-
-- dn_metric_internal_reporter_type
-
-| Name | dn_metric_internal_reporter_type |
-| ----------- | ------------------------------------------------------------ |
-| Description | Internal reporter types for DataNode metrics. For internal monitoring and checking that the data has been successfully written and refreshed. |
-| Type | String |
-| Default | IOTDB |
-| Effective | Restart required. |
-
-### 4.7 SSL Configuration
-
-- enable_thrift_ssl
-
-| Name | enable_thrift_ssl |
-| ----------- | --------------------------------------------- |
-| Description | Enables SSL encryption for RPC communication. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- enable_https
-
-| Name | enable_https |
-| ----------- | ------------------------------ |
-| Description | Enables SSL for REST services. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- key_store_path
-
-| Name | key_store_path |
-| ----------- | ---------------------------- |
-| Description | Path to the SSL certificate. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-- key_store_pwd
-
-| Name | key_store_pwd |
-| ----------- | --------------------------------- |
-| Description | Password for the SSL certificate. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-### 4.8 Connection Configuration
-
-- cn_rpc_thrift_compression_enable
-
-| Name | cn_rpc_thrift_compression_enable |
-| ----------- | ----------------------------------- |
-| Description | Enables Thrift compression for RPC. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- cn_rpc_max_concurrent_client_num
-
-| Name | cn_rpc_max_concurrent_client_num |
-| ----------- |-------------------------------------------|
-| Description | Maximum number of concurrent RPC clients. |
-| Type | int |
-| Default | 3000 |
-| Effective | Restart required. |
-
-- cn_connection_timeout_ms
-
-| Name | cn_connection_timeout_ms |
-| ----------- | ---------------------------------------------------- |
-| Description | Connection timeout for ConfigNode (in milliseconds). |
-| Type | int |
-| Default | 60000 |
-| Effective | Restart required. |
-
-- cn_selector_thread_nums_of_client_manager
-
-| Name | cn_selector_thread_nums_of_client_manager |
-| ----------- | ------------------------------------------------------------ |
-| Description | Number of selector threads for client management in ConfigNode. |
-| Type | int |
-| Default | 1 |
-| Effective | Restart required. |
-
-- cn_max_client_count_for_each_node_in_client_manager
-
-| Name | cn_max_client_count_for_each_node_in_client_manager |
-| ----------- | ------------------------------------------------------ |
-| Description | Maximum clients per node in ConfigNode client manager. |
-| Type | int |
-| Default | 300 |
-| Effective | Restart required. |
-
-- dn_session_timeout_threshold
-
-| Name | dn_session_timeout_threshold |
-| ----------- | ---------------------------------------- |
-| Description | Maximum idle time for DataNode sessions. |
-| Type | int |
-| Default | 0 |
-| Effective | Restart required.t required. |
-
-- dn_rpc_thrift_compression_enable
-
-| Name | dn_rpc_thrift_compression_enable |
-| ----------- | -------------------------------------------- |
-| Description | Enables Thrift compression for DataNode RPC. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- dn_rpc_advanced_compression_enable
-
-| Name | dn_rpc_advanced_compression_enable |
-| ----------- | ----------------------------------------------------- |
-| Description | Enables advanced Thrift compression for DataNode RPC. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- dn_rpc_selector_thread_count
-
-| Name | rpc_selector_thread_count |
-| ----------- | -------------------------------------------- |
-| Description | Number of selector threads for DataNode RPC. |
-| Type | int |
-| Default | 1 |
-| Effective | Restart required.t required. |
-
-- dn_rpc_min_concurrent_client_num
-
-| Name | rpc_min_concurrent_client_num |
-| ----------- | ------------------------------------------------------ |
-| Description | Minimum number of concurrent RPC clients for DataNode. |
-| Type | Short Int : [0,65535] |
-| Default | 1 |
-| Effective | Restart required. |
-
-- dn_rpc_max_concurrent_client_num
-
-| Name | dn_rpc_max_concurrent_client_num |
-| ----------- |--------------------------------------------------------|
-| Description | Maximum number of concurrent RPC clients for DataNode. |
-| Type | Short Int : [0,65535] |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- dn_thrift_max_frame_size
-
-| Name | dn_thrift_max_frame_size |
-| ----------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Description | Maximum frame size for RPC requests/responses. |
-| Type | int |
-| Default | Defaults to 0, which means the value is automatically calculated based on the DN JVM configuration parameters at startup: a. min(64MB, dn_alloc_memory/64) b. If the user manually configures `dn_thrift_max_frame_size`, the user-specified value will be used instead. |
-| Effective | Restart required. |
-
-- dn_thrift_init_buffer_size
-
-| Name | dn_thrift_init_buffer_size |
-| ----------- | ----------------------------------- |
-| Description | Initial buffer size for Thrift RPC. |
-| Type | long |
-| Default | 1024 |
-| Effective | Restart required. |
-
-- dn_connection_timeout_ms
-
-| Name | dn_connection_timeout_ms |
-| ----------- | -------------------------------------------------- |
-| Description | Connection timeout for DataNode (in milliseconds). |
-| Type | int |
-| Default | 60000 |
-| Effective | Restart required. |
-
-- dn_selector_thread_count_of_client_manager
-
-| Name | dn_selector_thread_count_of_client_manager |
-| ----------- | ------------------------------------------------------------ |
-| Description | selector thread (TAsyncClientManager) nums for async thread in a clientManager |
-| Type | int |
-| Default | 1 |
-| Effective | Restart required.t required. |
-
-- dn_max_client_count_for_each_node_in_client_manager
-
-| Name | dn_max_client_count_for_each_node_in_client_manager |
-| ----------- | --------------------------------------------------- |
-| Description | Maximum clients per node in DataNode clientmanager. |
-| Type | int |
-| Default | 300 |
-| Effective | Restart required. |
-
-### 4.9 Object storage management
-
-- remote_tsfile_cache_dirs
-
-| Name | remote_tsfile_cache_dirs |
-| ----------- | ---------------------------------------- |
-| Description | Local cache directory for cloud storage. |
-| Type | String |
-| Default | data/datanode/data/cache |
-| Effective | Restart required. |
-
-- remote_tsfile_cache_page_size_in_kb
-
-| Name | remote_tsfile_cache_page_size_in_kb |
-| ----------- | --------------------------------------------- |
-| Description | Block size for cached files in cloud storage. |
-| Type | int |
-| Default | 20480 |
-| Effective | Restart required. |
-
-- remote_tsfile_cache_max_disk_usage_in_mb
-
-| Name | remote_tsfile_cache_max_disk_usage_in_mb |
-| ----------- | ------------------------------------------- |
-| Description | Maximum disk usage for cloud storage cache. |
-| Type | long |
-| Default | 51200 |
-| Effective | Restart required. |
-
-- object_storage_type
-
-| Name | object_storage_type |
-| ----------- | ---------------------- |
-| Description | Type of cloud storage. |
-| Type | String |
-| Default | AWS_S3 |
-| Effective | Restart required. |
-
-- object_storage_endpoint
-
-| Name | object_storage_endpoint |
-| ----------- | --------------------------- |
-| Description | Endpoint for cloud storage. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-- object_storage_bucket
-
-| Name | object_storage_bucket |
-| ----------- | ------------------------------ |
-| Description | Bucket name for cloud storage. |
-| Type | String |
-| Default | iotdb_data |
-| Effective | Restart required. |
-
-- object_storage_access_key
-
-| Name | object_storage_access_key |
-| ----------- | ----------------------------- |
-| Description | Access key for cloud storage. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-- object_storage_access_secret
-
-| Name | object_storage_access_secret |
-| ----------- | -------------------------------- |
-| Description | Access secret for cloud storage. |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-### 4.10 Tier management
-
-- dn_default_space_usage_thresholds
-
-| Name | dn_default_space_usage_thresholds |
-| ----------- | ------------------------------------------------------------ |
-| Description | Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";". |
-| Type | double |
-| Default | 0.85 |
-| Effective | Hot reload. |
-
-- dn_tier_full_policy
-
-| Name | dn_tier_full_policy |
-| ----------- | ------------------------------------------------------------ |
-| Description | How to deal with the last tier's data when its used space has been higher than its dn_default_space_usage_thresholds. |
-| Type | String |
-| Default | NULL |
-| Effective | Hot reload. |
-
-- migrate_thread_count
-
-| Name | migrate_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | thread pool size for migrate operation in the DataNode's data directories. |
-| Type | int |
-| Default | 1 |
-| Effective | Hot reload. |
-
-- tiered_storage_migrate_speed_limit_bytes_per_sec
-
-| Name | tiered_storage_migrate_speed_limit_bytes_per_sec |
-| ----------- | ------------------------------------------------------------ |
-| Description | The migrate speed limit of different tiers can reach per second |
-| Type | int |
-| Default | 10485760 |
-| Effective | Hot reload. |
-
-### 4.11 REST Service Configuration
-
-- enable_rest_service
-
-| Name | enable_rest_service |
-| ----------- | --------------------------- |
-| Description | Is the REST service enabled |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- rest_service_port
-
-| Name | rest_service_port |
-| ----------- | ------------------------------------ |
-| Description | the binding port of the REST service |
-| Type | int32 |
-| Default | 18080 |
-| Effective | Restart required. |
-
-- enable_swagger
-
-| Name | enable_swagger |
-| ----------- | ------------------------------------------------------------ |
-| Description | Whether to display rest service interface information through swagger. eg: http://ip:port/swagger.json |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- rest_query_default_row_size_limit
-
-| Name | rest_query_default_row_size_limit |
-| ----------- | ------------------------------------------------------------ |
-| Description | the default row limit to a REST query response when the rowSize parameter is not given in request |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- cache_expire_in_seconds
-
-| Name | cache_expire_in_seconds |
-| ----------- | ------------------------------------------------------------ |
-| Description | The expiration time of the user login information cache (in seconds) |
-| Type | int32 |
-| Default | 28800 |
-| Effective | Restart required. |
-
-- cache_max_num
-
-| Name | cache_max_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum number of users can be stored in the user login cache. |
-| Type | int32 |
-| Default | 100 |
-| Effective | Restart required. |
-
-- cache_init_num
-
-| Name | cache_init_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The initial capacity of users can be stored in the user login cache. |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- client_auth
-
-| Name | client_auth |
-| ----------- | --------------------------------- |
-| Description | Is client authentication required |
-| Type | boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- trust_store_path
-
-| Name | trust_store_path |
-| ----------- | -------------------- |
-| Description | SSL trust store path |
-| Type | String |
-| Default | "" |
-| Effective | Restart required. |
-
-- trust_store_pwd
-
-| Name | trust_store_pwd |
-| ----------- | ------------------------- |
-| Description | SSL trust store password. |
-| Type | String |
-| Default | "" |
-| Effective | Restart required. |
-
-- idle_timeout_in_seconds
-
-| Name | idle_timeout_in_seconds |
-| ----------- | ------------------------ |
-| Description | SSL timeout (in seconds) |
-| Type | int32 |
-| Default | 5000 |
-| Effective | Restart required. |
-
-### 4.12 Load balancing configuration
-
-- series_slot_num
-
-| Name | series_slot_num |
-| ----------- | ------------------------------------------- |
-| Description | Number of SeriesPartitionSlots per Database |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Modify before the first startup. |
-
-- series_partition_executor_class
-
-| Name | series_partition_executor_class |
-| ----------- | ------------------------------------------------------------ |
-| Description | SeriesPartitionSlot executor class |
-| Type | String |
-| Default | org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor |
-| Effective | Modify before the first startup. |
-
-- schema_region_group_extension_policy
-
-| Name | schema_region_group_extension_policy |
-| ----------- | ------------------------------------------------------------ |
-| Description | The policy of extension SchemaRegionGroup for each Database. |
-| Type | string |
-| Default | AUTO |
-| Effective | Restart required. |
-
-- default_schema_region_group_num_per_database
-
-| Name | default_schema_region_group_num_per_database |
-| ----------- | ------------------------------------------------------------ |
-| Description | When set schema_region_group_extension_policy=CUSTOM, this parameter is the default number of SchemaRegionGroups for each Database.When set schema_region_group_extension_policy=AUTO, this parameter is the default minimal number of SchemaRegionGroups for each Database. |
-| Type | int |
-| Default | 1 |
-| Effective | Restart required. |
-
-- schema_region_per_data_node
-
-| Name | schema_region_per_data_node |
-| ----------- | ------------------------------------------------------------ |
-| Description | It only takes effect when set schema_region_group_extension_policy=AUTO.This parameter is the maximum number of SchemaRegions expected to be managed by each DataNode. |
-| Type | double |
-| Default | 1.0 |
-| Effective | Restart required. |
-
-- data_region_group_extension_policy
-
-| Name | data_region_group_extension_policy |
-| ----------- | ---------------------------------------------------------- |
-| Description | The policy of extension DataRegionGroup for each Database. |
-| Type | string |
-| Default | AUTO |
-| Effective | Restart required. |
-
-- default_data_region_group_num_per_database
-
-| Name | default_data_region_group_per_database |
-| ----------- | ------------------------------------------------------------ |
-| Description | When set data_region_group_extension_policy=CUSTOM, this parameter is the default number of DataRegionGroups for each Database.When set data_region_group_extension_policy=AUTO, this parameter is the default minimal number of DataRegionGroups for each Database. |
-| Type | int |
-| Default | 2 |
-| Effective | Restart required. |
-
-- data_region_per_data_node
-
-| Name | data_region_per_data_node |
-| ----------- | ------------------------------------------------------------ |
-| Description | It only takes effect when set data_region_group_extension_policy=AUTO.This parameter is the maximum number of DataRegions expected to be managed by each DataNode. |
-| Type | double |
-| Default | 5.0 |
-| Effective | Restart required. |
-
-- enable_auto_leader_balance_for_ratis_consensus
-
-| Name | enable_auto_leader_balance_for_ratis_consensus |
-| ----------- | ------------------------------------------------------------ |
-| Description | Whether to enable auto leader balance for Ratis consensus protocol. |
-| Type | Boolean |
-| Default | true |
-| Effective | Restart required. |
-
-- enable_auto_leader_balance_for_iot_consensus
-
-| Name | enable_auto_leader_balance_for_iot_consensus |
-| ----------- | ------------------------------------------------------------ |
-| Description | Whether to enable auto leader balance for IoTConsensus protocol. |
-| Type | Boolean |
-| Default | true |
-| Effective | Restart required. |
-
-### 4.13 Cluster management
-
-- time_partition_origin
-
-| Name | time_partition_origin |
-| ----------- | ------------------------------------------------------------ |
-| Description | Time partition origin in milliseconds, default is equal to zero. |
-| Type | Long |
-| Unit | ms |
-| Default | 0 |
-| Effective | Modify before the first startup. |
-
-- time_partition_interval
-
-| Name | time_partition_interval |
-| ----------- | ------------------------------------------------------------ |
-| Description | Time partition interval in milliseconds, and partitioning data inside each data region, default is equal to one week |
-| Type | Long |
-| Unit | ms |
-| Default | 604800000 |
-| Effective | Modify before the first startup. |
-
-- heartbeat_interval_in_ms
-
-| Name | heartbeat_interval_in_ms |
-| ----------- | -------------------------------------- |
-| Description | The heartbeat interval in milliseconds |
-| Type | Long |
-| Unit | ms |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- disk_space_warning_threshold
-
-| Name | disk_space_warning_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | Disk remaining threshold at which DataNode is set to ReadOnly status |
-| Type | double(percentage) |
-| Default | 0.05 |
-| Effective | Restart required. |
-
-### 4.14 Memory Control Configuration
-
-- datanode_memory_proportion
-
-| Name | datanode_memory_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Memory Allocation Ratio: StorageEngine, QueryEngine, SchemaEngine, Consensus, StreamingEngine and Free Memory. |
-| Type | Ratio |
-| Default | 3:3:1:1:1:1 |
-| Effective | Restart required. |
-
-- schema_memory_proportion
-
-| Name | schema_memory_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Schema Memory Allocation Ratio: SchemaRegion, SchemaCache, and PartitionCache. |
-| Type | Ratio |
-| Default | 5:4:1 |
-| Effective | Restart required. |
-
-- storage_engine_memory_proportion
-
-| Name | storage_engine_memory_proportion |
-| ----------- | ----------------------------------------------------------- |
-| Description | Memory allocation ratio in StorageEngine: Write, Compaction |
-| Type | Ratio |
-| Default | 8:2 |
-| Effective | Restart required. |
-
-- write_memory_proportion
-
-| Name | write_memory_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Memory allocation ratio in writing: Memtable, TimePartitionInfo |
-| Type | Ratio |
-| Default | 19:1 |
-| Effective | Restart required. |
-
-- primitive_array_size
-
-| Name | primitive_array_size |
-| ----------- | --------------------------------------------------------- |
-| Description | primitive array size (length of each array) in array pool |
-| Type | int32 |
-| Default | 64 |
-| Effective | Restart required. |
-
-- chunk_metadata_size_proportion
-
-| Name | chunk_metadata_size_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Ratio of compaction memory for chunk metadata maintains in memory when doing compaction |
-| Type | Double |
-| Default | 0.1 |
-| Effective | Restart required. |
-
-- flush_proportion
-
-| Name | flush_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Ratio of memtable memory for invoking flush disk, 0.4 by defaultIf you have extremely high write load (like batch=1000), it can be set lower than the default value like 0.2 |
-| Type | Double |
-| Default | 0.4 |
-| Effective | Restart required. |
-
-- buffered_arrays_memory_proportion
-
-| Name | buffered_arrays_memory_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Ratio of memtable memory allocated for buffered arrays, 0.6 by default |
-| Type | Double |
-| Default | 0.6 |
-| Effective | Restart required. |
-
-- reject_proportion
-
-| Name | reject_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Ratio of memtable memory for rejecting insertion, 0.8 by defaultIf you have extremely high write load (like batch=1000) and the physical memory size is large enough, it can be set higher than the default value like 0.9 |
-| Type | Double |
-| Default | 0.8 |
-| Effective | Restart required. |
-
-- device_path_cache_proportion
-
-| Name | device_path_cache_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Ratio of memtable memory for the DevicePathCache. DevicePathCache is the deviceId cache, keeping only one copy of the same deviceId in memory |
-| Type | Double |
-| Default | 0.05 |
-| Effective | Restart required. |
-
-- write_memory_variation_report_proportion
-
-| Name | write_memory_variation_report_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | If memory cost of data region increased more than proportion of allocated memory for writing, report to system. The default value is 0.001 |
-| Type | Double |
-| Default | 0.001 |
-| Effective | Restart required. |
-
-- check_period_when_insert_blocked
-
-| Name | check_period_when_insert_blocked |
-| ----------- | ------------------------------------------------------------ |
-| Description | When an insertion is rejected, the waiting period (in ms) to check system again, 50 by default.If the insertion has been rejected and the read load is low, it can be set larger. |
-| Type | int32 |
-| Default | 50 |
-| Effective | Restart required. |
-
-- io_task_queue_size_for_flushing
-
-| Name | io_task_queue_size_for_flushing |
-| ----------- | -------------------------------------------- |
-| Description | size of ioTaskQueue. The default value is 10 |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- enable_query_memory_estimation
-
-| Name | enable_query_memory_estimation |
-| ----------- | ------------------------------------------------------------ |
-| Description | If true, we will estimate each query's possible memory footprint before executing it and deny it if its estimated memory exceeds current free memory |
-| Type | bool |
-| Default | true |
-| Effective | Hot reload. |
-
-### 4.15 Schema Engine Configuration
-
-- schema_engine_mode
-
-| Name | schema_engine_mode |
-| ----------- | ------------------------------------------------------------ |
-| Description | The schema management mode of schema engine. Currently, support Memory and PBTree.This config of all DataNodes in one cluster must keep same. |
-| Type | string |
-| Default | Memory |
-| Effective | Modify before the first startup. |
-
-- partition_cache_size
-
-| Name | partition_cache_size |
-| ----------- | ------------------------- |
-| Description | cache size for partition. |
-| Type | Int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- sync_mlog_period_in_ms
-
-| Name | sync_mlog_period_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | The cycle when metadata log is periodically forced to be written to disk(in milliseconds)If sync_mlog_period_in_ms=0 it means force metadata log to be written to disk after each refreshmentSetting this parameter to 0 may slow down the operation on slow disk. |
-| Type | Int64 |
-| Default | 100 |
-| Effective | Restart required. |
-
-- tag_attribute_flush_interval
-
-| Name | tag_attribute_flush_interval |
-| ----------- | ------------------------------------------------------------ |
-| Description | interval num for tag and attribute records when force flushing to disk |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Modify before the first startup. |
-
-- tag_attribute_total_size
-
-| Name | tag_attribute_total_size |
-| ----------- | ------------------------------------------------------------ |
-| Description | max size for a storage block for tags and attributes of a one-time series |
-| Type | int32 |
-| Default | 700 |
-| Effective | Modify before the first startup. |
-
-- max_measurement_num_of_internal_request
-
-| Name | max_measurement_num_of_internal_request |
-| ----------- | ------------------------------------------------------------ |
-| Description | max measurement num of internal requestWhen creating timeseries with Session.createMultiTimeseries, the user input plan, the timeseries num ofwhich exceeds this num, will be split to several plans with timeseries no more than this num. |
-| Type | Int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- datanode_schema_cache_eviction_policy
-
-| Name | datanode_schema_cache_eviction_policy |
-| ----------- | --------------------------------------- |
-| Description | Policy of DataNodeSchemaCache eviction. |
-| Type | String |
-| Default | FIFO |
-| Effective | Restart required. |
-
-- cluster_timeseries_limit_threshold
-
-| Name | cluster_timeseries_limit_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | This configuration parameter sets the maximum number of time series allowed in the cluster. |
-| Type | Int32 |
-| Default | -1 |
-| Effective | Restart required. |
-
-- cluster_device_limit_threshold
-
-| Name | cluster_device_limit_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | This configuration parameter sets the maximum number of devices allowed in the cluster. |
-| Type | Int32 |
-| Default | -1 |
-| Effective | Restart required. |
-
-- database_limit_threshold
-
-| Name | database_limit_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | This configuration parameter sets the maximum number of Cluster Databases allowed. |
-| Type | Int32 |
-| Default | -1 |
-| Effective | Restart required. |
-
-### 4.16 Configurations for creating schema automatically
-
-- enable_auto_create_schema
-
-| Name | enable_auto_create_schema |
-| ----------- | ------------------------------------------------ |
-| Description | Whether creating schema automatically is enabled |
-| Value | true or false |
-| Default | true |
-| Effective | Restart required. |
-
-- default_storage_group_level
-
-| Name | default_storage_group_level |
-| ----------- | ------------------------------------------------------------ |
-| Description | Database level when creating schema automatically is enabled e.g. root.sg0.d1.s2We will set root.sg0 as the database if database level is 1If the incoming path is shorter than this value, the creation/insertion will fail. |
-| Value | int32 |
-| Default | 1 |
-| Effective | Restart required. |
-
-- boolean_string_infer_type
-
-| Name | boolean_string_infer_type |
-| ----------- |------------------------------------------------------------------------------------|
-| Description | register time series as which type when receiving boolean string "true" or "false" |
-| Value | BOOLEAN or TEXT |
-| Default | BOOLEAN |
-| Effective | Hot_reload |
-
-- integer_string_infer_type
-
-| Name | integer_string_infer_type |
-| ----------- |------------------------------------------------------------------------------------------------------------------|
-| Description | register time series as which type when receiving an integer string and using float or double may lose precision |
-| Value | INT32, INT64, FLOAT, DOUBLE, TEXT |
-| Default | DOUBLE |
-| Effective | Hot_reload |
-
-- floating_string_infer_type
-
-| Name | floating_string_infer_type |
-| ----------- |----------------------------------------------------------------------------------|
-| Description | register time series as which type when receiving a floating number string "6.7" |
-| Value | DOUBLE, FLOAT or TEXT |
-| Default | DOUBLE |
-| Effective | Hot_reload |
-
-- nan_string_infer_type
-
-| Name | nan_string_infer_type |
-| ----------- |--------------------------------------------------------------------|
-| Description | register time series as which type when receiving the Literal NaN. |
-| Value | DOUBLE, FLOAT or TEXT |
-| Default | DOUBLE |
-| Effective | Hot_reload |
-
-- default_boolean_encoding
-
-| Name | default_boolean_encoding |
-| ----------- |----------------------------------------------------------------|
-| Description | BOOLEAN encoding when creating schema automatically is enabled |
-| Value | PLAIN, RLE |
-| Default | RLE |
-| Effective | Hot_reload |
-
-- default_int32_encoding
-
-| Name | default_int32_encoding |
-| ----------- |--------------------------------------------------------------|
-| Description | INT32 encoding when creating schema automatically is enabled |
-| Value | PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA |
-| Default | TS_2DIFF |
-| Effective | Hot_reload |
-
-- default_int64_encoding
-
-| Name | default_int64_encoding |
-| ----------- |--------------------------------------------------------------|
-| Description | INT64 encoding when creating schema automatically is enabled |
-| Value | PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA |
-| Default | TS_2DIFF |
-| Effective | Hot_reload |
-
-- default_float_encoding
-
-| Name | default_float_encoding |
-| ----------- |--------------------------------------------------------------|
-| Description | FLOAT encoding when creating schema automatically is enabled |
-| Value | PLAIN, RLE, TS_2DIFF, GORILLA |
-| Default | GORILLA |
-| Effective | Hot_reload |
-
-- default_double_encoding
-
-| Name | default_double_encoding |
-| ----------- |---------------------------------------------------------------|
-| Description | DOUBLE encoding when creating schema automatically is enabled |
-| Value | PLAIN, RLE, TS_2DIFF, GORILLA |
-| Default | GORILLA |
-| Effective | Hot_reload |
-
-- default_text_encoding
-
-| Name | default_text_encoding |
-| ----------- |-------------------------------------------------------------|
-| Description | TEXT encoding when creating schema automatically is enabled |
-| Value | PLAIN |
-| Default | PLAIN |
-| Effective | Hot_reload |
-
-
-* boolean_compressor
-
-| Name | boolean_compressor |
-|------------------|-----------------------------------------------------------------------------------------|
-| Description | BOOLEAN compression when creating schema automatically is enabled (Supports from V2.0.6) |
-| Type | String |
-| Default | LZ4 |
-| Effective | Hot_reload |
-
-* int32_compressor
-
-| Name | int32_compressor |
-|----------------------|--------------------------------------------------------------------------------------------|
-| Description | INT32/DATE compression when creating schema automatically is enabled(Supports from V2.0.6) |
-| Type | String |
-| Default | LZ4 |
-| Effective | Hot_reload |
-
-* int64_compressor
-
-| Name | int64_compressor |
-|--------------------|-------------------------------------------------------------------------------------------------|
-| Description | INT64/TIMESTAMP compression when creating schema automatically is enabled (Supports from V2.0.6) |
-| Type | String |
-| Default | LZ4 |
-| Effective | Hot_reload |
-
-* float_compressor
-
-| Name | float_compressor |
-|-----------------------|---------------------------------------------------------------------------------------|
-| Description | FLOAT compression when creating schema automatically is enabled (Supports from V2.0.6) |
-| Type | String |
-| Default | LZ4 |
-| Effective | Hot_reload |
-
-* double_compressor
-
-| Name | double_compressor |
-|-------------------|----------------------------------------------------------------------------------------|
-| Description | DOUBLE compression when creating schema automatically is enabled (Supports from V2.0.6) |
-| Type | String |
-| Default | LZ4 |
-| Effective | Hot_reload |
-
-* text_compressor
-
-| Name | text_compressor |
-|--------------------|--------------------------------------------------------------------------------------------------|
-| Description | TEXT/BINARY/BLOB compression when creating schema automatically is enabled (Supports from V2.0.6) |
-| Type | String |
-| Default | LZ4 |
-| Effective | Hot_reload |
-
-
-### 4.17 Query Configurations
-
-- read_consistency_level
-
-| Name | read_consistency_level |
-| ----------- | ------------------------------------------------------------ |
-| Description | The read consistency levelThese consistency levels are currently supported:strong(Default, read from the leader replica)weak(Read from a random replica) |
-| Type | String |
-| Default | strong |
-| Effective | Restart required. |
-
-- meta_data_cache_enable
-
-| Name | meta_data_cache_enable |
-| ----------- | ------------------------------------------------------------ |
-| Description | Whether to cache meta data (BloomFilter, ChunkMetadata and TimeSeriesMetadata) or not. |
-| Type | Boolean |
-| Default | true |
-| Effective | Restart required. |
-
-- chunk_timeseriesmeta_free_memory_proportion
-
-| Name | chunk_timeseriesmeta_free_memory_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | Read memory Allocation Ratio: BloomFilterCache : ChunkCache : TimeSeriesMetadataCache : Coordinator : Operators : DataExchange : timeIndex in TsFileResourceList : others.The parameter form is a:b:c:d:e:f:g:h, where a, b, c, d, e, f, g and h are integers. for example: 1:1:1:1:1:1:1:1 , 1:100:200:50:200:200:200:50 |
-| Type | String |
-| Default | 1 : 100 : 200 : 300 : 400 |
-| Effective | Restart required. |
-
-- enable_last_cache
-
-| Name | enable_last_cache |
-| ----------- | ---------------------------- |
-| Description | Whether to enable LAST cache |
-| Type | Boolean |
-| Default | true |
-| Effective | Restart required. |
-
-- mpp_data_exchange_core_pool_size
-
-| Name | mpp_data_exchange_core_pool_size |
-| ----------- | -------------------------------------------- |
-| Description | Core size of ThreadPool of MPP data exchange |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- mpp_data_exchange_max_pool_size
-
-| Name | mpp_data_exchange_max_pool_size |
-| ----------- | ------------------------------------------- |
-| Description | Max size of ThreadPool of MPP data exchange |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- mpp_data_exchange_keep_alive_time_in_ms
-
-| Name | mpp_data_exchange_keep_alive_time_in_ms |
-| ----------- | --------------------------------------- |
-| Description | Max waiting time for MPP data exchange |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- driver_task_execution_time_slice_in_ms
-
-| Name | driver_task_execution_time_slice_in_ms |
-| ----------- | -------------------------------------- |
-| Description | The max execution time of a DriverTask |
-| Type | int32 |
-| Default | 200 |
-| Effective | Restart required. |
-
-- max_tsblock_size_in_bytes
-
-| Name | max_tsblock_size_in_bytes |
-| ----------- | ----------------------------- |
-| Description | The max capacity of a TsBlock |
-| Type | int32 |
-| Default | 131072 |
-| Effective | Restart required. |
-
-- max_tsblock_line_numbers
-
-| Name | max_tsblock_line_numbers |
-| ----------- | ------------------------------------------- |
-| Description | The max number of lines in a single TsBlock |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- slow_query_threshold
-
-| Name | slow_query_threshold |
-| ----------- |----------------------------------------|
-| Description | Time cost(ms) threshold for slow query |
-| Type | long |
-| Default | 3000 |
-| Effective | Hot reload |
-
-- query_cost_stat_window
-
-| Name | query_cost_stat_window |
-|-------------|--------------------|
-| Description | Time window threshold(min) for record of history queries. |
-| Type | Int32 |
-| Default | 0 |
-| Effective | Hot reload |
-
-- query_timeout_threshold
-
-| Name | query_timeout_threshold |
-| ----------- | ----------------------------------------- |
-| Description | The max executing time of query. unit: ms |
-| Type | Int32 |
-| Default | 60000 |
-| Effective | Restart required. |
-
-- max_allowed_concurrent_queries
-
-| Name | max_allowed_concurrent_queries |
-| ----------- | -------------------------------------------------- |
-| Description | The maximum allowed concurrently executing queries |
-| Type | Int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- query_thread_count
-
-| Name | query_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | How many threads can concurrently execute query statement. When <= 0, use CPU core number. |
-| Type | Int32 |
-| Default | 0 |
-| Effective | Restart required. |
-
-- degree_of_query_parallelism
-
-| Name | degree_of_query_parallelism |
-| ----------- | ------------------------------------------------------------ |
-| Description | How many pipeline drivers will be created for one fragment instance. When <= 0, use CPU core number / 2. |
-| Type | Int32 |
-| Default | 0 |
-| Effective | Restart required. |
-
-- mode_map_size_threshold
-
-| Name | mode_map_size_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | The threshold of count map size when calculating the MODE aggregation function |
-| Type | Int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- batch_size
-
-| Name | batch_size |
-| ----------- | ------------------------------------------------------------ |
-| Description | The amount of data iterate each time in server (the number of data strips, that is, the number of different timestamps.) |
-| Type | Int32 |
-| Default | 100000 |
-| Effective | Restart required. |
-
-- sort_buffer_size_in_bytes
-
-| Name | sort_buffer_size_in_bytes |
-| ----------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Description | The memory for external sort in sort operator, when the data size is smaller than sort_buffer_size_in_bytes, the sort operator will use in-memory sort. |
-| Type | long |
-| Default | 1048576(Before V2.0.6) 0(Supports from V2.0.6), if `sort_buffer_size_in_bytes <= 0`, default value will be used, `default value = min(32MB, memory for query operators / query_thread_count / 2)`, if `sort_buffer_size_in_bytes > 0`, the specified value will be used. |
-| Effective | Hot_reload |
-
-- merge_threshold_of_explain_analyze
-
-| Name | merge_threshold_of_explain_analyze |
-| ----------- | ------------------------------------------------------------ |
-| Description | The threshold of operator count in the result set of EXPLAIN ANALYZE, if the number of operator in the result set is larger than this threshold, operator will be merged. |
-| Type | int |
-| Default | 10 |
-| Effective | Hot reload |
-
-### 4.18 TTL Configuration
-
-- ttl_check_interval
-
-| Name | ttl_check_interval |
-| ----------- | ------------------------------------------------------------ |
-| Description | The interval of TTL check task in each database. The TTL check task will inspect and select files with a higher volume of expired data for compaction. Default is 2 hours. |
-| Type | int |
-| Default | 7200000 |
-| Effective | Restart required. |
-
-- max_expired_time
-
-| Name | max_expired_time |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum expiring time of device which has a ttl. Default is 1 month.If the data elapsed time (current timestamp minus the maximum data timestamp of the device in the file) of such devices exceeds this value, then the file will be cleaned by compaction. |
-| Type | int |
-| Default | 2592000000 |
-| Effective | Restart required. |
-
-- expired_data_ratio
-
-| Name | expired_data_ratio |
-| ----------- | ------------------------------------------------------------ |
-| Description | The expired device ratio. If the ratio of expired devices in one file exceeds this value, then expired data of this file will be cleaned by compaction. |
-| Type | float |
-| Default | 0.3 |
-| Effective | Restart required. |
-
-### 4.19 Storage Engine Configuration
-
-- timestamp_precision
-
-| Name | timestamp_precision |
-| ----------- | ------------------------------------------------------------ |
-| Description | Use this value to set timestamp precision as "ms", "us" or "ns". |
-| Type | String |
-| Default | ms |
-| Effective | Modify before the first startup. |
-
-- timestamp_precision_check_enabled
-
-| Name | timestamp_precision_check_enabled |
-| ----------- | ------------------------------------------------------------ |
-| Description | When the timestamp precision check is enabled, the timestamps those are over 13 digits for ms precision, or over 16 digits for us precision are not allowed to be inserted. |
-| Type | Boolean |
-| Default | true |
-| Effective | Modify before the first startup. |
-
-- max_waiting_time_when_insert_blocked
-
-| Name | max_waiting_time_when_insert_blocked |
-| ----------- | ------------------------------------------------------------ |
-| Description | When the waiting time (in ms) of an inserting exceeds this, throw an exception. 10000 by default. |
-| Type | Int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- handle_system_error
-
-| Name | handle_system_error |
-| ----------- | -------------------------------------------------------- |
-| Description | What will the system do when unrecoverable error occurs. |
-| Type | String |
-| Default | CHANGE_TO_READ_ONLY |
-| Effective | Restart required. |
-
-- enable_timed_flush_seq_memtable
-
-| Name | enable_timed_flush_seq_memtable |
-| ----------- | --------------------------------------------------- |
-| Description | Whether to timed flush sequence tsfiles' memtables. |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- seq_memtable_flush_interval_in_ms
-
-| Name | seq_memtable_flush_interval_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | If a memTable's last update time is older than current time minus this, the memtable will be flushed to disk. |
-| Type | long |
-| Default | 600000 |
-| Effective | Hot reload |
-
-- seq_memtable_flush_check_interval_in_ms
-
-| Name | seq_memtable_flush_check_interval_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | The interval to check whether sequence memtables need flushing. |
-| Type | long |
-| Default | 30000 |
-| Effective | Hot reload |
-
-- enable_timed_flush_unseq_memtable
-
-| Name | enable_timed_flush_unseq_memtable |
-| ----------- | ----------------------------------------------------- |
-| Description | Whether to timed flush unsequence tsfiles' memtables. |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- unseq_memtable_flush_interval_in_ms
-
-| Name | unseq_memtable_flush_interval_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | If a memTable's last update time is older than current time minus this, the memtable will be flushed to disk. |
-| Type | long |
-| Default | 600000 |
-| Effective | Hot reload |
-
-- unseq_memtable_flush_check_interval_in_ms
-
-| Name | unseq_memtable_flush_check_interval_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | The interval to check whether unsequence memtables need flushing. |
-| Type | long |
-| Default | 30000 |
-| Effective | Hot reload |
-
-- tvlist_sort_algorithm
-
-| Name | tvlist_sort_algorithm |
-| ----------- | ------------------------------------------------- |
-| Description | The sort algorithms used in the memtable's TVList |
-| Type | String |
-| Default | TIM |
-| Effective | Restart required. |
-
-- avg_series_point_number_threshold
-
-| Name | avg_series_point_number_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | When the average point number of timeseries in memtable exceeds this, the memtable is flushed to disk. |
-| Type | int32 |
-| Default | 100000 |
-| Effective | Restart required. |
-
-- flush_thread_count
-
-| Name | flush_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | How many threads can concurrently flush. When <= 0, use CPU core number. |
-| Type | int32 |
-| Default | 0 |
-| Effective | Restart required. |
-
-- enable_partial_insert
-
-| Name | enable_partial_insert |
-| ----------- | ------------------------------------------------------------ |
-| Description | In one insert (one device, one timestamp, multiple measurements), if enable partial insert, one measurement failure will not impact other measurements |
-| Type | Boolean |
-| Default | true |
-| Effective | Restart required. |
-
-- recovery_log_interval_in_ms
-
-| Name | recovery_log_interval_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | the interval to log recover progress of each vsg when starting iotdb |
-| Type | Int32 |
-| Default | 5000 |
-| Effective | Restart required. |
-
-- 0.13_data_insert_adapt
-
-| Name | 0.13_data_insert_adapt |
-| ----------- | ------------------------------------------------------------ |
-| Description | If using a v0.13 client to insert data, please set this configuration to true. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- enable_tsfile_validation
-
-| Name | enable_tsfile_validation |
-| ----------- | ------------------------------------------------------------ |
-| Description | Verify that TSfiles generated by Flush, Load, and Compaction are correct. |
-| Type | boolean |
-| Default | false |
-| Effective | Hot reload |
-
-- tier_ttl_in_ms
-
-| Name | tier_ttl_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier. |
-| Type | long |
-| Default | -1 |
-| Effective | Restart required. |
-
-- max_object_file_size_in_byte
-
-| Name | max_object_file_size_in_byte |
-|-------------|-----------------------------------------------------------------------|
-| Description | Maximum size limit for a single object file (supported since V2.0.8). |
-| Type | long |
-| Default | 4294967296 (4 GB in bytes) |
-| Effective | Hot reload |
-
-- restrict_object_limit
-
-| Name | restrict_object_limit |
-|-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Description | No special restrictions on table names, column names, or device identifiers for `OBJECT` type (supported since V2.0.8). When set to `true` and the table contains `OBJECT` columns, the following restrictions apply: 1. Naming Rules: Values in TAG columns, table names, and field names must not use `.` or `..`; Prohibited characters include `./` or `.\`, otherwise metadata creation will fail; Names containing filesystem-unsupported characters will cause write errors. 2. Case Sensitivity: If the underlying filesystem is case-insensitive, device identifiers like `'d1'` and `'D1'` are treated as identical; Creating similar identifiers may overwrite `OBJECT` data files, leading to data corruption. 3. Storage Path: Actual storage path format: `${dataregionid}/${tablename}/${tag1}/${tag2}/.../${field}/${timestamp}.bin` |
-| Type | boolean |
-| Default | false |
-| Effective | Can only be modified before the first service startup. |
-
-### 4.20 Compaction Configurations
-
-- enable_seq_space_compaction
-
-| Name | enable_seq_space_compaction |
-| ----------- | ---------------------------------------------------------- |
-| Description | sequence space compaction: only compact the sequence files |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- enable_unseq_space_compaction
-
-| Name | enable_unseq_space_compaction |
-| ----------- | ------------------------------------------------------------ |
-| Description | unsequence space compaction: only compact the unsequence files |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- enable_cross_space_compaction
-
-| Name | enable_cross_space_compaction |
-| ----------- | ------------------------------------------------------------ |
-| Description | cross space compaction: compact the unsequence files into the overlapped sequence files |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- enable_auto_repair_compaction
-
-| Name | enable_auto_repair_compaction |
-| ----------- | ---------------------------------------------- |
-| Description | enable auto repair unsorted file by compaction |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- cross_selector
-
-| Name | cross_selector |
-| ----------- | ------------------------------------------- |
-| Description | the selector of cross space compaction task |
-| Type | String |
-| Default | rewrite |
-| Effective | Restart required. |
-
-- cross_performer
-
-| Name | cross_performer |
-| ----------- |-----------------------------------------------------------|
-| Description | the compaction performer of cross space compaction task, Options: read_point, fast |
-| Type | String |
-| Default | fast |
-| Effective | Hot reload . |
-
-- inner_seq_selector
-
-| Name | inner_seq_selector |
-| ----------- |--------------------------------------------------------|
-| Description | the selector of inner sequence space compaction task, Options: size_tiered_single_target,size_tiered_multi_target |
-| Type | String |
-| Default | size_tiered_multi_target |
-| Effective | Hot reload |
-
-- inner_seq_performer
-
-| Name | inner_seq_performer |
-| ----------- |---------------------------------------------------------|
-| Description | the performer of inner sequence space compaction task, Options: read_chunk, fast |
-| Type | String |
-| Default | read_chunk |
-| Effective | Hot reload |
-
-- inner_unseq_selector
-
-| Name | inner_unseq_selector |
-| ----------- |----------------------------------------------------------|
-| Description | the selector of inner unsequence space compaction task, Options: size_tiered_single_target,size_tiered_multi_target |
-| Type | String |
-| Default | size_tiered_multi_target |
-| Effective | Hot reload |
-
-- inner_unseq_performer
-
-| Name | inner_unseq_performer |
-| ----------- |-----------------------------------------------------------|
-| Description | the performer of inner unsequence space compaction task, Options: read_point, fast |
-| Type | String |
-| Default | fast |
-| Effective | Hot reload |
-
-- compaction_priority
-
-| Name | compaction_priority |
-| ----------- | ------------------------------------------------------------ |
-| Description | The priority of compaction executionINNER_CROSS: prioritize inner space compaction, reduce the number of files firstCROSS_INNER: prioritize cross space compaction, eliminate the unsequence files firstBALANCE: alternate two compaction types |
-| Type | String |
-| Default | INNER_CROSS |
-| Effective | Restart required. |
-
-- candidate_compaction_task_queue_size
-
-| Name | candidate_compaction_task_queue_size |
-| ----------- | -------------------------------------------- |
-| Description | The size of candidate compaction task queue. |
-| Type | int32 |
-| Default | 50 |
-| Effective | Restart required. |
-
-- target_compaction_file_size
-
-| Name | target_compaction_file_size |
-| ----------- | ------------------------------------------------------------ |
-| Description | This parameter is used in two places:The target tsfile size of inner space compaction.The candidate size of seq tsfile in cross space compaction will be smaller than target_compaction_file_size * 1.5.In most cases, the target file size of cross compaction won't exceed this threshold, and if it does, it will not be much larger than it. |
-| Type | Int64 |
-| Default | 2147483648 |
-| Effective | Hot reload |
-
-- inner_compaction_total_file_size_threshold
-
-| Name | inner_compaction_total_file_size_threshold |
-| ----------- | ---------------------------------------------------- |
-| Description | The total file size limit in inner space compaction. |
-| Type | int64 |
-| Default | 10737418240 |
-| Effective | Hot reload |
-
-- inner_compaction_total_file_num_threshold
-
-| Name | inner_compaction_total_file_num_threshold |
-| ----------- | --------------------------------------------------- |
-| Description | The total file num limit in inner space compaction. |
-| Type | int32 |
-| Default | 100 |
-| Effective | Hot reload |
-
-- max_level_gap_in_inner_compaction
-
-| Name | max_level_gap_in_inner_compaction |
-| ----------- | ----------------------------------------------- |
-| Description | The max level gap in inner compaction selection |
-| Type | int32 |
-| Default | 2 |
-| Effective | Hot reload |
-
-- target_chunk_size
-
-| Name | target_chunk_size |
-| ----------- | ------------------------------------------------------------ |
-| Description | The target chunk size in flushing and compaction. If the size of a timeseries in memtable exceeds this, the data will be flushed to multiple chunks.|
-| Type | Int64 |
-| Default | 1600000 |
-| Effective | Restart required. |
-
-- target_chunk_point_num
-
-| Name | target_chunk_point_num |
-| ----------- |-----------------------------------------------------------------|
-| Description | The target point nums in one chunk in flushing and compaction. If the point number of a timeseries in memtable exceeds this, the data will be flushed to multiple chunks. |
-| Type | Int64 |
-| Default | 100000 |
-| Effective | Restart required. |
-
-- chunk_size_lower_bound_in_compaction
-
-| Name | chunk_size_lower_bound_in_compaction |
-| ----------- | ------------------------------------------------------------ |
-| Description | If the chunk size is lower than this threshold, it will be deserialized into points |
-| Type | Int64 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- chunk_point_num_lower_bound_in_compaction
-
-| Name | chunk_point_num_lower_bound_in_compaction |
-| ----------- |------------------------------------------------------------------------------------------|
-| Description | If the chunk point num is lower than this threshold, it will be deserialized into points |
-| Type | Int64 |
-| Default | 100 |
-| Effective | Restart required. |
-
-- inner_compaction_candidate_file_num
-
-| Name | inner_compaction_candidate_file_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The file num requirement when selecting inner space compaction candidate files |
-| Type | int32 |
-| Default | 30 |
-| Effective | Hot reload |
-
-- max_cross_compaction_candidate_file_num
-
-| Name | max_cross_compaction_candidate_file_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The max file when selecting cross space compaction candidate files |
-| Type | int32 |
-| Default | 500 |
-| Effective | Hot reload |
-
-- max_cross_compaction_candidate_file_size
-
-| Name | max_cross_compaction_candidate_file_size |
-| ----------- | ------------------------------------------------------------ |
-| Description | The max total size when selecting cross space compaction candidate files |
-| Type | Int64 |
-| Default | 5368709120 |
-| Effective | Hot reload |
-
-- min_cross_compaction_unseq_file_level
-
-| Name | min_cross_compaction_unseq_file_level |
-| ----------- | ------------------------------------------------------------ |
-| Description | The min inner compaction level of unsequence file which can be selected as candidate |
-| Type | int32 |
-| Default | 1 |
-| Effective | Hot reload |
-
-- compaction_thread_count
-
-| Name | compaction_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | How many threads will be set up to perform compaction, 10 by default. |
-| Type | int32 |
-| Default | 10 |
-| Effective | Hot reload |
-
-- compaction_max_aligned_series_num_in_one_batch
-
-| Name | compaction_max_aligned_series_num_in_one_batch |
-| ----------- | ------------------------------------------------------------ |
-| Description | How many chunk will be compacted in aligned series compaction, 10 by default. |
-| Type | int32 |
-| Default | 10 |
-| Effective | Hot reload |
-
-- compaction_schedule_interval_in_ms
-
-| Name | compaction_schedule_interval_in_ms |
-| ----------- | ---------------------------------------- |
-| Description | The interval of compaction task schedule |
-| Type | Int64 |
-| Default | 60000 |
-| Effective | Restart required. |
-
-- compaction_write_throughput_mb_per_sec
-
-| Name | compaction_write_throughput_mb_per_sec |
-| ----------- | -------------------------------------------------------- |
-| Description | The limit of write throughput merge can reach per second |
-| Type | int32 |
-| Default | 16 |
-| Effective | Restart required. |
-
-- compaction_read_throughput_mb_per_sec
-
-| Name | compaction_read_throughput_mb_per_sec |
-| ----------- | ------------------------------------------------------- |
-| Description | The limit of read throughput merge can reach per second |
-| Type | int32 |
-| Default | 0 |
-| Effective | Hot reload |
-
-- compaction_read_operation_per_sec
-
-| Name | compaction_read_operation_per_sec |
-| ----------- | ------------------------------------------------------ |
-| Description | The limit of read operation merge can reach per second |
-| Type | int32 |
-| Default | 0 |
-| Effective | Hot reload |
-
-- sub_compaction_thread_count
-
-| Name | sub_compaction_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | The number of sub compaction threads to be set up to perform compaction. |
-| Type | int32 |
-| Default | 4 |
-| Effective | Hot reload |
-
-- inner_compaction_task_selection_disk_redundancy
-
-| Name | inner_compaction_task_selection_disk_redundancy |
-| ----------- | ------------------------------------------------------------ |
-| Description | Redundancy value of disk availability, only use for inner compaction. |
-| Type | double |
-| Default | 0.05 |
-| Effective | Hot reload |
-
-- inner_compaction_task_selection_mods_file_threshold
-
-| Name | inner_compaction_task_selection_mods_file_threshold |
-| ----------- | -------------------------------------------------------- |
-| Description | Mods file size threshold, only use for inner compaction. |
-| Type | long |
-| Default | 131072 |
-| Effective | Hot reload |
-
-- compaction_schedule_thread_num
-
-| Name | compaction_schedule_thread_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The number of threads to be set up to select compaction task. |
-| Type | int32 |
-| Default | 4 |
-| Effective | Hot reload |
-
-### 4.21 Write Ahead Log Configuration
-
-- wal_mode
-
-| Name | wal_mode |
-| ----------- | ------------------------------------------------------------ |
-| Description | The details of these three modes are as follows:DISABLE: the system will disable wal.SYNC: the system will submit wal synchronously, write request will not return until its wal is fsynced to the disk successfully.ASYNC: the system will submit wal asynchronously, write request will return immediately no matter its wal is fsynced to the disk successfully. |
-| Type | String |
-| Default | ASYNC |
-| Effective | Restart required. |
-
-- max_wal_nodes_num
-
-| Name | max_wal_nodes_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | each node corresponds to one wal directory The default value 0 means the number is determined by the system, the number is in the range of [data region num / 2, data region num]. |
-| Type | int32 |
-| Default | 0 |
-| Effective | Restart required. |
-
-- wal_async_mode_fsync_delay_in_ms
-
-| Name | wal_async_mode_fsync_delay_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | Duration a wal flush operation will wait before calling fsync in the async mode |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Hot reload |
-
-- wal_sync_mode_fsync_delay_in_ms
-
-| Name | wal_sync_mode_fsync_delay_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | Duration a wal flush operation will wait before calling fsync in the sync mode |
-| Type | int32 |
-| Default | 3 |
-| Effective | Hot reload |
-
-- wal_buffer_size_in_byte
-
-| Name | wal_buffer_size_in_byte |
-| ----------- | ---------------------------- |
-| Description | Buffer size of each wal node |
-| Type | int32 |
-| Default | 33554432 |
-| Effective | Restart required. |
-
-- wal_buffer_queue_capacity
-
-| Name | wal_buffer_queue_capacity |
-| ----------- | --------------------------------- |
-| Description | Buffer capacity of each wal queue |
-| Type | int32 |
-| Default | 500 |
-| Effective | Restart required. |
-
-- wal_file_size_threshold_in_byte
-
-| Name | wal_file_size_threshold_in_byte |
-| ----------- | ------------------------------- |
-| Description | Size threshold of each wal file |
-| Type | int32 |
-| Default | 31457280 |
-| Effective | Hot reload |
-
-- wal_min_effective_info_ratio
-
-| Name | wal_min_effective_info_ratio |
-| ----------- | --------------------------------------------------- |
-| Description | Minimum ratio of effective information in wal files |
-| Type | double |
-| Default | 0.1 |
-| Effective | Hot reload |
-
-- wal_memtable_snapshot_threshold_in_byte
-
-| Name | wal_memtable_snapshot_threshold_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | MemTable size threshold for triggering MemTable snapshot in wal |
-| Type | int64 |
-| Default | 8388608 |
-| Effective | Hot reload |
-
-- max_wal_memtable_snapshot_num
-
-| Name | max_wal_memtable_snapshot_num |
-| ----------- | ------------------------------------- |
-| Description | MemTable's max snapshot number in wal |
-| Type | int32 |
-| Default | 1 |
-| Effective | Hot reload |
-
-- delete_wal_files_period_in_ms
-
-| Name | delete_wal_files_period_in_ms |
-| ----------- | ----------------------------------------------------------- |
-| Description | The period when outdated wal files are periodically deleted |
-| Type | int64 |
-| Default | 20000 |
-| Effective | Hot reload |
-
-- wal_throttle_threshold_in_byte
-
-| Name | wal_throttle_threshold_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | The minimum size of wal files when throttle down in IoTConsensus |
-| Type | long |
-| Default | 53687091200 |
-| Effective | Hot reload |
-
-- iot_consensus_cache_window_time_in_ms
-
-| Name | iot_consensus_cache_window_time_in_ms |
-| ----------- | ------------------------------------------------ |
-| Description | Maximum wait time of write cache in IoTConsensus |
-| Type | long |
-| Default | -1 |
-| Effective | Hot reload |
-
-- enable_wal_compression
-
-| Name | iot_consensus_cache_window_time_in_ms |
-| ----------- | ------------------------------------- |
-| Description | Enable Write Ahead Log compression. |
-| Type | boolean |
-| Default | true |
-| Effective | Hot reload |
-
-### 4.22 **IoTConsensus Configuration**
-
-- data_region_iot_max_log_entries_num_per_batch
-
-| Name | data_region_iot_max_log_entries_num_per_batch |
-| ----------- | ------------------------------------------------- |
-| Description | The maximum log entries num in IoTConsensus Batch |
-| Type | int32 |
-| Default | 1024 |
-| Effective | Restart required. |
-
-- data_region_iot_max_size_per_batch
-
-| Name | data_region_iot_max_size_per_batch |
-| ----------- | -------------------------------------- |
-| Description | The maximum size in IoTConsensus Batch |
-| Type | int32 |
-| Default | 16777216 |
-| Effective | Restart required. |
-
-- data_region_iot_max_pending_batches_num
-
-| Name | data_region_iot_max_pending_batches_num |
-| ----------- | ----------------------------------------------- |
-| Description | The maximum pending batches num in IoTConsensus |
-| Type | int32 |
-| Default | 5 |
-| Effective | Restart required. |
-
-- data_region_iot_max_memory_ratio_for_queue
-
-| Name | data_region_iot_max_memory_ratio_for_queue |
-| ----------- | -------------------------------------------------- |
-| Description | The maximum memory ratio for queue in IoTConsensus |
-| Type | double |
-| Default | 0.6 |
-| Effective | Restart required. |
-
-- region_migration_speed_limit_bytes_per_second
-
-| Name | region_migration_speed_limit_bytes_per_second |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum transit size in byte per second for region migration |
-| Type | long |
-| Default | 33554432 |
-| Effective | Restart required. |
-
-### 4.23 TsFile Configurations
-
-- group_size_in_byte
-
-| Name | group_size_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum number of bytes written to disk each time the data in memory is written to disk |
-| Type | int32 |
-| Default | 134217728 |
-| Effective | Hot reload |
-
-- page_size_in_byte
-
-| Name | page_size_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | The memory size for each series writer to pack page, default value is 64KB |
-| Type | int32 |
-| Default | 65536 |
-| Effective | Hot reload |
-
-- max_number_of_points_in_page
-
-| Name | max_number_of_points_in_page |
-| ----------- | ------------------------------------------- |
-| Description | The maximum number of data points in a page |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Hot reload |
-
-- pattern_matching_threshold
-
-| Name | pattern_matching_threshold |
-| ----------- | ------------------------------------------- |
-| Description | The threshold for pattern matching in regex |
-| Type | int32 |
-| Default | 1000000 |
-| Effective | Hot reload |
-
-- float_precision
-
-| Name | float_precision |
-| ----------- | ------------------------------------------------------------ |
-| Description | Floating-point precision of query results.Only effective for RLE and TS_2DIFF encodings.Due to the limitation of machine precision, some values may not be interpreted strictly. |
-| Type | int32 |
-| Default | 2 |
-| Effective | Hot reload |
-
-- value_encoder
-
-| Name | value_encoder |
-| ----------- | ------------------------------------------------------------ |
-| Description | Encoder of value series. default value is PLAIN. |
-| Type | For int, long data type, also supports TS_2DIFF and RLE(run-length encoding), GORILLA and ZIGZAG. |
-| Default | PLAIN |
-| Effective | Hot reload |
-
-- compressor
-
-| Name | compressor |
-| ----------- | ------------------------------------------------------------ |
-| Description | Compression configuration And it is also used as the default compressor of time column in aligned timeseries. |
-| Type | Data compression method, supports UNCOMPRESSED, SNAPPY, ZSTD, LZMA2 or LZ4. Default value is LZ4 |
-| Default | LZ4 |
-| Effective | Hot reload |
-
-- encrypt_flag
-
-| Name | encrypt_flag |
-| ----------- | ---------------------- |
-| Description | Enable data encryption |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- encrypt_type
-
-| Name | encrypt_type |
-| ----------- |---------------------------------------|
-| Description | The method of data encrytion |
-| Type | String |
-| Default | org.apache.tsfile.encrypt.UNENCRYPTED |
-| Effective | Restart required. |
-
-- encrypt_key_path
-
-| Name | encrypt_key_path |
-| ----------- | ----------------------------------- |
-| Description | The path of key for data encryption |
-| Type | String |
-| Default | None |
-| Effective | Restart required. |
-
-### 4.24 Authorization Configuration
-
-- authorizer_provider_class
-
-| Name | authorizer_provider_class |
-| ----------- | ------------------------------------------------------------ |
-| Description | which class to serve for authorization. |
-| Type | String |
-| Default | org.apache.iotdb.commons.auth.authorizer.LocalFileAuthorizer |
-| Effective | Restart required. |
-
-- iotdb_server_encrypt_decrypt_provider
-
-| Name | iotdb_server_encrypt_decrypt_provider |
-| ----------- | ------------------------------------------------------------ |
-| Description | encryption provider class |
-| Type | String |
-| Default | org.apache.iotdb.commons.security.encrypt.MessageDigestEncrypt |
-| Effective | Modify before the first startup. |
-
-- iotdb_server_encrypt_decrypt_provider_parameter
-
-| Name | iotdb_server_encrypt_decrypt_provider_parameter |
-| ----------- | ----------------------------------------------- |
-| Description | encryption provided class parameter |
-| Type | String |
-| Default | None |
-| Effective | Modify before the first startup. |
-
-- author_cache_size
-
-| Name | author_cache_size |
-| ----------- | --------------------------- |
-| Description | Cache size of user and role |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- author_cache_expire_time
-
-| Name | author_cache_expire_time |
-| ----------- | ---------------------------------- |
-| Description | Cache expire time of user and role |
-| Type | int32 |
-| Default | 30 |
-| Effective | Restart required. |
-
-### 4.25 UDF Configuration
-
-- udf_initial_byte_array_length_for_memory_control
-
-| Name | udf_initial_byte_array_length_for_memory_control |
-| ----------- | ------------------------------------------------------------ |
-| Description | Used to estimate the memory usage of text fields in a UDF query.It is recommended to set this value to be slightly larger than the average length of all text records. |
-| Type | int32 |
-| Default | 48 |
-| Effective | Restart required. |
-
-- udf_memory_budget_in_mb
-
-| Name | udf_memory_budget_in_mb |
-| ----------- | ------------------------------------------------------------ |
-| Description | How much memory may be used in ONE UDF query (in MB). The upper limit is 20% of allocated memory for read. |
-| Type | Float |
-| Default | 30.0 |
-| Effective | Restart required. |
-
-- udf_reader_transformer_collector_memory_proportion
-
-| Name | udf_reader_transformer_collector_memory_proportion |
-| ----------- | ------------------------------------------------------------ |
-| Description | UDF memory allocation ratio.The parameter form is a:b:c, where a, b, and c are integers. |
-| Type | String |
-| Default | 1:1:1 |
-| Effective | Restart required. |
-
-- udf_lib_dir
-
-| Name | udf_lib_dir |
-| ----------- | ---------------------------- |
-| Description | the udf lib directory |
-| Type | String |
-| Default | ext/udf(Windows:ext\\udf) |
-| Effective | Restart required. |
-
-### 4.26 Trigger Configuration
-
-- trigger_lib_dir
-
-| Name | trigger_lib_dir |
-| ----------- | ------------------------- |
-| Description | the trigger lib directory |
-| Type | String |
-| Default | ext/trigger |
-| Effective | Restart required. |
-
-- stateful_trigger_retry_num_when_not_found
-
-| Name | stateful_trigger_retry_num_when_not_found |
-| ----------- | ------------------------------------------------------------ |
-| Description | How many times will we retry to found an instance of stateful trigger on DataNodes |
-| Type | Int32 |
-| Default | 3 |
-| Effective | Restart required. |
-
-### 4.27 **Select-Into Configuration**
-
-- into_operation_buffer_size_in_byte
-
-| Name | into_operation_buffer_size_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum memory occupied by the data to be written when executing select-into statements. |
-| Type | long |
-| Default | 104857600 |
-| Effective | Hot reload |
-
-- select_into_insert_tablet_plan_row_limit
-
-| Name | select_into_insert_tablet_plan_row_limit |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum number of rows can be processed in insert-tablet-plan when executing select-into statements. |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Hot reload |
-
-- into_operation_execution_thread_count
-
-| Name | into_operation_execution_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | The number of threads in the thread pool that execute insert-tablet tasks |
-| Type | int32 |
-| Default | 2 |
-| Effective | Restart required. |
-
-### 4.28 Continuous Query Configuration
-
-- continuous_query_submit_thread_count
-
-| Name | continuous_query_execution_thread |
-| ----------- | ------------------------------------------------------------ |
-| Description | The number of threads in the scheduled thread pool that submit continuous query tasks periodically |
-| Type | int32 |
-| Default | 2 |
-| Effective | Restart required. |
-
-- continuous_query_min_every_interval_in_ms
-
-| Name | continuous_query_min_every_interval_in_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | The minimum value of the continuous query execution time interval |
-| Type | long (duration) |
-| Default | 1000 |
-| Effective | Restart required. |
-
-### 4.29 Pipe Configuration
-
-- pipe_lib_dir
-
-| Name | pipe_lib_dir |
-| ----------- | ----------------------- |
-| Description | the pipe lib directory. |
-| Type | string |
-| Default | ext/pipe |
-| Effective | Not support modify |
-
-- pipe_subtask_executor_max_thread_num
-
-| Name | pipe_subtask_executor_max_thread_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum number of threads that can be used to execute the pipe subtasks in PipeSubtaskExecutor. The actual value will be min(pipe_subtask_executor_max_thread_num, max(1, CPU core number / 2)). |
-| Type | int |
-| Default | 5 |
-| Effective | Restart required. |
-
-- pipe_sink_timeout_ms
-
-| Name | pipe_sink_timeout_ms |
-| ----------- | ------------------------------------------------------------ |
-| Description | The connection timeout (in milliseconds) for the thrift client. |
-| Type | int |
-| Default | 900000 |
-| Effective | Restart required. |
-
-- pipe_sink_selector_number
-
-| Name | pipe_sink_selector_number |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum number of selectors that can be used in the sink.Recommend to set this value to less than or equal to pipe_sink_max_client_number. |
-| Type | int |
-| Default | 4 |
-| Effective | Restart required. |
-
-- pipe_sink_max_client_number
-
-| Name | pipe_sink_max_client_number |
-| ----------- | ----------------------------------------------------------- |
-| Description | The maximum number of clients that can be used in the sink. |
-| Type | int |
-| Default | 16 |
-| Effective | Restart required. |
-
-- pipe_air_gap_receiver_enabled
-
-| Name | pipe_air_gap_receiver_enabled |
-| ----------- | ------------------------------------------------------------ |
-| Description | Whether to enable receiving pipe data through air gap.The receiver can only return 0 or 1 in TCP mode to indicate whether the data is received successfully. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- pipe_air_gap_receiver_port
-
-| Name | pipe_air_gap_receiver_port |
-| ----------- | ------------------------------------------------------------ |
-| Description | The port for the server to receive pipe data through air gap. |
-| Type | int |
-| Default | 9780 |
-| Effective | Restart required. |
-
-- pipe_all_sinks_rate_limit_bytes_per_second
-
-| Name | pipe_all_sinks_rate_limit_bytes_per_second |
-| ----------- | ------------------------------------------------------------ |
-| Description | The total bytes that all pipe sinks can transfer per second.When given a value less than or equal to 0, it means no limit. default value is -1, which means no limit. |
-| Type | double |
-| Default | -1 |
-| Effective | Hot reload |
-
-### 4.30 RatisConsensus Configuration
-
-- config_node_ratis_log_appender_buffer_size_max
-
-| Name | config_node_ratis_log_appender_buffer_size_max |
-| ----------- | ------------------------------------------------------------ |
-| Description | max payload size for a single log-sync-RPC from leader to follower of ConfigNode (in byte, by default 16MB) |
-| Type | int32 |
-| Default | 16777216 |
-| Effective | Restart required. |
-
-- schema_region_ratis_log_appender_buffer_size_max
-
-| Name | schema_region_ratis_log_appender_buffer_size_max |
-| ----------- | ------------------------------------------------------------ |
-| Description | max payload size for a single log-sync-RPC from leader to follower of SchemaRegion (in byte, by default 16MB) |
-| Type | int32 |
-| Default | 16777216 |
-| Effective | Restart required. |
-
-- data_region_ratis_log_appender_buffer_size_max
-
-| Name | data_region_ratis_log_appender_buffer_size_max |
-| ----------- | ------------------------------------------------------------ |
-| Description | max payload size for a single log-sync-RPC from leader to follower of DataRegion (in byte, by default 16MB) |
-| Type | int32 |
-| Default | 16777216 |
-| Effective | Restart required. |
-
-- config_node_ratis_snapshot_trigger_threshold
-
-| Name | config_node_ratis_snapshot_trigger_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of Confignode |
-| Type | int32 |
-| Default | 400,000 |
-| Effective | Restart required. |
-
-- schema_region_ratis_snapshot_trigger_threshold
-
-| Name | schema_region_ratis_snapshot_trigger_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of SchemaRegion |
-| Type | int32 |
-| Default | 400,000 |
-| Effective | Restart required. |
-
-- data_region_ratis_snapshot_trigger_threshold
-
-| Name | data_region_ratis_snapshot_trigger_threshold |
-| ----------- | ------------------------------------------------------------ |
-| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of DataRegion |
-| Type | int32 |
-| Default | 400,000 |
-| Effective | Restart required. |
-
-- config_node_ratis_log_unsafe_flush_enable
-
-| Name | config_node_ratis_log_unsafe_flush_enable |
-| ----------- | ------------------------------------------------------ |
-| Description | Is confignode allowed flushing Raft Log asynchronously |
-| Type | boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- schema_region_ratis_log_unsafe_flush_enable
-
-| Name | schema_region_ratis_log_unsafe_flush_enable |
-| ----------- | -------------------------------------------------------- |
-| Description | Is schemaregion allowed flushing Raft Log asynchronously |
-| Type | boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- data_region_ratis_log_unsafe_flush_enable
-
-| Name | data_region_ratis_log_unsafe_flush_enable |
-| ----------- | ------------------------------------------------------ |
-| Description | Is dataregion allowed flushing Raft Log asynchronously |
-| Type | boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- config_node_ratis_log_segment_size_max_in_byte
-
-| Name | config_node_ratis_log_segment_size_max_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | max capacity of a RaftLog segment file of confignode (in byte, by default 24MB) |
-| Type | int32 |
-| Default | 25165824 |
-| Effective | Restart required. |
-
-- schema_region_ratis_log_segment_size_max_in_byte
-
-| Name | schema_region_ratis_log_segment_size_max_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | max capacity of a RaftLog segment file of schemaregion (in byte, by default 24MB) |
-| Type | int32 |
-| Default | 25165824 |
-| Effective | Restart required. |
-
-- data_region_ratis_log_segment_size_max_in_byte
-
-| Name | data_region_ratis_log_segment_size_max_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | max capacity of a RaftLog segment file of dataregion(in byte, by default 24MB) |
-| Type | int32 |
-| Default | 25165824 |
-| Effective | Restart required. |
-
-- config_node_simple_consensus_log_segment_size_max_in_byte
-
-| Name | data_region_ratis_log_segment_size_max_in_byte |
-| ----------- | ------------------------------------------------------------ |
-| Description | max capacity of a simple log segment file of confignode(in byte, by default 24MB) |
-| Type | int32 |
-| Default | 25165824 |
-| Effective | Restart required. |
-
-- config_node_ratis_grpc_flow_control_window
-
-| Name | config_node_ratis_grpc_flow_control_window |
-| ----------- | ---------------------------------------------------------- |
-| Description | confignode flow control window for ratis grpc log appender |
-| Type | int32 |
-| Default | 4194304 |
-| Effective | Restart required. |
-
-- schema_region_ratis_grpc_flow_control_window
-
-| Name | schema_region_ratis_grpc_flow_control_window |
-| ----------- | ------------------------------------------------------------ |
-| Description | schema region flow control window for ratis grpc log appender |
-| Type | int32 |
-| Default | 4194304 |
-| Effective | Restart required. |
-
-- data_region_ratis_grpc_flow_control_window
-
-| Name | data_region_ratis_grpc_flow_control_window |
-| ----------- | ----------------------------------------------------------- |
-| Description | data region flow control window for ratis grpc log appender |
-| Type | int32 |
-| Default | 4194304 |
-| Effective | Restart required. |
-
-- config_node_ratis_grpc_leader_outstanding_appends_max
-
-| Name | config_node_ratis_grpc_leader_outstanding_appends_max |
-| ----------- | ----------------------------------------------------- |
-| Description | config node grpc line concurrency threshold |
-| Type | int32 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- schema_region_ratis_grpc_leader_outstanding_appends_max
-
-| Name | schema_region_ratis_grpc_leader_outstanding_appends_max |
-| ----------- | ------------------------------------------------------- |
-| Description | schema region grpc line concurrency threshold |
-| Type | int32 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- data_region_ratis_grpc_leader_outstanding_appends_max
-
-| Name | data_region_ratis_grpc_leader_outstanding_appends_max |
-| ----------- | ----------------------------------------------------- |
-| Description | data region grpc line concurrency threshold |
-| Type | int32 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- config_node_ratis_log_force_sync_num
-
-| Name | config_node_ratis_log_force_sync_num |
-| ----------- | ------------------------------------ |
-| Description | config node fsync threshold |
-| Type | int32 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- schema_region_ratis_log_force_sync_num
-
-| Name | schema_region_ratis_log_force_sync_num |
-| ----------- | -------------------------------------- |
-| Description | schema region fsync threshold |
-| Type | int32 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- data_region_ratis_log_force_sync_num
-
-| Name | data_region_ratis_log_force_sync_num |
-| ----------- | ------------------------------------ |
-| Description | data region fsync threshold |
-| Type | int32 |
-| Default | 128 |
-| Effective | Restart required. |
-
-- config_node_ratis_rpc_leader_election_timeout_min_ms
-
-| Name | config_node_ratis_rpc_leader_election_timeout_min_ms |
-| ----------- | ---------------------------------------------------- |
-| Description | confignode leader min election timeout |
-| Type | int32 |
-| Default | 2000ms |
-| Effective | Restart required. |
-
-- schema_region_ratis_rpc_leader_election_timeout_min_ms
-
-| Name | schema_region_ratis_rpc_leader_election_timeout_min_ms |
-| ----------- | ------------------------------------------------------ |
-| Description | schema region leader min election timeout |
-| Type | int32 |
-| Default | 2000ms |
-| Effective | Restart required. |
-
-- data_region_ratis_rpc_leader_election_timeout_min_ms
-
-| Name | data_region_ratis_rpc_leader_election_timeout_min_ms |
-| ----------- | ---------------------------------------------------- |
-| Description | data region leader min election timeout |
-| Type | int32 |
-| Default | 2000ms |
-| Effective | Restart required. |
-
-- config_node_ratis_rpc_leader_election_timeout_max_ms
-
-| Name | config_node_ratis_rpc_leader_election_timeout_max_ms |
-| ----------- | ---------------------------------------------------- |
-| Description | confignode leader max election timeout |
-| Type | int32 |
-| Default | 4000ms |
-| Effective | Restart required. |
-
-- schema_region_ratis_rpc_leader_election_timeout_max_ms
-
-| Name | schema_region_ratis_rpc_leader_election_timeout_max_ms |
-| ----------- | ------------------------------------------------------ |
-| Description | schema region leader max election timeout |
-| Type | int32 |
-| Default | 4000ms |
-| Effective | Restart required. |
-
-- data_region_ratis_rpc_leader_election_timeout_max_ms
-
-| Name | data_region_ratis_rpc_leader_election_timeout_max_ms |
-| ----------- | ---------------------------------------------------- |
-| Description | data region leader max election timeout |
-| Type | int32 |
-| Default | 4000ms |
-| Effective | Restart required. |
-
-- config_node_ratis_request_timeout_ms
-
-| Name | config_node_ratis_request_timeout_ms |
-| ----------- | --------------------------------------- |
-| Description | confignode ratis client retry threshold |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- schema_region_ratis_request_timeout_ms
-
-| Name | schema_region_ratis_request_timeout_ms |
-| ----------- | ------------------------------------------ |
-| Description | schema region ratis client retry threshold |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- data_region_ratis_request_timeout_ms
-
-| Name | data_region_ratis_request_timeout_ms |
-| ----------- | ---------------------------------------- |
-| Description | data region ratis client retry threshold |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- config_node_ratis_max_retry_attempts
-
-| Name | config_node_ratis_max_retry_attempts |
-| ----------- | ------------------------------------ |
-| Description | confignode ratis client retry times |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- config_node_ratis_initial_sleep_time_ms
-
-| Name | config_node_ratis_initial_sleep_time_ms |
-| ----------- | ------------------------------------------ |
-| Description | confignode ratis client initial sleep time |
-| Type | int32 |
-| Default | 100ms |
-| Effective | Restart required. |
-
-- config_node_ratis_max_sleep_time_ms
-
-| Name | config_node_ratis_max_sleep_time_ms |
-| ----------- | -------------------------------------------- |
-| Description | confignode ratis client max retry sleep time |
-| Type | int32 |
-| Default | 10000 |
-| Effective | Restart required. |
-
-- schema_region_ratis_max_retry_attempts
-
-| Name | schema_region_ratis_max_retry_attempts |
-| ----------- | ------------------------------------------ |
-| Description | schema region ratis client max retry times |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- schema_region_ratis_initial_sleep_time_ms
-
-| Name | schema_region_ratis_initial_sleep_time_ms |
-| ----------- | ------------------------------------------ |
-| Description | schema region ratis client init sleep time |
-| Type | int32 |
-| Default | 100ms |
-| Effective | Restart required. |
-
-- schema_region_ratis_max_sleep_time_ms
-
-| Name | schema_region_ratis_max_sleep_time_ms |
-| ----------- | ----------------------------------------- |
-| Description | schema region ratis client max sleep time |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- data_region_ratis_max_retry_attempts
-
-| Name | data_region_ratis_max_retry_attempts |
-| ----------- | --------------------------------------------- |
-| Description | data region ratis client max retry sleep time |
-| Type | int32 |
-| Default | 10 |
-| Effective | Restart required. |
-
-- data_region_ratis_initial_sleep_time_ms
-
-| Name | data_region_ratis_initial_sleep_time_ms |
-| ----------- | ---------------------------------------- |
-| Description | data region ratis client init sleep time |
-| Type | int32 |
-| Default | 100ms |
-| Effective | Restart required. |
-
-- data_region_ratis_max_sleep_time_ms
-
-| Name | data_region_ratis_max_sleep_time_ms |
-| ----------- | --------------------------------------------- |
-| Description | data region ratis client max retry sleep time |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- ratis_first_election_timeout_min_ms
-
-| Name | ratis_first_election_timeout_min_ms |
-| ----------- | ----------------------------------- |
-| Description | Ratis first election min timeout |
-| Type | int64 |
-| Default | 50 (ms) |
-| Effective | Restart required. |
-
-- ratis_first_election_timeout_max_ms
-
-| Name | ratis_first_election_timeout_max_ms |
-| ----------- | ----------------------------------- |
-| Description | Ratis first election max timeout |
-| Type | int64 |
-| Default | 150 (ms) |
-| Effective | Restart required. |
-
-- config_node_ratis_preserve_logs_num_when_purge
-
-| Name | config_node_ratis_preserve_logs_num_when_purge |
-| ----------- | ------------------------------------------------------------ |
-| Description | confignode snapshot preserves certain logs when taking snapshot and purge |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- schema_region_ratis_preserve_logs_num_when_purge
-
-| Name | schema_region_ratis_preserve_logs_num_when_purge |
-| ----------- | ------------------------------------------------------------ |
-| Description | schema region snapshot preserves certain logs when taking snapshot and purge |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- data_region_ratis_preserve_logs_num_when_purge
-
-| Name | data_region_ratis_preserve_logs_num_when_purge |
-| ----------- | ------------------------------------------------------------ |
-| Description | data region snapshot preserves certain logs when taking snapshot and purge |
-| Type | int32 |
-| Default | 1000 |
-| Effective | Restart required. |
-
-- config_node_ratis_log_max_size
-
-| Name | config_node_ratis_log_max_size |
-| ----------- | -------------------------------------- |
-| Description | config node Raft Log disk size control |
-| Type | int64 |
-| Default | 2147483648 (2GB) |
-| Effective | Restart required. |
-
-- schema_region_ratis_log_max_size
-
-| Name | schema_region_ratis_log_max_size |
-| ----------- | ---------------------------------------- |
-| Description | schema region Raft Log disk size control |
-| Type | int64 |
-| Default | 2147483648 (2GB) |
-| Effective | Restart required. |
-
-- data_region_ratis_log_max_size
-
-| Name | data_region_ratis_log_max_size |
-| ----------- | -------------------------------------- |
-| Description | data region Raft Log disk size control |
-| Type | int64 |
-| Default | 21474836480 (20GB) |
-| Effective | Restart required. |
-
-- config_node_ratis_periodic_snapshot_interval
-
-| Name | config_node_ratis_periodic_snapshot_interval |
-| ----------- | -------------------------------------------- |
-| Description | config node Raft periodic snapshot interval |
-| Type | int64 |
-| Default | 86400 (s) |
-| Effective | Restart required. |
-
-- schema_region_ratis_periodic_snapshot_interval
-
-| Name | schema_region_ratis_preserve_logs_num_when_purge |
-| ----------- | ------------------------------------------------ |
-| Description | schema region Raft periodic snapshot interval |
-| Type | int64 |
-| Default | 86400 (s) |
-| Effective | Restart required. |
-
-- data_region_ratis_periodic_snapshot_interval
-
-| Name | data_region_ratis_preserve_logs_num_when_purge |
-| ----------- | ---------------------------------------------- |
-| Description | data region Raft periodic snapshot interval |
-| Type | int64 |
-| Default | 86400 (s) |
-| Effective | Restart required. |
-
-### 4.31 IoTConsensusV2 Configuration
-
-- iot_consensus_v2_pipeline_size
-
-| Name | iot_consensus_v2_pipeline_size |
-| ----------- | ------------------------------------------------------------ |
-| Description | Default event buffer size for connector and receiver in iot consensus v2 |
-| Type | int |
-| Default | 5 |
-| Effective | Restart required. |
-
-- iot_consensus_v2_mode
-
-| Name | iot_consensus_v2_pipeline_size |
-| ----------- | ------------------------------ |
-| Description | IoTConsensusV2 mode. |
-| Type | String |
-| Default | batch |
-| Effective | Restart required. |
-
-### 4.32 Procedure Configuration
-
-- procedure_core_worker_thread_count
-
-| Name | procedure_core_worker_thread_count |
-| ----------- | ------------------------------------- |
-| Description | Default number of worker thread count |
-| Type | int32 |
-| Default | 4 |
-| Effective | Restart required. |
-
-- procedure_completed_clean_interval
-
-| Name | procedure_completed_clean_interval |
-| ----------- | ------------------------------------------------------------ |
-| Description | Default time interval of completed procedure cleaner work in, time unit is second |
-| Type | int32 |
-| Default | 30(s) |
-| Effective | Restart required. |
-
-- procedure_completed_evict_ttl
-
-| Name | procedure_completed_evict_ttl |
-| ----------- | ------------------------------------------------------- |
-| Description | Default ttl of completed procedure, time unit is second |
-| Type | int32 |
-| Default | 60(s) |
-| Effective | Restart required. |
-
-### 4.33 MQTT Broker Configuration
-
-- enable_mqtt_service
-
-| Name | enable_mqtt_service。 |
-| ----------- | ----------------------------------- |
-| Description | whether to enable the mqtt service. |
-| Type | Boolean |
-| Default | false |
-| Effective | Hot reload |
-
-- mqtt_host
-
-| Name | mqtt_host |
-| ----------- | ------------------------------ |
-| Description | the mqtt service binding host. |
-| Type | String |
-| Default | 127.0.0.1 |
-| Effective | Hot reload |
-
-- mqtt_port
-
-| Name | mqtt_port |
-| ----------- | ------------------------------ |
-| Description | the mqtt service binding port. |
-| Type | int32 |
-| Default | 1883 |
-| Effective | Hot reload |
-
-- mqtt_handler_pool_size
-
-| Name | mqtt_handler_pool_size |
-| ----------- | ---------------------------------------------------- |
-| Description | the handler pool size for handing the mqtt messages. |
-| Type | int32 |
-| Default | 1 |
-| Effective | Hot reload |
-
-- mqtt_payload_formatter
-
-| Name | mqtt_payload_formatter |
-| ----------- | ----------------------------------- |
-| Description | the mqtt message payload formatter. |
-| Type | String |
-| Default | json |
-| Effective | Hot reload |
-
-- mqtt_max_message_size
-
-| Name | mqtt_max_message_size |
-| ----------- | ---------------------------------- |
-| Description | max length of mqtt message in byte |
-| Type | int32 |
-| Default | 1048576 |
-| Effective | Hot reload |
-
-### 4.34 Audit log Configuration
-
-- enable_audit_log
-
-| Name | enable_audit_log |
-| ----------- | -------------------------------- |
-| Description | whether to enable the audit log. |
-| Type | Boolean |
-| Default | false |
-| Effective | Restart required. |
-
-- audit_log_storage
-
-| Name | audit_log_storage |
-| ----------- | ----------------------------- |
-| Description | Output location of audit logs |
-| Type | String |
-| Default | IOTDB,LOGGER |
-| Effective | Restart required. |
-
-- audit_log_operation
-
-| Name | audit_log_operation |
-| ----------- | ------------------------------------------------------------ |
-| Description | whether enable audit log for DML operation of datawhether enable audit log for DDL operation of schemawhether enable audit log for QUERY operation of data and schema |
-| Type | String |
-| Default | DML,DDL,QUERY |
-| Effective | Restart required. |
-
-- enable_audit_log_for_native_insert_api
-
-| Name | enable_audit_log_for_native_insert_api |
-| ----------- | ---------------------------------------------- |
-| Description | whether the local write api records audit logs |
-| Type | Boolean |
-| Default | true |
-| Effective | Restart required. |
-
-### 4.35 White List Configuration
-
-- enable_white_list
-
-| Name | enable_white_list |
-| ----------- | ------------------------- |
-| Description | whether enable white list |
-| Type | Boolean |
-| Default | false |
-| Effective | Hot reload |
-
-### 4.36 IoTDB-AI Configuration
-
-- model_inference_execution_thread_count
-
-| Name | model_inference_execution_thread_count |
-| ----------- | ------------------------------------------------------------ |
-| Description | The thread count which can be used for model inference operation. |
-| Type | int |
-| Default | 5 |
-| Effective | Restart required. |
-
-### 4.37 Load TsFile Configuration
-
-- load_clean_up_task_execution_delay_time_seconds
-
-| Name | load_clean_up_task_execution_delay_time_seconds |
-| ----------- | ------------------------------------------------------------ |
-| Description | Load clean up task is used to clean up the unsuccessful loaded tsfile after a certain period of time. |
-| Type | int |
-| Default | 1800 |
-| Effective | Hot reload |
-
-- load_write_throughput_bytes_per_second
-
-| Name | load_write_throughput_bytes_per_second |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum bytes per second of disk write throughput when loading tsfile. |
-| Type | int |
-| Default | -1 |
-| Effective | Hot reload |
-
-- load_active_listening_enable
-
-| Name | load_active_listening_enable |
-| ----------- | ------------------------------------------------------------ |
-| Description | Whether to enable the active listening mode for tsfile loading. |
-| Type | Boolean |
-| Default | true |
-| Effective | Hot reload |
-
-- load_active_listening_dirs
-
-| Name | load_active_listening_dirs |
-| ----------- | ------------------------------------------------------------ |
-| Description | The directory to be actively listened for tsfile loading.Multiple directories should be separated by a ','. |
-| Type | String |
-| Default | ext/load/pending |
-| Effective | Hot reload |
-
-- load_active_listening_fail_dir
-
-| Name | load_active_listening_fail_dir |
-| ----------- | ------------------------------------------------------------ |
-| Description | The directory where tsfiles are moved if the active listening mode fails to load them. |
-| Type | String |
-| Default | ext/load/failed |
-| Effective | Hot reload |
-
-- load_active_listening_max_thread_num
-
-| Name | load_active_listening_max_thread_num |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum number of threads that can be used to load tsfile actively.The default value, when this parameter is commented out or <= 0, use CPU core number. |
-| Type | Long |
-| Default | 0 |
-| Effective | Restart required. |
-
-- load_active_listening_check_interval_seconds
-
-| Name | load_active_listening_check_interval_seconds |
-| ----------- | ------------------------------------------------------------ |
-| Description | The interval specified in seconds for the active listening mode to check the directory specified in `load_active_listening_dirs`.The active listening mode will check the directory every `load_active_listening_check_interval_seconds seconds`. |
-| Type | Long |
-| Default | 5 |
-| Effective | Restart required. |
-
-* last_cache_operation_on_load
-
-|Name| last_cache_operation_on_load |
-|:---:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|Description| The operation performed to LastCache when a TsFile is successfully loaded. `UPDATE`: use the data in the TsFile to update LastCache; `UPDATE_NO_BLOB`: similar to UPDATE, but will invalidate LastCache for blob series; `CLEAN_DEVICE`: invalidate LastCache of devices contained in the TsFile; `CLEAN_ALL`: clean the whole LastCache. |
-|Type| String |
-|Default| UPDATE_NO_BLOB |
-|Effective| Effective after restart |
-
-* cache_last_values_for_load
-
-|Name| cache_last_values_for_load |
-|:---:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|Description| Whether to cache last values before loading a TsFile. Only effective when `last_cache_operation_on_load=UPDATE_NO_BLOB` or `last_cache_operation_on_load=UPDATE`. When set to true, blob series will be ignored even with `last_cache_operation_on_load=UPDATE`. Enabling this will increase the memory footprint during loading TsFiles. |
-|Type| Boolean |
-|Default| true |
-|Effective| Effective after restart |
-
-* cache_last_values_memory_budget_in_byte
-
-|Name| cache_last_values_memory_budget_in_byte |
-|:---:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-|Description| When `cache_last_values_for_load=true`, the maximum memory that can be used to cache last values. If this value is exceeded, the cached values will be abandoned and last values will be read from the TsFile in a streaming manner. |
-|Type| int32 |
-|Default| 4194304 |
-|Effective| Effective after restart |
-
-
-### 4.38 Dispatch Retry Configuration
-
-- enable_retry_for_unknown_error
-
-| Name | enable_retry_for_unknown_error |
-| ----------- | ------------------------------------------------------------ |
-| Description | The maximum retrying time for write request remotely dispatching, time unit is milliseconds. |
-| Type | Long |
-| Default | 60000 |
-| Effective | Hot reload |
-
-- enable_retry_for_unknown_error
-
-| Name | enable_retry_for_unknown_error |
-| ----------- | ------------------------------------ |
-| Description | Whether retrying for unknown errors. |
-| Type | boolean |
-| Default | false |
-| Effective | Hot reload |
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Reference/System-Tables_timecho.md b/src/UserGuide/Master/Table/Reference/System-Tables_timecho.md
deleted file mode 100644
index 8338d998d..000000000
--- a/src/UserGuide/Master/Table/Reference/System-Tables_timecho.md
+++ /dev/null
@@ -1,801 +0,0 @@
-
-
-# System Tables
-
-IoTDB has a built-in system database called `INFORMATION_SCHEMA`, which contains a series of system tables for storing IoTDB runtime information (such as currently executing SQL statements, etc.). Currently, the `INFORMATION_SCHEMA` database only supports read operations.
-
-> 💡 **[V2.0.9.1 Version Update]**
-> 👉 Added onw system tables: **[TABLE_DISK_USAGE](#_2-22-table-disk-usage)** (Table-level Storage Space Statistics), enhancing cluster maintenance and performance analysis.
-
-
-## 1. System Database
-
-* **Name**: `INFORMATION_SCHEMA`
-* **Commands**: Read-only, only supports `Show databases (DETAILS)` / `Show Tables (DETAILS)` / `Use`. Other operations will result in an error: `"The database 'information_schema' can only be queried."`
-* **Attributes**:` TTL=INF`, other attributes default to `null `
-* **SQL Example**:
-
-```sql
-IoTDB> show databases
-+------------------+-------+-----------------------+---------------------+---------------------+
-| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|
-+------------------+-------+-----------------------+---------------------+---------------------+
-|information_schema| INF| null| null| null|
-+------------------+-------+-----------------------+---------------------+---------------------+
-
-IoTDB> show tables from information_schema
-+-----------------------+-------+
-| TableName|TTL(ms)|
-+-----------------------+-------+
-| columns| INF|
-| config_nodes| INF|
-| configurations| INF|
-| connections| INF|
-| current_queries| INF|
-| data_nodes| INF|
-| databases| INF|
-| functions| INF|
-| keywords| INF|
-| nodes| INF|
-| pipe_plugins| INF|
-| pipes| INF|
-| queries| INF|
-|queries_costs_histogram| INF|
-| regions| INF|
-| services| INF|
-| subscriptions| INF|
-| table_disk_usage| INF|
-| tables| INF|
-| topics| INF|
-| views| INF|
-+-----------------------+-------+
-```
-
-## 2. System Tables
-
-* **Names**: `DATABASES`, `TABLES`, `REGIONS`, `QUERIES`, `COLUMNS`, `PIPES`, `PIPE_PLUGINS`, `SUBSCRIPTION`, `TOPICS`, `VIEWS`, `MODELS`, `FUNCTIONS`, `CONFIGURATIONS`, `KEYWORDS`, `NODES`, `CONFIG_NODES`, `DATA_NODES`, `CONNECTIONS`, `CURRENT_QUERIES`, `QUERIES_COSTS_HISTOGRAM`, `SERVICES`, `TABLE_DISK_USAGE` (detailed descriptions in later sections)
-* **Operations**: Read-only, only supports `SELECT`, `COUNT/SHOW DEVICES`, `DESC`. Any modifications to table structure or content are not allowed and will result in an error: `"The database 'information_schema' can only be queried." `
-* **Column Names**: System table column names are all lowercase by default and separated by underscores (`_`).
-
-### 2.1 DATABASES
-
-* Contains information about all databases in the cluster.
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| --------------------------------- | ----------- | ------------- | -------------------------------- |
-| `database` | STRING | TAG | Database name |
-| `ttl(ms)` | STRING | ATTRIBUTE | Data retention time |
-| `schema_replication_factor` | INT32 | ATTRIBUTE | Schema replica count |
-| `data_replication_factor` | INT32 | ATTRIBUTE | Data replica count |
-| `time_partition_interval` | INT64 | ATTRIBUTE | Time partition interval |
-| `schema_region_group_num` | INT32 | ATTRIBUTE | Number of schema region groups |
-| `data_region_group_num` | INT32 | ATTRIBUTE | Number of data region groups |
-
-* The query results only display the collection of databases for which you have any permission on the database itself or any table within the database.
-* Query Example:
-
-```sql
-IoTDB> select * from information_schema.databases
-+------------------+-------+-------------------------+-----------------------+-----------------------+-----------------------+---------------------+
-| database|ttl(ms)|schema_replication_factor|data_replication_factor|time_partition_interval|schema_region_group_num|data_region_group_num|
-+------------------+-------+-------------------------+-----------------------+-----------------------+-----------------------+---------------------+
-|information_schema| INF| null| null| null| null| null|
-| database1| INF| 1| 1| 604800000| 0| 0|
-+------------------+-------+-------------------------+-----------------------+-----------------------+-----------------------+---------------------+
-```
-
-### 2.2 TABLES
-
-* Contains information about all tables in the cluster.
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| ------------------ | ----------- | ------------- | --------------------- |
-| `database` | STRING | TAG | Database name |
-| `table_name` | STRING | TAG | Table name |
-| `ttl(ms)` | STRING | ATTRIBUTE | Data retention time |
-| `status` | STRING | ATTRIBUTE | Status |
-| `comment` | STRING | ATTRIBUTE | Description/comment |
-
-* Note: Possible values for `status`: `USING`, `PRE_CREATE`, `PRE_DELETE`. For details, refer to the [View Tables](../Basic-Concept/Table-Management_timecho.md#12-view-tables) in Table Management documentation
-* The query results only display the collection of tables for which you have any permission.
-* Query Example:
-
-```sql
-IoTDB> select * from information_schema.tables
-+------------------+--------------+-----------+------+-------+-----------+
-| database| table_name| ttl(ms)|status|comment| table_type|
-+------------------+--------------+-----------+------+-------+-----------+
-|information_schema| databases| INF| USING| null|SYSTEM VIEW|
-|information_schema| models| INF| USING| null|SYSTEM VIEW|
-|information_schema| subscriptions| INF| USING| null|SYSTEM VIEW|
-|information_schema| regions| INF| USING| null|SYSTEM VIEW|
-|information_schema| functions| INF| USING| null|SYSTEM VIEW|
-|information_schema| keywords| INF| USING| null|SYSTEM VIEW|
-|information_schema| columns| INF| USING| null|SYSTEM VIEW|
-|information_schema| topics| INF| USING| null|SYSTEM VIEW|
-|information_schema|configurations| INF| USING| null|SYSTEM VIEW|
-|information_schema| queries| INF| USING| null|SYSTEM VIEW|
-|information_schema| tables| INF| USING| null|SYSTEM VIEW|
-|information_schema| pipe_plugins| INF| USING| null|SYSTEM VIEW|
-|information_schema| nodes| INF| USING| null|SYSTEM VIEW|
-|information_schema| data_nodes| INF| USING| null|SYSTEM VIEW|
-|information_schema| pipes| INF| USING| null|SYSTEM VIEW|
-|information_schema| views| INF| USING| null|SYSTEM VIEW|
-|information_schema| config_nodes| INF| USING| null|SYSTEM VIEW|
-| database1| table1|31536000000| USING| null| BASE TABLE|
-+------------------+--------------+-----------+------+-------+-----------+
-```
-
-### 2.3 REGIONS
-
-* Contains information about all regions in the cluster.
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| ------------------------- | ----------- | ------------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `region_id` | INT32 | TAG | Region ID |
-| `datanode_id` | INT32 | TAG | DataNode ID |
-| `type` | STRING | ATTRIBUTE | Type (`SchemaRegion`/`DataRegion`) |
-| `status` | STRING | ATTRIBUTE | Status (`Running`,`Unknown`, etc.) |
-| `database` | STRING | ATTRIBUTE | Database name |
-| `series_slot_num` | INT32 | ATTRIBUTE | Number of series slots |
-| `time_slot_num` | INT64 | ATTRIBUTE | Number of time slots |
-| `rpc_address` | STRING | ATTRIBUTE | RPC address |
-| `rpc_port` | INT32 | ATTRIBUTE | RPC port |
-| `internal_address` | STRING | ATTRIBUTE | Internal communication address |
-| `role` | STRING | ATTRIBUTE | Role (`Leader`/`Follower`) |
-| `create_time` | TIMESTAMP | ATTRIBUTE | Creation time |
-| `tsfile_size_bytes` | INT64 | ATTRIBUTE | - For**DataRegion with statistics **: Total file size of TsFiles. - For**DataRegion without statistics**(Unknown):`-1`. - For**SchemaRegion**:`null`. |
-
-* Only administrators are allowed to perform query operations.
-* Query Example:
-
-```SQL
-IoTDB> select * from information_schema.regions
-+---------+-----------+------------+-------+---------+---------------+-------------+-----------+--------+----------------+------+-----------------------------+-----------------+
-|region_id|datanode_id| type| status| database|series_slot_num|time_slot_num|rpc_address|rpc_port|internal_address| role| create_time|tsfile_size_bytes|
-+---------+-----------+------------+-------+---------+---------------+-------------+-----------+--------+----------------+------+-----------------------------+-----------------+
-| 0| 1|SchemaRegion|Running|database1| 12| 0| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-03-31T11:19:08.485+08:00| null|
-| 1| 1| DataRegion|Running|database1| 6| 6| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-03-31T11:19:09.156+08:00| 3985|
-| 2| 1| DataRegion|Running|database1| 6| 6| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-03-31T11:19:09.156+08:00| 3841|
-+---------+-----------+------------+-------+---------+---------------+-------------+-----------+--------+----------------+------+-----------------------------+-----------------+
-```
-
-### 2.4 QUERIES
-
-* Contains information about all currently executing queries in the cluster. Can also be queried using the `SHOW QUERIES` syntax.
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| -------------------- | ----------- | ------------- | ------------------------------------------------------------ |
-| `query_id` | STRING | TAG | Query ID |
-| `start_time` | TIMESTAMP | ATTRIBUTE | Query start timestamp (precision matches system precision) |
-| `datanode_id` | INT32 | ATTRIBUTE | DataNode ID that initiated the query |
-| `elapsed_time` | FLOAT | ATTRIBUTE | Query execution duration (in seconds) |
-| `statement` | STRING | ATTRIBUTE | SQL statement of the query |
-| `user` | STRING | ATTRIBUTE | User who initiated the query |
-
-* For regular users, the query results only display the queries executed by themselves; for administrators, all queries are displayed.
-* Query Example:
-
-```SQL
-IoTDB> select * from information_schema.queries
-+-----------------------+-----------------------------+-----------+------------+----------------------------------------+----+
-| query_id| start_time|datanode_id|elapsed_time| statement|user|
-+-----------------------+-----------------------------+-----------+------------+----------------------------------------+----+
-|20250331_023242_00011_1|2025-03-31T10:32:42.360+08:00| 1| 0.025|select * from information_schema.queries|root|
-+-----------------------+-----------------------------+-----------+------------+----------------------------------------+----+
-```
-
-### 2.5 COLUMNS
-
-* Contains information about all columns in tables across the cluster
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| ------------------- | ----------- | ------------- | -------------------- |
-| `database` | STRING | TAG | Database name |
-| `table_name` | STRING | TAG | Table name |
-| `column_name` | STRING | TAG | Column name |
-| `datatype` | STRING | ATTRIBUTE | Column data type |
-| `category` | STRING | ATTRIBUTE | Column category |
-| `status` | STRING | ATTRIBUTE | Column status |
-| `comment` | STRING | ATTRIBUTE | Column description |
-
-Notes:
-* Possible values for `status`: `USING`, `PRE_DELETE`. For details, refer to [Viewing Table Columns](../Basic-Concept/Table-Management_timecho.html#13-view-table-columns) in Table Management documentation.
-* The query results only display the column information of tables for which you have any permission.
-
-* Query Example:
-
-```SQL
-IoTDB> select * from information_schema.columns where database = 'database1'
-+---------+----------+------------+---------+---------+------+-------+
-| database|table_name| column_name| datatype| category|status|comment|
-+---------+----------+------------+---------+---------+------+-------+
-|database1| table1| time|TIMESTAMP| TIME| USING| null|
-|database1| table1| region| STRING| TAG| USING| null|
-|database1| table1| plant_id| STRING| TAG| USING| null|
-|database1| table1| device_id| STRING| TAG| USING| null|
-|database1| table1| model_id| STRING|ATTRIBUTE| USING| null|
-|database1| table1| maintenance| STRING|ATTRIBUTE| USING| null|
-|database1| table1| temperature| FLOAT| FIELD| USING| null|
-|database1| table1| humidity| FLOAT| FIELD| USING| null|
-|database1| table1| status| BOOLEAN| FIELD| USING| null|
-|database1| table1|arrival_time|TIMESTAMP| FIELD| USING| null|
-+---------+----------+------------+---------+---------+------+-------+
-```
-
-### 2.6 PIPES
-
-* Contains information about all pipes in the cluster
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| ----------------------------------- | ----------- | ------------- | ---------------------------------------------------------- |
-| `id` | STRING | TAG | Pipe name |
-| `creation_time` | TIMESTAMP | ATTRIBUTE | Creation time |
-| `state` | STRING | ATTRIBUTE | Pipe status (`RUNNING`/`STOPPED`) |
-| `pipe_source` | STRING | ATTRIBUTE | Source plugin parameters |
-| `pipe_processor` | STRING | ATTRIBUTE | Processor plugin parameters |
-| `pipe_sink` | STRING | ATTRIBUTE | Sink plugin parameters |
-| `exception_message` | STRING | ATTRIBUTE | Exception message |
-| `remaining_event_count` | INT64 | ATTRIBUTE | Remaining event count (`-1`if Unknown) |
-| `estimated_remaining_seconds` | DOUBLE | ATTRIBUTE | Estimated remaining time in seconds (`-1`if Unknown) |
-
-* Only administrators are allowed to perform operations.
-* Query Example:
-
-```SQL
-select * from information_schema.pipes
-+----------+-----------------------------+-------+--------------------------------------------------------------------------+--------------+-----------------------------------------------------------------------+-----------------+---------------------+---------------------------+
-| id| creation_time| state| pipe_source|pipe_processor| pipe_sink|exception_message|remaining_event_count|estimated_remaining_seconds|
-+----------+-----------------------------+-------+--------------------------------------------------------------------------+--------------+-----------------------------------------------------------------------+-----------------+---------------------+---------------------------+
-|tablepipe1|2025-03-31T12:25:24.040+08:00|RUNNING|{__system.sql-dialect=table, source.password=******, source.username=root}| {}|{format=hybrid, node-urls=192.168.xxx.xxx:6667, sink=iotdb-thrift-sink}| | 0| 0.0|
-+----------+-----------------------------+-------+--------------------------------------------------------------------------+--------------+-----------------------------------------------------------------------+-----------------+---------------------+---------------------------+
-```
-
-### 2.7 PIPE\_PLUGINS
-
-* Contains information about all PIPE plugins in the cluster
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| ------------------- | ----------- | ------------- | ----------------------------------------------------- |
-| `plugin_name` | STRING | TAG | Plugin name |
-| `plugin_type` | STRING | ATTRIBUTE | Plugin type (`Builtin`/`External`) |
-| `class_name` | STRING | ATTRIBUTE | Plugin's main class name |
-| `plugin_jar` | STRING | ATTRIBUTE | Plugin's JAR file name (`null`for builtin type) |
-
-* Query Example:
-
-```SQL
-IoTDB> select * from information_schema.pipe_plugins
-+---------------------+-----------+-------------------------------------------------------------------------------------------------+----------+
-| plugin_name|plugin_type| class_name|plugin_jar|
-+---------------------+-----------+-------------------------------------------------------------------------------------------------+----------+
-|IOTDB-THRIFT-SSL-SINK| Builtin|org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.thrift.IoTDBThriftSslConnector| null|
-| IOTDB-AIR-GAP-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.airgap.IoTDBAirGapConnector| null|
-| DO-NOTHING-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.donothing.DoNothingConnector| null|
-| DO-NOTHING-PROCESSOR| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.processor.donothing.DoNothingProcessor| null|
-| IOTDB-THRIFT-SINK| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.connector.iotdb.thrift.IoTDBThriftConnector| null|
-| IOTDB-SOURCE| Builtin| org.apache.iotdb.commons.pipe.agent.plugin.builtin.extractor.iotdb.IoTDBExtractor| null|
-+---------------------+-----------+-------------------------------------------------------------------------------------------------+----------+
-```
-
-### 2.8 SUBSCRIPTIONS
-
-* Contains information about all data subscriptions in the cluster
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| ---------------------------- | ----------- | ------------- | ------------------------- |
-| `topic_name` | STRING | TAG | Subscription topic name |
-| `consumer_group_name` | STRING | TAG | Consumer group name |
-| `subscribed_consumers` | STRING | ATTRIBUTE | Subscribed consumers |
-
-* Only administrators are allowed to perform operations.
-* Query Example:
-
-```SQL
-IoTDB> select * from information_schema.subscriptions where topic_name = 'topic_1'
-+----------+-------------------+--------------------------------+
-|topic_name|consumer_group_name| subscribed_consumers|
-+----------+-------------------+--------------------------------+
-| topic_1| cg1|[c3, c4, c5, c6, c7, c0, c1, c2]|
-+----------+-------------------+--------------------------------+
-```
-
-### 2.9 TOPICS
-
-* Contains information about all data subscription topics in the cluster
-* Table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-| --------------------- | ----------- | ------------- | -------------------------------- |
-| `topic_name` | STRING | TAG | Subscription topic name |
-| `topic_configs` | STRING | ATTRIBUTE | Topic configuration parameters |
-
-* Only administrators are allowed to perform operations.
-* Query Example:
-
-```SQL
-IoTDB> select * from information_schema.topics
-+----------+----------------------------------------------------------------+
-|topic_name| topic_configs|
-+----------+----------------------------------------------------------------+
-| topic|{__system.sql-dialect=table, start-time=2025-01-10T17:05:38.282}|
-+----------+----------------------------------------------------------------+
-```
-
-### 2.10 VIEWS
-
-> This system table is available starting from version V2.0.5.
-
-* Contains information about all table views in the database.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------------ | ----------- | ----------------- | --------------------------------- |
-| database | STRING | TAG | Database name |
-| table\_name | STRING | TAG | View name |
-| view\_definition | STRING | ATTRIBUTE | SQL statement for view creation |
-
-* The query results only display the collection of views for which you have any permission.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.views
-+---------+----------+---------------------------------------------------------------------------------------------------------------------------------------+
-| database|table_name| view_definition|
-+---------+----------+---------------------------------------------------------------------------------------------------------------------------------------+
-|database1| ln|CREATE VIEW "ln" ("device" STRING TAG,"model" STRING TAG,"status" BOOLEAN FIELD,"hardware" STRING FIELD) WITH (ttl='INF') AS root.ln.**|
-+---------+----------+---------------------------------------------------------------------------------------------------------------------------------------+
-```
-
-
-### 2.11 MODELS
-
-> This system table is available starting from version V 2.0.5 and has been discontinued since version V 2.0.8.
-
-* Contains information about all models in the database.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------- | ----------- | ----------------- | ------------------------------------------------------------------------------------------------ |
-| model\_id | STRING | TAG | Model name |
-| model\_type | STRING | ATTRIBUTE | Model type (Forecast, Anomaly Detection, Custom) |
-| state | STRING | ATTRIBUTE | Model status (Available/Unavailable) |
-| configs | STRING | ATTRIBUTE | String format of model hyperparameters, consistent with the output of the `show` command |
-| notes | STRING | ATTRIBUTE | Model description\* Built-in model: Built-in model in IoTDB\* User-defined model: Custom model |
-
-* Query example:
-
-```SQL
--- Find all built-in forecast models
-IoTDB> select * from information_schema.models where model_type = 'BUILT_IN_FORECAST'
-+---------------------+-----------------+------+-------+-----------------------+
-| model_id| model_type| state|configs| notes|
-+---------------------+-----------------+------+-------+-----------------------+
-| _STLForecaster|BUILT_IN_FORECAST|ACTIVE| null|Built-in model in IoTDB|
-| _NaiveForecaster|BUILT_IN_FORECAST|ACTIVE| null|Built-in model in IoTDB|
-| _ARIMA|BUILT_IN_FORECAST|ACTIVE| null|Built-in model in IoTDB|
-|_ExponentialSmoothing|BUILT_IN_FORECAST|ACTIVE| null|Built-in model in IoTDB|
-| _HoltWinters|BUILT_IN_FORECAST|ACTIVE| null|Built-in model in IoTDB|
-| _sundial|BUILT_IN_FORECAST|ACTIVE| null|Built-in model in IoTDB|
-+---------------------+-----------------+------+-------+-----------------------+
-```
-
-
-### 2.12 FUNCTIONS
-
-> This system table is available starting from version V2.0.5.
-
-* Contains information about all functions in the database.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------------ | ----------- | ----------------- | -------------------------------------------------------------------------- |
-| function\_name | STRING | TAG | Function name |
-| function\_type | STRING | ATTRIBUTE | Function type (Built-in/User-defined, Scalar/Aggregation/Table Function) |
-| class\_name(udf) | STRING | ATTRIBUTE | Class name if it is a UDF, otherwise null (tentative) |
-| state | STRING | ATTRIBUTE | Availability status |
-
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.functions where function_type='built-in table function'
-+--------------+-----------------------+---------------+---------+
-|function_name | function_type|class_name(udf)| state|
-+--------------+-----------------------+---------------+---------+
-| CUMULATE|built-in table function| null|AVAILABLE|
-| SESSION|built-in table function| null|AVAILABLE|
-| HOP|built-in table function| null|AVAILABLE|
-| TUMBLE|built-in table function| null|AVAILABLE|
-| FORECAST|built-in table function| null|AVAILABLE|
-| VARIATION|built-in table function| null|AVAILABLE|
-| CAPACITY|built-in table function| null|AVAILABLE|
-+--------------+-----------------------+---------------+---------+
-```
-
-
-### 2.13 CONFIGURATIONS
-
-> This system table is available starting from version V2.0.5.
-
-* Contains all configuration properties of the database.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------- | ----------- | ----------------- | ------------------------------ |
-| variable | STRING | TAG | Configuration property name |
-| value | STRING | ATTRIBUTE | Configuration property value |
-
-* Only administrators are allowed to perform operations on this table.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.configurations
-+----------------------------------+-----------------------------------------------------------------+
-| variable| value|
-+----------------------------------+-----------------------------------------------------------------+
-| ClusterName| defaultCluster|
-| DataReplicationFactor| 1|
-| SchemaReplicationFactor| 1|
-| DataRegionConsensusProtocolClass| org.apache.iotdb.consensus.iot.IoTConsensus|
-|SchemaRegionConsensusProtocolClass| org.apache.iotdb.consensus.ratis.RatisConsensus|
-| ConfigNodeConsensusProtocolClass| org.apache.iotdb.consensus.ratis.RatisConsensus|
-| TimePartitionOrigin| 0|
-| TimePartitionInterval| 604800000|
-| ReadConsistencyLevel| strong|
-| SchemaRegionPerDataNode| 1|
-| DataRegionPerDataNode| 0|
-| SeriesSlotNum| 1000|
-| SeriesSlotExecutorClass|org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor|
-| DiskSpaceWarningThreshold| 0.05|
-| TimestampPrecision| ms|
-+----------------------------------+-----------------------------------------------------------------+
-```
-
-
-### 2.14 KEYWORDS
-
-> This system table is available starting from version V2.0.5.
-
-* Contains all keywords in the database.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------- | ----------- | ----------------- | ------------------------------------------------- |
-| word | STRING | TAG | Keyword |
-| reserved | INT32 | ATTRIBUTE | Whether it is a reserved word (1 = Yes, 0 = No) |
-
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.keywords limit 10
-+----------+--------+
-| word|reserved|
-+----------+--------+
-| ABSENT| 0|
-|ACTIVATION| 1|
-| ACTIVATE| 1|
-| ADD| 0|
-| ADMIN| 0|
-| AFTER| 0|
-| AINODES| 1|
-| ALL| 0|
-| ALTER| 1|
-| ANALYZE| 0|
-+----------+--------+
-```
-
-
-### 2.15 NODES
-
-> This system table is available starting from version V2.0.5.
-
-* Contains information about all nodes in the database cluster.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| -------------------------------------------- | ----------- | ----------------- | ---------------------- |
-| node\_id | INT32 | TAG | Node ID |
-| node\_type | STRING | ATTRIBUTE | Node type |
-| status | STRING | ATTRIBUTE | Node status |
-| internal\_address | STRING | ATTRIBUTE | Internal RPC address |
-| internal\_port | INT32 | ATTRIBUTE | Internal port |
-| version | STRING | ATTRIBUTE | Version number |
-| build\_info | STRING | ATTRIBUTE | Commit ID |
-| activate\_status (Enterprise Edition only) | STRING | ATTRIBUTE | Activation status |
-
-* Only administrators are allowed to perform operations on this table.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.nodes
-+-------+----------+-------+----------------+-------------+-------+----------+
-|node_id| node_type| status|internal_address|internal_port|version|build_info|
-+-------+----------+-------+----------------+-------------+-------+----------+
-| 0|ConfigNode|Running| 127.0.0.1| 10710|2.0.5.1| 58d685e|
-| 1| DataNode|Running| 127.0.0.1| 10730|2.0.5.1| 58d685e|
-+-------+----------+-------+----------------+-------------+-------+----------+
-```
-
-
-### 2.16 CONFIG\_NODES
-
-> This system table is available starting from version V2.0.5.
-
-* Contains information about all ConfigNodes in the cluster.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------------------- | ----------- | ----------------- | --------------------------- |
-| node\_id | INT32 | TAG | Node ID |
-| config\_consensus\_port | INT32 | ATTRIBUTE | ConfigNode consensus port |
-| role | STRING | ATTRIBUTE | ConfigNode role |
-
-* Only administrators are allowed to perform operations on this table.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.config_nodes
-+-------+---------------------+------+
-|node_id|config_consensus_port| role|
-+-------+---------------------+------+
-| 0| 10720|Leader|
-+-------+---------------------+------+
-```
-
-
-### 2.17 DATA\_NODES
-
-> This system table is available starting from version V2.0.5.
-
-* Contains information about all DataNodes in the cluster.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Category | Description |
-| ------------------------- | ----------- | ----------------- | ----------------------------- |
-| node\_id | INT32 | TAG | Node ID |
-| data\_region\_num | INT32 | ATTRIBUTE | Number of DataRegions |
-| schema\_region\_num | INT32 | ATTRIBUTE | Number of SchemaRegions |
-| rpc\_address | STRING | ATTRIBUTE | RPC address |
-| rpc\_port | INT32 | ATTRIBUTE | RPC port |
-| mpp\_port | INT32 | ATTRIBUTE | MPP communication port |
-| data\_consensus\_port | INT32 | ATTRIBUTE | DataRegion consensus port |
-| schema\_consensus\_port | INT32 | ATTRIBUTE | SchemaRegion consensus port |
-
-* Only administrators are allowed to perform operations on this table.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.data_nodes
-+-------+---------------+-----------------+-----------+--------+--------+-------------------+---------------------+
-|node_id|data_region_num|schema_region_num|rpc_address|rpc_port|mpp_port|data_consensus_port|schema_consensus_port|
-+-------+---------------+-----------------+-----------+--------+--------+-------------------+---------------------+
-| 1| 4| 4| 0.0.0.0| 6667| 10740| 10760| 10750|
-+-------+---------------+-----------------+-----------+--------+--------+-------------------+---------------------+
-```
-
-### 2.18 CONNECTIONS
-
-> This system table is available starting from version V 2.0.8
-
-* Contains all connections in the cluster.
-* The table structure is as follows:
-
-| **Column Name** | **Data Type** | **Column Type** | **Description** |
-|-----------------|---------------|-----------------|------------------------|
-| datanode_id | STRING | TAG | DataNode ID |
-| user_id | STRING | TAG | User ID |
-| session_id | STRING | TAG | Session ID |
-| user_name | STRING | ATTRIBUTE | Username |
-| last_active_time| TIMESTAMP | ATTRIBUTE | Last active time |
-| client_ip | STRING | ATTRIBUTE | Client IP address |
-
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.connections;
-+-----------+-------+----------+---------+-----------------------------+---------+
-|datanode_id|user_id|session_id|user_name| last_active_time|client_ip|
-+-----------+-------+----------+---------+-----------------------------+---------+
-| 1| 0| 2| root|2026-01-21T16:28:54.704+08:00|127.0.0.1|
-+-----------+-------+----------+---------+-----------------------------+---------+
-```
-
-### 2.19 CURRENT_QUERIES
-
-> This system table is available starting from version V 2.0.8
-
-* Contains all queries whose execution end time falls within the range `[now() - query_cost_stat_window, now())`, including currently executing queries. The `query_cost_stat_window` parameter represents the query cost statistics window. Its default value is 0 and can be configured via the `iotdb-system.properties` configuration file.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-|--------------|-----------|-------------|-----------------------------------------------------------------------------|
-| query_id | STRING | TAG | Query statement ID |
-| state | STRING | FIELD | Query state: RUNNING indicates executing, FINISHED indicates completed |
-| start_time | TIMESTAMP | FIELD | Query start timestamp (precision matches system timestamp precision) |
-| end_time | TIMESTAMP | FIELD | Query end timestamp (precision matches system timestamp precision). NULL if query is not yet finished |
-| datanode_id | INT32 | FIELD | DataNode from which the query was initiated |
-| cost_time | FLOAT | FIELD | Query execution time in seconds. If query is not finished, shows elapsed time |
-| statement | STRING | FIELD | Query SQL / concatenated query request SQL |
-| user | STRING | FIELD | User who initiated the query |
-| client_ip | STRING | FIELD | Client IP address that initiated the query |
-
-* Regular users can only view their own queries; administrators can view all queries.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.current_queries;
-+-----------------------+-------+-----------------------------+--------+-----------+---------+------------------------------------------------+----+---------+
-| query_id| state| start_time|end_time|datanode_id|cost_time| statement|user|client_ip|
-+-----------------------+-------+-----------------------------+--------+-----------+---------+------------------------------------------------+----+---------+
-|20260121_085427_00013_1|RUNNING|2026-01-21T16:54:27.019+08:00| null| 1| 0.0|select * from information_schema.current_queries|root|127.0.0.1|
-+-----------------------+-------+-----------------------------+--------+-----------+---------+------------------------------------------------+----+---------+
-```
-
-### 2.20 QUERIES_COSTS_HISTOGRAM
-
-> This system table is available starting from version V 2.0.8
-
-* Contains a histogram of query execution times within the past `query_cost_stat_window` period (only statistics for completed SQL queries). The `query_cost_stat_window` parameter represents the query cost statistics window. Its default value is 0 and can be configured via the `iotdb-system.properties` configuration file.
-* The table structure is as follows:
-
-| Column Name | Data Type | Column Type | Description |
-|--------------|-----------|-------------|-----------------------------------------------------------------------------|
-| bin | STRING | TAG | Bucket name: 61 buckets total - [0, 1), [1, 2), [2, 3), ..., [59, 60), 60+ |
-| nums | INT32 | FIELD | Number of SQL queries in the bucket |
-| datanode_id | INT32 | FIELD | DataNode to which this bucket belongs |
-
-* Only administrators can execute operations on this table.
-* Query example:
-
-```SQL
-IoTDB> select * from information_schema.queries_costs_histogram limit 10
-+------+----+-----------+
-| bin|nums|datanode_id|
-+------+----+-----------+
-| [0,1)| 0| 1|
-| [1,2)| 0| 1|
-| [2,3)| 0| 1|
-| [3,4)| 0| 1|
-| [4,5)| 0| 1|
-| [5,6)| 0| 1|
-| [6,7)| 0| 1|
-| [7,8)| 0| 1|
-| [8,9)| 0| 1|
-|[9,10)| 0| 1|
-+------+----+-----------+
-```
-
-### 2.21 SERVICES
-
-> This system table is available starting from version V 2.0.8.2
-
-* Displays services (MQTT service, REST service) on all active DataNodes (with RUNNING or READ-ONLY status).
-* Table structure:
-
-| Column Name | Data Type | Column Type | Description |
-|---------------|-----------|-------------|---------------------------------|
-| service_name | STRING | TAG | Service Name |
-| datanode_id | INT32 | ATTRIBUTE | DataNode ID where service runs |
-| state | STRING | ATTRIBUTE | Service status: RUNNING/STOPPED |
-
-
-* Query example:
-
-```sql
-IoTDB> SELECT * FROM information_schema.services
-+------------+-----------+---------+
-|service_name|datanode_id|state |
-+------------+-----------+---------+
-|MQTT |1 |STOPPED |
-|REST |1 |RUNNING |
-+------------+-----------+---------+
-```
-
-### 2.22 TABLE_DISK_USAGE
-> This system table is available since version V2.0.9.1
-
-Used to display the disk space usage of specified tables (excluding views), including the size of ChunkGroups and the size of Metadata.
-
-Note: Statistics are based on the actual size of data in TsFiles; therefore, deletions made via mods are not considered.
-
-The table structure is shown below:
-
-| Column Name | Data Type | Column Type | Description |
-|-----------------|-----------|-------------|----------------------------------|
-| database | string | Field | Database name |
-| table_name | string | Field | Table name |
-| datanode_id | int32 | Field | DataNode node ID |
-| region_id | int32 | Field | Region ID |
-| time_partition | int64 | Field | Time partition ID |
-| size_in_bytes | int64 | Field | Disk space occupied (in bytes) |
-
-**Query Examples**:
-
-```SQL
--- Query all data;
-select * from information_schema.table_disk_usage;
-```
-
-```Bash
-+---------+-------------------+-----------+---------+--------------+-------------+
-| database| table_name|datanode_id|region_id|time_partition|size_in_bytes|
-+---------+-------------------+-----------+---------+--------------+-------------+
-|database1| table1| 1| 3| 2864| 867|
-|database1| table11| 1| 3| 2864| 0|
-|database1| table3| 1| 3| 2864| 0|
-|database1| table1| 1| 3| 2865| 1411|
-|database1| table11| 1| 3| 2865| 0|
-|database1| table3| 1| 3| 2865| 0|
-|database1| table1| 1| 3| 2925| 590|
-|database1| table11| 1| 3| 2925| 0|
-|database1| table3| 1| 3| 2925| 0|
-|database1| table1| 1| 4| 2864| 883|
-|database1| table11| 1| 4| 2864| 0|
-|database1| table3| 1| 4| 2864| 0|
-|database1| table1| 1| 4| 2865| 1224|
-|database1| table11| 1| 4| 2865| 0|
-|database1| table3| 1| 4| 2865| 0|
-|database1| table1| 1| 4| 2888| 0|
-|database1| table11| 1| 4| 2888| 0|
-|database1| table3| 1| 4| 2888| 205|
-| etth| tab_cov_forecast| 1| 8| 0| 0|
-| etth| tab_real| 1| 8| 0| 963|
-| etth|tab_target_forecast| 1| 8| 0| 0|
-| etth| tab_cov_forecast| 1| 9| 0| 448|
-| etth| tab_real| 1| 9| 0| 0|
-| etth|tab_target_forecast| 1| 9| 0| 0|
-+---------+-------------------+-----------+---------+--------------+-------------+
-```
-
-```SQL
--- Specify query conditions;
-select * from information_schema.table_disk_usage where region_id = 4 and table_name like '%1';
-```
-
-```Bash
-+---------+----------+-----------+---------+--------------+-------------+
-| database|table_name|datanode_id|region_id|time_partition|size_in_bytes|
-+---------+----------+-----------+---------+--------------+-------------+
-|database1| table1| 1| 4| 2864| 883|
-|database1| table11| 1| 4| 2864| 0|
-|database1| table1| 1| 4| 2865| 1224|
-|database1| table11| 1| 4| 2865| 0|
-|database1| table1| 1| 4| 2888| 0|
-|database1| table11| 1| 4| 2888| 0|
-+---------+----------+-----------+---------+--------------+-------------+
-```
-
-
-## 3. Permission Description
-
-* GRANT/REVOKE operations are not supported for the `information_schema` database or any of its tables.
-* All users can view `information_schema` database details via the `SHOW DATABASES` statement.
-* All users can list system tables via `SHOW TABLES FROM information_schema`.
-* All users can inspect system table structures using the `DESC` statement.
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Basis-Function_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/Basis-Function_timecho.md
deleted file mode 100644
index 0010eebda..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/Basis-Function_timecho.md
+++ /dev/null
@@ -1,2392 +0,0 @@
-
-
-
-# Basic Functions
-
-## 1. Comparison Functions and Operators
-
-### 1.1 Basic Comparison Operators
-
-Comparison operators are used to compare two values and return the comparison result (`true` or `false`).
-
-| Operators | Description |
-| :-------- | :----------------------- |
-| < | Less than |
-| > | Greater than |
-| <= | Less than or equal to |
-| >= | Greater than or equal to |
-| = | Equal to |
-| <> | Not equal to |
-| != | Not equal to |
-
-#### 1.1.1 Comparison rules:
-
-1. All types can be compared with themselves.
-2. Numeric types (INT32, INT64, FLOAT, DOUBLE, TIMESTAMP) can be compared with each other.
-3. Character types (STRING, TEXT) can also be compared with each other.
-4. Comparisons between types other than those mentioned above will result in an error.
-
-### 1.2 BETWEEN Operator
-
-1. The `BETWEEN `operator is used to determine whether a value falls within a specified range.
-2. The `NOT BETWEEN` operator is used to determine whether a value does not fall within a specified range.
-3. The `BETWEEN` and `NOT BETWEEN` operators can be used to evaluate any sortable type.
-4. The value, minimum, and maximum parameters for `BETWEEN` and `NOT BETWEEN` must be of the same type, otherwise an error will occur.
-
-Syntax:
-
-```SQL
- value BETWEEN min AND max:
- value NOT BETWEEN min AND max:
-```
-
-Example 1 :BETWEEN
-
-```SQL
--- Query records where temperature is between 85.0 and 90.0
-SELECT * FROM table1 WHERE temperature BETWEEN 85.0 AND 90.0;
-```
-
-Example 2 : NOT BETWEEN
-
-```
--- Query records where humidity is not between 35.0 and 40.0
-SELECT * FROM table1 WHERE humidity NOT BETWEEN 35.0 AND 40.0;
-```
-
-### 1.3 IS NULL Operator
-
-1. These operators apply to all data types.
-
-Example 1: Query records where temperature is NULL
-
-```SQL
-SELECT * FROM table1 WHERE temperature IS NULL;
-```
-
-Example 2: Query records where humidity is not NULL
-
-```SQL
-SELECT * FROM table1 WHERE humidity IS NOT NULL;
-```
-
-### 1.4 IN Operator
-
-1. The `IN` operator can be used in the `WHERE `clause to compare a column with a list of values.
-2. These values can be provided by a static array or scalar expressions.
-
-Syntax:
-
-```SQL
-... WHERE column [NOT] IN ('value1','value2', expression1)
-```
-
-Example 1: Static array: Query records where region is 'Beijing' or 'Shanghai'
-
-```SQL
-SELECT * FROM table1 WHERE region IN ('Beijing', 'Shanghai');
---Equivalent to
-SELECT * FROM region WHERE name = 'Beijing' OR name = 'Shanghai';
-```
-
-Example 2: Scalar expression: Query records where temperature is among specific values
-
-```SQL
-SELECT * FROM table1 WHERE temperature IN (85.0, 90.0);
-```
-
-Example 3: Query records where region is not 'Beijing' or 'Shanghai'
-
-```SQL
-SELECT * FROM table1 WHERE region NOT IN ('Beijing', 'Shanghai');
-```
-
-### 1.5 GREATEST and LEAST
-
-The `GREATEST` function returns the maximum value from a list of arguments, while the `LEAST` function returns the minimum value. The return type matches the input data type.
-
-Key Behaviors:
-1. NULL Handling: Returns NULL if all arguments are NULL.
-2. Parameter Requirements: Requires at least 2 arguments.
-3. Type Constraints: All arguments must have the same data type.
-4. Supported Types: `BOOLEAN`、`FLOAT`、`DOUBLE`、`INT32`、`INT64`、`STRING`、`TEXT`、`TIMESTAMP`、`DATE`
-
-**Syntax:**
-
-```sql
- greatest(value1, value2, ..., valueN)
- least(value1, value2, ..., valueN)
-```
-
-**Examples:**
-
-```sql
--- Retrieve the maximum value between `temperature` and `humidity` in `table2`
-SELECT GREATEST(temperature,humidity) FROM table2;
-
--- Retrieve the minimum value between `temperature` and `humidity` in `table2`
-SELECT LEAST(temperature,humidity) FROM table2;
-```
-
-## 2. Aggregate functions
-
-### 2.1 Overview
-
-1. Aggregate functions are many-to-one functions. They perform aggregate calculations on a set of values to obtain a single aggregate result.
-
-2. Except for `COUNT()`, all other aggregate functions ignore null values and return null when there are no input rows or all values are null. For example, `SUM()` returns null instead of zero, and `AVG()` does not include null values in the count.
-
-### 2.2 Supported Aggregate Functions
-
-| Function Name | Description | Allowed Input Types | Output Type |
-|:-----------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------|
-| COUNT | Counts the number of data points. | All types | INT64 |
-| COUNT_IF | COUNT_IF(exp) counts the number of rows that satisfy a specified boolean expression. | `exp` must be a boolean expression,(e.g. `count_if(temperature>20)`) | INT64 |
-| APPROX_COUNT_DISTINCT | The APPROX_COUNT_DISTINCT(x[, maxStandardError]) function provides an approximation of COUNT(DISTINCT x), returning the estimated number of distinct input values. | `x`: The target column to be calculated, supports all data types. `maxStandardError` (optional): Specifies the maximum standard error allowed for the function's result. Valid range is [0.0040625, 0.26]. Defaults to 0.023 if not specified. | INT64 |
-| APPROX_MOST_FREQUENT | The APPROX_MOST_FREQUENT(x, k, capacity) function is used to approximately calculate the top k most frequent elements in a dataset. It returns a JSON-formatted string where the keys are the element values and the values are their corresponding approximate frequencies. (Available since V2.0.5.1) | `x` : The column to be calculated, supporting all existing data types in IoTDB; `k`: The number of top-k most frequent values to return; `capacity`: The number of buckets used for computation, which relates to memory usage—a larger value reduces error but consumes more memory, while a smaller value increases error but uses less memory. | STRING |
-| APPROX_PERCENTILE | The APPROX_PERCENTILE function calculates the value at a specified percentile in a dataset, helping quickly understand data distribution (e.g., median, quartiles). It supports weighted percentile calculation. If the percentile does not point to an exact position, it returns a linear interpolation of adjacent values at that position.Memory usage depends on the number of centroids, and the maximum number of centroids can be limited using the compression parameter. Error can be estimated using empirical formulas.Note: This function is supported since V2.0.9.1. | Unweighted Version: APPROX_PERCENTILE(x, percentage) x: Column to compute. Supports all numeric types: INT32, INT64, FLOAT, DOUBLE, TIMESTAMP. percentage: Target percentile, DOUBLE type. Weighted Version: APPROX_PERCENTILE(x, w, percentage) x: Column to compute. Supports all numeric types: INT32, INT64, FLOAT, DOUBLE, TIMESTAMP. w: Weight column, integer type (must align with the length of x; NULL or 0 means the row is ignored). percentage: Target percentile, DOUBLE type. | Same as the input column x. |
-| SUM | Calculates the sum. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| AVG | Calculates the average. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| MAX | Finds the maximum value. | All types | Same as input type |
-| MIN | Finds the minimum value. | All types | Same as input type |
-| FIRST | Finds the value with the smallest timestamp that is not NULL. | All types | Same as input type |
-| LAST | Finds the value with the largest timestamp that is not NULL. | All types | Same as input type |
-| STDDEV | Alias for STDDEV_SAMP, calculates the sample standard deviation. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| STDDEV_POP | Calculates the population standard deviation. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| STDDEV_SAMP | Calculates the sample standard deviation. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| VARIANCE | Alias for VAR_SAMP, calculates the sample variance. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| VAR_POP | Calculates the population variance. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| VAR_SAMP | Calculates the sample variance. | INT32 INT64 FLOAT DOUBLE | DOUBLE |
-| EXTREME | Finds the value with the largest absolute value. If the largest absolute values of positive and negative values are equal, returns the positive value. | INT32 INT64 FLOAT DOUBLE | Same as input type |
-| MODE | Finds the mode. Note: 1. There is a risk of memory exception when the number of distinct values in the input sequence is too large; 2. If all elements have the same frequency, i.e., there is no mode, a random element is returned; 3. If there are multiple modes, a random mode is returned; 4. NULL values are also counted in frequency, so even if not all values in the input sequence are NULL, the final result may still be NULL. | All types | Same as input type |
-| MAX_BY | MAX_BY(x, y) finds the value of x corresponding to the maximum y in the binary input x and y. MAX_BY(time, x) returns the timestamp when x is at its maximum. | x and y can be of any type | Same as the data type of the first input x |
-| MIN_BY | MIN_BY(x, y) finds the value of x corresponding to the minimum y in the binary input x and y. MIN_BY(time, x) returns the timestamp when x is at its minimum. | x and y can be of any type | Same as the data type of the first input x |
-| FIRST_BY | FIRST_BY(x, y) finds the value of x in the same row when y is the first non-null value. | x and y can be of any type | Same as the data type of the first input x |
-| LAST_BY | LAST_BY(x, y) finds the value of x in the same row when y is the last non-null value. | x and y can be of any type | Same as the data type of the first input x |
-
-
-### 2.3 Examples
-
-#### 2.3.1 Example Data
-
-The [Example Data page](../Reference/Sample-Data.md) contains SQL statements for building table structures and inserting data. Download and execute these statements in the IoTDB CLI to import the data into IoTDB. You can use this data to test and execute the SQL statements in the examples and obtain the corresponding results.
-
-#### 2.3.2 Count
-
-Counts the number of rows in the entire table and the number of non-null values in the `temperature` column.
-
-```SQL
-IoTDB> select count(*), count(temperature) from table1;
-```
-
-The execution result is as follows:
-
-> Note: Only the COUNT function can be used with *, otherwise an error will occur.
-
-```SQL
-+-----+-----+
-|_col0|_col1|
-+-----+-----+
-| 18| 12|
-+-----+-----+
-Total line number = 1
-It costs 0.834s
-```
-
-
-#### 2.3.3 Count_if
-
-Count `Non-Null` `arrival_time` Records in `table2`
-
-```sql
-select count_if(arrival_time is not null) from table2;
-```
-
-The execution result is as follows:
-
-```sql
-+-----+
-|_col0|
-+-----+
-| 4|
-+-----+
-Total line number = 1
-It costs 0.047s
-```
-
-#### 2.3.4 Approx_count_distinct
-
-Retrieve the number of distinct values in the `temperature` column from `table1`.
-
-```sql
-IoTDB> SELECT COUNT(DISTINCT temperature) as origin, APPROX_COUNT_DISTINCT(temperature) as approx FROM table1;
-IoTDB> SELECT COUNT(DISTINCT temperature) as origin, APPROX_COUNT_DISTINCT(temperature,0.006) as approx FROM table1;
-```
-
-The execution result is as follows:
-
-```sql
-+------+------+
-|origin|approx|
-+------+------+
-| 3| 3|
-+------+------+
-Total line number = 1
-It costs 0.022s
-```
-
-#### 2.3.5 Approx_most_frequent
-
-Query the top 2 most frequent values in the `temperature` column of `table1`.
-
-```sql
-IoTDB> select approx_most_frequent(temperature,2,100) as topk from table1;
-```
-
-The execution result is as follows:
-
-```sql
-+-------------------+
-| topk|
-+-------------------+
-|{"85.0":6,"90.0":5}|
-+-------------------+
-Total line number = 1
-It costs 0.064s
-```
-
-#### 2.3.6 Approx_Percentile
-
-Calculate the 90th percentile of the `temperature` column and the 50th percentile (median) of the `humidity` column from `table1` respectively, and return these two approximate percentile values.
-
-```SQL
-SELECT APPROX_PERCENTILE(temperature,0.9), APPROX_PERCENTILE(humidity,0.5) FROM table1;
-```
-
-**Execution Result:**
-
-```SQL
-+-----+-----+
-|_col0|_col1|
-+-----+-----+
-| 90.0| 35.2|
-+-----+-----+
-Total line number = 1
-It costs 0.206s
-```
-
-#### 2.3.7 First
-
-Finds the values with the smallest timestamp that are not NULL in the `temperature` and `humidity` columns.
-
-```SQL
-IoTDB> select first(temperature), first(humidity) from table1;
-```
-
-The execution result is as follows:
-
-```SQL
-+-----+-----+
-|_col0|_col1|
-+-----+-----+
-| 90.0| 35.1|
-+-----+-----+
-Total line number = 1
-It costs 0.170s
-```
-
-#### 2.3.8 Last
-
-Finds the values with the largest timestamp that are not NULL in the `temperature` and `humidity` columns.
-
-```SQL
-IoTDB> select last(temperature), last(humidity) from table1;
-```
-
-The execution result is as follows:
-
-```SQL
-+-----+-----+
-|_col0|_col1|
-+-----+-----+
-| 90.0| 34.8|
-+-----+-----+
-Total line number = 1
-It costs 0.211s
-```
-
-#### 2.3.9 First_by
-
-Finds the `time` value of the row with the smallest timestamp that is not NULL in the `temperature` column, and the `humidity` value of the row with the smallest timestamp that is not NULL in the `temperature` column.
-
-```SQL
-IoTDB> select first_by(time, temperature), first_by(humidity, temperature) from table1;
-```
-
-The execution result is as follows:
-
-```SQL
-+-----------------------------+-----+
-| _col0|_col1|
-+-----------------------------+-----+
-|2024-11-26T13:37:00.000+08:00| 35.1|
-+-----------------------------+-----+
-Total line number = 1
-It costs 0.269s
-```
-
-#### 2.3.10 Last_by
-
-Queries the `time` value of the row with the largest timestamp that is not NULL in the `temperature` column, and the `humidity` value of the row with the largest timestamp that is not NULL in the `temperature` column.
-
-```SQL
-IoTDB> select last_by(time, temperature), last_by(humidity, temperature) from table1;
-```
-
-The execution result is as follows:
-
-```SQL
-+-----------------------------+-----+
-| _col0|_col1|
-+-----------------------------+-----+
-|2024-11-30T14:30:00.000+08:00| 34.8|
-+-----------------------------+-----+
-Total line number = 1
-It costs 0.070s
-```
-
-#### 2.3.11 Max_by
-
-Queries the `time` value of the row where the `temperature` column is at its maximum, and the `humidity` value of the row where the `temperature` column is at its maximum.
-
-```SQL
-IoTDB> select max_by(time, temperature), max_by(humidity, temperature) from table1;
-```
-
-The execution result is as follows:
-
-```SQL
-+-----------------------------+-----+
-| _col0|_col1|
-+-----------------------------+-----+
-|2024-11-30T09:30:00.000+08:00| 35.2|
-+-----------------------------+-----+
-Total line number = 1
-It costs 0.172s
-```
-
-#### 2.3.12 Min_by
-
-Queries the `time` value of the row where the `temperature` column is at its minimum, and the `humidity` value of the row where the `temperature` column is at its minimum.
-
-```SQL
-select min_by(time, temperature), min_by(humidity, temperature) from table1;
-```
-
-The execution result is as follows:
-
-```SQL
-+-----------------------------+-----+
-| _col0|_col1|
-+-----------------------------+-----+
-|2024-11-29T10:00:00.000+08:00| null|
-+-----------------------------+-----+
-Total line number = 1
-It costs 0.244s
-```
-
-
-## 3. Logical operators
-
-### 3.1 Overview
-
-Logical operators are used to combine conditions or negate conditions, returning a Boolean result (`true` or `false`).
-
-Below are the commonly used logical operators along with their descriptions:
-
-| Operator | Description | Example |
-| :------- | :-------------------------------- | :------ |
-| AND | True only if both values are true | a AND b |
-| OR | True if either value is true | a OR b |
-| NOT | True when the value is false | NOT a |
-
-### 3.2 Impact of NULL on Logical Operators
-
-#### 3.2.1 AND Operator
-
-- If one or both sides of the expression are `NULL`, the result may be `NULL`.
-- If one side of the `AND` operator is `FALSE`, the expression result is `FALSE`.
-
-Examples:
-
-```SQL
-NULL AND true -- null
-NULL AND false -- false
-NULL AND NULL -- null
-```
-
-#### 3.2.2 OR Operator
-
-- If one or both sides of the expression are `NULL`, the result may be `NULL`.
-- If one side of the `OR` operator is `TRUE`, the expression result is `TRUE`.
-
-Examples:
-
-```SQL
-NULL OR NULL -- null
-NULL OR false -- null
-NULL OR true -- true
-```
-
-##### 3.2.2.1 Truth Table
-
-The following truth table illustrates how `NULL` is handled in `AND` and `OR` operators:
-
-| a | b | a AND b | a OR b |
-| :---- | :---- | :------ | :----- |
-| TRUE | TRUE | TRUE | TRUE |
-| TRUE | FALSE | FALSE | TRUE |
-| TRUE | NULL | NULL | TRUE |
-| FALSE | TRUE | FALSE | TRUE |
-| FALSE | FALSE | FALSE | FALSE |
-| FALSE | NULL | FALSE | NULL |
-| NULL | TRUE | NULL | TRUE |
-| NULL | FALSE | FALSE | NULL |
-| NULL | NULL | NULL | NULL |
-
-#### 3.2.3 NOT Operator
-
-The logical negation of `NULL` remains `NULL`.
-
-Example:
-
-```SQL
-NOT NULL -- null
-```
-
-##### 3.2.3.1 Truth Table
-
-The following truth table illustrates how `NULL` is handled in the `NOT` operator:
-
-| a | NOT a |
-| :---- | :---- |
-| TRUE | FALSE |
-| FALSE | TRUE |
-| NULL | NULL |
-
-## 4. Date and Time Functions and Operators
-
-### 4.1 now() -> Timestamp
-
-Returns the current timestamp.
-
-### 4.2 date_bin(interval, Timestamp[, Timestamp]) -> Timestamp
-
-The `date_bin` function is used for handling time data by rounding a timestamp (`Timestamp`) to the boundary of a specified time interval (`interval`).
-
-#### **Syntax:**
-
-```SQL
--- Calculates the time interval starting from timestamp 0 and returns the nearest interval boundary to the specified timestamp.
-date_bin(interval,source)
-
--- Calculates the time interval starting from the origin timestamp and returns the nearest interval boundary to the specified timestamp.
-date_bin(interval,source,origin)
-
---Supported time units for interval:
---Years (y), months (mo), weeks (week), days (d), hours (h), minutes (M), seconds (s), milliseconds (ms), microseconds (µs), nanoseconds (ns).
---source: Must be of timestamp type.
-```
-
-#### **Parameters**:
-
-| Parameter | Description |
-| :-------- | :----------------------------------------------------------- |
-| interval | 1. Time interval 2. Supported units: `y`, `mo`, `week`, `d`, `h`, `M`, `s`, `ms`, `µs`, `ns`. |
-| source | 1. The timestamp column or expression to be calculated. 2. Must be of timestamp type. |
-| origin | The reference timestamp. |
-
-#### 4.2.1Syntax Rules :
-
-1. If `origin` is not specified, the default reference timestamp is `1970-01-01T00:00:00Z` (Beijing time: `1970-01-01 08:00:00`).
-2. `interval` must be a non-negative number with a time unit. If `interval` is `0ms`, the function returns `source` directly without calculation.
-3. If `origin` or `source` is negative, it represents a time point before the epoch. `date_bin` will calculate and return the relevant time period.
-4. If `source` is `null`, the function returns `null`.
-5. Mixing months and non-month time units (e.g., `1 MONTH 1 DAY`) is not supported due to ambiguity.
-
-> For example, if the starting point is **April 30, 2000**, calculating `1 DAY` first and then `1 MONTH` results in **June 1, 2000**, whereas calculating `1 MONTH` first and then `1 DAY` results in **May 31, 2000**. The resulting dates are different.
-
-#### 4.2.2 Examples
-
-##### Example Data
-
-The [Example Data page](../Reference/Sample-Data.md) contains SQL statements for building table structures and inserting data. Download and execute these statements in the IoTDB CLI to import the data into IoTDB. You can use this data to test and execute the SQL statements in the examples and obtain the corresponding results.
-
-#### Example 1: Without Specifying the Origin Timestamp
-
-```SQL
-SELECT
- time,
- date_bin(1h,time) as time_bin
-FROM
- table1;
-```
-
-Result**:**
-
-```Plain
-+-----------------------------+-----------------------------+
-| time| time_bin|
-+-----------------------------+-----------------------------+
-|2024-11-30T09:30:00.000+08:00|2024-11-30T09:00:00.000+08:00|
-|2024-11-30T14:30:00.000+08:00|2024-11-30T14:00:00.000+08:00|
-|2024-11-29T10:00:00.000+08:00|2024-11-29T10:00:00.000+08:00|
-|2024-11-27T16:38:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:39:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:40:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:41:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:42:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:43:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:44:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-29T11:00:00.000+08:00|2024-11-29T11:00:00.000+08:00|
-|2024-11-29T18:30:00.000+08:00|2024-11-29T18:00:00.000+08:00|
-|2024-11-28T08:00:00.000+08:00|2024-11-28T08:00:00.000+08:00|
-|2024-11-28T09:00:00.000+08:00|2024-11-28T09:00:00.000+08:00|
-|2024-11-28T10:00:00.000+08:00|2024-11-28T10:00:00.000+08:00|
-|2024-11-28T11:00:00.000+08:00|2024-11-28T11:00:00.000+08:00|
-|2024-11-26T13:37:00.000+08:00|2024-11-26T13:00:00.000+08:00|
-|2024-11-26T13:38:00.000+08:00|2024-11-26T13:00:00.000+08:00|
-+-----------------------------+-----------------------------+
-Total line number = 18
-It costs 0.683s
-```
-
-#### Example 2: Specifying the Origin Timestamp
-
-```SQL
-SELECT
- time,
- date_bin(1h, time, 2024-11-29T18:30:00.000) as time_bin
-FROM
- table1;
-```
-
-Result:
-
-```Plain
-+-----------------------------+-----------------------------+
-| time| time_bin|
-+-----------------------------+-----------------------------+
-|2024-11-30T09:30:00.000+08:00|2024-11-30T09:30:00.000+08:00|
-|2024-11-30T14:30:00.000+08:00|2024-11-30T14:30:00.000+08:00|
-|2024-11-29T10:00:00.000+08:00|2024-11-29T09:30:00.000+08:00|
-|2024-11-27T16:38:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-27T16:39:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-27T16:40:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-27T16:41:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-27T16:42:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-27T16:43:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-27T16:44:00.000+08:00|2024-11-27T16:30:00.000+08:00|
-|2024-11-29T11:00:00.000+08:00|2024-11-29T10:30:00.000+08:00|
-|2024-11-29T18:30:00.000+08:00|2024-11-29T18:30:00.000+08:00|
-|2024-11-28T08:00:00.000+08:00|2024-11-28T07:30:00.000+08:00|
-|2024-11-28T09:00:00.000+08:00|2024-11-28T08:30:00.000+08:00|
-|2024-11-28T10:00:00.000+08:00|2024-11-28T09:30:00.000+08:00|
-|2024-11-28T11:00:00.000+08:00|2024-11-28T10:30:00.000+08:00|
-|2024-11-26T13:37:00.000+08:00|2024-11-26T13:30:00.000+08:00|
-|2024-11-26T13:38:00.000+08:00|2024-11-26T13:30:00.000+08:00|
-+-----------------------------+-----------------------------+
-Total line number = 18
-It costs 0.056s
-```
-
-#### Example 3: Negative Origin
-
-```SQL
-SELECT
- time,
- date_bin(1h, time, 1969-12-31 00:00:00.000) as time_bin
-FROM
- table1;
-```
-
-Result:
-
-```Plain
-+-----------------------------+-----------------------------+
-| time| time_bin|
-+-----------------------------+-----------------------------+
-|2024-11-30T09:30:00.000+08:00|2024-11-30T09:00:00.000+08:00|
-|2024-11-30T14:30:00.000+08:00|2024-11-30T14:00:00.000+08:00|
-|2024-11-29T10:00:00.000+08:00|2024-11-29T10:00:00.000+08:00|
-|2024-11-27T16:38:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:39:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:40:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:41:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:42:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:43:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:44:00.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-29T11:00:00.000+08:00|2024-11-29T11:00:00.000+08:00|
-|2024-11-29T18:30:00.000+08:00|2024-11-29T18:00:00.000+08:00|
-|2024-11-28T08:00:00.000+08:00|2024-11-28T08:00:00.000+08:00|
-|2024-11-28T09:00:00.000+08:00|2024-11-28T09:00:00.000+08:00|
-|2024-11-28T10:00:00.000+08:00|2024-11-28T10:00:00.000+08:00|
-|2024-11-28T11:00:00.000+08:00|2024-11-28T11:00:00.000+08:00|
-|2024-11-26T13:37:00.000+08:00|2024-11-26T13:00:00.000+08:00|
-|2024-11-26T13:38:00.000+08:00|2024-11-26T13:00:00.000+08:00|
-+-----------------------------+-----------------------------+
-Total line number = 18
-It costs 0.203s
-```
-
-#### Example 4: Interval of 0
-
-```SQL
-SELECT
- time,
- date_bin(0ms, time) as time_bin
-FROM
- table1;
-```
-
-Result**:**
-
-```Plain
-+-----------------------------+-----------------------------+
-| time| time_bin|
-+-----------------------------+-----------------------------+
-|2024-11-30T09:30:00.000+08:00|2024-11-30T09:30:00.000+08:00|
-|2024-11-30T14:30:00.000+08:00|2024-11-30T14:30:00.000+08:00|
-|2024-11-29T10:00:00.000+08:00|2024-11-29T10:00:00.000+08:00|
-|2024-11-27T16:38:00.000+08:00|2024-11-27T16:38:00.000+08:00|
-|2024-11-27T16:39:00.000+08:00|2024-11-27T16:39:00.000+08:00|
-|2024-11-27T16:40:00.000+08:00|2024-11-27T16:40:00.000+08:00|
-|2024-11-27T16:41:00.000+08:00|2024-11-27T16:41:00.000+08:00|
-|2024-11-27T16:42:00.000+08:00|2024-11-27T16:42:00.000+08:00|
-|2024-11-27T16:43:00.000+08:00|2024-11-27T16:43:00.000+08:00|
-|2024-11-27T16:44:00.000+08:00|2024-11-27T16:44:00.000+08:00|
-|2024-11-29T11:00:00.000+08:00|2024-11-29T11:00:00.000+08:00|
-|2024-11-29T18:30:00.000+08:00|2024-11-29T18:30:00.000+08:00|
-|2024-11-28T08:00:00.000+08:00|2024-11-28T08:00:00.000+08:00|
-|2024-11-28T09:00:00.000+08:00|2024-11-28T09:00:00.000+08:00|
-|2024-11-28T10:00:00.000+08:00|2024-11-28T10:00:00.000+08:00|
-|2024-11-28T11:00:00.000+08:00|2024-11-28T11:00:00.000+08:00|
-|2024-11-26T13:37:00.000+08:00|2024-11-26T13:37:00.000+08:00|
-|2024-11-26T13:38:00.000+08:00|2024-11-26T13:38:00.000+08:00|
-+-----------------------------+-----------------------------+
-Total line number = 18
-It costs 0.107s
-```
-
-#### Example 5: Source is NULL
-
-```SQL
-SELECT
- arrival_time,
- date_bin(1h,arrival_time) as time_bin
-FROM
- table1;
-```
-
-Result:
-
-```Plain
-+-----------------------------+-----------------------------+
-| arrival_time| time_bin|
-+-----------------------------+-----------------------------+
-| null| null|
-|2024-11-30T14:30:17.000+08:00|2024-11-30T14:00:00.000+08:00|
-|2024-11-29T10:00:13.000+08:00|2024-11-29T10:00:00.000+08:00|
-|2024-11-27T16:37:01.000+08:00|2024-11-27T16:00:00.000+08:00|
-| null| null|
-|2024-11-27T16:37:03.000+08:00|2024-11-27T16:00:00.000+08:00|
-|2024-11-27T16:37:04.000+08:00|2024-11-27T16:00:00.000+08:00|
-| null| null|
-| null| null|
-|2024-11-27T16:37:08.000+08:00|2024-11-27T16:00:00.000+08:00|
-| null| null|
-|2024-11-29T18:30:15.000+08:00|2024-11-29T18:00:00.000+08:00|
-|2024-11-28T08:00:09.000+08:00|2024-11-28T08:00:00.000+08:00|
-| null| null|
-|2024-11-28T10:00:11.000+08:00|2024-11-28T10:00:00.000+08:00|
-|2024-11-28T11:00:12.000+08:00|2024-11-28T11:00:00.000+08:00|
-|2024-11-26T13:37:34.000+08:00|2024-11-26T13:00:00.000+08:00|
-|2024-11-26T13:38:25.000+08:00|2024-11-26T13:00:00.000+08:00|
-+-----------------------------+-----------------------------+
-Total line number = 18
-It costs 0.319s
-```
-
-### 4.3 Extract Function
-
-This function is used to extract the value of a specific part of a date. (Supported from version V2.0.6)
-
-#### 4.3.1 Syntax Definition
-
-```SQL
-EXTRACT (identifier FROM expression)
-```
-
-* Parameter Description
- * **expression**: `TIMESTAMP` type or a time constant
- * **identifier**: The valid ranges and corresponding return value types are shown in the table below.
-
- | Valid Range | Return Type | Return Range |
- |----------------------|---------------|--------------------|
- | `YEAR` | `INT64` | `/` |
- | `QUARTER` | `INT64` | `1-4` |
- | `MONTH` | `INT64` | `1-12` |
- | `WEEK` | `INT64` | `1-53` |
- | `DAY_OF_MONTH (DAY)` | `INT64` | `1-31` |
- | `DAY_OF_WEEK (DOW)` | `INT64` | `1-7` |
- | `DAY_OF_YEAR (DOY)` | `INT64` | `1-366` |
- | `HOUR` | `INT64` | `0-23` |
- | `MINUTE` | `INT64` | `0-59` |
- | `SECOND` | `INT64` | `0-59` |
- | `MS` | `INT64` | `0-999` |
- | `US` | `INT64` | `0-999` |
- | `NS` | `INT64` | `0-999` |
-
-
-#### 4.3.2 Usage Example
-
-Using table1 from the [Sample Data](../Reference/Sample-Data.md) as the source data, query the average temperature for the first 12 hours of each day within a certain period.
-
-```SQL
-IoTDB:database1> select format('%1$tY-%1$tm-%1$td',date_bin(1d,time)) as fmtdate,avg(temperature) as avgtp from table1 where time >= 2024-11-26T00:00:00 and time <= 2024-11-30T23:59:59 and extract(hour from time) <= 12 group by date_bin(1d,time) order by date_bin(1d,time)
-+----------+-----+
-| fmtdate|avgtp|
-+----------+-----+
-|2024-11-28| 86.0|
-|2024-11-29| 85.0|
-|2024-11-30| 90.0|
-+----------+-----+
-Total line number = 3
-It costs 0.041s
-```
-
-Introduction to the `Format` function: [Format Function](../SQL-Manual/Basis-Function_timecho.md#_7-2-format-function)
-
-Introduction to the `Date_bin` function: [Date_bin Funtion](../SQL-Manual/Basis-Function_timecho.md#_4-2-date-bin-interval-timestamp-timestamp-timestamp)
-
-
-## 5. Mathematical Functions and Operators
-
-### 5.1 Mathematical Operators
-
-| **Operator** | **Description** |
-| :----------- | :---------------------------------------------- |
-| + | Addition |
-| - | Subtraction |
-| * | Multiplication |
-| / | Division (integer division performs truncation) |
-| % | Modulus (remainder) |
-| - | Negation |
-
-### 5.2 Mathematical functions
-
-| Function Name | Description | Input | Output | Usage |
-|:--------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------|:-------------------| :--------- |
-| sin | Sine | double, float, INT64, INT32 | double | sin(x) |
-| cos | Cosine | double, float, INT64, INT32 | double | cos(x) |
-| tan | Tangent | double, float, INT64, INT32 | double | tan(x) |
-| asin | Inverse Sine | double, float, INT64, INT32 | double | asin(x) |
-| acos | Inverse Cosine | double, float, INT64, INT32 | double | acos(x) |
-| atan | Inverse Tangent | double, float, INT64, INT32 | double | atan(x) |
-| sinh | Hyperbolic Sine | double, float, INT64, INT32 | double | sinh(x) |
-| cosh | Hyperbolic Cosine | double, float, INT64, INT32 | double | cosh(x) |
-| tanh | Hyperbolic Tangent | double, float, INT64, INT32 | double | tanh(x) |
-| degrees | Converts angle `x` in radians to degrees | double, float, INT64, INT32 | double | degrees(x) |
-| radians | Radian Conversion from Degrees | double, float, INT64, INT32 | double | radians(x) |
-| abs | Absolute Value | double, float, INT64, INT32 | Same as input type | abs(x) |
-| sign | Returns the sign of `x`: - If `x = 0`, returns `0` - If `x > 0`, returns `1` - If `x < 0`, returns `-1` For `double/float` inputs: - If `x = NaN`, returns `NaN` - If `x = +Infinity`, returns `1.0` - If `x = -Infinity`, returns `-1.0` | double, float, INT64, INT32 | Same as input type | sign(x) |
-| ceil | Rounds `x` up to the nearest integer | double, float, INT64, INT32 | double | ceil(x) |
-| floor | Rounds `x` down to the nearest integer | double, float, INT64, INT32 | double | floor(x) |
-| exp | Returns `e^x` (Euler's number raised to the power of `x`) | double, float, INT64, INT32 | double | exp(x) |
-| ln | Returns the natural logarithm of `x` | double, float, INT64, INT32 | double | ln(x) |
-| log10 | Returns the base 10 logarithm of `x` | double, float, INT64, INT32 | double | log10(x) |
-| round | Rounds `x` to the nearest integer | double, float, INT64, INT32 | double | round(x) |
-| round | Rounds `x` to `d` decimal places | double, float, INT64, INT32 | double | round(x, d) |
-| sqrt | Returns the square root of `x`. | double, float, INT64, INT32 | double | sqrt(x) |
-| e | Returns Euler’s number `e`. | | double | e() |
-| pi | Pi (π) | | double | pi() |
-
-## 6. Bitwise Functions
-
-> Supported from version V2.0.6
-
-Example raw data is as follows:
-
-```
-IoTDB:database1> select * from bit_table
-+-----------------------------+---------+------+-----+
-| time|device_id|length|width|
-+-----------------------------+---------+------+-----+
-|2025-10-29T15:59:42.957+08:00| d1| 14| 12|
-|2025-10-29T15:58:59.399+08:00| d3| 15| 10|
-|2025-10-29T15:59:32.769+08:00| d2| 13| 12|
-+-----------------------------+---------+------+-----+
-
--- Table creation statement
-CREATE TABLE bit_table(time TIMESTAMP TIME, device_id STRING TAG, length INT32 FIELD, width INT32 FIELD);
-
--- Write data
-INSERT INTO bit_table values(2025-10-29 15:59:42.957, 'd1', 14, 12),(2025-10-29 15:58:59.399, 'd3', 15, 10),(2025-10-29 15:59:32.769, 'd2', 13, 12);
-```
-
-### 6.1 bit\_count(num, bits)
-
-The `bit_count(num, bits)`function is used to count the number of 1s in the binary representation of the integer `num`under the specified bit width `bits`.
-
-#### 6.1.1 Syntax Definition
-
-```
-bit_count(num, bits) -> INT64 -- The return type is Int64
-```
-
-* Parameter Description
-
- * **num:** Any integer value (int32 or int64)
- * **bits:** Integer value, with a valid range of 2\~64
-
-Note: An error will be raised if the number of `bits`is insufficient to represent `num`(using **two's complement signed representation**): `Argument exception, the scalar function num must be representable with the bits specified. [num] cannot be represented with [bits] bits.`
-
-* Usage Methods
-
- * Two specific numbers: `bit_count(9, 64)`
- * Column and a number: `bit_count(column1, 64)`
- * Between two columns: `bit_count(column1, column2)`
-
-#### 6.1.2 Usage Examples
-
-```
--- Two specific numbers
-IoTDB:database1> select distinct bit_count(2,8) from bit_table
-+-----+
-|_col0|
-+-----+
-| 1|
-+-----+
--- Two specific numbers
-IoTDB:database1> select distinct bit_count(-5,8) from bit_table
-+-----+
-|_col0|
-+-----+
-| 7|
-+-----+
--- Column and a number
-IoTDB:database1> select length,bit_count(length,8) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 3|
-| 15| 4|
-| 13| 3|
-+------+-----+
--- Insufficient bits
-IoTDB:database1> select length,bit_count(length,2) from bit_table
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Argument exception, the scalar function num must be representable with the bits specified. 13 cannot be represented with 2 bits.
-```
-
-### 6.2 bitwise\_and(x, y)
-
-The `bitwise_and(x, y)`function performs a logical AND operation on each bit of two integers x and y based on their two's complement representation, and returns the bitwise AND operation result.
-
-#### 6.2.1 Syntax Definition
-
-```
-bitwise_and(x, y) -> INT64 -- The return type is Int64
-```
-
-* Parameter Description
-
- * **x, y**: Must be integer values of data type Int32 or Int64
-* Usage Methods
-
- * Two specific numbers: `bitwise_and(19, 25)`
- * Column and a number: `bitwise_and(column1, 25)`
- * Between two columns: `bitwise_and(column1, column2)`
-
-#### 6.2.2 Usage Examples
-
-```
---Two specific numbers
-IoTDB:database1> select distinct bitwise_and(19,25) from bit_table
-+-----+
-|_col0|
-+-----+
-| 17|
-+-----+
---Column and a number
-IoTDB:database1> select length, bitwise_and(length,25) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 8|
-| 15| 9|
-| 13| 9|
-+------+-----+
---Between two columns
-IoTDB:database1> select length, width, bitwise_and(length, width) from bit_table
-+------+-----+-----+
-|length|width|_col2|
-+------+-----+-----+
-| 14| 12| 12|
-| 15| 10| 10|
-| 13| 12| 12|
-+------+-----+-----+
-```
-
-### 6.3 bitwise\_not(x)
-
-The `bitwise_not(x)`function performs a logical NOT operation on each bit of the integer x based on its two's complement representation, and returns the bitwise NOT operation result.
-
-#### 6.3.1 Syntax Definition
-
-```
-bitwise_not(x) -> INT64 -- The return type is Int64
-```
-
-* Parameter Description
-
- * **x**: Must be an integer value of data type Int32 or Int64
-* Usage Methods
-
- * Specific number: `bitwise_not(5)`
- * Single column operation: `bitwise_not(column1)`
-
-#### 6.3.2 Usage Examples
-
-```
--- Specific number
-IoTDB:database1> select distinct bitwise_not(5) from bit_table
-+-----+
-|_col0|
-+-----+
-| -6|
-+-----+
--- Single column
-IoTDB:database1> select length, bitwise_not(length) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| -15|
-| 15| -16|
-| 13| -14|
-+------+-----+
-```
-
-### 6.4 bitwise\_or(x, y)
-
-The `bitwise_or(x,y)`function performs a logical OR operation on each bit of two integers x and y based on their two's complement representation, and returns the bitwise OR operation result.
-
-#### 6.4.1 Syntax Definition
-
-```
-bitwise_or(x, y) -> INT64 -- The return type is Int64
-```
-
-* Parameter Description
-
- * **x, y**: Must be integer values of data type Int32 or Int64
-* Usage Methods
-
- * Two specific numbers: `bitwise_or(19, 25)`
- * Column and a number: `bitwise_or(column1, 25)`
- * Between two columns: `bitwise_or(column1, column2)`
-
-#### 6.4.2 Usage Examples
-
-```
--- Two specific numbers
-IoTDB:database1> select distinct bitwise_or(19,25) from bit_table
-+-----+
-|_col0|
-+-----+
-| 27|
-+-----+
--- Column and a number
-IoTDB:database1> select length,bitwise_or(length,25) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 31|
-| 15| 31|
-| 13| 29|
-+------+-----+
--- Between two columns
-IoTDB:database1> select length, width, bitwise_or(length,width) from bit_table
-+------+-----+-----+
-|length|width|_col2|
-+------+-----+-----+
-| 14| 12| 14|
-| 15| 10| 15|
-| 13| 12| 13|
-+------+-----+-----+
-```
-
-### 6.5 bitwise\_xor(x, y)
-
-The `bitwise_xor(x,y)`function performs a logical XOR (exclusive OR) operation on each bit of two integers x and y based on their two's complement representation, and returns the bitwise XOR operation result. XOR rule: same bits result in 0, different bits result in 1.
-
-#### 6.5.1 Syntax Definition
-
-```
-bitwise_xor(x, y) -> INT64 -- The return type is Int64
-```
-
-* Parameter Description
-
- * **x, y**: Must be integer values of data type Int32 or Int64
-* Usage Methods
-
- * Two specific numbers: `bitwise_xor(19, 25)`
- * Column and a number: `bitwise_xor(column1, 25)`
- * Between two columns: `bitwise_xor(column1, column2)`
-
-#### 6.5.2 Usage Examples
-
-```
--- Two specific numbers
-IoTDB:database1> select distinct bitwise_xor(19,25) from bit_table
-+-----+
-|_col0|
-+-----+
-| 10|
-+-----+
--- Column and a number
-IoTDB:database1> select length,bitwise_xor(length,25) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 23|
-| 15| 22|
-| 13| 20|
-+------+-----+
--- Between two columns
-IoTDB:database1> select length, width, bitwise_xor(length,width) from bit_table
-+------+-----+-----+
-|length|width|_col2|
-+------+-----+-----+
-| 14| 12| 2|
-| 15| 10| 5|
-| 13| 12| 1|
-+------+-----+-----+
-```
-
-### 6.6 bitwise\_left\_shift(value, shift)
-
-The `bitwise_left_shift(value, shift)`function returns the result of shifting the binary representation of integer `value`left by `shift`bits. The left shift operation moves bits towards the higher-order direction, filling the vacated lower-order bits with 0s, and discarding the higher-order bits that overflow. Equivalent to: `value << shift`.
-
-#### 6.6.1 Syntax Definition
-
-```
-bitwise_left_shift(value, shift) -> [same as value] -- The return type is the same as the data type of value
-```
-
-* Parameter Description
-
- * **value**: The integer value to shift left. Must be of data type Int32 or Int64.
- * **shift**: The number of bits to shift. Must be of data type Int32 or Int64.
-* Usage Methods
-
- * Two specific numbers: `bitwise_left_shift(1, 2)`
- * Column and a number: `bitwise_left_shift(column1, 2)`
- * Between two columns: `bitwise_left_shift(column1, column2)`
-
-#### 6.6.2 Usage Examples
-
-```
---Two specific numbers
-IoTDB:database1> select distinct bitwise_left_shift(1,2) from bit_table
-+-----+
-|_col0|
-+-----+
-| 4|
-+-----+
--- Column and a number
-IoTDB:database1> select length, bitwise_left_shift(length,2) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 56|
-| 15| 60|
-| 13| 52|
-+------+-----+
--- Between two columns
-IoTDB:database1> select length, width, bitwise_left_shift(length,width) from bit_table
-+------+-----+-----+
-|length|width|_col2|
-+------+-----+-----+
-| 14| 12| 0|
-| 15| 10| 0|
-| 13| 12| 0|
-+------+-----+-----+
-```
-
-### 6.7 bitwise\_right\_shift(value, shift)
-
-The `bitwise_right_shift(value, shift)`function returns the result of logically (unsigned) right shifting the binary representation of integer `value`by `shift`bits. The logical right shift operation moves bits towards the lower-order direction, filling the vacated higher-order bits with 0s, and discarding the lower-order bits that overflow.
-
-#### 6.7.1 Syntax Definition
-
-```
-bitwise_right_shift(value, shift) -> [same as value] -- The return type is the same as the data type of value
-```
-
-* Parameter Description
-
- * **value**: The integer value to shift right. Must be of data type Int32 or Int64.
- * **shift**: The number of bits to shift. Must be of data type Int32 or Int64.
-* Usage Methods
-
- * Two specific numbers: `bitwise_right_shift(8, 3)`
- * Column and a number: `bitwise_right_shift(column1, 3)`
- * Between two columns: `bitwise_right_shift(column1, column2)`
-
-#### 6.7.2 Usage Examples
-
-```
---Two specific numbers
-IoTDB:database1> select distinct bitwise_right_shift(8,3) from bit_table
-+-----+
-|_col0|
-+-----+
-| 1|
-+-----+
---Column and a number
-IoTDB:database1> select length, bitwise_right_shift(length,3) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 1|
-| 15| 1|
-| 13| 1|
-+------+-----+
---Between two columns
-IoTDB:database1> select length, width, bitwise_right_shift(length,width) from bit_table
-+------+-----+-----+
-|length|width|_col2|
-+------+-----+-----+
-| 14| 12| 0|
-| 15| 10| 0|
-| 13| 12| 0|
-```
-
-### 6.8 bitwise\_right\_shift\_arithmetic(value, shift)
-
-The `bitwise_right_shift_arithmetic(value, shift)`function returns the result of arithmetically right shifting the binary representation of integer `value`by `shift`bits. The arithmetic right shift operation moves bits towards the lower-order direction, discarding the lower-order bits that overflow, and filling the vacated higher-order bits with the sign bit (0 for positive numbers, 1 for negative numbers) to preserve the sign of the number.
-
-#### 6.8.1 Syntax Definition
-
-```
-bitwise_right_shift_arithmetic(value, shift) -> [same as value]-- The return type is the same as the data type of value
-```
-
-* Parameter Description
-
- * **value**: The integer value to shift right. Must be of data type Int32 or Int64.
- * **shift**: The number of bits to shift. Must be of data type Int32 or Int64.
-* Usage Methods:
-
- * Two specific numbers: `bitwise_right_shift_arithmetic(12, 2)`
- * Column and a number: `bitwise_right_shift_arithmetic(column1, 64)`
- * Between two columns: `bitwise_right_shift_arithmetic(column1, column2)`
-
-#### 6.8.2 Usage Examples
-
-```
---Two specific numbers
-IoTDB:database1> select distinct bitwise_right_shift_arithmetic(12,2) from bit_table
-+-----+
-|_col0|
-+-----+
-| 3|
-+-----+
--- Column and a number
-IoTDB:database1> select length, bitwise_right_shift_arithmetic(length,3) from bit_table
-+------+-----+
-|length|_col1|
-+------+-----+
-| 14| 1|
-| 15| 1|
-| 13| 1|
-+------+-----+
---Between two columns
-IoTDB:database1> select length, width, bitwise_right_shift_arithmetic(length,width) from bit_table
-+------+-----+-----+
-|length|width|_col2|
-+------+-----+-----+
-| 14| 12| 0|
-| 15| 10| 0|
-| 13| 12| 0|
-+------+-----+-----+
-```
-
-## 7. Binary Functions
-
-> Supported since V2.0.9.1
-
-### 7.1 Base64 Encoding Functions
-| Function Name | Description | Input Type | Output Type |
-| ----------------------------- | ----------------------------------------------------------------------------- | --------------------- | ------------- |
-| `to_base64(input)` | Encode input data to standard Base64 string for binary data transmission/storage | STRING/TEXT/BLOB | STRING |
-| `from_base64(input)` | Decode standard Base64 string to raw binary data (inverse of to_base64) | STRING/TEXT | BLOB |
-| `to_base64url(input)` | Encode input to URL-safe Base64URL string (replace +/_, omit padding) | STRING/TEXT/BLOB | STRING |
-| `from_base64url(input)` | Decode Base64URL string to raw binary data (inverse of to_base64url) | STRING/TEXT | BLOB |
-| `to_base32(input)` | Encode input to Base32 string (case-insensitive, high readability) | STRING/TEXT/BLOB | STRING |
-| `from_base32(input)` | Decode Base32 string to raw binary data (inverse of to_base32) | STRING/TEXT | BLOB |
-
-**Examples**
-1. to_base64: Encode string to standard Base64
-```SQL
-SELECT DISTINCT to_base64('IoTDB Binary Test') FROM table1;
-```
-```
-+----------------------------+
-| _col0|
-+----------------------------+
-|SW9URELkuozov5vliLbmtYvor5U=|
-+----------------------------+
-```
-
-2. from_base64: Decode Base64 to binary
-```SQL
-SELECT DISTINCT from_base64('SW9URELkuozov5vliLbmtYvor5U=') FROM table1;
-```
-```
-+------------------------------------------+
-| _col0|
-+------------------------------------------+
-|0x496f544442e4ba8ce8bf9be588b6e6b58be8af95|
-+------------------------------------------+
-```
-
-3. to_base64url: Encode to URL-safe Base64URL
-```SQL
-SELECT DISTINCT to_base64url('https://iotdb.apache.org') FROM table1;
-```
-```
-+--------------------------------+
-| _col0|
-+--------------------------------+
-|aHR0cHM6Ly9pb3RkYi5hcGFjaGUub3Jn|
-+--------------------------------+
-```
-
-4. from_base64url: Decode Base64URL
-```SQL
-SELECT DISTINCT from_base64url('aHR0cHM6Ly9pb3RkYi5hcGFjaGUub3Jn') FROM table1;
-```
-```
-+--------------------------------------------------+
-| _col0|
-+--------------------------------------------------+
-|0x68747470733a2f2f696f7464622e6170616368652e6f7267|
-+--------------------------------------------------+
-```
-
-5. to_base32: Encode to Base32
-```SQL
-SELECT DISTINCT to_base32('123456') FROM table1;
-```
-```
-+----------------+
-| _col0|
-+----------------+
-|GEZDGNBVGY======|
-+----------------+
-```
-
-6. from_base32: Decode Base32
-```SQL
-SELECT DISTINCT from_base32('GEZDGNBVGY======') FROM table1;
-```
-```
-+--------------+
-| _col0|
-+--------------+
-|0x313233343536|
-+--------------+
-```
-
-### 7.2 Hex Encoding Functions
-| Function Name | Description | Input Type | Output Type |
-| ------------------------ | -------------------------------------------------- | --------------------- | ------------- |
-| `TO_HEX(input)` | Convert input to hex string (raw byte view) | STRING/TEXT/BLOB | STRING |
-| `FROM_HEX(input)` | Decode hex string to raw binary (inverse of TO_HEX) | STRING/TEXT | BLOB |
-
-**Examples**
-1. TO_HEX: Convert string/binary to hex
-```SQL
-SELECT DISTINCT TO_HEX('test') FROM table1;
-```
-```
-+--------+
-| _col0|
-+--------+
-|74657374|
-+--------+
-```
-
-2. FROM_HEX: Decode hex to binary
-```SQL
-SELECT DISTINCT FROM_HEX('74657374') FROM table1;
-```
-```
-+----------+
-| _col0|
-+----------+
-|0x74657374|
-+----------+
-```
-
-### 7.3 Basic Binary Functions
-| Function Name | Description | Input Type | Output Type |
-| ----------------------------------- | ------------------------------------------------------------------------------------------ | -------------------------- | -------------- |
-| `length(input)` | Return data length: chars for TEXT, bytes for BLOB/OBJECT | STRING/TEXT/BLOB/OBJECT | INT32 |
-| `REVERSE(input)` | Reverse input: chars for TEXT, bytes for BLOB | STRING/TEXT/BLOB | Same as input |
-| `LPAD(input, length, pad_bytes)` | Left-pad/truncate BLOB to target byte length | BLOB, INT32/INT64, BLOB | BLOB |
-| `RPAD(input, length, pad_bytes)` | Right-pad/truncate BLOB to target byte length | BLOB, INT32/INT64, BLOB | BLOB |
-
-**Examples**
-1. length: Get data length
-```SQL
-SELECT DISTINCT length('IoTDB') FROM table1;
-```
-```
-+-----+
-|_col0|
-+-----+
-| 5|
-+-----+
-```
-
-2. REVERSE: Reverse data
-```SQL
-SELECT DISTINCT REVERSE('12345') FROM table1;
-```
-```
-+-----+
-|_col0|
-+-----+
-|54321|
-+-----+
-```
-
-3. LPAD: Left-pad BLOB
-```SQL
-SELECT DISTINCT LPAD(FROM_HEX('74657374'),5, FROM_HEX('74657374')) FROM table1;
-```
-```
-+------------+
-| _col0|
-+------------+
-|0x7474657374|
-+------------+
-```
-
-4. RPAD: Right-pad BLOB
-```SQL
-SELECT DISTINCT RPAD(FROM_HEX('74657374'),5, FROM_HEX('74657374')) FROM table1;
-```
-```
-+------------+
-| _col0|
-+------------+
-|0x7465737474|
-+------------+
-```
-
-### 7.4 Integer Encoding Functions
-| Function Name | Description | Input Type | Output Type |
-| ------------------------------------- | ------------------------------------------------------------------------- | ------------ | ------------ |
-| `to_big_endian_32(input)` | Convert INT32 to 4-byte big-endian BLOB (network byte order) | INT32 | BLOB |
-| `to_big_endian_64(input)` | Convert INT64 to 8-byte big-endian BLOB | INT64 | BLOB |
-| `from_big_endian_32(input)` | Decode 4-byte big-endian BLOB to INT32 | BLOB | INT32 |
-| `from_big_endian_64(input)` | Decode 8-byte big-endian BLOB to INT64 | BLOB | INT64 |
-| `to_little_endian_32(input)` | Convert INT32 to 4-byte little-endian BLOB (x86 architecture) | INT32 | BLOB |
-| `to_little_endian_64(input)` | Convert INT64 to 8-byte little-endian BLOB | INT64 | BLOB |
-| `from_little_endian_32(input)` | Decode 4-byte little-endian BLOB to INT32 | BLOB | INT32 |
-| `from_little_endian_64(input)` | Decode 8-byte little-endian BLOB to INT64 | BLOB | INT64 |
-
-**Examples**
-1. Big-endian encode/decode
-```SQL
-SELECT DISTINCT TO_HEX(to_big_endian_32(12345)) FROM table1;
-```
-```
-+--------+
-| _col0|
-+--------+
-|00003039|
-+--------+
-```
-
-2. Little-endian encode/decode
-```SQL
-SELECT DISTINCT TO_HEX(to_little_endian_32(12345)) FROM table1;
-```
-```
-+--------+
-| _col0|
-+--------+
-|39300000|
-+--------+
-```
-
-### 7.5 Floating-Point Encoding Functions
-| Function Name | Description | Input Type | Output Type |
-| ------------------------------- | ------------------------------------------------------------------------- | ------------ | ------------ |
-| `to_ieee754_32(input)` | Convert FLOAT to 4-byte big-endian IEEE754 BLOB | FLOAT | BLOB |
-| `to_ieee754_64(input)` | Convert DOUBLE to 8-byte big-endian IEEE754 BLOB | DOUBLE | BLOB |
-| `from_ieee754_32(input)` | Decode 4-byte IEEE754 BLOB to FLOAT | BLOB | FLOAT |
-| `from_ieee754_64(input)` | Decode 8-byte IEEE754 BLOB to DOUBLE | BLOB | DOUBLE |
-
-**Examples**
-1. FLOAT encode/decode
-```SQL
-SELECT DISTINCT from_ieee754_32(FROM_HEX('42b40000')) FROM table1;
-```
-```
-+-----+
-|_col0|
-+-----+
-| 90.0|
-+-----+
-```
-
-2. DOUBLE encode/decode
-```SQL
-SELECT DISTINCT from_ieee754_64(FROM_HEX('400921fb54411744')) FROM table1;
-```
-```
-+------------+
-| _col0|
-+------------+
-|3.1415926535|
-+------------+
-```
-
-### 7.6 Hash Functions
-| Function Name | Description | Input Type | Output Type |
-| --------------------------------- | ------------------------------------------------------------------------- | ------------------ | ------------- |
-| `sha256(input)` | SHA-256 cryptographic hash (collision-resistant) | STRING/TEXT/BLOB | BLOB(32B) |
-| `SHA512(input)` | SHA-512 cryptographic hash (higher security) | STRING/TEXT/BLOB | BLOB(64B) |
-| `SHA1(input)` | SHA-1 hash (not secure for cryptography) | STRING/TEXT/BLOB | BLOB(20B) |
-| `MD5(input)` | MD5 hash (non-cryptographic checksum) | STRING/TEXT/BLOB | BLOB(16B) |
-| `CRC32(input)` | CRC32 checksum (fast error detection) | STRING/TEXT/BLOB | INT64 |
-| `spooky_hash_v2_32(input)` | 32-bit SpookyHashV2 (high-performance non-crypto) | STRING/TEXT/BLOB | BLOB(4B) |
-| `spooky_hash_v2_64(input)` | 64-bit SpookyHashV2 | STRING/TEXT/BLOB | BLOB(8B) |
-| `xxhash64(input)` | 64-bit xxHash (ultra-fast) | STRING/TEXT/BLOB | BLOB(8B) |
-| `murmur3(input)` | 128-bit MurmurHash3 (uniform distribution) | STRING/TEXT/BLOB | BLOB(16B) |
-
-**Examples**
-```SQL
-SELECT DISTINCT TO_HEX(sha256('test')) FROM table1;
-```
-```
-+----------------------------------------------------------------+
-| _col0|
-+----------------------------------------------------------------+
-|9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08|
-+----------------------------------------------------------------+
-```
-
-### 7.7 HMAC Functions
-| Function Name | Description | Input Type | Output Type |
-| ------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------- | ------------- |
-| `hmac_md5(data, key)` | HMAC-MD5 message authentication code | data: STRING/TEXT/BLOB key: STRING/TEXT | BLOB(16B) |
-| `hmac_sha1(data, key)` | HMAC-SHA1 authentication code | data: STRING/TEXT/BLOB key: STRING/TEXT | BLOB(20B) |
-| `hmac_sha256(data, key)` | HMAC-SHA256 (industry-recommended, high security) | data: STRING/TEXT/BLOB key: STRING/TEXT | BLOB(32B) |
-| `hmac_sha512(data, key)` | HMAC-SHA512 (maximum security) | data: STRING/TEXT/BLOB key: STRING/TEXT | BLOB(64B) |
-
-**Examples**
-```SQL
-SELECT DISTINCT TO_HEX(hmac_sha256('user_data_123', 'iotdb_secret_key')) FROM table1;
-```
-```
-+----------------------------------------------------------------+
-| _col0|
-+----------------------------------------------------------------+
-|73b6f26bbcb5192dbe2cb83745b0fc48c63418fa674b0bf62fabe7f8747f3afd|
-+----------------------------------------------------------------+
-```
-
-
-## 8. Conditional Expressions
-
-### 8.1 CASE
-
-CASE expressions come in two forms: **Simple CASE** and **Searched CASE**.
-
-#### 8.1.1 Simple CASE
-
-The simple form evaluates each value expression from left to right until it finds a match with the given expression:
-
-```SQL
-CASE expression
- WHEN value THEN result
- [ WHEN ... ]
- [ ELSE result ]
-END
-```
-
-If a matching value is found, the corresponding result is returned. If no match is found, the result from the `ELSE` clause (if provided) is returned; otherwise, `NULL` is returned.
-
-Example:
-
-```SQL
-SELECT a,
- CASE a
- WHEN 1 THEN 'one'
- WHEN 2 THEN 'two'
- ELSE 'many'
- END
-```
-
-#### 8.1.2 Searched CASE
-
-The searched form evaluates each Boolean condition from left to right until a `TRUE` condition is found, then returns the corresponding result:
-
-```SQL
-CASE
- WHEN condition THEN result
- [ WHEN ... ]
- [ ELSE result ]
-END
-```
-
-If no condition evaluates to `TRUE`, the `ELSE` clause result (if provided) is returned; otherwise, `NULL` is returned.
-
-Example:
-
-```SQL
-SELECT a, b,
- CASE
- WHEN a = 1 THEN 'aaa'
- WHEN b = 2 THEN 'bbb'
- ELSE 'ccc'
- END
-```
-
-### 8.2 COALESCE
-
-Returns the first non-null value from the given list of parameters.
-
-```SQL
-coalesce(value1, value2[, ...])
-```
-
-### 8.3 IF Expression
-
-The IF expression has two forms: one that specifies only the true value, and another that specifies both the true value and the false value.
-
-| Form | Description | Output Type Restrictions |
-| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ |
-| `IF(condition, true_value)` | If the condition evaluates to true, `true_value` is computed and returned; otherwise, `null` is returned and `true_value` is not evaluated. | — |
-| `IF(condition, true_value, false_value)` | If the condition evaluates to true, `true_value` is computed and returned; otherwise, `false_value` is computed and returned. | The data types of `true_value` and `false_value` **must be exactly the same**. Implicit type conversion is not supported. |
-
-> Supported since V2.0.9.1
-
-**Examples:**
-
-1. Equivalent examples of IF and CASE expressions:
-```SQL
--- IF syntax
-SELECT
- device_id,
- temperature,
- IF(temperature > 85, 'High Value', 'Low Value')
-FROM table1;
-
--- Equivalent CASE syntax
-SELECT
- device_id,
- temperature,
- CASE
- WHEN temperature > 85 THEN 'High Value'
- ELSE 'Low Value'
- END
-FROM table1;
-```
-
-2. Output type restriction examples:
-```SQL
--- Succeeds
--- temperature (float) and humidity (float) have matching types
-SELECT IF(temperature > 85, temperature, humidity) FROM table1;
-
--- Fails
--- temperature (float) and status (boolean) have mismatched types
-SELECT IF(temperature > 85, temperature, status) FROM table1;
-```
-
-
-## 9. Conversion Functions
-
-### 9.1 Conversion Functions
-
-#### 9.1.1 cast(value AS type) → type
-
-Explicitly converts a value to the specified type. This can be used to convert strings (`VARCHAR`) to numeric types or numeric values to string types. Starting from V2.0.8, OBJECT type can be explicitly cast to STRING type.
-
-If the conversion fails, a runtime error is thrown.
-
-Example:
-
-```SQL
-SELECT *
- FROM table1
- WHERE CAST(time AS DATE)
- IN (CAST('2024-11-27' AS DATE), CAST('2024-11-28' AS DATE));
-```
-
-#### 9.1.2 try_cast(value AS type) → type
-
-Similar to `CAST()`. If the conversion fails, returns `NULL` instead of throwing an error.
-
-Example:
-
-```SQL
-SELECT *
- FROM table1
- WHERE try_cast(time AS DATE)
- IN (try_cast('2024-11-27' AS DATE), try_cast('2024-11-28' AS DATE));
-```
-
-### 9.2 Format Function
-
-This function generates and returns a formatted string based on a specified format string and input arguments. Similar to Java’s `String.format` or C’s `printf`, it allows developers to construct dynamic string templates using placeholder syntax. Predefined format specifiers in the template are replaced precisely with corresponding argument values, producing a complete string that adheres to specific formatting requirements.
-
-#### 9.2.1 Syntax
-
-```SQL
-format(pattern, ...args) -> STRING
-```
-
-**Parameters**
-
-* `pattern`: A format string containing static text and one or more format specifiers (e.g., `%s`, `%d`), or any expression returning a `STRING`/`TEXT` type.
-* `args`: Input arguments to replace format specifiers. Constraints:
- * Number of arguments ≥ 1.
- * Multiple arguments must be comma-separated (e.g., `arg1, arg2`).
- * Total arguments can exceed the number of specifiers in `pattern` but cannot be fewer, otherwise an exception is triggered.
-
-**Return Value**
-
-* Formatted result string of type `STRING`.
-
-#### 9.2.2 Usage Examples
-
-1. Format Floating-Point Numbers
- ```SQL
- IoTDB:database1> SELECT format('%.5f', humidity) FROM table1 WHERE humidity = 35.4;
- +--------+
- | _col0|
- +--------+
- |35.40000|
- +--------+
- ```
-2. Format Integers
- ```SQL
- IoTDB:database1> SELECT format('%03d', 8) FROM table1 LIMIT 1;
- +-----+
- |_col0|
- +-----+
- | 008|
- +-----+
- ```
-3. Format Dates and Timestamps
-
-* Locale-Specific Date
-
-```SQL
-IoTDB:database1> SELECT format('%1$tA, %1$tB %1$te, %1$tY', 2024-01-01) FROM table1 LIMIT 1;
-+--------------------+
-| _col0|
-+--------------------+
-|Monday, January 1, 2024|
-+--------------------+
-```
-
-* Remove Timezone Information
-
-```SQL
-IoTDB:database1> SELECT format('%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL', 2024-01-01T00:00:00.000+08:00) FROM table1 LIMIT 1;
-+-----------------------+
-| _col0|
-+-----------------------+
-|2024-01-01 00:00:00.000|
-+-----------------------+
-```
-
-* Second-Level Timestamp Precision
-
-```SQL
-IoTDB:database1> SELECT format('%1$tF %1$tT', 2024-01-01T00:00:00.000+08:00) FROM table1 LIMIT 1;
-+-------------------+
-| _col0|
-+-------------------+
-|2024-01-01 00:00:00|
-+-------------------+
-```
-
-* Date/Time Format Symbols
-
-| **Symbol** | ** Description** |
-| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 'H' | 24-hour format (two digits, zero-padded), i.e. 00 - 23 |
-| 'I' | 12-hour format (two digits, zero-padded), i.e. 01 - 12 |
-| 'k' | 24-hour format (no padding), i.e. 0 - 23 |
-| 'l' | 12-hour format (no padding), i.e. 1 - 12 |
-| 'M' | Minute (two digits, zero-padded), i.e. 00 - 59 |
-| 'S' | Second (two digits, zero-padded; supports leap seconds), i.e. 00 - 60 |
-| 'L' | Millisecond (three digits, zero-padded), i.e. 000 - 999 |
-| 'N' | Nanosecond (nine digits, zero-padded), i.e. 000000000 - 999999999。 |
-| 'p' | Locale-specific lowercase AM/PM marker (e.g., "am", "pm"). Prefix with`T`to force uppercase (e.g., "AM"). |
-| 'z' | RFC 822 timezone offset from GMT (e.g.,`-0800`). Adjusts for daylight saving. Uses the JVM's default timezone for`long`/`Long`/`Date`. |
-| 'Z' | Timezone abbreviation (e.g., "PST"). Adjusts for daylight saving. Uses the JVM's default timezone; Formatter's timezone overrides the argument's timezone if specified. |
-| 's' | Seconds since Unix epoch (1970-01-01 00:00:00 UTC), i.e. Long.MIN\_VALUE/1000 to Long.MAX\_VALUE/1000。 |
-| 'Q' | Milliseconds since Unix epoch, i.e. Long.MIN\_VALUE 至 Long.MAX\_VALUE。 |
-
-* Common Date/Time Conversion Characters
-
-| **Symbol** | ** Description** |
-| ---------------- | -------------------------------------------------------------------- |
-| 'B' | Locale-specific full month name, for example "January", "February" |
-| 'b' | Locale-specific abbreviated month name, for example "Jan", "Feb" |
-| 'h' | Same as`b` |
-| 'A' | Locale-specific full weekday name, for example "Sunday", "Monday" |
-| 'a' | Locale-specific short weekday name, for example "Sun", "Mon" |
-| 'C' | Year divided by 100 (two digits, zero-padded) |
-| 'Y' | Year (minimum 4 digits, zero-padded) |
-| 'y' | Last two digits of year (zero-padded) |
-| 'j' | Day of year (three digits, zero-padded) |
-| 'm' | Month (two digits, zero-padded) |
-| 'd' | Day of month (two digits, zero-padded) |
-| 'e' | Day of month (no padding) |
-
-4. Format Strings
- ```SQL
- IoTDB:database1> SELECT format('The measurement status is: %s', status) FROM table2 LIMIT 1;
- +-------------------------------+
- | _col0|
- +-------------------------------+
- |The measurement status is: true|
- +-------------------------------+
- ```
-5. Format Percentage Sign
- ```SQL
- IoTDB:database1> SELECT format('%s%%', 99.9) FROM table1 LIMIT 1;
- +-----+
- |_col0|
- +-----+
- |99.9%|
- +-----+
- ```
-
-#### 9.2.3 Format Conversion Failure Scenarios
-
-1. Type Mismatch Errors
-
-* Timestamp Type Conflict
-
- If the format specifier includes time-related tokens (e.g., `%Y-%m-%d`) but the argument:
-
- * Is a non-`DATE`/`TIMESTAMP` type value. ◦
- * Requires sub-day precision (e.g., `%H`, `%M`) but the argument is not `TIMESTAMP`.
-
-```SQL
--- Example 1
-IoTDB:database1> SELECT format('%1$tA, %1$tB %1$te, %1$tY', humidity) from table2 limit 1
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Invalid format string: %1$tA, %1$tB %1$te, %1$tY (IllegalFormatConversion: A != java.lang.Float)
-
--- Example 2
-IoTDB:database1> SELECT format('%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL', humidity) from table1 limit 1
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Invalid format string: %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL (IllegalFormatConversion: Y != java.lang.Float)
-```
-
-* Floating-Point Type Conflict
-
- Using `%f` with non-numeric arguments (e.g., strings or booleans):
-
-```SQL
-IoTDB:database1> select format('%.5f',status) from table1 where humidity = 35.4
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Invalid format string: %.5f (IllegalFormatConversion: f != java.lang.Boolean)
-```
-
-2. Argument Count Mismatch
- The number of arguments must equal or exceed the number of format specifiers.
-
- ```SQL
- IoTDB:database1> SELECT format('%.5f %03d', humidity) FROM table1 WHERE humidity = 35.4;
- Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Invalid format string: %.5f %03d (MissingFormatArgument: Format specifier '%03d')
- ```
-3. Invalid Invocation Errors
-
- Triggered if:
-
- * Total arguments < 2 (must include `pattern` and at least one argument).•
- * `pattern` is not of type `STRING`/`TEXT`.
-
-```SQL
--- Example 1
-IoTDB:database1> select format('%s') from table1 limit 1
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Scalar function format must have at least two arguments, and first argument pattern must be TEXT or STRING type.
-
---Example 2
-IoTDB:database1> select format(123, humidity) from table1 limit 1
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Scalar function format must have at least two arguments, and first argument pattern must be TEXT or STRING type.
-```
-
-
-## 10. String Functions and Operators
-
-### 10.1 String operators
-
-#### 10.1.1 || Operator
-
-The `||` operator is used for string concatenation and functions the same as the `concat` function.
-
-#### 10.1.2 LIKE Statement
-
- The `LIKE` statement is used for pattern matching. For detailed usage, refer to Pattern Matching:[LIKE](#1-like-运算符).
-
-### 10.2 String Functions
-
-| Function Name | Description | Input | Output | Usage |
-| :------------ |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------| :------ | :----------------------------------------------------------- |
-| `length` | Returns the number of characters in a string (not byte length). | `string` (the string whose length is to be calculated) | INT32 | length(string) |
-| `upper` | Converts all letters in a string to uppercase. | string | String | upper(string) |
-| `lower` | Converts all letters in a string to lowercase. | string | String | lower(string) |
-| `trim` | Removes specified leading and/or trailing characters from a string. **Parameters:** - `specification` (optional): Specifies which side to trim: - `BOTH`: Removes characters from both sides (default). - `LEADING`: Removes characters from the beginning. - `TRAILING`: Removes characters from the end. - `trimcharacter` (optional): Character to be removed (default is whitespace). - `string`: The target string. | string | String | trim([ [ specification ] [ trimcharacter ] FROM ] string) Example:`trim('!' FROM '!foo!');` —— `'foo'` |
-| `strpos` | Returns the position of the first occurrence of `subStr` in `sourceStr`. **Notes:** - Position starts at `1`. - Returns `0` if `subStr` is not found. - Positioning is based on characters, not byte arrays. | `sourceStr` (string to be searched), `subStr` (substring to find) | INT32 | strpos(sourceStr, subStr) |
-| `starts_with` | Checks if `sourceStr` starts with the specified `prefix`. | `sourceStr`, `prefix` | Boolean | starts_with(sourceStr, prefix) |
-| `ends_with` | Checks if `sourceStr` ends with the specified `suffix`. | `sourceStr`, `suffix` | Boolean | ends_with(sourceStr, suffix) |
-| `concat` | Concatenates `string1, string2, ..., stringN`. Equivalent to the `\|\|` operator. | `string`, `text` | String | concat(str1, str2, ...) or str1 \|\| str2 ... |
-| `strcmp` | Compares two strings lexicographically. **Returns:** - `-1` if `str1 < str2` - `0` if `str1 = str2` - `1` if `str1 > str2` - `NULL` if either `str1` or `str2` is `NULL` | `string1`, `string2` | INT32 | strcmp(str1, str2) |
-| `replace` | Removes all occurrences of `search` in `string`. | `string`, `search` | String | replace(string, search) |
-| `replace` | Replaces all occurrences of `search` in `string` with `replace`. | `string`, `search`, `replace` | String | replace(string, search, replace) |
-| `substring` | Extracts a substring from `start_index` to the end of the string. **Notes:** - `start_index` starts at `1`. - Returns `NULL` if input is `NULL`. - Throws an error if `start_index` is greater than string length. | `string`, `start_index` | String | substring(string from start_index)or substring(string, start_index) |
-| `substring` | Extracts a substring of `length` characters starting from `start_index`. **Notes:** - `start_index` starts at `1`. - Returns `NULL` if input is `NULL`. - Throws an error if `start_index` is greater than string length. - Throws an error if `length` is negative. - If `start_index + length` exceeds `int.MAX`, an overflow error may occur. | `string`, `start_index`, `length` | String | substring(string from start_index for length) or substring(string, start_index, length) |
-
-## 11. Pattern Matching Functions
-
-### 11.1 LIKE
-
-#### 11.1.1 Usage
-
-The `LIKE `operator is used to compare a value with a pattern. It is commonly used in the `WHERE `clause to match specific patterns within strings.
-
-#### 11.1.2 Syntax
-
-```SQL
-... column [NOT] LIKE 'pattern' ESCAPE 'character';
-```
-
-#### 11.1.3 Match rules
-
-- Matching characters is case-sensitive
-- The pattern supports two wildcard characters:
- - `_` matches any single character
- - `%` matches zero or more characters
-
-#### 11.1.4 Notes
-
-- `LIKE` pattern matching applies to the entire string by default. Therefore, if it's desired to match a sequence anywhere within a string, the pattern must start and end with a percent sign.
-- To match the escape character itself, double it (e.g., `\\` to match `\`). For example, you can use `\\` to match for `\`.
-
-#### 11.1.5 Examples
-
-#### **Example 1: Match Strings Starting with a Specific Character**
-
-- **Description:** Find all names that start with the letter `E` (e.g., `Europe`).
-
-```SQL
-SELECT * FROM table1 WHERE continent LIKE 'E%';
-```
-
-#### **Example 2: Exclude a Specific Pattern**
-
-- **Description:** Find all names that do **not** start with the letter `E`.
-
-```SQL
-SELECT * FROM table1 WHERE continent NOT LIKE 'E%';
-```
-
-#### **Example 3: Match Strings of a Specific Length**
-
-- **Description:** Find all names that start with `A`, end with `a`, and have exactly two characters in between (e.g., `Asia`).
-
-```SQL
-SELECT * FROM table1 WHERE continent LIKE 'A__a';
-```
-
-#### **Example 4: Escape Special Characters**
-
-- **Description:** Find all names that start with `South_` (e.g., `South_America`). The underscore (`_`) is a wildcard character, so it needs to be escaped using `\`.
-
-```SQL
-SELECT * FROM table1 WHERE continent LIKE 'South\_%' ESCAPE '\';
-```
-
-#### **Example 5: Match the Escape Character Itself**
-
-- **Description:** Find all names that start with 'South\'. Since `\` is the escape character, it must be escaped using `\\`.
-
-```SQL
-SELECT * FROM table1 WHERE continent LIKE 'South\\%' ESCAPE '\';
-```
-
-### 11.2 regexp_like
-
-#### 11.2.1 Usage
-
-Evaluates whether the regular expression pattern is present within the given string.
-
-#### 11.2.2 Syntax
-
-```SQL
-regexp_like(string, pattern);
-```
-
-#### 10.2.3 Notes
-
-- The pattern for `regexp_like` only needs to be contained within the string, and does not need to match the entire string.
-- To match the entire string, use the `^` and `$` anchors.
-- `^` signifies the "start of the string," and `$` signifies the "end of the string."
-- Regular expressions use the Java-defined regular syntax, but there are the following exceptions to be aware of:
- - Multiline mode
- 1. Enabled by: `(?m)`.
- 2. Recognizes only `\n` as the line terminator.
- 3. Does not support the `(?d)` flag, and its use is prohibited.
- - Case-insensitive matching
- 1. Enabled by: `(?i)`.
- 2. Based on Unicode rules, it does not support context-dependent and localized matching.
- 3. Does not support the `(?u)` flag, and its use is prohibited.
- - Character classes
- 1. Within character classes (e.g., `[A-Z123]`), `\Q` and `\E` are not supported and are treated as literals.
- - Unicode character classes (`\p{prop}`)
- 1. Underscores in names: All underscores in names must be removed (e.g., `OldItalic `instead of `Old_Italic`).
- 2. Scripts: Specify directly, without the need for `Is`, `script=`, or `sc=` prefixes (e.g., `\p{Hiragana}`).
- 3. Blocks: Must use the `In` prefix, `block=` or `blk=` prefixes are not supported (e.g., `\p{InMongolian}`).
- 4. Categories: Specify directly, without the need for `Is`, `general_category=`, or `gc=` prefixes (e.g., `\p{L}`).
- 5. Binary properties: Specify directly, without `Is` (e.g., `\p{NoncharacterCodePoint}`).
-
-#### 11.2.4 Examples
-
-#### Example 1: **Matching strings containing a specific pattern**
-
-```SQL
-SELECT regexp_like('1a 2b 14m', '\\d+b'); -- true
-```
-
-- **Explanation**: Determines whether the string '1a 2b 14m' contains a substring that matches the pattern `\d+b`.
- - `\d+` means "one or more digits".
- - `b` represents the letter b.
- - In `'1a 2b 14m'`, the substring `'2b'` matches this pattern, so it returns `true`.
-
-
-#### **Example 2: Matching the entire string**
-
-```SQL
-SELECT regexp_like('1a 2b 14m', '^\\d+b$'); -- false
-```
-
-- **Explanation**: Checks if the string `'1a 2b 14m'` matches the pattern `^\\d+b$` exactly.
- - `\d+` means "one or more digits".
- - `b` represents the letter b.
- - `'1a 2b 14m'` does not match this pattern because it does not start with digits and does not end with `b`, so it returns `false`.
-
-## 12. Timeseries Windowing Functions
-
-The sample data is as follows:
-
-```SQL
-IoTDB> SELECT * FROM bid;
-+-----------------------------+--------+-----+
-| time|stock_id|price|
-+-----------------------------+--------+-----+
-|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-+-----------------------------+--------+-----+
-
--- Create table statement
-CREATE TABLE bid(time TIMESTAMP TIME, stock_id STRING TAG, price FLOAT FIELD);
--- Insert data
-INSERT INTO bid(time, stock_id, price) VALUES('2021-01-01T09:05:00','AAPL',100.0),('2021-01-01T09:06:00','TESL',200.0),('2021-01-01T09:07:00','AAPL',103.0),('2021-01-01T09:07:00','TESL',202.0),('2021-01-01T09:09:00','AAPL',102.0),('2021-01-01T09:15:00','TESL',195.0);
-```
-
-### 12.1 HOP
-
-#### 12.1.1 Function Description
-
-The HOP function segments data into overlapping time windows for analysis, assigning each row to all windows that overlap with its timestamp. If windows overlap (when SLIDE < SIZE), data will be duplicated across multiple windows.
-
-#### 12.1.2 Function Definition
-
-```SQL
-HOP(data, timecol, size, slide[, origin])
-```
-
-#### 12.1.3 Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | --------------------------------- | ------------------------- |
-| DATA | Table | ROW SEMANTIC, PASS THROUGH | Input table |
-| TIMECOL | Scalar | String (default: 'time') | Time column |
-| SIZE | Scalar | Long integer | Window size |
-| SLIDE | Scalar | Long integer | Sliding step |
-| ORIGIN | Scalar | Timestamp (default: Unix epoch) | First window start time |
-
-
-#### 12.1.4 Returned Results
-
-The HOP function returns:
-
-* `window_start`: Window start time (inclusive)
-* `window_end`: Window end time (exclusive)
-* Pass-through columns: All input columns from DATA
-
-#### 12.1.5 Usage Example
-
-```SQL
-IoTDB> SELECT * FROM HOP(DATA => bid,TIMECOL => 'time',SLIDE => 5m,SIZE => 10m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:25:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree mode's GROUP BY TIME when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM HOP(DATA => bid,TIMECOL => 'time',SLIDE => 5m,SIZE => 10m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:25:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| AAPL|101.66666666666667|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-### 12.2 SESSION
-
-#### 12.2.1 Function Description
-
-The SESSION function groups data into sessions based on time intervals. It checks the time gap between consecutive rows—rows with gaps smaller than the threshold (GAP) are grouped into the current window, while larger gaps trigger a new window.
-
-#### 12.2.2 Function Definition
-
-```SQL
-SESSION(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], timecol, gap)
-```
-#### 12.2.3 Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | ---------------------------- | -------------------------------------- |
-| DATA | Table | SET SEMANTIC, PASS THROUGH | Input table with partition/sort keys |
-| TIMECOL | Scalar | String (default: 'time') | Time column name |
-| GAP | Scalar | Long integer | Session gap threshold |
-
-#### 12.2.4 Returned Results
-
-The SESSION function returns:
-
-* `window_start`: Time of the first row in the session
-* `window_end`: Time of the last row in the session
-* Pass-through columns: All input columns from DATA
-
-#### 12.2.5 Usage Example
-
-```SQL
-IoTDB> SELECT * FROM SESSION(DATA => bid PARTITION BY stock_id ORDER BY time,TIMECOL => 'time',GAP => 2m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree mode's GROUP BY SESSION when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM SESSION(DATA => bid PARTITION BY stock_id ORDER BY time,TIMECOL => 'time',GAP => 2m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-### 12.3 VARIATION
-
-#### 12.3.1 Function Description
-
-The VARIATION function groups data based on value differences. The first row becomes the baseline for the first window. Subsequent rows are compared to the baseline—if the difference is within the threshold (DELTA), they join the current window; otherwise, a new window starts with that row as the new baseline.
-
-#### 12.3.2 Function Definition
-
-```sql
-VARIATION(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], col, delta)
-```
-
-#### 12.3.3 Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | ---------------------------- | -------------------------------------- |
-| DATA | Table | SET SEMANTIC, PASS THROUGH | Input table with partition/sort keys |
-| COL | Scalar | String | Column for difference calculation |
-| DELTA | Scalar | Float | Difference threshold |
-
-#### 12.3.4 Returned Results
-
-The VARIATION function returns:
-
-* `window_index`: Window identifier
-* Pass-through columns: All input columns from DATA
-
-#### 12.3.5 Usage Example
-
-```sql
-IoTDB> SELECT * FROM VARIATION(DATA => bid PARTITION BY stock_id ORDER BY time,COL => 'price',DELTA => 2.0);
-+------------+-----------------------------+--------+-----+
-|window_index| time|stock_id|price|
-+------------+-----------------------------+--------+-----+
-| 0|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-| 0|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-| 1|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-| 0|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-| 1|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-| 1|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+------------+-----------------------------+--------+-----+
-
--- Equivalent to tree mode's GROUP BY VARIATION when combined with GROUP BY
-IoTDB> SELECT first(time) as window_start, last(time) as window_end, stock_id, avg(price) as avg FROM VARIATION(DATA => bid PARTITION BY stock_id ORDER BY time,COL => 'price', DELTA => 2.0) GROUP BY window_index, stock_id;
-+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|201.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:07:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.5|
-+-----------------------------+-----------------------------+--------+-----+
-```
-
-### 12.4 CAPACITY
-
-#### 12.4.1 Function Description
-
-The CAPACITY function groups data into fixed-size windows, where each window contains up to SIZE rows.
-
-#### 12.4.2 Function Definition
-
-```sql
-CAPACITY(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], size)
-```
-
-#### 12.4.3 Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | ---------------------------- | -------------------------------------- |
-| DATA | Table | SET SEMANTIC, PASS THROUGH | Input table with partition/sort keys |
-| SIZE | Scalar | Long integer | Window size (row count) |
-
-#### 12.4.4 Returned Results
-
-The CAPACITY function returns:
-
-* `window_index`: Window identifier
-* Pass-through columns: All input columns from DATA
-
-#### 12.4.5 Usage Example
-
-```sql
-IoTDB> SELECT * FROM CAPACITY(DATA => bid PARTITION BY stock_id ORDER BY time, SIZE => 2);
-+------------+-----------------------------+--------+-----+
-|window_index| time|stock_id|price|
-+------------+-----------------------------+--------+-----+
-| 0|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-| 0|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-| 1|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-| 0|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-| 0|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-| 1|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+------------+-----------------------------+--------+-----+
-
--- Equivalent to tree mode's GROUP BY COUNT when combined with GROUP BY
-IoTDB> SELECT first(time) as start_time, last(time) as end_time, stock_id, avg(price) as avg FROM CAPACITY(DATA => bid PARTITION BY stock_id ORDER BY time, SIZE => 2) GROUP BY window_index, stock_id;
-+-----------------------------+-----------------------------+--------+-----+
-| start_time| end_time|stock_id| avg|
-+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|201.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|101.5|
-|2021-01-01T09:09:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+--------+-----+
-```
-
-### 12.5 TUMBLE
-
-#### 12.5.1 Function Description
-
-The TUMBLE function assigns each row to a non-overlapping, fixed-size time window based on a timestamp attribute.
-
-#### 12.5.2 Function Definition
-
-```sql
-TUMBLE(data, timecol, size[, origin])
-```
-#### 12.5.3 Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | --------------------------------- | ------------------------- |
-| DATA | Table | ROW SEMANTIC, PASS THROUGH | Input table |
-| TIMECOL | Scalar | String (default: 'time') | Time column |
-| SIZE | Scalar | Long integer (positive) | Window size |
-| ORIGIN | Scalar | Timestamp (default: Unix epoch) | First window start time |
-
-#### 12.5.4 Returned Results
-
-The TUMBLE function returns:
-
-* `window_start`: Window start time (inclusive)
-* `window_end`: Window end time (exclusive)
-* Pass-through columns: All input columns from DATA
-
-#### 12.5.5 Usage Example
-
-```SQL
-IoTDB> SELECT * FROM TUMBLE( DATA => bid, TIMECOL => 'time', SIZE => 10m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree mode's GROUP BY TIME when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM TUMBLE(DATA => bid, TIMECOL => 'time', SIZE => 10m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-### 12.6 CUMULATE
-
-#### 12.6.1 Function Description
-
-The CUMULATE function creates expanding windows from an initial window, maintaining the same start time while incrementally extending the end time by STEP until reaching SIZE. Each window contains all elements within its range. For example, with a 1-hour STEP and 24-hour SIZE, daily windows would be: `[00:00, 01:00)`, `[00:00, 02:00)`, ..., `[00:00, 24:00)`.
-
-#### 12.6.2 Function Definition
-
-```sql
-CUMULATE(data, timecol, size, step[, origin])
-```
-
-#### 12.6.3 Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | --------------------------------- | --------------------------------------------------- |
-| DATA | Table | ROW SEMANTIC, PASS THROUGH | Input table |
-| TIMECOL | Scalar | String (default: 'time') | Time column |
-| SIZE | Scalar | Long integer (positive) | Window size (must be an integer multiple of STEP) |
-| STEP | Scalar | Long integer (positive) | Expansion step |
-| ORIGIN | Scalar | Timestamp (default: Unix epoch) | First window start time |
-
-> Note: An error `Cumulative table function requires size must be an integral multiple of step` occurs if SIZE is not divisible by STEP.
-
-#### 12.6.4 Returned Results
-
-The CUMULATE function returns:
-
-* `window_start`: Window start time (inclusive)
-* `window_end`: Window end time (exclusive)
-* Pass-through columns: All input columns from DATA
-
-#### 12.6.5 Usage Example
-
-```sql
-IoTDB> SELECT * FROM CUMULATE(DATA => bid,TIMECOL => 'time',STEP => 2m,SIZE => 10m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:16:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:18:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:06:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree mode's GROUP BY TIME when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM CUMULATE(DATA => bid,TIMECOL => 'time',STEP => 2m, SIZE => 10m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:16:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:18:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:06:00.000+08:00| AAPL| 100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00| AAPL| 101.5|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Common-Table-Expression_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/Common-Table-Expression_timecho.md
deleted file mode 100644
index e2ae2ef06..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/Common-Table-Expression_timecho.md
+++ /dev/null
@@ -1,233 +0,0 @@
-
-# Common Table Expressions (CTE)
-
-## 1. Overview
-
-CTE (Common Table Expressions) supports defining one or more temporary result sets (called common tables) using the `WITH` clause. These result sets can be referenced multiple times in subsequent parts of the same query. CTE provides a clean way to construct complex queries, making SQL code more readable and maintainable.
-
-> Note: This feature is available since version 2.0.9.1.
-
-## 2. Syntax Definition
-
-The simplified SQL syntax for CTE is as follows:
-
-```sql
-with_clause:
- WITH cte_name [(col_name [, col_name] ...)] AS (subquery)
- [, cte_name [(col_name [, col_name] ...)] AS (subquery)] ...
-```
-
-- Supports simple and nested CTEs: One or more CTEs can be defined in a `WITH` clause, and CTEs can reference each other in a nested way (forward references are **not** allowed, meaning a CTE cannot reference another CTE that has not yet been defined).
-- Name conflict between CTE and source table: If a CTE has the same name as a source table, only the CTE is visible in the outer scope, and the source table is shadowed.
-- Multiple references to CTE: The same CTE can be referenced multiple times in the outer query.
-- EXPLAIN / EXPLAIN ANALYZE support: `EXPLAIN` or `EXPLAIN ANALYZE` can be used on the entire query, but **not** on the `subquery` inside a CTE definition.
-- Column count constraint: The number of column names specified in a CTE definition must match the number of output columns from the `subquery`, otherwise an error will be thrown.
-- Unused CTE: A query can still execute normally if a defined CTE is not referenced in the main query body.
-
-## 3. Examples
-
-Using tables `table1` and `table2` from the [Sample Data](../Reference/Sample-Data.md) as source tables:
-
-### 3.1 Simple CTE
-
-```sql
-WITH cte1 AS (SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL),
- cte2 AS (SELECT device_id, humidity FROM table2 WHERE humidity IS NOT NULL)
-SELECT * FROM cte1 JOIN cte2 ON cte1.device_id = cte2.device_id LIMIT 10;
-```
-
-Result
-
-```
-+---------+-----------+---------+--------+
-|device_id|temperature|device_id|humidity|
-+---------+-----------+---------+--------+
-| 100| 90.0| 100| 45.1|
-| 100| 90.0| 100| 35.2|
-| 100| 90.0| 100| 35.1|
-| 100| 85.0| 100| 45.1|
-| 100| 85.0| 100| 35.2|
-| 100| 85.0| 100| 35.1|
-| 100| 85.0| 100| 45.1|
-| 100| 85.0| 100| 35.2|
-| 100| 85.0| 100| 35.1|
-| 100| 88.0| 100| 45.1|
-+---------+-----------+---------+--------+
-Total line number = 10
-It costs 0.075s
-```
-
-### 3.2 CTE with the Same Name as Source Table
-
-```sql
-WITH table1 AS (SELECT time, device_id, temperature FROM table1 WHERE temperature IS NOT NULL)
-SELECT * FROM table1 LIMIT 5;
-```
-
-Result
-
-```
-+-----------------------------+---------+-----------+
-| time|device_id|temperature|
-+-----------------------------+---------+-----------+
-|2024-11-30T09:30:00.000+08:00| 101| 90.0|
-|2024-11-30T14:30:00.000+08:00| 101| 90.0|
-|2024-11-29T10:00:00.000+08:00| 101| 85.0|
-|2024-11-27T16:39:00.000+08:00| 101| 85.0|
-|2024-11-27T16:40:00.000+08:00| 101| 85.0|
-+-----------------------------+---------+-----------+
-Total line number = 5
-It costs 0.103s
-```
-
-### 3.3 Nested CTE
-
-```sql
-WITH
- table1 AS (SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL),
- cte1 AS (SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL),
- table2 AS (SELECT temperature FROM table1),
- cte2 AS (SELECT temperature FROM table1)
-SELECT * FROM table2;
-```
-
-Result
-
-```
-+-----------+
-|temperature|
-+-----------+
-| 90.0|
-| 90.0|
-| 85.0|
-| 85.0|
-| 85.0|
-| 85.0|
-| 90.0|
-| 85.0|
-| 85.0|
-| 88.0|
-| 90.0|
-| 90.0|
-+-----------+
-Total line number = 12
-It costs 0.050s
-```
-
-- Forward references are **not** supported
-
-```sql
-WITH
- cte2 AS (SELECT temperature FROM cte1),
- cte1 AS (SELECT device_id, temperature FROM table1)
-SELECT * FROM cte2;
-```
-
-Error message
-
-```
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 550: Table 'database1.cte1' does not exist.
-```
-
-### 3.4 Multiple References to CTE
-
-```sql
-WITH cte AS (SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL)
-SELECT * FROM cte WHERE temperature > (SELECT avg(temperature) FROM cte);
-```
-
-Result
-
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 101| 90.0|
-| 101| 90.0|
-| 100| 90.0|
-| 100| 88.0|
-| 100| 90.0|
-| 100| 90.0|
-+---------+-----------+
-Total line number = 6
-It costs 0.203s
-```
-
-### 3.5 EXPLAIN Support
-
-- Supported on the entire query
-
-```sql
-EXPLAIN WITH cte AS (SELECT * FROM table1) SELECT * FROM cte;
-```
-
-Result
-
-```
-+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| distribution plan|
-+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ |
-| │OutputNode-7 │ |
-| │OutputColumns-[time, region, plant_id, device_id, model_id, maintenance, temperature, humidity, status, arrival_time] │ |
-| │OutputSymbols: [time, region, plant_id, device_id, model_id, maintenance, temperature, humidity, status, arrival_time]│ |
-| └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
-| │ |
-| │ |
-| ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ |
-| │Collect-42 │ |
-| │OutputSymbols: [time, region, plant_id, device_id, model_id, maintenance, temperature, humidity, status, arrival_time]│ |
-| └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ |
-| ┌───────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────┐ |
-| │ │ |
-| ┌───────────┐ ┌───────────┐ |
-| │Exchange-49│ │Exchange-50│ |
-| └───────────┘ └───────────┘ |
-| │ │ |
-| │ │ |
-|┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐|
-|│DeviceTableScanNode-41 │ │DeviceTableScanNode-40 │|
-|│QualifiedTableName: database1.table1 │ │QualifiedTableName: database1.table1 │|
-|│OutputSymbols: [time, region, plant_id, device_id, model_id, maintenance, temperature, humidity, status, arrival_time]│ │OutputSymbols: [time, region, plant_id, device_id, model_id, maintenance, temperature, humidity, status, arrival_time]│|
-|│DeviceNumber: 3 │ │DeviceNumber: 3 │|
-|│ScanOrder: ASC │ │ScanOrder: ASC │|
-|│PushDownOffset: 0 │ │PushDownOffset: 0 │|
-|│PushDownLimit: 0 │ │PushDownLimit: 0 │|
-|│PushDownLimitToEachDevice: false │ │PushDownLimitToEachDevice: false │|
-|│RegionId: 2 │ │RegionId: 1 │|
-|└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘|
-+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-Total line number = 29
-It costs 0.065s
-```
-
-- Not supported for internal queries of CTE
-
-```sql
-WITH cte AS (EXPLAIN SELECT * FROM table1) SELECT * FROM cte;
-```
-
-Error message
-
-```
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 700: line 1:14: mismatched input 'EXPLAIN'. Expecting:
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Featured-Functions_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/Featured-Functions_timecho.md
deleted file mode 100644
index 97cefa7a3..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/Featured-Functions_timecho.md
+++ /dev/null
@@ -1,861 +0,0 @@
-
-# Featured Functions
-
-## 1. Downsampling Functions
-
-### 1.1 `date_bin` Function
-
-#### **Description**
-
-The `date_bin` function is a scalar function that aligns timestamps to the start of specified time intervals. It is commonly used with the `GROUP BY` clause for downsampling.
-
-- **Partial Intervals May Be Empty:** Only timestamps that meet the conditions are aligned; missing intervals are not filled.
-- **All Intervals Return Empty:** If no data exists within the query range, the downsampling result is an empty set.
-
-#### **Usage Examples**
-
-[Sample Dataset](../Reference/Sample-Data.md): The example data page contains SQL statements for building table structures and inserting data. Download and execute these statements in the IoTDB CLI to import the data into IoTDB. You can use this data to test and execute the SQL statements in the examples and obtain the corresponding results.
-
-**Example 1: Hourly Average Temperature for Device 100**
-
-```SQL
-SELECT date_bin(1h, time) AS hour_time, avg(temperature) AS avg_temp
-FROM table1
-WHERE (time >= 2024-11-27 00:00:00 AND time <= 2024-11-30 00:00:00)
- AND device_id = '100'
-GROUP BY 1;
-```
-
-**Result**
-
-```Plain
-+-----------------------------+--------+
-| hour_time|avg_temp|
-+-----------------------------+--------+
-|2024-11-29T11:00:00.000+08:00| null|
-|2024-11-29T18:00:00.000+08:00| 90.0|
-|2024-11-28T08:00:00.000+08:00| 85.0|
-|2024-11-28T09:00:00.000+08:00| null|
-|2024-11-28T10:00:00.000+08:00| 85.0|
-|2024-11-28T11:00:00.000+08:00| 88.0|
-+-----------------------------+--------+
-```
-
-**Example 2: Hourly Average Temperature for Each Device**
-
-```SQL
-SELECT date_bin(1h, time) AS hour_time, device_id, avg(temperature) AS avg_temp
-FROM table1
-WHERE time >= 2024-11-27 00:00:00 AND time <= 2024-11-30 00:00:00
-GROUP BY 1, device_id;
-```
-
-**Result**
-
-```Plain
-+-----------------------------+---------+--------+
-| hour_time|device_id|avg_temp|
-+-----------------------------+---------+--------+
-|2024-11-29T11:00:00.000+08:00| 100| null|
-|2024-11-29T18:00:00.000+08:00| 100| 90.0|
-|2024-11-28T08:00:00.000+08:00| 100| 85.0|
-|2024-11-28T09:00:00.000+08:00| 100| null|
-|2024-11-28T10:00:00.000+08:00| 100| 85.0|
-|2024-11-28T11:00:00.000+08:00| 100| 88.0|
-|2024-11-29T10:00:00.000+08:00| 101| 85.0|
-|2024-11-27T16:00:00.000+08:00| 101| 85.0|
-+-----------------------------+---------+--------+
-```
-
-**Example 3: Hourly Average Temperature for All Devices**
-
-```SQL
-SELECT date_bin(1h, time) AS hour_time, avg(temperature) AS avg_temp
- FROM table1
- WHERE time >= 2024-11-27 00:00:00 AND time <= 2024-11-30 00:00:00
- group by 1;
-```
-
-**Result**
-
-```Plain
-+-----------------------------+--------+
-| hour_time|avg_temp|
-+-----------------------------+--------+
-|2024-11-29T10:00:00.000+08:00| 85.0|
-|2024-11-27T16:00:00.000+08:00| 85.0|
-|2024-11-29T11:00:00.000+08:00| null|
-|2024-11-29T18:00:00.000+08:00| 90.0|
-|2024-11-28T08:00:00.000+08:00| 85.0|
-|2024-11-28T09:00:00.000+08:00| null|
-|2024-11-28T10:00:00.000+08:00| 85.0|
-|2024-11-28T11:00:00.000+08:00| 88.0|
-+-----------------------------+--------+
-```
-
-### 1.2 `date_bin_gapfill` Function
-
-#### **Description:**
-
-The `date_bin_gapfill` function is an extension of `date_bin` that fills in missing time intervals, returning a complete time series.
-
-- **Partial Intervals May Be Empty**: Aligns timestamps for data that meets the conditions and fills in missing intervals.
-- **All Intervals Return Empty**: If no data exists within the query range, the result is an empty set.
-
-#### **Limitations:**
-
-1. The function must always be used with the `GROUP BY` clause. If used elsewhere, it behaves like `date_bin` without gap-filling.
-2. A `GROUP BY` clause can contain only one instance of date_bin_gapfill. Multiple calls will result in an error.
-3. The `GAPFILL` operation occurs after the `HAVING` clause and before the `FILL` clause.
-4. The `WHERE` clause must include time filters in one of the following forms:
- 1. `time >= XXX AND time <= XXX`
- 2. `time > XXX AND time < XXX`
- 3. `time BETWEEN XXX AND XXX`
-5. If additional time filters or conditions are used, an error is raised. Time conditions and other value filters must be connected using the `AND` operator.
-6. If `startTime` and `endTime` cannot be inferred from the `WHERE` clause, an error is raised.
-
-**Usage Examples**
-
-**Example 1: Fill Missing Intervals**
-
-```SQL
-SELECT date_bin_gapfill(1h, time) AS hour_time, avg(temperature) AS avg_temp
-FROM table1
-WHERE (time >= 2024-11-28 07:00:00 AND time <= 2024-11-28 16:00:00)
- AND device_id = '100'
-GROUP BY 1;
-```
-
-**Result**
-
-```Plain
-+-----------------------------+--------+
-| hour_time|avg_temp|
-+-----------------------------+--------+
-|2024-11-28T07:00:00.000+08:00| null|
-|2024-11-28T08:00:00.000+08:00| 85.0|
-|2024-11-28T09:00:00.000+08:00| null|
-|2024-11-28T10:00:00.000+08:00| 85.0|
-|2024-11-28T11:00:00.000+08:00| 88.0|
-|2024-11-28T12:00:00.000+08:00| null|
-|2024-11-28T13:00:00.000+08:00| null|
-|2024-11-28T14:00:00.000+08:00| null|
-|2024-11-28T15:00:00.000+08:00| null|
-|2024-11-28T16:00:00.000+08:00| null|
-+-----------------------------+--------+
-```
-
-**Example 2: Fill Missing Intervals with Device Grouping**
-
-```SQL
-SELECT date_bin_gapfill(1h, time) AS hour_time, device_id, avg(temperature) AS avg_temp
-FROM table1
-WHERE time >= 2024-11-28 07:00:00 AND time <= 2024-11-28 16:00:00
-GROUP BY 1, device_id;
-```
-
-**Result**
-
-```Plain
-+-----------------------------+---------+--------+
-| hour_time|device_id|avg_temp|
-+-----------------------------+---------+--------+
-|2024-11-28T07:00:00.000+08:00| 100| null|
-|2024-11-28T08:00:00.000+08:00| 100| 85.0|
-|2024-11-28T09:00:00.000+08:00| 100| null|
-|2024-11-28T10:00:00.000+08:00| 100| 85.0|
-|2024-11-28T11:00:00.000+08:00| 100| 88.0|
-|2024-11-28T12:00:00.000+08:00| 100| null|
-|2024-11-28T13:00:00.000+08:00| 100| null|
-|2024-11-28T14:00:00.000+08:00| 100| null|
-|2024-11-28T15:00:00.000+08:00| 100| null|
-|2024-11-28T16:00:00.000+08:00| 100| null|
-+-----------------------------+---------+--------+
-```
-
-**Example 3: Empty Result Set for No Data in Range**
-
-```SQL
-SELECT date_bin_gapfill(1h, time) AS hour_time, device_id, avg(temperature) AS avg_temp
-FROM table1
-WHERE time >= 2024-11-27 09:00:00 AND time <= 2024-11-27 14:00:00
-GROUP BY 1, device_id;
-```
-
-**Result**
-
-```Plain
-+---------+---------+--------+
-|hour_time|device_id|avg_temp|
-+---------+---------+--------+
-+---------+---------+--------+
-```
-
-## 2. `DIFF` Function
-
-### 2.1 **Description:**
-
-- The `DIFF` function calculates the difference between the current row and the previous row. For the first row, it returns `NULL` since there is no previous row.
-
-### 2.2 **Function Definition:**
-
-```
-DIFF(numberic[, boolean]) -> Double
-```
-
-### 2.3 **Parameters:**
-
-#### **First Parameter (numeric):**
-
-- **Type**: Must be numeric (`INT32`, `INT64`, `FLOAT`, `DOUBLE`).
-- **Purpose**: Specifies the column for which to calculate the difference.
-
-#### **Second Parameter (boolean, optional):**
-
-- **Type**: Boolean (`true` or `false`).
-- **Default**: `true`.
-- **Purpose**:
- - `true`: Ignores `NULL` values and uses the first non-`NULL` value for calculation. If no non-`NULL` value exists, returns `NULL`.
- - `false`: Does not ignore `NULL` values. If the previous row is `NULL`, the result is `NULL`.
-
-### 2.4 **Notes:**
-
-- In **tree models**, the second parameter must be specified as `'ignoreNull'='true'` or `'ignoreNull'='false'`.
-- In **table models**, simply use `true` or `false`. Using `'ignoreNull'='true'` or `'ignoreNull'='false'` in table models results in a string comparison and always evaluates to `false`.
-
-### 2.5 **Usage Examples**
-
-#### **Example 1: Ignore NULL Values**
-
-```SQL
-SELECT time, DIFF(temperature) AS diff_temp
-FROM table1
-WHERE device_id = '100';
-```
-
-**Result**
-
-```Plain
-+-----------------------------+---------+
-| time|diff_temp|
-+-----------------------------+---------+
-|2024-11-29T11:00:00.000+08:00| null|
-|2024-11-29T18:30:00.000+08:00| null|
-|2024-11-28T08:00:00.000+08:00| -5.0|
-|2024-11-28T09:00:00.000+08:00| null|
-|2024-11-28T10:00:00.000+08:00| 0.0|
-|2024-11-28T11:00:00.000+08:00| 3.0|
-|2024-11-26T13:37:00.000+08:00| 2.0|
-|2024-11-26T13:38:00.000+08:00| 0.0|
-+-----------------------------+---------+
-```
-
-#### **Example 2: Do Not Ignore NULL Values**
-
-```SQL
-SELECT time, DIFF(temperature, false) AS diff_temp
-FROM table1
-WHERE device_id = '100';
-```
-
-**Result**
-
-```Plain
-+-----------------------------+---------+
-| time|diff_temp|
-+-----------------------------+---------+
-|2024-11-29T11:00:00.000+08:00| null|
-|2024-11-29T18:30:00.000+08:00| null|
-|2024-11-28T08:00:00.000+08:00| -5.0|
-|2024-11-28T09:00:00.000+08:00| null|
-|2024-11-28T10:00:00.000+08:00| null|
-|2024-11-28T11:00:00.000+08:00| 3.0|
-|2024-11-26T13:37:00.000+08:00| 2.0|
-|2024-11-26T13:38:00.000+08:00| 0.0|
-+-----------------------------+---------+
-```
-
-#### **Example 3: Full Example**
-
-```SQL
-SELECT time, temperature,
- DIFF(temperature) AS diff_temp_1,
- DIFF(temperature, false) AS diff_temp_2
-FROM table1
-WHERE device_id = '100';
-```
-
-**Result**
-
-```Plain
-+-----------------------------+-----------+-----------+-----------+
-| time|temperature|diff_temp_1|diff_temp_2|
-+-----------------------------+-----------+-----------+-----------+
-|2024-11-29T11:00:00.000+08:00| null| null| null|
-|2024-11-29T18:30:00.000+08:00| 90.0| null| null|
-|2024-11-28T08:00:00.000+08:00| 85.0| -5.0| -5.0|
-|2024-11-28T09:00:00.000+08:00| null| null| null|
-|2024-11-28T10:00:00.000+08:00| 85.0| 0.0| null|
-|2024-11-28T11:00:00.000+08:00| 88.0| 3.0| 3.0|
-|2024-11-26T13:37:00.000+08:00| 90.0| 2.0| 2.0|
-|2024-11-26T13:38:00.000+08:00| 90.0| 0.0| 0.0|
-+-----------------------------+-----------+-----------+-----------+
-```
-
-## 3 Timeseries Windowing Functions
-
-The sample data is as follows:
-
-```SQL
-IoTDB> SELECT * FROM bid;
-+-----------------------------+--------+-----+
-| time|stock_id|price|
-+-----------------------------+--------+-----+
-|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-+-----------------------------+--------+-----+
-
--- Create table statement
-CREATE TABLE bid(time TIMESTAMP TIME, stock_id STRING TAG, price FLOAT FIELD);
--- Insert data
-INSERT INTO bid(time, stock_id, price) VALUES('2021-01-01T09:05:00','AAPL',100.0),('2021-01-01T09:06:00','TESL',200.0),('2021-01-01T09:07:00','AAPL',103.0),('2021-01-01T09:07:00','TESL',202.0),('2021-01-01T09:09:00','AAPL',102.0),('2021-01-01T09:15:00','TESL',195.0);
-```
-
-### 3.1 HOP
-
-#### Function Description
-
-The HOP function segments data into overlapping time windows for analysis, assigning each row to all windows that overlap with its timestamp. If windows overlap (when SLIDE < SIZE), data will be duplicated across multiple windows.
-
-#### Function Definition
-
-```SQL
-HOP(data, timecol, size, slide[, origin])
-```
-
-#### Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | --------------------------------- | ------------------------- |
-| DATA | Table | ROW SEMANTIC, PASS THROUGH | Input table |
-| TIMECOL | Scalar | String (default: 'time') | Time column |
-| SIZE | Scalar | Long integer | Window size |
-| SLIDE | Scalar | Long integer | Sliding step |
-| ORIGIN | Scalar | Timestamp (default: Unix epoch) | First window start time |
-
-
-#### Returned Results
-
-The HOP function returns:
-
-* `window_start`: Window start time (inclusive)
-* `window_end`: Window end time (exclusive)
-* Pass-through columns: All input columns from DATA
-
-#### Usage Example
-
-```SQL
-IoTDB> SELECT * FROM HOP(DATA => bid,TIMECOL => 'time',SLIDE => 5m,SIZE => 10m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:25:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree model's GROUP BY TIME when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM HOP(DATA => bid,TIMECOL => 'time',SLIDE => 5m,SIZE => 10m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:25:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| AAPL|101.66666666666667|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:15:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-### 3.2 SESSION
-
-#### Function Description
-
-The SESSION function groups data into sessions based on time intervals. It checks the time gap between consecutive rows—rows with gaps smaller than the threshold (GAP) are grouped into the current window, while larger gaps trigger a new window.
-
-#### Function Definition
-
-```SQL
-SESSION(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], timecol, gap)
-```
-#### Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | ---------------------------- | -------------------------------------- |
-| DATA | Table | SET SEMANTIC, PASS THROUGH | Input table with partition/sort keys |
-| TIMECOL | Scalar | String (default: 'time') | Time column name |
-| GAP | Scalar | Long integer | Session gap threshold |
-
-#### Returned Results
-
-The SESSION function returns:
-
-* `window_start`: Time of the first row in the session
-* `window_end`: Time of the last row in the session
-* Pass-through columns: All input columns from DATA
-
-#### Usage Example
-
-```SQL
-IoTDB> SELECT * FROM SESSION(DATA => bid PARTITION BY stock_id ORDER BY time,TIMECOL => 'time',GAP => 2m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree model's GROUP BY SESSION when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM SESSION(DATA => bid PARTITION BY stock_id ORDER BY time,TIMECOL => 'time',GAP => 2m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-### 3.3 VARIATION
-
-#### Function Description
-
-The VARIATION function groups data based on value differences. The first row becomes the baseline for the first window. Subsequent rows are compared to the baseline—if the difference is within the threshold (DELTA), they join the current window; otherwise, a new window starts with that row as the new baseline.
-
-#### Function Definition
-
-```sql
-VARIATION(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], col, delta)
-```
-
-#### Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | ---------------------------- | -------------------------------------- |
-| DATA | Table | SET SEMANTIC, PASS THROUGH | Input table with partition/sort keys |
-| COL | Scalar | String | Column for difference calculation |
-| DELTA | Scalar | Float | Difference threshold |
-
-#### Returned Results
-
-The VARIATION function returns:
-
-* `window_index`: Window identifier
-* Pass-through columns: All input columns from DATA
-
-#### Usage Example
-
-```sql
-IoTDB> SELECT * FROM VARIATION(DATA => bid PARTITION BY stock_id ORDER BY time,COL => 'price',DELTA => 2.0);
-+------------+-----------------------------+--------+-----+
-|window_index| time|stock_id|price|
-+------------+-----------------------------+--------+-----+
-| 0|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-| 0|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-| 1|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-| 0|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-| 1|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-| 1|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+------------+-----------------------------+--------+-----+
-
--- Equivalent to tree model's GROUP BY VARIATION when combined with GROUP BY
-IoTDB> SELECT first(time) as window_start, last(time) as window_end, stock_id, avg(price) as avg FROM VARIATION(DATA => bid PARTITION BY stock_id ORDER BY time,COL => 'price', DELTA => 2.0) GROUP BY window_index, stock_id;
-+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|201.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:07:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.5|
-+-----------------------------+-----------------------------+--------+-----+
-```
-
-### 3.4 CAPACITY
-
-#### Function Description
-
-The CAPACITY function groups data into fixed-size windows, where each window contains up to SIZE rows.
-
-#### Function Definition
-
-```sql
-CAPACITY(data [PARTITION BY(pkeys, ...)] [ORDER BY(okeys, ...)], size)
-```
-
-#### Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | ---------------------------- | -------------------------------------- |
-| DATA | Table | SET SEMANTIC, PASS THROUGH | Input table with partition/sort keys |
-| SIZE | Scalar | Long integer | Window size (row count) |
-
-#### Returned Results
-
-The CAPACITY function returns:
-
-* `window_index`: Window identifier
-* Pass-through columns: All input columns from DATA
-
-#### Usage Example
-
-```sql
-IoTDB> SELECT * FROM CAPACITY(DATA => bid PARTITION BY stock_id ORDER BY time, SIZE => 2);
-+------------+-----------------------------+--------+-----+
-|window_index| time|stock_id|price|
-+------------+-----------------------------+--------+-----+
-| 0|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-| 0|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-| 1|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-| 0|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-| 0|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-| 1|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+------------+-----------------------------+--------+-----+
-
--- Equivalent to tree model's GROUP BY COUNT when combined with GROUP BY
-IoTDB> SELECT first(time) as start_time, last(time) as end_time, stock_id, avg(price) as avg FROM CAPACITY(DATA => bid PARTITION BY stock_id ORDER BY time, SIZE => 2) GROUP BY window_index, stock_id;
-+-----------------------------+-----------------------------+--------+-----+
-| start_time| end_time|stock_id| avg|
-+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:06:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|201.0|
-|2021-01-01T09:15:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:05:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|101.5|
-|2021-01-01T09:09:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+--------+-----+
-```
-
-### 3.5 TUMBLE
-
-#### Function Description
-
-The TUMBLE function assigns each row to a non-overlapping, fixed-size time window based on a timestamp attribute.
-
-#### Function Definition
-
-```sql
-TUMBLE(data, timecol, size[, origin])
-```
-#### Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | --------------------------------- | ------------------------- |
-| DATA | Table | ROW SEMANTIC, PASS THROUGH | Input table |
-| TIMECOL | Scalar | String (default: 'time') | Time column |
-| SIZE | Scalar | Long integer (positive) | Window size |
-| ORIGIN | Scalar | Timestamp (default: Unix epoch) | First window start time |
-
-#### Returned Results
-
-The TUMBLE function returns:
-
-* `window_start`: Window start time (inclusive)
-* `window_end`: Window end time (exclusive)
-* Pass-through columns: All input columns from DATA
-
-#### Usage Example
-
-```SQL
-IoTDB> SELECT * FROM TUMBLE( DATA => bid, TIMECOL => 'time', SIZE => 10m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree model's GROUP BY TIME when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM TUMBLE(DATA => bid, TIMECOL => 'time', SIZE => 10m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-### 3.6 CUMULATE
-
-#### Function Description
-
-The CUMULATE function creates expanding windows from an initial window, maintaining the same start time while incrementally extending the end time by STEP until reaching SIZE. Each window contains all elements within its range. For example, with a 1-hour STEP and 24-hour SIZE, daily windows would be: `[00:00, 01:00)`, `[00:00, 02:00)`, ..., `[00:00, 24:00)`.
-
-#### Function Definition
-
-```sql
-CUMULATE(data, timecol, size, step[, origin])
-```
-
-#### Parameter Description
-
-| Parameter | Type | Attributes | Description |
-| ----------- | -------- | --------------------------------- | --------------------------------------------------- |
-| DATA | Table | ROW SEMANTIC, PASS THROUGH | Input table |
-| TIMECOL | Scalar | String (default: 'time') | Time column |
-| SIZE | Scalar | Long integer (positive) | Window size (must be an integer multiple of STEP) |
-| STEP | Scalar | Long integer (positive) | Expansion step |
-| ORIGIN | Scalar | Timestamp (default: Unix epoch) | First window start time |
-
-> Note: An error `Cumulative table function requires size must be an integral multiple of step` occurs if SIZE is not divisible by STEP.
-
-#### Returned Results
-
-The CUMULATE function returns:
-
-* `window_start`: Window start time (inclusive)
-* `window_end`: Window end time (exclusive)
-* Pass-through columns: All input columns from DATA
-
-#### Usage Example
-
-```sql
-IoTDB> SELECT * FROM CUMULATE(DATA => bid,TIMECOL => 'time',STEP => 2m,SIZE => 10m);
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-| window_start| window_end| time|stock_id|price|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:06:00.000+08:00| TESL|200.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| TESL|202.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:16:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:18:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00|2021-01-01T09:15:00.000+08:00| TESL|195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:06:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:05:00.000+08:00| AAPL|100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:07:00.000+08:00| AAPL|103.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00|2021-01-01T09:09:00.000+08:00| AAPL|102.0|
-+-----------------------------+-----------------------------+-----------------------------+--------+-----+
-
--- Equivalent to tree model's GROUP BY TIME when combined with GROUP BY
-IoTDB> SELECT window_start, window_end, stock_id, avg(price) as avg FROM CUMULATE(DATA => bid,TIMECOL => 'time',STEP => 2m, SIZE => 10m) GROUP BY window_start, window_end, stock_id;
-+-----------------------------+-----------------------------+--------+------------------+
-| window_start| window_end|stock_id| avg|
-+-----------------------------+-----------------------------+--------+------------------+
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| TESL| 201.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:16:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:18:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:10:00.000+08:00|2021-01-01T09:20:00.000+08:00| TESL| 195.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:06:00.000+08:00| AAPL| 100.0|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:08:00.000+08:00| AAPL| 101.5|
-|2021-01-01T09:00:00.000+08:00|2021-01-01T09:10:00.000+08:00| AAPL|101.66666666666667|
-+-----------------------------+-----------------------------+--------+------------------+
-```
-
-
-## 4. Window Functions
-
-### 4.1 SQL Definition
-
-```SQL
-windowDefinition
- : name=identifier AS '(' windowSpecification ')'
- ;
-
-windowSpecification
- : (existingWindowName=identifier)?
- (PARTITION BY partition+=expression (',' partition+=expression)*)?
- (ORDER BY sortItem (',' sortItem)*)?
- windowFrame?
- ;
-
-windowFrame
- : frameExtent
- ;
-
-frameExtent
- : frameType=RANGE start=frameBound
- | frameType=ROWS start=frameBound
- | frameType=GROUPS start=frameBound
- | frameType=RANGE BETWEEN start=frameBound AND end=frameBound
- | frameType=ROWS BETWEEN start=frameBound AND end=frameBound
- | frameType=GROUPS BETWEEN start=frameBound AND end=frameBound
- ;
-
-frameBound
- : UNBOUNDED boundType=PRECEDING #unboundedFrame
- | UNBOUNDED boundType=FOLLOWING #unboundedFrame
- | CURRENT ROW #currentRowBound
- | expression boundType=(PRECEDING | FOLLOWING) #boundedFrame
- ;
-```
-
-For more detailed introductions to the features, please refer to: [Window Function](../User-Manual/Window-Function_timecho.md)
-
-### 4.2 Usage Examples
-
-The original data of the device_flow table is as follows:
-
-```sql
-+-----------------------------+------+-----+
-| time|device| flow|
-+-----------------------------+------+-----+
-|1970-01-01T08:00:00.000+08:00| d0| 3|
-|1970-01-01T08:00:00.001+08:00| d0| 5|
-|1970-01-01T08:00:00.002+08:00| d0| 3|
-|1970-01-01T08:00:00.003+08:00| d0| 1|
-|1970-01-01T08:00:00.004+08:00| d1| 2|
-|1970-01-01T08:00:00.005+08:00| d1| 4|
-+-----------------------------+------+-----+
-```
-
-1. Query all columns from device_flow, group the data by the device dimension, sort the records within each device group by the value of the flow field, calculate the cumulative sum of the flow field, and finally return the cumulative sum as a column named sum.
-
-SQL:
-
-```SQL
-IoTDB> SELECT *, sum(flow) OVER (PARTITION BY device ORDER BY flow) as sum FROM device_flow;
-```
-
-Result:
-
-```SQL
-+-----------------------------+------+----+----+
-| time|device|flow| sum|
-+-----------------------------+------+----+----+
-|1970-01-01T08:00:04.000+08:00| d1| 2| 2.0|
-|1970-01-01T08:00:05.000+08:00| d1| 4| 6.0|
-|1970-01-01T08:00:03.000+08:00| d0| 1| 1.0|
-|1970-01-01T08:00:00.000+08:00| d0| 3| 7.0|
-|1970-01-01T08:00:02.000+08:00| d0| 3| 7.0|
-|1970-01-01T08:00:01.000+08:00| d0| 5|12.0|
-+-----------------------------+------+----+----+
-```
-2. Query all original columns from the device_flow table, group the data by the device dimension (device), sort the records within each device group by the value of the flow field, count the number of rows within the range of "the flow group of the current row + the previous 1 flow group", and finally return the count result as a column named count.
-
-SQL:
-
-```SQL
-IoTDB> SELECT *, count(flow) OVER(PARTITION BY device ORDER BY flow GROUPS BETWEEN 1 PRECEDING AND CURRENT ROW) as count FROM device_flow;
-```
-
-Result:
-
-```SQL
-+-----------------------------+------+----+-----+
-| time|device|flow|count|
-+-----------------------------+------+----+-----+
-|1970-01-01T08:00:04.000+08:00| d1| 2| 1|
-|1970-01-01T08:00:05.000+08:00| d1| 4| 2|
-|1970-01-01T08:00:03.000+08:00| d0| 1| 1|
-|1970-01-01T08:00:00.000+08:00| d0| 3| 3|
-|1970-01-01T08:00:02.000+08:00| d0| 3| 3|
-|1970-01-01T08:00:01.000+08:00| d0| 5| 3|
-+-----------------------------+------+----+-----+
-```
-
-3. Query all original columns from the device_flow table, group the data by device, sort the records in ascending order by the value of the flow field within each group, count the number of all rows falling within the numeric range of "the flow value of the current row minus 2" to "the flow value of the current row", and finally return the count result as a column named count.
-
-SQL:
-
-```SQL
-IoTDB> SELECT *,count(flow) OVER(PARTITION BY device ORDER BY flow RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) as count FROM device_flow;
-```
-
-Result:
-
-```SQL
-+-----------------------------+------+----+-----+
-| time|device|flow|count|
-+-----------------------------+------+----+-----+
-|1970-01-01T08:00:04.000+08:00| d1| 2| 1|
-|1970-01-01T08:00:05.000+08:00| d1| 4| 2|
-|1970-01-01T08:00:03.000+08:00| d0| 1| 1|
-|1970-01-01T08:00:00.000+08:00| d0| 3| 3|
-|1970-01-01T08:00:02.000+08:00| d0| 3| 3|
-|1970-01-01T08:00:01.000+08:00| d0| 5| 3|
-+-----------------------------+------+----+-----+
-```
-
-## 5. Object Type Read Function
-
-**Description**:
-Reads binary content from an `OBJECT` type column and returns a `BLOB` type (raw binary data of the object).
-> Supported since V2.0.8
-
-**Syntax:**
-```SQL
-READ_OBJECT(object [, offset, length])
-```
-
-**Parameters:**
-- **Required**:
- `object` (OBJECT type)
-- **Optional**:
- - `offset` (long/INT64): Start position for reading. Default: `0`.
- - Throws error if `offset < 0` or `offset >= full file length`.
- - `length` (long/INT64): Number of bytes to read. Default: full file length.
- - Error if `length > 2^31 - 1`.
- - If `length` exceeds remaining bytes from `offset`, reads until end of file.
- - If `length < 0`, reads all remaining data from `offset`.
-
-**Examples:**
-```sql
-IoTDB:database1> SELECT READ_OBJECT(s1) FROM table1 WHERE device_id = 'tag1'
-+------------+
-| _col0|
-+------------+
-|0x696f746462|
-+------------+
-Total line number = 1
-
-IoTDB:database1> SELECT READ_OBJECT(s1, 0, 3) FROM table1 WHERE device_id = 'tag1'
-+--------+
-| _col0|
-+--------+
-|0x696f74|
-+--------+
-Total line number = 1
-```
diff --git a/src/UserGuide/Master/Table/SQL-Manual/QuickStart-Only-Sql_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/QuickStart-Only-Sql_timecho.md
deleted file mode 100644
index 97569de90..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/QuickStart-Only-Sql_timecho.md
+++ /dev/null
@@ -1,126 +0,0 @@
-
-# QuickStart Only SQL
-
-> **Before executing the following SQL statements, please ensure**
->
-> * **IoTDB service has been successfully started**
-> * **Connected to IoTDB via Cli client**
->
-> Note: If your terminal does not support multi-line pasting (e.g., Windows CMD), please adjust the SQL statements to single-line format before execution.
-
-## 1. Database Management
-
-```SQL
--- Create database database1, and set the database TTL time to 1 year;
-CREATE DATABASE IF NOT EXISTS database1;
-
--- Use database database1;
-USE database1;
-
--- Modify the database TTL time to 1 week;
-ALTER DATABASE database1 SET PROPERTIES TTL=604800000;
-
--- Delete database database1;
-DROP DATABASE IF EXISTS database1;
-```
-
-For detailed syntax description, please refer to: [Database Management](../Basic-Concept/Database-Management_timecho.md)
-
-## 2. Table Management
-
-```SQL
--- Create table table1;
-CREATE TABLE table1 (
- time TIMESTAMP TIME,
- device_id STRING TAG,
- maintenance STRING ATTRIBUTE COMMENT 'maintenance',
- temperature FLOAT FIELD COMMENT 'temperature',
- status Boolean FIELD COMMENT 'status'
-);
-
--- View column information of table table1;
-DESC table1 DETAILS;
-
--- Modify table;
--- Add column to table table1;
-ALTER TABLE table1 ADD COLUMN IF NOT EXISTS humidity FLOAT FIELD COMMENT 'humidity';
--- Set table table1 TTL to 1 week;
-ALTER TABLE table1 set properties TTL=604800000;
-
--- Delete table table1;
-DROP TABLE table1;
-```
-
-For detailed syntax description, please refer to: [Table Management](../Basic-Concept/Table-Management_timecho.md)
-
-## 3. Data Writing
-
-```SQL
--- Single row writing;
-INSERT INTO table1(device_id, time, temperature) VALUES ('100', '2025-11-26 13:37:00', 90.0);
-
--- Multi-row writing;
-INSERT INTO table1(device_id, maintenance, time, temperature) VALUES
- ('101', '180', '2024-11-26 13:37:00', 88.0),
- ('100', '180', '2024-11-26 13:38:00', 85.0),
- ('101', '180', '2024-11-27 16:38:00', 80.0);
-```
-
-For detailed syntax description, please refer to: [Data Writing](../Basic-Concept/Write-Updata-Data_timecho.md#_1-data-insertion)
-
-## 4. Data Query
-
-```SQL
--- Full table query;
-SELECT * FROM table1;
-
--- Function query;
-SELECT count(*), sum(temperature) FROM table1;
-
--- Query data for specified device and time period;
-SELECT *
-FROM table1
-WHERE time >= 2024-11-26 00:00:00 and time <= 2024-11-27 00:00:00 and device_id='101';
-```
-
-For detailed syntax description, please refer to: [Data Query](../Basic-Concept/Query-Data_timecho.md)
-
-## 5. Data Update
-
-```SQL
--- Update the maintenance attribute value for data where device_id is 100;
-UPDATE table1 SET maintenance='45' WHERE device_id='100';
-```
-
-For detailed syntax description, please refer to: [Data Update](../Basic-Concept/Write-Updata-Data_timecho.md#_2-data-updates)
-
-## 6. Data Deletion
-
-```SQL
--- Delete data for specified device and time period;
-DELETE FROM table1 WHERE time >= 2024-11-26 23:39:00 and time <= 2024-11-27 20:42:00 AND device_id='101';
-
--- Full table deletion;
-DELETE FROM table1;
-```
-
-For detailed syntax description, please refer to: [Data Deletion](../Basic-Concept/Delete-Data.md)
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Row-Pattern-Recognition_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/Row-Pattern-Recognition_timecho.md
deleted file mode 100644
index b5136f77a..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/Row-Pattern-Recognition_timecho.md
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-# Pattern Query
-
-## 1. Syntax Definition
-
-```SQL
-MATCH_RECOGNIZE (
- [ PARTITION BY column [, ...] ]
- [ ORDER BY column [, ...] ]
- [ MEASURES measure_definition [, ...] ]
- [ ROWS PER MATCH ]
- [ AFTER MATCH skip_to ]
- PATTERN ( row_pattern )
- [ SUBSET subset_definition [, ...] ]
- DEFINE variable_definition [, ...]
-)
-```
-
-**Note:**
-
-* PARTITION BY: Optional. Used to group the input table, and each group can perform pattern matching independently. If this clause is not specified, the entire input table will be processed as a single unit.
-* ORDER BY: Optional. Used to ensure that input data is processed in a specific order during matching.
-* MEASURES: Optional. Used to specify which information to extract from the matched segment of data.
-* ROWS PER MATCH: Optional. Used to specify the output method of the result set after successful pattern matching.
-* AFTER MATCH SKIP: Optional. Used to specify which row to resume from for the next pattern match after identifying a non-empty match.
-* PATTERN: Used to define the row pattern to be matched.
-* SUBSET: Optional. Used to merge rows matched by multiple basic pattern variables into a single logical set.
-* DEFINE: Used to define the basic pattern variables for the row pattern.
-
-For more detailed introductions to the features, please refer to:[Pattern Query](../User-Manual/Pattern-Query_timecho.md)
-
-## 2. Usage Examples
-
-Using [Sample Data](../Reference/Sample-Data.md) as the source data
-
-1. Time Segment Query
-
-Segment the data in table1 by time intervals less than or equal to 24 hours, and query the total number of data entries in each segment, as well as the start and end times.
-
-Query SQL
-
-SQL
-
-```SQL
-SELECT start_time, end_time, cnt
-FROM table1
-MATCH_RECOGNIZE (
- ORDER BY time
- MEASURES
- RPR_FIRST(A.time) AS start_time,
- RPR_LAST(time) AS end_time,
- COUNT() AS cnt
- PATTERN (A B*)
- DEFINE B AS (cast(B.time as INT64) - cast(PREV(B.time) as INT64)) <= 86400000
-) AS m
-```
-
-Query Results
-
-SQL
-
-```SQL
-+-----------------------------+-----------------------------+---+
-| start_time| end_time|cnt|
-+-----------------------------+-----------------------------+---+
-|2024-11-26T13:37:00.000+08:00|2024-11-26T13:38:00.000+08:00| 2|
-|2024-11-27T16:38:00.000+08:00|2024-11-30T14:30:00.000+08:00| 16|
-+-----------------------------+-----------------------------+---+
-Total line number = 2
-```
-
-2. Difference Segment Query
-
-Segment the data in table2 by humidity value differences less than 0.1, and query the total number of data entries in each segment, as well as the start and end times.
-
-* Query SQL
-
-SQL
-
-```SQL
-SELECT start_time, end_time, cnt
-FROM table2
-MATCH_RECOGNIZE (
- ORDER BY time
- MEASURES
- RPR_FIRST(A.time) AS start_time,
- RPR_LAST(time) AS end_time,
- COUNT() AS cnt
- PATTERN (A B*)
- DEFINE B AS (B.humidity - PREV(B.humidity )) <=0.1
-) AS m;
-```
-
-* Query Results
-
-SQL
-
-```SQL
-+-----------------------------+-----------------------------+---+
-| start_time| end_time|cnt|
-+-----------------------------+-----------------------------+---+
-|2024-11-26T13:37:00.000+08:00|2024-11-27T00:00:00.000+08:00| 2|
-|2024-11-28T08:00:00.000+08:00|2024-11-29T00:00:00.000+08:00| 2|
-|2024-11-29T11:00:00.000+08:00|2024-11-30T00:00:00.000+08:00| 2|
-+-----------------------------+-----------------------------+---+
-Total line number = 3
-```
-
-3. Event Statistics Query
-
-Group the data in table1 by device ID, and count the start and end times and maximum humidity value where the humidity in the Shanghai area is greater than 35.
-
-* Query SQL
-
-SQL
-
-```SQL
-SELECT m.device_id, m.match, m.event_start, m.event_end, m.max_humidity
-FROM table1
-MATCH_RECOGNIZE (
- PARTITION BY device_id
- ORDER BY time
- MEASURES
- MATCH_NUMBER() AS match,
- RPR_FIRST(A.time) AS event_start,
- RPR_LAST(A.time) AS event_end,
- MAX(A.humidity) AS max_humidity
- ONE ROW PER MATCH
- PATTERN (A+)
- DEFINE
- A AS A.region= 'Shanghai' AND A.humidity> 35
-) AS m
-```
-
-* Query Results
-
-SQL
-
-```SQL
-+---------+-----+-----------------------------+-----------------------------+------------+
-|device_id|match| event_start| event_end|max_humidity|
-+---------+-----+-----------------------------+-----------------------------+------------+
-| 100| 1|2024-11-28T09:00:00.000+08:00|2024-11-29T18:30:00.000+08:00| 45.1|
-| 101| 1|2024-11-30T09:30:00.000+08:00|2024-11-30T09:30:00.000+08:00| 35.2|
-+---------+-----+-----------------------------+-----------------------------+------------+
-Total line number = 2
-```
diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Authority-Management_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Authority-Management_timecho.md
deleted file mode 100644
index 3528a5f31..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/SQL-Authority-Management_timecho.md
+++ /dev/null
@@ -1,378 +0,0 @@
-
-
-# Authority Management
-
-This document is the SQL manual for authority management starting from version V2.0.7. For detailed function usage, see [Authority Management](../User-Manual/Authority-Management-Upgrade_timecho.md). For an introduction to authority management functions before version V2.0.7, refer to [Authority Management](../User-Manual/Authority-Management_timecho.md)
-
-## 1. Privilege List
-
-
-
-
- Privilege Type
- Privilege Name
- Scope of Effect
- Description
-
-
-
- Global Privileges
- SYSTEM
- Global
- Allows users to create, modify, and delete databases.
-
-
- Allows users to create, modify, and delete tables and table views.
-
-
- Allows users to create, delete, and view user-defined functions.
-
-
- Allows users to create, start, stop, delete, and view PIPEs. Allows users to create, delete, and view PIPEPLUGINS.
-
-
- Allows users to query and cancel queries. Allows users to view variables. Allows users to view cluster status.
-
-
- Allows users to create, delete, and view deep learning models.
-
-
-
- SECURITY
- Global
- Allows users to create users.
-
-
- Allows users to delete users.
-
-
- Allows users to modify user passwords.
-
-
- Allows users to view user privilege information.
-
-
- Allows users to list all users.
-
-
- Allows users to create roles.
-
-
- Allows users to delete roles.
-
-
- Allows users to view role privilege information.
-
-
- Allows users to grant a role to a user or revoke it.
-
-
- Allows users to list all roles.
-
-
-
- AUDIT
- Global
- Allows users to maintain audit log rules and view audit logs.
-
-
-
- Data Privileges
- CREATE
- ANY
- Allows creating any table and any database.
-
-
- Database
- Allows users to create tables under this database; allows users to create a database with this name.
-
-
- Table
- Allows users to create a table with this name.
-
-
-
- ALTER
- ANY
- Allows modifying the definition of any table and any database.
-
-
- Database
- Allows users to modify the definition of a database and the definitions of tables under that database.
-
-
- Table
- Allows users to modify the definition of a table.
-
-
-
- SELECT
- ANY
- Allows querying data from any table in any database in the system.
-
-
- Database
- Allows users to query data from any table in this database.
-
-
- Table
- Allows users to query data in this table. When executing multi-table queries, the database only displays data that the user has permission to access.
-
-
-
- INSERT
- ANY
- Allows inserting/updating data into any table in any database.
-
-
- Database
- Allows users to insert/update data into any table within the scope of this database.
-
-
- Table
- Allows users to insert/update data into this table.
-
-
-
- DELETE
- ANY
- Allows deleting data from any table.
-
-
- Database
- Allows users to delete data within the scope of this database.
-
-
- Table
- Allows users to delete data from this table.
-
-
-
-
-## 2. SQL Statements
-
-### 2.1 User and Role Management
-
-1. Create User (Requires SECURITY privilege)
-
-```SQL
-CREATE USER
-eg: CREATE USER user1 'Passwd@202604';
-```
-
-2. Change Password
-
-Users can change their own passwords, but changing other users' passwords requires the SECURITY privilege.
-
-```SQL
-ALTER USER SET PASSWORD
-eg: ALTER USER tempuser SET PASSWORD 'Newpwd@202604';
-```
-
-3. Drop User (Requires SECURITY privilege)
-
-```SQL
-DROP USER
-eg: DROP USER user1;
-```
-
-4. Create Role (Requires SECURITY privilege)
-
-```SQL
-CREATE ROLE
-eg: CREATE ROLE role1;
-```
-
-5. Drop Role (Requires SECURITY privilege)
-
-```SQL
-DROP ROLE
-eg: DROP ROLE role1;
-```
-
-6. Grant Role to User (Requires SECURITY privilege)
-
-```SQL
-GRANT ROLE TO
-eg: GRANT ROLE admin TO user1;
-```
-
-7. Revoke Role from User (Requires SECURITY privilege)
-
-```SQL
-REVOKE ROLE FROM
-eg: REVOKE ROLE admin FROM user1;
-```
-
-8. List All Users (Requires SECURITY privilege)
-
-```SQL
-LIST USER;
-```
-
-9. List All Roles (Requires SECURITY privilege)
-
-```SQL
-LIST ROLE;
-```
-
-10. List All Users Under a Specified Role (Requires SECURITY privilege)
-
-```SQL
-LIST USER OF ROLE
-eg: LIST USER OF ROLE roleuser;
-```
-
-11. List All Roles of a Specified User
-
-Users can list their own roles, but listing other users' roles requires the SECURITY privilege.
-
-```SQL
-LIST ROLE OF USER
-eg: LIST ROLE OF USER tempuser;
-```
-
-12. List All Privileges of a User
-
-Users can list their own privilege information, but listing other users' privileges requires the SECURITY privilege.
-
-```SQL
-LIST PRIVILEGES OF USER
-eg: LIST PRIVILEGES OF USER tempuser;
-```
-
-13. List All Privileges of a Role
-
-Users can list the privilege information of roles they possess, but listing other roles' privileges requires the SECURITY privilege.
-
-```SQL
-LIST PRIVILEGES OF ROLE
-eg: LIST PRIVILEGES OF ROLE actor;
-```
-
-### 2.2 Privilege Management
-
-#### 2.2.1 Grant Privileges
-
-1. Grant user management privileges to a user
-
-```SQL
-GRANT SECURITY TO USER
-eg: GRANT SECURITY TO USER TEST_USER;
-```
-
-2. Grant a user the privilege to create databases and create tables within the database scope, and allow the user to manage privileges within that scope
-
-```SQL
-GRANT CREATE ON DATABASE TO USER WITH GRANT OPTION
-eg: GRANT CREATE ON DATABASE TESTDB TO USER TEST_USER WITH GRANT OPTION;
-```
-
-3. Grant a role the privilege to query a database
-
-```SQL
-GRANT SELECT ON DATABASE TO ROLE
-eg: GRANT SELECT ON DATABASE TESTDB TO ROLE TEST_ROLE;
-```
-
-4. Grant a user the privilege to query a table
-
-```SQL
-GRANT SELECT ON . TO USER
-eg: GRANT SELECT ON TESTDB.TESTTABLE TO USER TEST_USER;
-```
-
-5. Grant a role the privilege to query all databases and tables
-
-```SQL
-GRANT SELECT ON ANY TO ROLE
-eg: GRANT SELECT ON ANY TO ROLE TEST_ROLE;
-```
-
-6. ALL Syntax Sugar: ALL represents all privileges within the object scope. You can use the ALL field to flexibly grant privileges.
-
-```SQL
-GRANT ALL TO USER TESTUSER;
--- Grants all privileges available to the user, including global privileges and all data privileges in the ANY scope
-
-GRANT ALL ON ANY TO USER TESTUSER;
--- Grants all data privileges available in the ANY scope to the user. After executing this statement, the user will have all data privileges on all databases
-
-GRANT ALL ON DATABASE TESTDB TO USER TESTUSER;
--- Grants all data privileges available in the DB scope to the user. After executing this statement, the user will have all data privileges on this database
-
-GRANT ALL ON TABLE TESTTABLE TO USER TESTUSER;
--- Grants all data privileges available in the TABLE scope to the user. After executing this statement, the user will have all data privileges on this table
-```
-
-#### 2.2.2 Revoke Privileges
-
-1. Revoke user management privileges from a user
-
-```SQL
-REVOKE SECURITY FROM USER
-eg: REVOKE SECURITY FROM USER TEST_USER;
-```
-
-2. Revoke a user's privilege to create databases and create tables within the database scope
-
-```SQL
-REVOKE CREATE ON DATABASE FROM USER
-eg: REVOKE CREATE ON DATABASE TEST_DB FROM USER TEST_USER;
-```
-
-3. Revoke a user's privilege to query a table
-
-```SQL
-REVOKE SELECT ON . FROM USER
-eg: REVOKE SELECT ON TESTDB.TESTTABLE FROM USER TEST_USER;
-```
-
-4. Revoke a user's privilege to query all databases and tables
-
-```SQL
-REVOKE SELECT ON ANY FROM USER
-eg: REVOKE SELECT ON ANY FROM USER TEST_USER;
-```
-
-5. ALL Syntax Sugar: ALL represents all privileges within the object scope. You can use the ALL field to flexibly revoke privileges.
-
-```SQL
-REVOKE ALL FROM USER TESTUSER;
--- Revokes all global privileges and all data privileges in the ANY scope from the user
-
-REVOKE ALL ON ANY FROM USER TESTUSER;
--- Revokes all data privileges in the ANY scope from the user, and does not affect DB-scope and TABLE-scope privileges
-
-REVOKE ALL ON DATABASE TESTDB FROM USER TESTUSER;
--- Revokes all data privileges on the DB from the user, and does not affect TABLE privileges
-
-REVOKE ALL ON TABLE TESTDB FROM USER TESTUSER;
--- Revokes all data privileges on the TABLE from the user
-```
-
-#### 2.2.3 View User Privileges
-
-```SQL
-LIST PRIVILEGES OF USER
-eg: LIST PRIVILEGES OF USER tempuser
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion_timecho.md
deleted file mode 100644
index fc9593436..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion_timecho.md
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-# Data Addition & Deletion
-
-## 1. Data Insertion
-
-**Syntax:**
-
-```SQL
-INSERT INTO [(COLUMN_NAME[, COLUMN_NAME]*)]? VALUES (COLUMN_VALUE[, COLUMN_VALUE]*)
-```
-
-[Detailed syntax reference](../Basic-Concept/Write-Updata-Data_timecho.md#_1-1-syntax)
-
-**Example 1: Specified Columns Insertion**
-
-```SQL
-INSERT INTO table1(region, plant_id, device_id, time, temperature, humidity) VALUES ('Hamburg', '1001', '100', '2025-11-26 13:37:00', 90.0, 35.1);
-
-INSERT INTO table1(region, plant_id, device_id, time, temperature) VALUES ('Hamburg', '1001', '100', '2025-11-26 13:38:00', 91.0);
-```
-
-**Example 2: NULL Value Insertion**
-
-Equivalent to the example above
-```SQL
-INSERT INTO table1(region, plant_id, device_id, model_id, maintenance, time, temperature, humidity) VALUES ('Hamburg', '1001', '100', null, null, '2025-11-26 13:37:00', 90.0, 35.1);
-
-INSERT INTO table1(region, plant_id, device_id, model_id, maintenance, time, temperature, humidity) VALUES ('Hamburg', '1001', '100', null, null, '2025-11-26 13:38:00', 91.0, null);
-```
-
-**Example 3: Multi-row Insertion**
-
-```SQL
-INSERT INTO table1
-VALUES
-('2025-11-26 13:37:00', 'Frankfurt', '1001', '100', 'A', '180', 90.0, 35.1, true, '2025-11-26 13:37:34'),
-('2025-11-26 13:38:00', 'Frankfurt', '1001', '100', 'A', '180', 90.0, 35.1, true, '2025-11-26 13:38:25');
-
-INSERT INTO table1
-(region, plant_id, device_id, model_id, maintenance, time, temperature, humidity, status, arrival_time)
-VALUES
-('Frankfurt', '1001', '100', 'A', '180', '2025-11-26 13:37:00', 90.0, 35.1, true, '2025-11-26 13:37:34'),
-('Frankfurt', '1001', '100', 'A', '180', '2025-11-26 13:38:00', 90.0, 35.1, true, '2025-11-26 13:38:25');
-```
-
-**Example 4: Query Write-back**
-
-```SQL
-insert into target_table select time,region,device_id,temperature from table1 where region = 'bj';
-
-insert into target_table(time,device_id,temperature) table table3;
-
-insert into target_table (select t1.time, t1.region as region, t1.device_id as device_id, t1.temperature as temperature from table1 t1 where t1.time in (select t2.time from table2 t2 where t2.region = 'shh'));
-```
-
-
-## 2. Data Update
-
-**Syntax:**
-
-```SQL
-UPDATE SET updateAssignment (',' updateAssignment)* (WHERE where=booleanExpression)?
-
-updateAssignment
- : identifier EQ expression
- ;
-```
-
-[Detailed syntax reference](../Basic-Concept/Write-Updata-Data_timecho.md#_2-1-syntax)
-
-**Example:**
-
-```SQL
-update table1 set b = a where substring(a, 1, 1) like '%';
-```
-
-## 3. Data Deletion
-
-**Syntax:**
-
-```SQL
-DELETE FROM [WHERE_CLAUSE]?
-
-WHERE_CLAUSE:
- WHERE DELETE_CONDITION
-
-DELETE_CONDITION:
- SINGLE_CONDITION
- | DELETE_CONDITION AND DELETE_CONDITION
- | DELETE_CONDITION OR DELETE_CONDITION
-
-SINGLE_CODITION:
- TIME_CONDITION | ID_CONDITION
-
-TIME_CONDITION:
- time TIME_OPERATOR LONG_LITERAL
-
-TIME_OPERATOR:
- < | > | <= | >= | =
-
-ID_CONDITION:
- identifier = STRING_LITERAL
-```
-
-**Example 1: Full Table Deletion**
-
-```SQL
-DELETE FROM table1;
-```
-
-**Example 2: Time-range Deletion**
-
-Single time range
-```SQL
-DELETE FROM table1 WHERE time <= 2024-11-29 00:00:00;
-```
-Multiple time ranges
-```sql
-DELETE FROM table1 WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00;
-```
-
-**Example 3: Device-Specific Deletion**
-
-Delete data for specific device
-```SQL
-DELETE FROM table1
-WHERE device_id='101' AND model_id = 'B';
-```
-Delete data for device within time range
-```sql
-DELETE FROM table1
-WHERE time >= '2024-11-27 16:39:00' AND time <= '2024-11-29 16:42:00'
- AND device_id='101' AND model_id = 'B';
-```
-Delete data for specific device model
-```sql
-DELETE FROM table1 WHERE model_id = 'B';
-```
-
-## 4. Device Deletion
-
-**Syntax:**
-
-```SQL
-DELETE DEVICES FROM tableName=qualifiedName (WHERE booleanExpression)?
-```
-
-**Example: Delete specified device and all associated data**
-
-```SQL
-DELETE DEVICES FROM table1 WHERE device_id = '101';
-```
diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Sync_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Sync_timecho.md
deleted file mode 100644
index 41eff7eeb..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Sync_timecho.md
+++ /dev/null
@@ -1,321 +0,0 @@
-
-
-# Data Sync
-
-This document mainly contains the SQL statements for the data synchronization function. For detailed function introduction and usage instructions, see [Data Sync](../User-Manual/Data-Sync_timecho.md)
-
-## 1. Create Task
-
-**Syntax:**
-
-```SQL
-CREATE PIPE [IF NOT EXISTS] -- PipeId is the name that uniquely identifies the task
--- Data extraction plugin, optional
-WITH SOURCE (
- [ = ,],
-)
--- Data processing plugin, optional
-WITH PROCESSOR (
- [ = ,],
-)
--- Data connection plugin, required
-WITH SINK (
- [ = ,],
-)
-```
-
-**Example 1: Full Data Synchronization**
-
-```SQL
-create pipe A2B
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6668',
-)
-```
-
-**Example 2: Partial Data Synchronization**
-
-```SQL
-create pipe A2B
-WITH SOURCE (
- 'source'= 'iotdb-source',
- 'mode.streaming' = 'true',
- 'database-name'='db_b.*',
- 'start-time' = '2023.08.23T08:00:00+00:00',
- 'end-time' = '2023.10.23T08:00:00+00:00'
-)
-with SINK (
- 'sink'='iotdb-thrift-async-sink',
- 'node-urls' = '127.0.0.1:6668',
-)
-```
-
-**Example 3: Bidirectional Data Transmission**
-
-* Execute the following statement on IoTDB A
-
-```SQL
-create pipe AB
-with source (
- 'source.mode.double-living' ='true'
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6668',
-)
-```
-
-* Execute the following statement on IoTDB B
-
-```SQL
-create pipe BA
-with source (
- 'source.mode.double-living' ='true'
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6667',
-)
-```
-
-**Example 4: Edge-Cloud Data Transmission**
-
-* Execute the following statement on IoTDB B to synchronize data from B to A
-
-```SQL
-create pipe BA
-with source (
- 'database-name'='db_b.*',
- 'table-name'='.*',
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6667',
-)
-```
-
-* Execute the following statement on IoTDB C to synchronize data from C to A
-
-```SQL
-create pipe CA
-with source (
- 'database-name'='db_c.*',
- 'table-name'='.*',
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6668',
-)
-```
-
-* Execute the following statement on IoTDB D to synchronize data from D to A
-
-```SQL
-create pipe DA
-with source (
- 'database-name'='db_d.*',
- 'table-name'='.*',
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6669',
-)
-```
-
-**Example 5: Cascaded Data Transmission**
-
-* Execute the following statement on IoTDB A to synchronize data from A to B
-
-```SQL
-create pipe AB
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6668',
-)
-```
-
-* Execute the following statement on IoTDB B to synchronize data from B to C
-
-```SQL
-create pipe BC
-with source (
-)
-with sink (
- 'sink'='iotdb-thrift-sink',
- 'node-urls' = '127.0.0.1:6669',
-)
-```
-
-**Example 6: Cross-Gap Data Transmission**
-
-```SQL
-create pipe A2B
-with sink (
- 'sink'='iotdb-air-gap-sink',
- 'node-urls' = '10.53.53.53:9780',
-)
-```
-
-**Example 7: Compressed Synchronization**
-
-```SQL
-create pipe A2B
-with sink (
- 'node-urls' = '127.0.0.1:6668',
- 'compressor' = 'snappy,lz4',
- 'rate-limit-bytes-per-second'='1048576'
-)
-```
-
-**Example 8: Encrypted Synchronization**
-
-```SQL
-create pipe A2B
-with sink (
- 'sink'='iotdb-thrift-ssl-sink',
- 'node-urls'='127.0.0.1:6667',
- 'ssl.trust-store-path'='pki/trusted',
- 'ssl.trust-store-pwd'='root'
-)
-```
-
-**Example 9: Local Export of Object Type Data**
-
-```SQL
-CREATE PIPE tsfile_export_local
-WITH SOURCE (
- 'source' = 'iotdb-source',
- 'table-name' = 'test_table'
-)
-WITH PROCESSOR (
- 'processor' = 'do-nothing-processor'
-)
-WITH SINK (
- 'sink' = 'tsfile-local-sink',
- 'sink.local.target-path' = '/data/backup/export_2024',
- 'sink.rate-limit-bytes-per-second' = '10485760'
-);
-```
-
-**Example 10: Remote Transmission of Object Type Data**
-
-* This method requires pre-registration of the `tsfile_remote_sink` plugin
-
-```SQL
-CREATE PIPE tsfile_export_scp
-WITH SOURCE (
- 'source' = 'iotdb-source',
- 'table-name' = 'test_table'
-)
-WITH PROCESSOR (
- 'processor' = 'do-nothing-processor'
-)
-WITH SINK (
- 'sink' = 'tsfile_remote_sink',
- 'sink.file-mode' = 'scp',
- 'sink.scp.host' = '192.168.1.100',
- 'sink.scp.port' = '22',
- 'sink.scp.user' = 'backup_user',
- 'sink.scp.password' = 'ComplexPass123!',
- 'sink.scp.remote-path' = '/remote/archive/',
- 'sink.rate-limit-bytes-per-second' = '10485760'
-);
-```
-
-## 2. Start Task
-
-**Syntax:**
-
-```SQL
-START PIPE
-```
-
-**Example:**
-
-```SQL
-START PIPE A2B
-```
-
-## 3. Stop Task
-
-**Syntax:**
-
-```SQL
-STOP PIPE
-```
-
-**Example:**
-
-```SQL
-STOP PIPE A2B
-```
-
-## 4. Drop Task
-
-**Syntax:**
-
-```SQL
-DROP PIPE [IF EXISTS]
-```
-
-**Example:**
-
-```SQL
-DROP PIPE IF EXISTS A2B
-```
-
-## 5. Show Tasks
-
-**Syntax:**
-
-```SQL
--- Show all tasks
-SHOW PIPES
--- Show a specific task
-SHOW PIPE
-```
-
-**Example:**
-
-```SQL
-SHOW PIPES
-
-SHOW PIPE A2B
-```
-
-## 6. Alter Task
-
-**Syntax:**
-
-```SQL
-ALTER PIPE [IF EXISTS]
- MODIFY/REPLACE SOURCE(...)
- MODIFY/REPLACE PROCESSOR(...)
- MODIFY/REPLACE SINK(...)
-```
-
-**Example:**
-
-```SQL
-ALTER PIPE A2B REPLACE SINK ('sink'='iotdb-thrift-sink', 'node-urls' = '127.0.0.1:6668');
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements_timecho.md
deleted file mode 100644
index 7b27761cc..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements_timecho.md
+++ /dev/null
@@ -1,686 +0,0 @@
-
-
-# Management Statements
-
-## 1. Status Inspection
-
-### 1.1 View Current Tree/Table Mode
-
-**Syntax:**
-
-```SQL
-showCurrentSqlDialectStatement
- : SHOW CURRENT_SQL_DIALECT
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW CURRENT_SQL_DIALECT
-+-----------------+
-|CurrentSqlDialect|
-+-----------------+
-| TABLE|
-+-----------------+
-```
-
-### 1.2 View Current User
-
-**Syntax:**
-
-```SQL
-showCurrentUserStatement
- : SHOW CURRENT_USER
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW CURRENT_USER
-+-----------+
-|CurrentUser|
-+-----------+
-| root|
-+-----------+
-```
-
-### 1.3 View Connected Database
-
-**Syntax:**
-
-```SQL
-showCurrentDatabaseStatement
- : SHOW CURRENT_DATABASE
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW CURRENT_DATABASE;
-+---------------+
-|CurrentDatabase|
-+---------------+
-| null|
-+---------------+
-
-IoTDB> USE test;
-
-IoTDB> SHOW CURRENT_DATABASE;
-+---------------+
-|CurrentDatabase|
-+---------------+
-| test|
-+---------------+
-```
-
-### 1.4 View Cluster Version
-
-**Syntax:**
-
-```SQL
-showVersionStatement
- : SHOW VERSION
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW VERSION
-+-------+---------+
-|Version|BuildInfo|
-+-------+---------+
-|2.0.1.2| 1ca4008|
-+-------+---------+
-```
-
-### 1.5 View Key Cluster Parameters
-
-**Syntax:**
-
-```SQL
-showVariablesStatement
- : SHOW VARIABLES
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW VARIABLES
-+----------------------------------+-----------------------------------------------------------------+
-| Variable| Value|
-+----------------------------------+-----------------------------------------------------------------+
-| ClusterName| defaultCluster|
-| DataReplicationFactor| 1|
-| SchemaReplicationFactor| 1|
-| DataRegionConsensusProtocolClass| org.apache.iotdb.consensus.iot.IoTConsensus|
-|SchemaRegionConsensusProtocolClass| org.apache.iotdb.consensus.ratis.RatisConsensus|
-| ConfigNodeConsensusProtocolClass| org.apache.iotdb.consensus.ratis.RatisConsensus|
-| TimePartitionOrigin| 0|
-| TimePartitionInterval| 604800000|
-| ReadConsistencyLevel| strong|
-| SchemaRegionPerDataNode| 1|
-| DataRegionPerDataNode| 0|
-| SeriesSlotNum| 1000|
-| SeriesSlotExecutorClass|org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor|
-| DiskSpaceWarningThreshold| 0.05|
-| TimestampPrecision| ms|
-+----------------------------------+-----------------------------------------------------------------+
-```
-
-### 1.6 View Cluster ID
-
-**Syntax:**
-
-```SQL
-showClusterIdStatement
- : SHOW (CLUSTERID | CLUSTER_ID)
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW CLUSTER_ID
-+------------------------------------+
-| ClusterId|
-+------------------------------------+
-|40163007-9ec1-4455-aa36-8055d740fcda|
-```
-
-### 1.7 View Server Time
-
-Shows time of the DataNode server directly connected to client
-
-**Syntax:**
-
-```SQL
-showCurrentTimestampStatement
- : SHOW CURRENT_TIMESTAMP
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW CURRENT_TIMESTAMP
-+-----------------------------+
-| CurrentTimestamp|
-+-----------------------------+
-|2025-02-17T11:11:52.987+08:00|
-+-----------------------------+
-```
-
-
-### 1.8 View Region Information
-
-**Description**: Displays regions' information of the current cluster.
-
-**Syntax**:
-
-```SQL
-showRegionsStatement
- : SHOW REGIONS
- ;
-```
-
-**Example**:
-
-```SQL
-IoTDB> SHOW REGIONS
-```
-
-**Result**:
-
-```SQL
-+--------+------------+-------+----------+-------------+-----------+----------+----------+-------+---------------+------+-----------------------+----------+
-|RegionId| Type| Status| Database|SeriesSlotNum|TimeSlotNum|DataNodeId|RpcAddress|RpcPort|InternalAddress| Role| CreateTime|TsFileSize|
-+--------+------------+-------+----------+-------------+-----------+----------+----------+-------+---------------+------+-----------------------+----------+
-| 6|SchemaRegion|Running|tcollector| 670| 0| 1| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-08-01T17:37:01.194| |
-| 7| DataRegion|Running|tcollector| 335| 335| 1| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-08-01T17:37:01.196| 169.85 KB|
-| 8| DataRegion|Running|tcollector| 335| 335| 1| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-08-01T17:37:01.198| 161.63 KB|
-+--------+------------+-------+----------+-------------+-----------+----------+----------+-------+---------------+------+-----------------------+----------+
-```
-
-### 1.9 View Available Nodes
-
-**Description**: Returns the RPC addresses and ports of all available DataNodes in the current cluster. Note: A DataNode is considered "available" if it is not in the REMOVING state.
-
-> This feature is supported starting from v2.0.8.
-
-**Syntax**:
-
-```SQL
-showAvailableUrlsStatement
- : SHOW AVAILABLE URLS
- ;
-```
-
-**Example**:
-
-```SQL
-IoTDB> SHOW AVAILABLE URLS
-```
-
-**Result**:
-
-```SQL
-+----------+-------+
-|RpcAddress|RpcPort|
-+----------+-------+
-| 0.0.0.0| 6667|
-+----------+-------+
-```
-
-### 1.10 View Service Information
-
-> Supported since V2.0.8.2
-
-**Syntax**:
-
-```sql
-showServicesStatement
- : SHOW SERVICES
- ;
-```
-
-**Example**:
-
-```sql
-IoTDB> SHOW SERVICES
-IoTDB> SHOW SERVICES ON 1
-```
-
-**Result**:
-
-```sql
-+--------------+-------------+---------+
-| Service Name | DataNode ID | State |
-+--------------+-------------+---------+
-| MQTT | 1 | STOPPED |
-| REST | 1 | RUNNING |
-+--------------+-------------+---------+
-```
-
-### 1.11 View Cluster Activation Status
-
-**Syntax**:
-
-```SQL
-showActivationStatement
- : SHOW ACTIVATION
- ;
-```
-
-**Example**:
-
-```SQL
-IoTDB> SHOW ACTIVATION
-```
-
-**Result**:
-
-```SQL
-+---------------+---------+-----------------------------+
-| LicenseInfo| Usage| Limit|
-+---------------+---------+-----------------------------+
-| Status|ACTIVATED| -|
-| ExpiredTime| -|2026-04-30T00:00:00.000+08:00|
-| DataNodeLimit| 1| Unlimited|
-| CpuLimit| 16| Unlimited|
-| DeviceLimit| 30| Unlimited|
-|TimeSeriesLimit| 72| 1,000,000,000|
-+---------------+---------+-----------------------------+
-```
-
-## 2. Status Configuration
-
-### 2.1 Set Connection Tree/Table Mode
-
-**Syntax:**
-
-```SQL
-SET SQL_DIALECT EQ (TABLE | TREE)
-```
-
-**Example:**
-
-```SQL
-IoTDB> SET SQL_DIALECT=TABLE
-IoTDB> SHOW CURRENT_SQL_DIALECT
-+-----------------+
-|CurrentSqlDialect|
-+-----------------+
-| TABLE|
-+-----------------+
-```
-
-### 2.2 Update Configuration Items
-
-**Syntax:**
-
-```SQL
-setConfigurationStatement
- : SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)?
- ;
-
-propertyAssignments
- : property (',' property)*
- ;
-
-property
- : identifier EQ propertyValue
- ;
-
-propertyValue
- : DEFAULT
- | expression
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SET CONFIGURATION disk_space_warning_threshold='0.05',heartbeat_interval_in_ms='1000' ON 1;
-```
-
-### 2.3 Load Manually Modified Configuration
-
-**Syntax:**
-
-```SQL
-loadConfigurationStatement
- : LOAD CONFIGURATION localOrClusterMode?
- ;
-
-localOrClusterMode
- : (ON (LOCAL | CLUSTER))
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> LOAD CONFIGURATION ON LOCAL;
-```
-
-### 2.4 Set System Status
-
-**Syntax:**
-
-```SQL
-setSystemStatusStatement
- : SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode?
- ;
-
-localOrClusterMode
- : (ON (LOCAL | CLUSTER))
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SET SYSTEM TO READONLY ON CLUSTER;
-```
-
-## 3. Data Management
-
-### 3.1 Flush Memory Table to Disk
-
-**Syntax:**
-
-```SQL
-flushStatement
- : FLUSH identifier? (',' identifier)* booleanValue? localOrClusterMode?
- ;
-
-booleanValue
- : TRUE | FALSE
- ;
-
-localOrClusterMode
- : (ON (LOCAL | CLUSTER))
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> FLUSH test_db TRUE ON LOCAL;
-```
-
-## 4. Data Repair
-
-### 4.1 Start Background TsFile Repair
-
-**Syntax:**
-
-```SQL
-startRepairDataStatement
- : START REPAIR DATA localOrClusterMode?
- ;
-
-localOrClusterMode
- : (ON (LOCAL | CLUSTER))
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> START REPAIR DATA ON CLUSTER;
-```
-
-### 4.2 Pause TsFile Repair
-
-**Syntax:**
-
-```SQL
-stopRepairDataStatement
- : STOP REPAIR DATA localOrClusterMode?
- ;
-
-localOrClusterMode
- : (ON (LOCAL | CLUSTER))
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> STOP REPAIR DATA ON CLUSTER;
-```
-
-## 5. Query Operations
-
-### 5.1 View Active Queries
-
-**Syntax:**
-
-```SQL
-showQueriesStatement
- : SHOW (QUERIES | QUERY PROCESSLIST)
- (WHERE where=booleanExpression)?
- (ORDER BY sortItem (',' sortItem)*)?
- limitOffsetClause
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> SHOW QUERIES WHERE elapsed_time > 30
-+-----------------------+-----------------------------+-----------+------------+------------+----+
-| query_id| start_time|datanode_id|elapsed_time| statement|user|
-+-----------------------+-----------------------------+-----------+------------+------------+----+
-|20250108_101015_00000_1|2025-01-08T18:10:15.935+08:00| 1| 32.283|show queries|root|
-+-----------------------+-----------------------------+-----------+------------+------------+----+
-```
-
-### 5.2 Terminate Queries
-
-**Syntax:**
-
-```SQL
-killQueryStatement
- : KILL (QUERY queryId=string | ALL QUERIES)
- ;
-```
-
-**Example:**
-
-```SQL
-IoTDB> KILL QUERY 20250108_101015_00000_1; -- teminate specific query
-IoTDB> KILL ALL QUERIES; -- teminate all query
-```
-
-### 5.3 Query Performance Analysis
-
-#### 5.3.1 View Execution Plan
-
-**Syntax:**
-
-```SQL
-EXPLAIN
-```
-
-Detailed syntax reference: [EXPLAIN STATEMENT](../User-Manual/Query-Performance-Analysis.md#_1-explain-statement)
-
-**Example:**
-
-```SQL
-IoTDB> explain select * from t1
-+-----------------------------------------------------------------------------------------------+
-| distribution plan|
-+-----------------------------------------------------------------------------------------------+
-| ┌─────────────────────────────────────────────┐ |
-| │OutputNode-4 │ |
-| │OutputColumns-[time, device_id, type, speed] │ |
-| │OutputSymbols: [time, device_id, type, speed]│ |
-| └─────────────────────────────────────────────┘ |
-| │ |
-| │ |
-| ┌─────────────────────────────────────────────┐ |
-| │Collect-21 │ |
-| │OutputSymbols: [time, device_id, type, speed]│ |
-| └─────────────────────────────────────────────┘ |
-| ┌───────────────────────┴───────────────────────┐ |
-| │ │ |
-|┌─────────────────────────────────────────────┐ ┌───────────┐ |
-|│TableScan-19 │ │Exchange-28│ |
-|│QualifiedTableName: test.t1 │ └───────────┘ |
-|│OutputSymbols: [time, device_id, type, speed]│ │ |
-|│DeviceNumber: 1 │ │ |
-|│ScanOrder: ASC │ ┌─────────────────────────────────────────────┐|
-|│PushDownOffset: 0 │ │TableScan-20 │|
-|│PushDownLimit: 0 │ │QualifiedTableName: test.t1 │|
-|│PushDownLimitToEachDevice: false │ │OutputSymbols: [time, device_id, type, speed]│|
-|│RegionId: 2 │ │DeviceNumber: 1 │|
-|└─────────────────────────────────────────────┘ │ScanOrder: ASC │|
-| │PushDownOffset: 0 │|
-| │PushDownLimit: 0 │|
-| │PushDownLimitToEachDevice: false │|
-| │RegionId: 1 │|
-| └─────────────────────────────────────────────┘|
-+-----------------------------------------------------------------------------------------------+
-```
-
-#### 5.3.2 Analyze Query Performance
-
-**Syntax:**
-
-```SQL
-EXPLAIN ANALYZE [VERBOSE]
-```
-
-Detailed syntax reference: [EXPLAIN ANALYZE STATEMENT](../User-Manual/Query-Performance-Analysis.md#_2-explain-analyze-statement)
-
-**Example:**
-
-```SQL
-IoTDB> explain analyze verbose select * from t1
-+-----------------------------------------------------------------------------------------------+
-| Explain Analyze|
-+-----------------------------------------------------------------------------------------------+
-|Analyze Cost: 38.860 ms |
-|Fetch Partition Cost: 9.888 ms |
-|Fetch Schema Cost: 54.046 ms |
-|Logical Plan Cost: 10.102 ms |
-|Logical Optimization Cost: 17.396 ms |
-|Distribution Plan Cost: 2.508 ms |
-|Dispatch Cost: 22.126 ms |
-|Fragment Instances Count: 2 |
-| |
-|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.2.0][IP: 0.0.0.0][DataRegion: 2][State: FINISHED]|
-| Total Wall Time: 18 ms |
-| Cost of initDataQuerySource: 6.153 ms |
-| Seq File(unclosed): 1, Seq File(closed): 0 |
-| UnSeq File(unclosed): 0, UnSeq File(closed): 0 |
-| ready queued time: 0.164 ms, blocked queued time: 0.342 ms |
-| Query Statistics: |
-| loadBloomFilterFromCacheCount: 0 |
-| loadBloomFilterFromDiskCount: 0 |
-| loadBloomFilterActualIOSize: 0 |
-| loadBloomFilterTime: 0.000 |
-| loadTimeSeriesMetadataAlignedMemSeqCount: 1 |
-| loadTimeSeriesMetadataAlignedMemSeqTime: 0.246 |
-| loadTimeSeriesMetadataFromCacheCount: 0 |
-| loadTimeSeriesMetadataFromDiskCount: 0 |
-| loadTimeSeriesMetadataActualIOSize: 0 |
-| constructAlignedChunkReadersMemCount: 1 |
-| constructAlignedChunkReadersMemTime: 0.294 |
-| loadChunkFromCacheCount: 0 |
-| loadChunkFromDiskCount: 0 |
-| loadChunkActualIOSize: 0 |
-| pageReadersDecodeAlignedMemCount: 1 |
-| pageReadersDecodeAlignedMemTime: 0.047 |
-| [PlanNodeId 43]: IdentitySinkNode(IdentitySinkOperator) |
-| CPU Time: 5.523 ms |
-| output: 2 rows |
-| HasNext() Called Count: 6 |
-| Next() Called Count: 5 |
-| Estimated Memory Size: : 327680 |
-| [PlanNodeId 31]: CollectNode(CollectOperator) |
-| CPU Time: 5.512 ms |
-| output: 2 rows |
-| HasNext() Called Count: 6 |
-| Next() Called Count: 5 |
-| Estimated Memory Size: : 327680 |
-| [PlanNodeId 29]: TableScanNode(TableScanOperator) |
-| CPU Time: 5.439 ms |
-| output: 1 rows |
-| HasNext() Called Count: 3
-| Next() Called Count: 2 |
-| Estimated Memory Size: : 327680 |
-| DeviceNumber: 1 |
-| CurrentDeviceIndex: 0 |
-| [PlanNodeId 40]: ExchangeNode(ExchangeOperator) |
-| CPU Time: 0.053 ms |
-| output: 1 rows |
-| HasNext() Called Count: 2 |
-| Next() Called Count: 1 |
-| Estimated Memory Size: : 131072 |
-| |
-|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.3.0][IP: 0.0.0.0][DataRegion: 1][State: FINISHED]|
-| Total Wall Time: 13 ms |
-| Cost of initDataQuerySource: 5.725 ms |
-| Seq File(unclosed): 1, Seq File(closed): 0 |
-| UnSeq File(unclosed): 0, UnSeq File(closed): 0 |
-| ready queued time: 0.118 ms, blocked queued time: 5.844 ms |
-| Query Statistics: |
-| loadBloomFilterFromCacheCount: 0 |
-| loadBloomFilterFromDiskCount: 0 |
-| loadBloomFilterActualIOSize: 0 |
-| loadBloomFilterTime: 0.000 |
-| loadTimeSeriesMetadataAlignedMemSeqCount: 1 |
-| loadTimeSeriesMetadataAlignedMemSeqTime: 0.004 |
-| loadTimeSeriesMetadataFromCacheCount: 0 |
-| loadTimeSeriesMetadataFromDiskCount: 0 |
-| loadTimeSeriesMetadataActualIOSize: 0 |
-| constructAlignedChunkReadersMemCount: 1 |
-| constructAlignedChunkReadersMemTime: 0.001 |
-| loadChunkFromCacheCount: 0 |
-| loadChunkFromDiskCount: 0 |
-| loadChunkActualIOSize: 0 |
-| pageReadersDecodeAlignedMemCount: 1 |
-| pageReadersDecodeAlignedMemTime: 0.007 |
-| [PlanNodeId 42]: IdentitySinkNode(IdentitySinkOperator) |
-| CPU Time: 0.270 ms |
-| output: 1 rows |
-| HasNext() Called Count: 3 |
-| Next() Called Count: 2 |
-| Estimated Memory Size: : 327680 |
-| [PlanNodeId 30]: TableScanNode(TableScanOperator) |
-| CPU Time: 0.250 ms |
-| output: 1 rows |
-| HasNext() Called Count: 3 |
-| Next() Called Count: 2 |
-| Estimated Memory Size: : 327680 |
-| DeviceNumber: 1 |
-| CurrentDeviceIndex: 0 |
-+-----------------------------------------------------------------------------------------------+
-```
diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations_timecho.md
deleted file mode 100644
index 7b6107b4e..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations_timecho.md
+++ /dev/null
@@ -1,385 +0,0 @@
-
-
-# Metadata Operations
-
-## 1. Database Management
-
-### 1.1 Create Database
-
-**Syntax:**
-
-```SQL
-CREATE DATABASE (IF NOT EXISTS)? (WITH properties)?
-```
-
-[Detailed syntax reference](../Basic-Concept/Database-Management_timecho.md#_1-1-create-a-database)
-
-**Examples:**
-
-```SQL
-CREATE DATABASE database1;
-CREATE DATABASE IF NOT EXISTS database1;
-
--- Create database with 1-year TTL;
-CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000);
-```
-
-### 1.2 Use Database
-
-**Syntax:**
-
-```SQL
-USE
-```
-
-**Examples:**
-
-```SQL
-USE database1;
-```
-
-### 1.3 View Current Database
-
-**Syntax:**
-
-```SQL
-SHOW CURRENT_DATABASE;
-```
-
-**Examples:**
-
-```SQL
-SHOW CURRENT_DATABASE;
-```
-```shell
-+---------------+
-|CurrentDatabase|
-+---------------+
-| null|
-+---------------+
-```
-```sql
-USE database1;
-SHOW CURRENT_DATABASE;
-```
-```shell
-+---------------+
-|CurrentDatabase|
-+---------------+
-| database1|
-+---------------+
-```
-
-### 1.4 List All Databases
-
-**Syntax:**
-
-```SQL
-SHOW DATABASES (DETAILS)?
-```
-
-[Detailed syntax reference](../Basic-Concept/Database-Management_timecho.md#_1-4-view-all-databases)
-
-**Examples:**
-
-```SQL
-show databases;
-```
-```shell
-+------------------+-------+-----------------------+---------------------+---------------------+
-| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|
-+------------------+-------+-----------------------+---------------------+---------------------+
-| database1| INF| 1| 1| 604800000|
-|information_schema| INF| null| null| null|
-+------------------+-------+-----------------------+---------------------+---------------------+
-```
-```sql
-show databases details;
-```
-```shell
-+------------------+-------+-----------------------+---------------------+---------------------+--------------------+------------------+
-| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|DataRegionGroupNum|
-+------------------+-------+-----------------------+---------------------+---------------------+--------------------+------------------+
-| database1| INF| 1| 1| 604800000| 1| 2|
-|information_schema| INF| null| null| null| null| null|
-+------------------+-------+-----------------------+---------------------+---------------------+--------------------+------------------+
-```
-
-### 1.5 Modify Database
-
-**Syntax:**
-
-```SQL
-ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments
-```
-
-**Examples:**
-
-```SQL
-ALTER DATABASE database1 SET PROPERTIES TTL=31536000000;
-```
-
-### 1.6 Drop Database
-
-**Syntax:**
-
-```SQL
-DROP DATABASE (IF EXISTS)?
-```
-
-**Examples:**
-
-```SQL
-DROP DATABASE IF EXISTS database1;
-```
-
-## 2. Table Management
-
-### 2.1 Create Table
-
-**Syntax:**
-
-```SQL
-createTableStatement
- : CREATE TABLE (IF NOT EXISTS)? qualifiedName
- '(' (columnDefinition (',' columnDefinition)*)? ')'
- charsetDesc?
- comment?
- (WITH properties)?
- ;
-
-charsetDesc
- : DEFAULT? (CHAR SET | CHARSET | CHARACTER SET) EQ? identifierOrString
- ;
-
-columnDefinition
- : identifier columnCategory=(TAG | ATTRIBUTE | TIME) charsetName? comment?
- | identifier type (columnCategory=(TAG | ATTRIBUTE | TIME | FIELD))? charsetName? comment?
- ;
-
-charsetName
- : CHAR SET identifier
- | CHARSET identifier
- | CHARACTER SET identifier
- ;
-
-comment
- : COMMENT string
- ;
-```
-
-[Detailed syntax reference](../Basic-Concept/Table-Management_timecho.md#_1-1-create-a-table)
-
-**Examples:**
-
-```SQL
-CREATE TABLE table1 (
- time TIMESTAMP TIME,
- region STRING TAG,
- plant_id STRING TAG,
- device_id STRING TAG,
- model_id STRING ATTRIBUTE,
- maintenance STRING ATTRIBUTE COMMENT 'maintenance',
- temperature FLOAT FIELD COMMENT 'temperature',
- humidity FLOAT FIELD COMMENT 'humidity',
- status BOOLEAN FIELD COMMENT 'status',
- arrival_time TIMESTAMP FIELD COMMENT 'arrival_time'
-) COMMENT 'table1' WITH (TTL=31536000000);
-
-CREATE TABLE if not exists tableB ();
-
-CREATE TABLE tableC (
- "Site" STRING TAG,
- "Temperature" int32 FIELD COMMENT 'temperature'
- ) with (TTL=DEFAULT);
- ```
-
-Custom time column: named time_test, located in the second column of the table. (Support from V2.0.8.2)
- ```sql
- CREATE TABLE table1 (
- region STRING TAG,
- time_user_defined TIMESTAMP TIME,
- temperature FLOAT FIELD
- );
-```
-
-Note: If your terminal does not support multi-line paste (e.g., Windows CMD), please reformat the SQL statement into a single line before execution.
-
-
-### 2.2 List Tables
-
-**Syntax:**
-
-```SQL
-SHOW TABLES (DETAILS)? ((FROM | IN) database_name)?
-```
-
-**Examples:**
-
-```SQL
-show tables from database1;
-```
-```shell
-+---------+---------------+
-|TableName| TTL(ms)|
-+---------+---------------+
-| table1| 31536000000|
-+---------+---------------+
-```
-```sql
-show tables details from database1;
-```
-```shell
-+---------------+-----------+------+-------+
-| TableName| TTL(ms)|Status|Comment|
-+---------------+-----------+------+-------+
-| table1|31536000000| USING| table1|
-+---------------+-----------+------+-------+
-```
-
-### 2.3 Describe Table Columns
-
-**Syntax:**
-
-```SQL
-(DESC | DESCRIBE) (DETAILS)?
-```
-
-**Examples:**
-
-```SQL
-desc table1;
-```
-```shell
-+------------+---------+---------+
-| ColumnName| DataType| Category|
-+------------+---------+---------+
-| time|TIMESTAMP| TIME|
-| region| STRING| TAG|
-| plant_id| STRING| TAG|
-| device_id| STRING| TAG|
-| model_id| STRING|ATTRIBUTE|
-| maintenance| STRING|ATTRIBUTE|
-| temperature| FLOAT| FIELD|
-| humidity| FLOAT| FIELD|
-| status| BOOLEAN| FIELD|
-|arrival_time|TIMESTAMP| FIELD|
-+------------+---------+---------+
-```
-```sql
-desc table1 details;
-```
-```shell
-+------------+---------+---------+------+------------+
-| ColumnName| DataType| Category|Status| Comment|
-+------------+---------+---------+------+------------+
-| time|TIMESTAMP| TIME| USING| null|
-| region| STRING| TAG| USING| null|
-| plant_id| STRING| TAG| USING| null|
-| device_id| STRING| TAG| USING| null|
-| model_id| STRING|ATTRIBUTE| USING| null|
-| maintenance| STRING|ATTRIBUTE| USING| maintenance|
-| temperature| FLOAT| FIELD| USING| temperature|
-| humidity| FLOAT| FIELD| USING| humidity|
-| status| BOOLEAN| FIELD| USING| status|
-|arrival_time|TIMESTAMP| FIELD| USING|arrival_time|
-+------------+---------+---------+------+------------+
-```
-
-
-### 2.4 View Table Creation Statement
-
-**Syntax:**
-
-```SQL
-SHOW CREATE TABLE
-```
-
-**Examples:**
-
-```SQL
-show create table table1;
-```
-```shell
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| Table| Create Table|
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-|table1|CREATE TABLE "table1" ("region" STRING TAG,"plant_id" STRING TAG,"device_id" STRING TAG,"model_id" STRING ATTRIBUTE,"maintenance" STRING ATTRIBUTE,"temperature" FLOAT FIELD,"humidity" FLOAT FIELD,"status" BOOLEAN FIELD,"arrival_time" TIMESTAMP FIELD) WITH (ttl=31536000000)|
-+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-```
-
-
-### 2.5 Modify Table
-
-**Syntax:**
-
-```SQL
-#addColumn;
-ALTER TABLE (IF EXISTS)? tableName=qualifiedName ADD COLUMN (IF NOT EXISTS)? column=columnDefinition COMMENT 'column_comment';
-#dropColumn;
-| ALTER TABLE (IF EXISTS)? tableName=qualifiedName DROP COLUMN (IF EXISTS)? column=identifier;
-#setTableProperties;
-// set TTL can use this;
-| ALTER TABLE (IF EXISTS)? tableName=qualifiedName SET PROPERTIES propertyAssignments;
-| COMMENT ON TABLE tableName=qualifiedName IS 'table_comment';
-| COMMENT ON COLUMN tableName.column IS 'column_comment';
-#changeColumndatatype;
-| ALTER TABLE (IF EXISTS)? tableName=qualifiedName ALTER COLUMN (IF EXISTS)? column=identifier SET DATA TYPE new_type=type;
-```
-
-**Examples:**
-
-add column
-```SQL
-ALTER TABLE table1 ADD COLUMN IF NOT EXISTS a TAG COMMENT 'a';
-ALTER TABLE table1 ADD COLUMN IF NOT EXISTS b FLOAT FIELD COMMENT 'b';
-```
-set TTL
-```SQL
-ALTER TABLE table1 set properties TTL=3600;
-```
-set comment
-```SQL
-COMMENT ON TABLE table1 IS 'table1';
-COMMENT ON COLUMN table1.a IS null;
-```
-alter column datatype
-```SQL
-ALTER TABLE table1 ALTER COLUMN IF EXISTS b SET DATA TYPE DOUBLE;
-```
-
-### 2.6 Drop Table
-
-**Syntax:**
-
-```SQL
-DROP TABLE (IF EXISTS)?
-```
-
-**Examples:**
-
-```SQL
-DROP TABLE table1;
-DROP TABLE database1.table1;
-```
-
-
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Select-Clause_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/Select-Clause_timecho.md
deleted file mode 100644
index a489f8a90..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/Select-Clause_timecho.md
+++ /dev/null
@@ -1,491 +0,0 @@
-
-
-# SELECT Clauses
-
-**SELECT Clause** specifies the columns included in the query results.
-
-## 1. Syntax Overview
-
-```sql
-SELECT setQuantifier? selectItem (',' selectItem)*
-
-selectItem
- : expression (AS? identifier)? #selectSingle
- | tableName '.' ASTERISK (AS columnAliases)? #selectAll
- | ASTERISK #selectAll
- ;
-setQuantifier
- : DISTINCT
- | ALL
- ;
-```
-
-- It supports aggregate functions (e.g., `SUM`, `AVG`, `COUNT`) and window functions, logically executed last in the query process.
-- DISTINCT Keyword: `SELECT DISTINCT column_name` ensures that the values in the query results are unique, removing duplicates.
-- COLUMNS Function: The COLUMNS function is supported in the SELECT clause for column filtering. It can be combined with expressions, allowing the expression's logic to apply to all columns selected by the function.
-
-## 2. Detailed Syntax:
-
-Each `selectItem` can take one of the following forms:
-
-1. **Expression**: `expression [[AS] column_alias]` defines a single output column and optionally assigns an alias.
-2. **All Columns from a Relation**: `relation.*` selects all columns from a specified relation. Column aliases are not allowed in this case.
-3. **All Columns in the Result Set**: `*` selects all columns returned by the query. Column aliases are not allowed.
-
-Usage scenarios for DISTINCT:
-
-1. **SELECT Statement**: Use DISTINCT in the SELECT statement to remove duplicate items from the query results.
-
-2. **Aggregate Functions**: When used with aggregate functions, DISTINCT only processes non-duplicate rows in the input dataset.
-
-3. **AGROUP BY Clause**: Use ALL and DISTINCT quantifiers in the GROUP BY clause to determine whether each duplicate grouping set produces distinct output rows.
-
-`COLUMNS` Function:
-
-1. **`COLUMNS(*)`**: Matches all columns and supports combining with expressions.
-2. **`COLUMNS(regexStr) ? AS identifier`**: Regular expression matching
- - Selects columns whose names match the specified regular expression `(regexStr)` and supports combining with expressions.
- - Allows renaming columns by referencing groups captured by the regular expression. If `AS` is omitted, the original column name is displayed in the format `_coln_original_name` (where `n` is the column’s position in the result table).
- - Renaming Syntax:
- - Use parentheses () in regexStr to define capture groups.
- - Reference captured groups in identifier using `'$index'`.
- - Note: The identifier must be enclosed in double quotes if it contains special characters like `$`.
-
-## 3. Example Data
-
-
-The [Example Data page](../Reference/Sample-Data.md)page provides SQL statements to construct table schemas and insert data. By downloading and executing these statements in the IoTDB CLI, you can import the data into IoTDB. This data can be used to test and run the example SQL queries included in this documentation, allowing you to reproduce the described results.
-
-### 3.1 Selection List
-
-#### 3.1.1 Star Expression
-
-The asterisk (`*`) selects all columns in a table. Note that it cannot be used with most functions, except for cases like `COUNT(*)`.
-
-**Example**: Selecting all columns from a table.
-
-
-```sql
-SELECT * FROM table1;
-```
-
-Results:
-
-```sql
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-| time|region|plant_id|device_id|model_id|maintenance|temperature|humidity|status| modifytime|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-|2024-11-29T11:00:00.000+08:00| 上海| 3002| 100| E| 180| null| 45.1| true| null|
-|2024-11-29T18:30:00.000+08:00| 上海| 3002| 100| E| 180| 90.0| 35.4| true|2024-11-29T18:30:15.000+08:00|
-|2024-11-28T08:00:00.000+08:00| 上海| 3001| 100| C| 90| 85.0| null| null|2024-11-28T08:00:09.000+08:00|
-|2024-11-28T09:00:00.000+08:00| 上海| 3001| 100| C| 90| null| 40.9| true| null|
-|2024-11-28T10:00:00.000+08:00| 上海| 3001| 100| C| 90| 85.0| 35.2| null|2024-11-28T10:00:11.000+08:00|
-|2024-11-28T11:00:00.000+08:00| 上海| 3001| 100| C| 90| 88.0| 45.1| true|2024-11-28T11:00:12.000+08:00|
-|2024-11-26T13:37:00.000+08:00| 北京| 1001| 100| A| 180| 90.0| 35.1| true|2024-11-26T13:37:34.000+08:00|
-|2024-11-26T13:38:00.000+08:00| 北京| 1001| 100| A| 180| 90.0| 35.1| true|2024-11-26T13:38:25.000+08:00|
-|2024-11-30T09:30:00.000+08:00| 上海| 3002| 101| F| 360| 90.0| 35.2| true| null|
-|2024-11-30T14:30:00.000+08:00| 上海| 3002| 101| F| 360| 90.0| 34.8| true|2024-11-30T14:30:17.000+08:00|
-|2024-11-29T10:00:00.000+08:00| 上海| 3001| 101| D| 360| 85.0| null| null|2024-11-29T10:00:13.000+08:00|
-|2024-11-27T16:38:00.000+08:00| 北京| 1001| 101| B| 180| null| 35.1| true|2024-11-26T16:37:01.000+08:00|
-|2024-11-27T16:39:00.000+08:00| 北京| 1001| 101| B| 180| 85.0| 35.3| null| null|
-|2024-11-27T16:40:00.000+08:00| 北京| 1001| 101| B| 180| 85.0| null| null|2024-11-26T16:37:03.000+08:00|
-|2024-11-27T16:41:00.000+08:00| 北京| 1001| 101| B| 180| 85.0| null| null|2024-11-26T16:37:04.000+08:00|
-|2024-11-27T16:42:00.000+08:00| 北京| 1001| 101| B| 180| null| 35.2| false| null|
-|2024-11-27T16:43:00.000+08:00| 北京| 1001| 101| B| 180| null| null| false| null|
-|2024-11-27T16:44:00.000+08:00| 北京| 1001| 101| B| 180| null| null| false|2024-11-26T16:37:08.000+08:00|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-Total line number = 18
-It costs 0.653s
-```
-
-#### 3.1.2 Aggregate Functions
-
-Aggregate functions summarize multiple rows into a single value. When aggregate functions are present in the `SELECT` clause, the query is treated as an **aggregate query**. All expressions in the query must either be part of an aggregate function or specified in the [GROUP BY clause](../SQL-Manual/GroupBy-Clause.md).
-
-**Example 1**: Total number of rows in a table.
-
-```sql
-SELECT count(*) FROM table1;
-```
-
-Results:
-
-```sql
-+-----+
-|_col0|
-+-----+
-| 18|
-+-----+
-Total line number = 1
-It costs 0.091s
-```
-
-**Example 2**: Total rows grouped by region.
-
-```sql
-SELECT region, count(*)
- FROM table1
- GROUP BY region;
-```
-
-Results:
-
-```sql
-+------+-----+
-|region|_col1|
-+------+-----+
-| 上海| 9|
-| 北京| 9|
-+------+-----+
-Total line number = 2
-It costs 0.071s
-```
-
-#### 3.1.3 Aliases
-
-The `AS` keyword assigns an alias to selected columns, improving readability by overriding existing column names.
-
-**Example 1**: Original table.
-
-
-```sql
-IoTDB> SELECT * FROM table1;
-```
-
-Results:
-
-```sql
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-| time|region|plant_id|device_id|model_id|maintenance|temperature|humidity|status| modifytime|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-|2024-11-29T11:00:00.000+08:00| 上海| 3002| 100| E| 180| null| 45.1| true| null|
-|2024-11-29T18:30:00.000+08:00| 上海| 3002| 100| E| 180| 90.0| 35.4| true|2024-11-29T18:30:15.000+08:00|
-|2024-11-28T08:00:00.000+08:00| 上海| 3001| 100| C| 90| 85.0| null| null|2024-11-28T08:00:09.000+08:00|
-|2024-11-28T09:00:00.000+08:00| 上海| 3001| 100| C| 90| null| 40.9| true| null|
-|2024-11-28T10:00:00.000+08:00| 上海| 3001| 100| C| 90| 85.0| 35.2| null|2024-11-28T10:00:11.000+08:00|
-|2024-11-28T11:00:00.000+08:00| 上海| 3001| 100| C| 90| 88.0| 45.1| true|2024-11-28T11:00:12.000+08:00|
-|2024-11-26T13:37:00.000+08:00| 北京| 1001| 100| A| 180| 90.0| 35.1| true|2024-11-26T13:37:34.000+08:00|
-|2024-11-26T13:38:00.000+08:00| 北京| 1001| 100| A| 180| 90.0| 35.1| true|2024-11-26T13:38:25.000+08:00|
-|2024-11-30T09:30:00.000+08:00| 上海| 3002| 101| F| 360| 90.0| 35.2| true| null|
-|2024-11-30T14:30:00.000+08:00| 上海| 3002| 101| F| 360| 90.0| 34.8| true|2024-11-30T14:30:17.000+08:00|
-|2024-11-29T10:00:00.000+08:00| 上海| 3001| 101| D| 360| 85.0| null| null|2024-11-29T10:00:13.000+08:00|
-|2024-11-27T16:38:00.000+08:00| 北京| 1001| 101| B| 180| null| 35.1| true|2024-11-26T16:37:01.000+08:00|
-|2024-11-27T16:39:00.000+08:00| 北京| 1001| 101| B| 180| 85.0| 35.3| null| null|
-|2024-11-27T16:40:00.000+08:00| 北京| 1001| 101| B| 180| 85.0| null| null|2024-11-26T16:37:03.000+08:00|
-|2024-11-27T16:41:00.000+08:00| 北京| 1001| 101| B| 180| 85.0| null| null|2024-11-26T16:37:04.000+08:00|
-|2024-11-27T16:42:00.000+08:00| 北京| 1001| 101| B| 180| null| 35.2| false| null|
-|2024-11-27T16:43:00.000+08:00| 北京| 1001| 101| B| 180| null| null| false| null|
-|2024-11-27T16:44:00.000+08:00| 北京| 1001| 101| B| 180| null| null| false|2024-11-26T16:37:08.000+08:00|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-Total line number = 18
-It costs 0.653s
-```
-
-**Example 2**: Assigning an alias to a single column.
-
-```sql
-IoTDB> SELECT device_id
- AS device
- FROM table1;
-```
-
-Results:
-
-```sql
-+------+
-|device|
-+------+
-| 100|
-| 100|
-| 100|
-| 100|
-| 100|
-| 100|
-| 100|
-| 100|
-| 101|
-| 101|
-| 101|
-| 101|
-| 101|
-| 101|
-| 101|
-| 101|
-| 101|
-| 101|
-+------+
-Total line number = 18
-It costs 0.053s
-```
-
-**Example 3:** Assigning aliases to all columns.
-
-```sql
-IoTDB> SELECT table1.*
- AS (timestamp, Reg, Pl, DevID, Mod, Mnt, Temp, Hum, Stat,MTime)
- FROM table1;
-```
-
-Results:
-
-```sql
-+-----------------------------+----+----+-----+---+---+----+----+-----+-----------------------------+
-| TIMESTAMP| REG| PL|DEVID|MOD|MNT|TEMP| HUM| STAT| MTIME|
-+-----------------------------+----+----+-----+---+---+----+----+-----+-----------------------------+
-|2024-11-29T11:00:00.000+08:00|上海|3002| 100| E|180|null|45.1| true| null|
-|2024-11-29T18:30:00.000+08:00|上海|3002| 100| E|180|90.0|35.4| true|2024-11-29T18:30:15.000+08:00|
-|2024-11-28T08:00:00.000+08:00|上海|3001| 100| C| 90|85.0|null| null|2024-11-28T08:00:09.000+08:00|
-|2024-11-28T09:00:00.000+08:00|上海|3001| 100| C| 90|null|40.9| true| null|
-|2024-11-28T10:00:00.000+08:00|上海|3001| 100| C| 90|85.0|35.2| null|2024-11-28T10:00:11.000+08:00|
-|2024-11-28T11:00:00.000+08:00|上海|3001| 100| C| 90|88.0|45.1| true|2024-11-28T11:00:12.000+08:00|
-|2024-11-26T13:37:00.000+08:00|北京|1001| 100| A|180|90.0|35.1| true|2024-11-26T13:37:34.000+08:00|
-|2024-11-26T13:38:00.000+08:00|北京|1001| 100| A|180|90.0|35.1| true|2024-11-26T13:38:25.000+08:00|
-|2024-11-30T09:30:00.000+08:00|上海|3002| 101| F|360|90.0|35.2| true| null|
-|2024-11-30T14:30:00.000+08:00|上海|3002| 101| F|360|90.0|34.8| true|2024-11-30T14:30:17.000+08:00|
-|2024-11-29T10:00:00.000+08:00|上海|3001| 101| D|360|85.0|null| null|2024-11-29T10:00:13.000+08:00|
-|2024-11-27T16:38:00.000+08:00|北京|1001| 101| B|180|null|35.1| true|2024-11-26T16:37:01.000+08:00|
-|2024-11-27T16:39:00.000+08:00|北京|1001| 101| B|180|85.0|35.3| null| null|
-|2024-11-27T16:40:00.000+08:00|北京|1001| 101| B|180|85.0|null| null|2024-11-26T16:37:03.000+08:00|
-|2024-11-27T16:41:00.000+08:00|北京|1001| 101| B|180|85.0|null| null|2024-11-26T16:37:04.000+08:00|
-|2024-11-27T16:42:00.000+08:00|北京|1001| 101| B|180|null|35.2|false| null|
-|2024-11-27T16:43:00.000+08:00|北京|1001| 101| B|180|null|null|false| null|
-|2024-11-27T16:44:00.000+08:00|北京|1001| 101| B|180|null|null|false|2024-11-26T16:37:08.000+08:00|
-+-----------------------------+----+----+-----+---+---+----+----+-----+-----------------------------+
-Total line number = 18
-It costs 0.189s
-```
-
-#### 3.1.4 Object Type Query
-
-> Supported since V2.0.8
-
-**Example 1: Directly querying Object type data**
-
-```sql
-IoTDB:database1> SELECT s1 FROM table1 WHERE device_id = 'tag1';
-```
-
-Results:
-
-```sql
-+------------+
-| s1|
-+------------+
-|(Object) 5 B|
-+------------+
-Total line number = 1
-It costs 0.428s
-```
-
-**Example 2: Retrieving raw content of Object type data using `read_object` function**
-
-```sql
-IoTDB:database1> SELECT read_object(s1) FROM table1 WHERE device_id = 'tag1'
-```
-
-Results:
-
-```sql
-+------------+
-| _col0|
-+------------+
-|0x696f746462|
-+------------+
-Total line number = 1
-It costs 0.188s
-```
-
-
-### 3.2 Columns Function
-
-1. Without combining expressions
-
-Query data from columns whose names start with 'm'
-```sql
-IoTDB:database1> select columns('^m.*') from table1 limit 5;
-```
-
-Results:
-
-```sql
-+--------+-----------+
-|model_id|maintenance|
-+--------+-----------+
-| E| 180|
-| E| 180|
-| C| 90|
-| C| 90|
-| C| 90|
-+--------+-----------+
-```
-
-Query columns whose names start with 'o' - throw an exception if no columns match
-```sql
-IoTDB:database1> select columns('^o.*') from table1 limit 5;
-```
-
-Results:
-
-```sql
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: No matching columns found that match regex '^o.*'
-```
-
-Query data from columns whose names start with 'm' and rename them with 'series_' prefix
-```sql
-IoTDB:database1> select columns('^m(.*)') AS "series_$0" from table1 limit 5;
-```
-
-Results:
-
-```sql
-+---------------+------------------+
-|series_model_id|series_maintenance|
-+---------------+------------------+
-| E| 180|
-| E| 180|
-| C| 90|
-| C| 90|
-| C| 90|
-+---------------+------------------+
-```
-
-2. With Expression Combination
-
-- Single COLUMNS Function
-
-Query the minimum value of all columns
-```sql
-IoTDB:database1> select min(columns(*)) from table1
-```
-
-Results:
-
-```sql
-+-----------------------------+------------+--------------+---------------+--------------+-----------------+-----------------+--------------+------------+-----------------------------+
-| _col0_time|_col1_region|_col2_plant_id|_col3_device_id|_col4_model_id|_col5_maintenance|_col6_temperature|_col7_humidity|_col8_status| _col9_arrival_time|
-+-----------------------------+------------+--------------+---------------+--------------+-----------------+-----------------+--------------+------------+-----------------------------+
-|2024-11-26T13:37:00.000+08:00| 上海| 1001| 100| A| 180| 85.0| 34.8| false|2024-11-26T13:37:34.000+08:00|
-+-----------------------------+------------+--------------+---------------+--------------+-----------------+-----------------+--------------+------------+-----------------------------+
-```
-
-- Multiple COLUMNS Functions in Same Expression
-
-> Usage Restriction: When multiple COLUMNS functions appear in the same expression, their parameters must be identical.
-
-Query the sum of minimum and maximum values for columns starting with 'h'
-```sql
-IoTDB:database1> select min(columns('^h.*')) + max(columns('^h.*')) from table1
-```
-
-Results:
-
-```sql
-+--------------+
-|_col0_humidity|
-+--------------+
-| 79.899994|
-+--------------+
-```
-
-Error Case: Non-Identical COLUMNS Functions
-```sql
-IoTDB:database1> select min(columns('^h.*')) + max(columns('^t.*')) from table1
-```
-
-Results:
-
-```sql
-Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 701: Multiple different COLUMNS in the same expression are not supported
-```
-
-- Multiple COLUMNS Functions in Different Expressions
-
-Query minimum of 'h'-columns and maximum of 'h'-columns separately
-```sql
-IoTDB:database1> select min(columns('^h.*')) , max(columns('^h.*')) from table1
-```
-
-Results:
-
-```sql
-+--------------+--------------+
-|_col0_humidity|_col1_humidity|
-+--------------+--------------+
-| 34.8| 45.1|
-+--------------+--------------+
-```
-
-Query minimum of 'h'-columns and maximum of 'te'-columns
-```sql
-IoTDB:database1> select min(columns('^h.*')) , max(columns('^te.*')) from table1
-```
-
-Results:
-
-```sql
-+--------------+-----------------+
-|_col0_humidity|_col1_temperature|
-+--------------+-----------------+
-| 34.8| 90.0|
-+--------------+-----------------+
-```
-
-3. In Where Clause
-
-Query data where all 'h'-columns must be > 40 (equivalent to)
-```sql
-IoTDB:database1> select * from table1 where columns('^h.*') > 40
-```
-
-Results:
-
-```sql
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-| time|region|plant_id|device_id|model_id|maintenance|temperature|humidity|status| arrival_time|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-|2024-11-29T11:00:00.000+08:00| 上海| 3002| 100| E| 180| null| 45.1| true| null|
-|2024-11-28T09:00:00.000+08:00| 上海| 3001| 100| C| 90| null| 40.9| true| null|
-|2024-11-28T11:00:00.000+08:00| 上海| 3001| 100| C| 90| 88.0| 45.1| true|2024-11-28T11:00:12.000+08:00|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-```
-
-Alternative syntax
-```sql
-IoTDB:database1> select * from table1 where humidity > 40
-```
-
-Results:
-
-```sql
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-| time|region|plant_id|device_id|model_id|maintenance|temperature|humidity|status| arrival_time|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-|2024-11-29T11:00:00.000+08:00| 上海| 3002| 100| E| 180| null| 45.1| true| null|
-|2024-11-28T09:00:00.000+08:00| 上海| 3001| 100| C| 90| null| 40.9| true| null|
-|2024-11-28T11:00:00.000+08:00| 上海| 3001| 100| C| 90| 88.0| 45.1| true|2024-11-28T11:00:12.000+08:00|
-+-----------------------------+------+--------+---------+--------+-----------+-----------+--------+------+-----------------------------+
-```
-
-## 4. Column Order in the Result Set
-
-- **Column Order**: The order of columns in the result set matches the order specified in the `SELECT` clause.
-- **Multi-column Expressions**: If a selection expression produces multiple columns, their order follows the order in the source relation.p.
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md
deleted file mode 100644
index 3628b15ec..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/Set-Operations_timecho.md
+++ /dev/null
@@ -1,295 +0,0 @@
-
-# Set Operations
-
-IoTDB natively supports standard SQL set operations, including three core operators: **UNION**, **INTERSECT**, and **EXCEPT**. These operations enable seamless merging, comparison, and filtering of query results from multiple time-series data sources, greatly improving the flexibility and efficiency of time-series data analysis.
-
-> Note: This feature is available since version 2.0.9.1.
-
-## 1. UNION
-### 1.1 Overview
-The UNION operator combines all rows from two result sets (order not guaranteed), supporting both duplicate elimination (default) and duplicate retention modes.
-
-### 1.2 Syntax
-```sql
-query UNION (ALL | DISTINCT) query
-```
-
-**Description**
-1. **Duplicate Handling**
- - Default (`UNION` or `UNION DISTINCT`): Automatically removes duplicate rows.
- - `UNION ALL`: Preserves all rows (including duplicates) with higher performance.
-
-2. **Input Requirements**
- - The two queries must return the same number of columns.
- - Corresponding columns must have compatible data types:
- - Numeric compatibility: `INT32`, `INT64`, `FLOAT`, and `DOUBLE` are fully compatible with each other.
- - String compatibility: `TEXT` and `STRING` are fully compatible.
- - Special rule: `INT64` is compatible with `TIMESTAMP`.
-
-3. **Result Set Rules**
- - Column names and order are inherited from the first query.
-
-### 1.3 Examples
-Using the [sample data](../Reference/Sample-Data.md):
-
-1. Get distinct non-null device and temperature records from `table1` and `table2`
-```sql
-SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
-UNION
-SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
-
--- Equivalent to:
-SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
-UNION DISTINCT
-SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
-```
-
-Result:
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 101| 90.0|
-| 101| 85.0|
-| 100| 90.0|
-| 100| 85.0|
-| 100| 88.0|
-+---------+-----------+
-Total line number = 5
-It costs 0.074s
-```
-
-2. Get all non-null device and temperature records from `table1` and `table2` (including duplicates)
-```sql
-SELECT device_id, temperature FROM table1 WHERE temperature IS NOT NULL
-UNION ALL
-SELECT device_id, temperature FROM table2 WHERE temperature IS NOT NULL;
-```
-
-Result:
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 101| 90.0|
-| 101| 90.0|
-| 101| 85.0|
-| 101| 85.0|
-| 101| 85.0|
-| 101| 85.0|
-| 100| 90.0|
-| 100| 85.0|
-| 100| 85.0|
-| 100| 88.0|
-| 100| 90.0|
-| 100| 90.0|
-| 101| 90.0|
-| 101| 85.0|
-| 101| 85.0|
-| 100| 85.0|
-| 100| 90.0|
-+---------+-----------+
-Total line number = 17
-It costs 0.108s
-```
-
-> **Notes**
-> - Set operations **do not guarantee result order**; actual output may differ from examples.
-
-
-## 2. INTERSECT
-### 2.1 Overview
-The INTERSECT operator returns rows that exist in both result sets (order not guaranteed), supporting both duplicate elimination (default) and duplicate retention modes.
-
-### 2.2 Syntax
-```sql
-query1 INTERSECT [ALL | DISTINCT] query2
-```
-
-**Description**
-1. **Duplicate Handling**
- - Default (`INTERSECT` or `INTERSECT DISTINCT`): Automatically removes duplicate rows.
- - `INTERSECT ALL`: Preserves duplicate rows, with slightly lower performance.
-
-2. **Precedence Rules**
- - `INTERSECT` has higher precedence than `UNION` and `EXCEPT`
- (e.g., `A UNION B INTERSECT C` is equivalent to `A UNION (B INTERSECT C)`).
- - Evaluation is left-to-right
- (e.g., `A INTERSECT B INTERSECT C` is equivalent to `(A INTERSECT B) INTERSECT C`).
-
-3. **Input Requirements**
- - The two queries must return the same number of columns.
- - Corresponding columns must have compatible data types (same rules as UNION).
- - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
- - If the `time` column is not included in `SELECT`, it does not participate in comparison and will not appear in the result.
-
-4. **Result Set Rules**
- - Column names and order are inherited from the first query.
-
-### 2.3 Examples
-Using the [sample data](../Reference/Sample-Data.md):
-
-1. Get distinct common device and temperature records from `table1` and `table2`
-```sql
-SELECT device_id, temperature FROM table1
-INTERSECT
-SELECT device_id, temperature FROM table2;
-
--- Equivalent to:
-SELECT device_id, temperature FROM table1
-INTERSECT DISTINCT
-SELECT device_id, temperature FROM table2;
-```
-
-Result:
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 101| 90.0|
-| 101| 85.0|
-| 100| null|
-| 100| 90.0|
-| 100| 85.0|
-+---------+-----------+
-Total line number = 5
-It costs 0.087s
-```
-
-2. Get all common device and temperature records from `table1` and `table2` (including duplicates)
-```sql
-SELECT device_id, temperature FROM table1
-INTERSECT ALL
-SELECT device_id, temperature FROM table2;
-```
-
-Result:
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 100| 85.0|
-| 100| 90.0|
-| 100| null|
-| 101| 85.0|
-| 101| 85.0|
-| 101| 90.0|
-+---------+-----------+
-Total line number = 6
-It costs 0.139s
-```
-
-> **Notes**
-> - Set operations **do not guarantee result order**.
-> - When mixed with `UNION`/`EXCEPT`, use parentheses to explicitly specify precedence
- > (e.g., `A INTERSECT (B UNION C)`).
-
-
-## 3. EXCEPT
-### 3.1 Overview
-The EXCEPT operator returns rows that exist in the first result set but **not** in the second (order not guaranteed), supporting both duplicate elimination (default) and duplicate retention modes.
-
-### 3.2 Syntax
-```sql
-query1 EXCEPT [ALL | DISTINCT] query2
-```
-
-**Description**
-1. **Duplicate Handling**
- - Default (`EXCEPT` or `EXCEPT DISTINCT`): Automatically removes duplicate rows.
- - `EXCEPT ALL`: Preserves duplicate rows, with slightly lower performance.
-
-2. **Precedence Rules**
- - `EXCEPT` has the same precedence as `UNION`, and lower precedence than `INTERSECT`
- (e.g., `A INTERSECT B EXCEPT C` is equivalent to `(A INTERSECT B) EXCEPT C`).
- - Evaluation is left-to-right
- (e.g., `A EXCEPT B EXCEPT C` is equivalent to `(A EXCEPT B) EXCEPT C`).
-
-3. **Input Requirements**
- - The two queries must return the same number of columns.
- - Corresponding columns must have compatible data types (same rules as UNION).
- - NULL values are treated as equal (`NULL IS NOT DISTINCT FROM NULL`).
- - If the `time` column is not included in `SELECT`, it does not participate in comparison and will not appear in the result.
-
-4. **Result Set Rules**
- - Column names and order are inherited from the first query.
-
-### 3.3 Examples
-Using the [sample data](../Reference/Sample-Data.md):
-
-1. Get distinct records from `table1` that do not exist in `table2`
-```sql
-SELECT device_id, temperature FROM table1
-EXCEPT
-SELECT device_id, temperature FROM table2;
-
--- Equivalent to:
-SELECT device_id, temperature FROM table1
-EXCEPT DISTINCT
-SELECT device_id, temperature FROM table2;
-```
-
-Result:
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 101| null|
-| 100| 88.0|
-+---------+-----------+
-Total line number = 2
-It costs 0.173s
-```
-
-2. Get all records from `table1` that do not exist in `table2` (including duplicates)
-```sql
-SELECT device_id, temperature FROM table1
-EXCEPT ALL
-SELECT device_id, temperature FROM table2;
-```
-
-Result:
-```
-+---------+-----------+
-|device_id|temperature|
-+---------+-----------+
-| 100| 85.0|
-| 100| 88.0|
-| 100| 90.0|
-| 100| 90.0|
-| 100| null|
-| 101| 85.0|
-| 101| 85.0|
-| 101| 90.0|
-| 101| null|
-| 101| null|
-| 101| null|
-| 101| null|
-+---------+-----------+
-Total line number = 12
-It costs 0.155s
-```
-
-> **Notes**
-> - Set operations **do not guarantee result order**.
-> - When mixed with `UNION`/`INTERSECT`, use parentheses to explicitly specify precedence
- > (e.g., `A EXCEPT (B INTERSECT C)`).
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/SQL-Manual/overview_timecho.md b/src/UserGuide/Master/Table/SQL-Manual/overview_timecho.md
deleted file mode 100644
index d564f44c6..000000000
--- a/src/UserGuide/Master/Table/SQL-Manual/overview_timecho.md
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-# Overview
-
-## 1. Syntax Overview
-
-```SQL
-SELECT ⟨select_list⟩
- FROM ⟨tables⟩ | patternRecognition
- [WHERE ⟨condition⟩]
- [GROUP BY ⟨groups⟩]
- [HAVING ⟨group_filter⟩]
- [WINDOW windowDefinition (',' windowDefinition)*)]
- [FILL ⟨fill_methods⟩]
- [ORDER BY ⟨order_expression⟩]
- [OFFSET ⟨n⟩]
- [LIMIT ⟨n⟩];
-```
-
-The IoTDB table model query syntax supports the following clauses:
-
-- **SELECT Clause**: Specifies the columns to be included in the result. Details: [SELECT Clause](../SQL-Manual/Select-Clause_timecho.md)
-- **FROM Clause**: Indicates the data source for the query, which can be a single table, multiple tables joined using the `JOIN` clause, or a subquery. Details: [FROM & JOIN Clause](../SQL-Manual/From-Join-Clause.md)
-- **WHERE Clause**: Filters rows based on specific conditions. Logically executed immediately after the `FROM` clause. Details: [WHERE Clause](../SQL-Manual/Where-Clause.md)
-- **GROUP BY Clause**: Used for aggregating data, specifying the columns for grouping. Details: [GROUP BY Clause](../SQL-Manual/GroupBy-Clause.md)
-- **HAVING Clause**: Applied after the `GROUP BY` clause to filter grouped data, similar to `WHERE` but operates after grouping. Details:[HAVING Clause](../SQL-Manual/Having-Clause.md)
-- **FILL Clause**: Handles missing values in query results by specifying fill methods (e.g., previous non-null value or linear interpolation) for better visualization and analysis. Details:[FILL Clause](../SQL-Manual/Fill-Clause.md)
-- **ORDER BY Clause**: Sorts query results in ascending (`ASC`) or descending (`DESC`) order, with optional handling for null values (`NULLS FIRST` or `NULLS LAST`). Details: [ORDER BY Clause](../SQL-Manual/OrderBy-Clause.md)
-- **OFFSET Clause**: Specifies the starting position for the query result, skipping the first `OFFSET` rows. Often used with the `LIMIT` clause. Details: [LIMIT and OFFSET Clause](../SQL-Manual/Limit-Offset-Clause.md)
-- **LIMIT Clause**: Limits the number of rows in the query result. Typically used in conjunction with the `OFFSET` clause for pagination. Details: [LIMIT and OFFSET Clause](../SQL-Manual/Limit-Offset-Clause.md)
-
-## 2. Clause Execution Order
-
-
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Tools-System/CLI_timecho.md b/src/UserGuide/Master/Table/Tools-System/CLI_timecho.md
deleted file mode 100644
index 484d5b32f..000000000
--- a/src/UserGuide/Master/Table/Tools-System/CLI_timecho.md
+++ /dev/null
@@ -1,178 +0,0 @@
-
-# CLI
-
-The IoTDB Command Line Interface (CLI) tool allows users to interact with the IoTDB server. Before using the CLI tool to connect to IoTDB, ensure that the IoTDB service is running correctly. This document explains how to launch the CLI and its related parameters.
-
-In this manual, `$IOTDB_HOME` represents the installation directory of IoTDB.
-
-## 1. CLI Launch
-
-The CLI client script is located in the `$IOTDB_HOME/sbin` directory. The common commands to start the CLI tool are as follows:
-
-#### **Linux** **MacOS**
-
-```Bash
-Shell> bash sbin/start-cli.sh -sql_dialect table
-#or
-# Before version V2.0.6.x
-Shell> bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.6.x and later versions
-Shell > bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021 -sql_dialect table
-```
-
-#### **Windows**
-
-```Bash
-# Before version V2.0.4.x
-Shell> sbin\start-cli.bat -sql_dialect table
-#or
-Shell> sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-
-# V2.0.4.x and later versions
-Shell> sbin\windows\start-cli.bat -sql_dialect table
-#or
-# V2.0.4.x and later versions, before version V2.0.6.x
-Shell> sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root -sql_dialect table
-# V2.0.6.x and later versions
-Shell > sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021 -sql_dialect table
-```
-
-**Parameter Explanation**
-
-| **Parameter** | **Type** | **Required** | **Description** | **Example** |
-| -------------------------- | -------- | ------------ |---------------------------------------------------------------------------------------------------| ------------------- |
-| -h `` | string | No | The IP address of the IoTDB server. (Default: 127.0.0.1) | -h 127.0.0.1 |
-| -p `` | int | No | The RPC port of the IoTDB server. (Default: 6667) | -p 6667 |
-| -u `` | string | No | The username to connect to the IoTDB server. (Default: root) | -u root |
-| -pw `` | string | No | The password to connect to the IoTDB server. (Default: `TimechoDB@2021`,before V2.0.6 it is root) | -pw root |
-| -sql_dialect `` | string | No | The data model type: tree or table. (Default: tree) | -sql_dialect table |
-| -e `` | string | No | Batch operations in non-interactive mode. | -e "show databases" |
-| -c | Flag | No | Required if rpc_thrift_compression_enable=true on the server. | -c |
-| -disableISO8601 | Flag | No | If set, timestamps will be displayed as numeric values instead of ISO8601 format. | -disableISO8601 |
-| -usessl `` | Boolean | No | Enable SSL connection | -usessl true |
-| -ts `` | string | No | SSL certificate store path | -ts /path/to/truststore |
-| -tpw `` | string | No | SSL certificate store password | -tpw myTrustPassword |
-| -timeout `` | int | No | Query timeout (seconds). If not set, the server's configuration will be used. | -timeout 30 |
-| -help | Flag | No | Displays help information for the CLI tool. | -help |
-
-The figure below indicates a successful startup:
-
-
-
-
-## 2. Example Commands
-
-### 2.1 **Create a Database**
-
-```Java
-create database test
-```
-
-
-
-
-### 2.2 **Show Databases**
-```Java
-show databases
-```
-
-
-
-
-## 3. CLI Exit
-
-To exit the CLI and terminate the session, type`quit`or`exit`.
-
-### 3.1 Additional Notes and Shortcuts
-
-1. **Navigate Command History:** Use the up and down arrow keys.
-2. **Auto-Complete Commands:** Use the right arrow key.
-3. **Interrupt Command Execution:** Press `CTRL+C`.
-
-## 4. Access History Feature
-
-Since IoTDB **V2.0.9.1**, the access history feature is available. After a client logs in successfully, key historical access information is displayed, and the feature supports distributed deployments. Both administrators and regular users can only view their own access history. The core displayed information includes:
-
-- Last successful session: displays date, time, access application, IP address, and access method (not shown for first login or when no history exists).
-- Most recent failed attempt: displays the date, time, access application, IP address, and access method of the latest failed login attempt immediately before the current successful login.
-- Cumulative failed attempts: total number of failed session attempts since the last successful session was established.
-
-### 4.1 Enabling Access History
-
-You can enable or disable the access history feature by modifying the corresponding parameter in the `iotdb-system.properties` file. A restart is required for changes to take effect. For example:
-
-```Plain
-# Controls whether the audit log feature is enabled
-enable_audit_log=false
-```
-
-- When enabled: login information is recorded and expired data is cleaned periodically.
-- When disabled: no data is recorded, displayed, or cleaned up.
-- If disabled and then re-enabled, the displayed history will be the last record before the feature was disabled, which may not reflect the actual latest login.
-
-Usage example:
-
-```Bash
----------------------
-Starting IoTDB Cli
----------------------
- _____ _________ ______ ______
-|_ _| | _ _ ||_ _ `.|_ _ \
- | | .--.|_/ | | \_| | | `. \ | |_) |
- | | / .'`\ \ | | | | | | | __'.
- _| |_| \__. | _| |_ _| |_.' /_| |__) |
-|_____|'.__.' |_____| |______.'|_______/ Enterprise version 2.0.9.1 (Build: xxxxxxx)
-
-
----Last Successful Session------------------
-Time: 2026-03-24T10:25:47.759+08:00
-IP Address: 127.0.0.1
----Last Failed Session----------------------
-Time: 2026-03-24T10:27:26.314+08:00
-IP Address: 127.0.0.1
-Cumulative Failed Attempts: 1
-Successfully logged in at 127.0.0.1:6667
-IoTDB>
-```
-
-### 4.2 Viewing Access History
-
-The `root` user and users with the `AUDIT` privilege can view login history records using SQL statements.
-
-Syntax:
-
-```SQL
-SELECT * FROM __audit.login_history;
-```
-
-Example:
-
-```SQL
-IoTDB> SELECT * FROM __audit.login_history
-+-----------------------------+-------+-------+--------+---------+------+
-| time|user_id|node_id|username| ip|result|
-+-----------------------------+-------+-------+--------+---------+------+
-|2026-03-25T10:55:58.240+08:00| u_0| node_1| root|127.0.0.1| true|
-+-----------------------------+-------+-------+--------+---------+------+
-Total line number = 1
-It costs 0.213s
-```
\ No newline at end of file
diff --git a/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md b/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
deleted file mode 100644
index f3f031d17..000000000
--- a/src/UserGuide/Master/Table/Tools-System/Data-Export-Tool_timecho.md
+++ /dev/null
@@ -1,252 +0,0 @@
-# Data Export
-
-## 1. Function Overview
-
-IoTDB supports two methods for data export:
-
-* Data Export Tool: `export-data.sh/bat` is located in the `tools` directory. It can export the query results of specified SQL statements into CSV, SQL, and TsFile (open-source time-series file format) files.
-* PIPE Framework-based TsFileBackup: `tsfile-backup.sh/bat` is located in the `tools` directory. It can export specified data files into TsFile format using the PIPE framework.
-
-
-
- File Format
- IoTDB Tool
- Description
-
-
- CSV
- export-data.sh/bat
- Plain text format for storing structured data. Must follow the CSV format specified below.
-
-
- SQL
- File containing custom SQL statements.
-
-
- TsFile
- Open-source time-series file format.
-
-
- tsfile-backup.sh/bat
- An open-source time-series data file format,and this script supports the Object data type.
-
-
-
-
-
-## 2. Data Export Tool
-### 2.1 Common Parameters
-| Short | Full Parameter | Description | Required | Default |
-|----------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----------------- |-----------------------------------------------|
-| `-ft` | `--file_type` | Export file type: `csv`, `sql`, `tsfile`. | **Yes** | - |
-| `-h` | `--host` | Hostname of the IoTDB server. | No | `127.0.0.1` |
-| `-p` | `--port` | Port number of the IoTDB server. | No | `6667` |
-| `-u` | `--username` | Username for authentication. | No | `root` |
-| `-pw` | `--password` | Password for authentication. Supported for hidden input since V2.0.9.1 | No | `TimechoDB@2021`(Before V2.0.6 it is root) |
-| `-sql_dialect` | `--sql_dialect` | Select server model : tree or table | No | tree |
-| `-db ` | `--database` | The target database to be exported only takes effect when `-sql_dialect` is of the table type. | Yes when `-sql_dialect = table`| - |
-| `-table` | `--table` | The target table to be exported only takes effect when `-sql_dialect` is of the table type. If the `-q` parameter is specified, this parameter will not take effect. If the export type is tsfile/sql, this parameter is mandatory. | No | - |
-| `-start_time` | `--start_time` | The start time of the data to be exported only takes effect when `-sql_dialect` is of the table type. If `-q` is specified, this parameter will not take effect. The supported time formats are the same as those for the `-tf` parameter. |No | - |
-| `-end_time` | `--end_time` | The end time of the data to be exported only takes effect when `-sql_dialect` is set to the table type. If `-q` is specified, this parameter will not take effect. | No | - |
-| `-t` | `--target` | Target directory for the output files. If the path does not exist, it will be created. | **Yes** | - |
-| `-pfn` | `--prefix_file_name` | Prefix for the exported file names. For example, `abc` will generate files like `abc_0.tsfile`, `abc_1.tsfile`. | No | `dump_0.tsfile` |
-| `-q` | `--query` | SQL query command to execute. Starting from v2.0.8, semicolons in SQL statements are automatically removed, and query execution proceeds normally. | No | - |
-| `-timeout` | `--query_timeout` | Query timeout in milliseconds (ms). | No | `-1` (before v2.0.8) `Long.MAX_VALUE` (v2.0.8 and later) (Range: `-1~Long.MAX_VALUE`) |
-| `-help` | `--help` | Display help information. | No | - |
-| `-usessl` | `--use_ssl` | Use SSL protocol. Supported since V2.0.9.1 | No | - |
-| `-ts` | `--trust_store` | Trust store. Supports hidden input. Supported since V2.0.9.1 | No | - |
-| `-tpw` | `--trust_store_password` | Trust store password. Supports hidden input. Supported since V2.0.9.1 | No | - |
-
-### 2.2 CSV Format
-#### 2.2.1 Command
-
-```Shell
-# Unix/OS X
-> tools/export-data.sh -ft [-sql_dialect] -db -table
- [-start_time] [-end_time] [-h ] [-p ] [-u ] [-pw ]
- -t [-pfn ] [-dt ] [-lpf ] [-tf ]
- [-tz ] [-q ] [-timeout ]
-# Windows
-# Before version V2.0.4.x
-> tools\export-data.bat -ft [-sql_dialect] -db -table
- [-start_time] [-end_time] [-h ] [-p ] [-u ] [-pw ]
- -t [-pfn ] [-dt