Enhance Initialization and Resilience with Multiple Node URLs for Improved Failover Handling (#8)

diff --git a/README.md b/README.md
index b134037..454db4d 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,8 @@
 
 # Apache IoTDB Client for C#
 
+[![E2E Tests](https://github.com/apache/iotdb-client-csharp/actions/workflows/e2e.yml/badge.svg)](https://github.com/apache/iotdb-client-csharp/actions/workflows/e2e.yml)
+[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 ## Overview
 
 This is the C# client of Apache IoTDB.
@@ -41,7 +43,8 @@
 dotnet add package Apache.IoTDB
 ```
 
-Note that the `Apache.IoTDB` package only supports versions greater than `.net framework 4.6.1`.
+> [!NOTE]
+> The `Apache.IoTDB` package only supports versions greater than `.net framework 4.6.1`.
 
 ## Prerequisites
 
@@ -65,7 +68,7 @@
 
 ### OS
 
-* Linux, Macos or other unix-like OS
+* Linux, MacOS or other unix-like OS
 * Windows+bash(WSL, cygwin, Git Bash)
 
 ### Command Line Tools
diff --git a/README_ZH.md b/README_ZH.md
index 7a8216e..71fc56e 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -21,7 +21,8 @@
 [English](./README.md) | [中文](./README_ZH.md)
 
 # Apache IoTDB C#语言客户端
-
+[![E2E Tests](https://github.com/apache/iotdb-client-csharp/actions/workflows/e2e.yml/badge.svg)](https://github.com/apache/iotdb-client-csharp/actions/workflows/e2e.yml)
+[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
 ## 概览
 
 本仓库是Apache IoTDB的C#语言客户端,与其他语言支持相同语义的用户接口。
@@ -38,8 +39,9 @@
 ```sh
 dotnet add package Apache.IoTDB
 ```
+> [!NOTE]
+> 请注意,`Apache.IoTDB`这个包仅支持大于`.net framework 4.6.1`的版本。
 
-请注意,`Apache.IoTDB`这个包仅支持大于`.net framework 4.6.1`的版本。
 ## 环境准备
 
     .NET SDK Version >= 5.0
@@ -62,7 +64,7 @@
 
 ### 操作系统
 
-* Linux、Macos或其他类unix系统
+* Linux、MacOS或其他类unix系统
 * Windows+bash(WSL、cygwin、Git Bash)
 
 ### 命令行工具
diff --git a/courgette.log b/courgette.log
deleted file mode 100644
index e69de29..0000000
--- a/courgette.log
+++ /dev/null
diff --git a/samples/Apache.IoTDB.Samples/Program.cs b/samples/Apache.IoTDB.Samples/Program.cs
index 2a431ef..c77795c 100644
--- a/samples/Apache.IoTDB.Samples/Program.cs
+++ b/samples/Apache.IoTDB.Samples/Program.cs
@@ -3,14 +3,16 @@
 using System;

 using System.Threading.Tasks;

 

-namespace Apache.IoTDB.Samples
-{
-    public static class Program
+namespace Apache.IoTDB.Samples

+{

+    public static class Program

     {

         public static async Task Main(string[] args)

-        {
-            var sessionPoolTest = new SessionPoolTest("iotdb");
-           await  sessionPoolTest.Test() ;
+        {

+            var utilsTest = new UtilsTest();

+            utilsTest.TestParseEndPoint();

+            var sessionPoolTest = new SessionPoolTest("iotdb");

+            await sessionPoolTest.Test();

         }

 

         public static void OpenDebugMode(this SessionPool session)

@@ -20,6 +22,6 @@
                 builder.AddConsole();

                 builder.AddNLog();

             });

-        }
-    }
+        }

+    }

 }
\ No newline at end of file
diff --git a/samples/Apache.IoTDB.Samples/SessionPoolTest.cs b/samples/Apache.IoTDB.Samples/SessionPoolTest.cs
index e016185..cfdc9be 100644
--- a/samples/Apache.IoTDB.Samples/SessionPoolTest.cs
+++ b/samples/Apache.IoTDB.Samples/SessionPoolTest.cs
@@ -6,6 +6,7 @@
 using Apache.IoTDB.DataStructure;
 using ConsoleTableExt;
 using System.Net.Sockets;
+using System.Diagnostics;
 
 namespace Apache.IoTDB.Samples
 {
@@ -15,6 +16,7 @@
         public int port = 6667;
         public string user = "root";
         public string passwd = "root";
+        public List<string> node_urls = new();
         public int fetch_size = 500;
         public int processed_size = 4;
         public bool debug = false;
@@ -36,10 +38,17 @@
         public SessionPoolTest(string _host = "localhost")
         {
             host = _host;
+            node_urls.Add(host + ":" + port);
         }
 
         public async Task Test()
         {
+            await TestOpenWithNodeUrls();
+
+            await TestOpenWith2NodeUrls();
+
+            await TestOpenWithNodeUrlsAndInsertOneRecord();
+
             await TestInsertOneRecord();
 
             await TestInsertAlignedRecord();
@@ -112,6 +121,50 @@
 
             await TestNonSqlBy_ADO();
         }
+        public async Task TestOpenWithNodeUrls()
+        {
+            var session_pool = new SessionPool(node_urls, 8);
+            await session_pool.Open(false);
+            Debug.Assert(session_pool.IsOpen());
+            if (debug) session_pool.OpenDebugMode();
+            await session_pool.Close();
+            Console.WriteLine("TestOpenWithNodeUrls Passed!");
+        }
+        public async Task TestOpenWith2NodeUrls()
+        {
+            var session_pool = new SessionPool(new List<string>() { host + ":" + port, host + ":" + (port + 1) }, 8);
+            await session_pool.Open(false);
+            Debug.Assert(session_pool.IsOpen());
+            if (debug) session_pool.OpenDebugMode();
+            await session_pool.Close();
+
+            session_pool = new SessionPool(new List<string>() { host + ":" + (port + 1), host + ":" + port }, 8);
+            await session_pool.Open(false);
+            Debug.Assert(session_pool.IsOpen());
+            if (debug) session_pool.OpenDebugMode();
+            await session_pool.Close();
+            Console.WriteLine("TestOpenWith2NodeUrls Passed!");
+        }
+        public async Task TestOpenWithNodeUrlsAndInsertOneRecord()
+        {
+            var session_pool = new SessionPool(node_urls, 8);
+            await session_pool.Open(false);
+            if (debug) session_pool.OpenDebugMode();
+            await session_pool.DeleteStorageGroupAsync(test_group_name);
+            var status = await session_pool.CreateTimeSeries(
+                string.Format("{0}.{1}.{2}", test_group_name, test_device, test_measurements[0]),
+                TSDataType.TEXT, TSEncoding.PLAIN, Compressor.SNAPPY);
+            status = await session_pool.CreateTimeSeries(
+                string.Format("{0}.{1}.{2}", test_group_name, test_device, test_measurements[1]),
+                TSDataType.TEXT, TSEncoding.PLAIN, Compressor.SNAPPY);
+            status = await session_pool.CreateTimeSeries(
+                string.Format("{0}.{1}.{2}", test_group_name, test_device, test_measurements[2]),
+                TSDataType.TEXT, TSEncoding.PLAIN, Compressor.SNAPPY);
+            var rowRecord = new RowRecord(1668404120807, new() { "1111111", "22222", "333333" }, new() { test_measurements[0], test_measurements[1], test_measurements[2] });
+            status = await session_pool.InsertRecordsAsync(new List<string>() { string.Format("{0}.{1}", test_group_name, test_device) }, new List<RowRecord>() { rowRecord });
+            Debug.Assert(status == 0);
+            Console.WriteLine("TestOpenWithNodeUrlsAndInsertOneRecord Passed!");
+        }
         public async Task TestInsertOneRecord()
         {
             var session_pool = new SessionPool(host, port, 1);
diff --git a/samples/Apache.IoTDB.Samples/UtilsTest.cs b/samples/Apache.IoTDB.Samples/UtilsTest.cs
new file mode 100644
index 0000000..b5568b6
--- /dev/null
+++ b/samples/Apache.IoTDB.Samples/UtilsTest.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Diagnostics;
+
+namespace Apache.IoTDB.Samples
+{
+    public class UtilsTest
+    {
+        private Utils _utilFunctions = new Utils();
+        public void Test()
+        {
+            TestParseEndPoint();
+        }
+
+        public void TestParseEndPoint()
+        {
+            TestIPv4Address();
+            TestIPv6Address();
+            TestInvalidInputs();
+        }
+
+        private void TestIPv4Address()
+        {
+            string correctEndpointIPv4 = "192.168.1.1:8080";
+            var endpoint = _utilFunctions.ParseTEndPointIpv4AndIpv6Url(correctEndpointIPv4);
+            Debug.Assert(endpoint.Ip == "192.168.1.1", "IPv4 address mismatch.");
+            Debug.Assert(endpoint.Port == 8080, "IPv4 port mismatch.");
+            Console.WriteLine("TestIPv4Address passed.");
+        }
+
+        private void TestIPv6Address()
+        {
+            string correctEndpointIPv6 = "[2001:db8:85a3::8a2e:370:7334]:443";
+            var endpoint = _utilFunctions.ParseTEndPointIpv4AndIpv6Url(correctEndpointIPv6);
+            Debug.Assert(endpoint.Ip == "2001:db8:85a3::8a2e:370:7334", "IPv6 address mismatch.");
+            Debug.Assert(endpoint.Port == 443, "IPv6 port mismatch.");
+            Console.WriteLine("TestIPv6Address passed.");
+        }
+
+        private void TestInvalidInputs()
+        {
+            string noPort = "192.168.1.1";
+            var endpointNoPort = _utilFunctions.ParseTEndPointIpv4AndIpv6Url(noPort);
+            Debug.Assert(string.IsNullOrEmpty(endpointNoPort.Ip) && endpointNoPort.Port == 0, "Failed to handle missing port.");
+
+            string emptyInput = "";
+            var endpointEmpty = _utilFunctions.ParseTEndPointIpv4AndIpv6Url(emptyInput);
+            Debug.Assert(string.IsNullOrEmpty(endpointEmpty.Ip) && endpointEmpty.Port == 0, "Failed to handle empty input.");
+
+            string invalidFormat = "192.168.1.1:port";
+            try
+            {
+                var endpointInvalid = _utilFunctions.ParseTEndPointIpv4AndIpv6Url(invalidFormat);
+                Debug.Fail("Should have thrown an exception due to invalid port.");
+            }
+            catch (FormatException)
+            {
+                // Expected exception
+            }
+            Console.WriteLine("TestInvalidInputs passed.");
+        }
+    }
+}
diff --git a/src/Apache.IoTDB/Apache.IoTDB.csproj b/src/Apache.IoTDB/Apache.IoTDB.csproj
index 9441084..89d433b 100644
--- a/src/Apache.IoTDB/Apache.IoTDB.csproj
+++ b/src/Apache.IoTDB/Apache.IoTDB.csproj
@@ -1,16 +1,23 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
-	<PropertyGroup>
-		<TargetFrameworks>net5.0;net6.0;netstandard2.1;netstandard2.0;net461</TargetFrameworks>
-		<LangVersion>latest</LangVersion>
+    <PropertyGroup>
+        <TargetFrameworks>net5.0;net6.0;netstandard2.1;netstandard2.0;net461</TargetFrameworks>
+        <LangVersion>latest</LangVersion>
+        <Authors>eedalong, lausannel, MysticBoy, Aiemu, HTHou</Authors>
+        <Company>LiuLin Lab</Company>
+        <PackageDescription>C# client for Apache IoTDB</PackageDescription>
+        <PackageProjectUrl>https://github.com/apache/iotdb-client-csharp</PackageProjectUrl>
+        <RepositoryUrl>https://github.com/apache/iotdb-client-csharp</RepositoryUrl>
 
-	</PropertyGroup>
 
-	<ItemGroup>
-		<PackageReference Include="ApacheThrift" Version="0.14.1" />
-	</ItemGroup>
-	<ItemGroup Condition="'$(TargetFramework)' == 'net461' or '$(TargetFramework)' == 'netstandard2.0'">
-		<PackageReference Include="IndexRange" Version="1.0.2" />
-	</ItemGroup>
+    </PropertyGroup>
 
-</Project>
+    <ItemGroup>
+        <PackageReference Include="ApacheThrift" Version="0.14.1" />
+    </ItemGroup>
+    <ItemGroup
+        Condition="'$(TargetFramework)' == 'net461' or '$(TargetFramework)' == 'netstandard2.0'">
+        <PackageReference Include="IndexRange" Version="1.0.2" />
+    </ItemGroup>
+
+</Project>
\ No newline at end of file
diff --git a/src/Apache.IoTDB/Client.cs b/src/Apache.IoTDB/Client.cs
index 0fb5507..8478706 100644
--- a/src/Apache.IoTDB/Client.cs
+++ b/src/Apache.IoTDB/Client.cs
@@ -8,13 +8,15 @@
         public long SessionId { get; }
         public long StatementId { get; }
         public TFramedTransport Transport { get; }
+        public TEndPoint EndPoint { get; }
 
-        public Client(IClientRPCService.Client client, long sessionId, long statementId, TFramedTransport transport)
+        public Client(IClientRPCService.Client client, long sessionId, long statementId, TFramedTransport transport, TEndPoint endpoint)
         {
             ServiceClient = client;
             SessionId = sessionId;
             StatementId = statementId;
             Transport = transport;
+            EndPoint = endpoint;
         }
     }
 }
\ No newline at end of file
diff --git a/src/Apache.IoTDB/Rpc/Generated/IClientRPCService.cs b/src/Apache.IoTDB/Rpc/Generated/IClientRPCService.cs
index b0cdf09..b90d345 100644
--- a/src/Apache.IoTDB/Rpc/Generated/IClientRPCService.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/IClientRPCService.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -42,6 +42,12 @@
 
     global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeLastDataQueryV2Async(TSLastDataQueryReq req, CancellationToken cancellationToken = default);
 
+    global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeFastLastDataQueryForOneDeviceV2Async(TSFastLastDataQueryForOneDeviceReq req, CancellationToken cancellationToken = default);
+
+    global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeAggregationQueryV2Async(TSAggregationQueryReq req, CancellationToken cancellationToken = default);
+
+    global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeGroupByQueryIntervalQueryAsync(TSGroupByQueryIntervalReq req, CancellationToken cancellationToken = default);
+
     global::System.Threading.Tasks.Task<TSFetchResultsResp> fetchResultsV2Async(TSFetchResultsReq req, CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSOpenSessionResp> openSessionAsync(TSOpenSessionReq req, CancellationToken cancellationToken = default);
@@ -118,6 +124,8 @@
 
     global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeLastDataQueryAsync(TSLastDataQueryReq req, CancellationToken cancellationToken = default);
 
+    global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeAggregationQueryAsync(TSAggregationQueryReq req, CancellationToken cancellationToken = default);
+
     global::System.Threading.Tasks.Task<long> requestStatementIdAsync(long sessionId, CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSStatus> createSchemaTemplateAsync(TSCreateSchemaTemplateReq req, CancellationToken cancellationToken = default);
@@ -128,22 +136,37 @@
 
     global::System.Threading.Tasks.Task<TSQueryTemplateResp> querySchemaTemplateAsync(TSQueryTemplateReq req, CancellationToken cancellationToken = default);
 
+    global::System.Threading.Tasks.Task<TShowConfigurationTemplateResp> showConfigurationTemplateAsync(CancellationToken cancellationToken = default);
+
+    global::System.Threading.Tasks.Task<TShowConfigurationResp> showConfigurationAsync(int nodeId, CancellationToken cancellationToken = default);
+
     global::System.Threading.Tasks.Task<TSStatus> setSchemaTemplateAsync(TSSetSchemaTemplateReq req, CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSStatus> unsetSchemaTemplateAsync(TSUnsetSchemaTemplateReq req, CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSStatus> dropSchemaTemplateAsync(TSDropSchemaTemplateReq req, CancellationToken cancellationToken = default);
 
+    global::System.Threading.Tasks.Task<TSStatus> createTimeseriesUsingSchemaTemplateAsync(TCreateTimeseriesUsingSchemaTemplateReq req, CancellationToken cancellationToken = default);
+
     global::System.Threading.Tasks.Task<TSStatus> handshakeAsync(TSyncIdentityInfo info, CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSStatus> sendPipeDataAsync(byte[] buff, CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSStatus> sendFileAsync(TSyncTransportMetaInfo metaInfo, byte[] buff, CancellationToken cancellationToken = default);
 
+    global::System.Threading.Tasks.Task<TPipeTransferResp> pipeTransferAsync(TPipeTransferReq req, CancellationToken cancellationToken = default);
+
+    global::System.Threading.Tasks.Task<TPipeSubscribeResp> pipeSubscribeAsync(TPipeSubscribeReq req, CancellationToken cancellationToken = default);
+
     global::System.Threading.Tasks.Task<TSBackupConfigurationResp> getBackupConfigurationAsync(CancellationToken cancellationToken = default);
 
     global::System.Threading.Tasks.Task<TSConnectionInfoResp> fetchAllConnectionsInfoAsync(CancellationToken cancellationToken = default);
 
+    /// <summary>
+    /// For other node's call
+    /// </summary>
+    global::System.Threading.Tasks.Task<TSStatus> testConnectionEmptyRPCAsync(CancellationToken cancellationToken = default);
+
   }
 
 
@@ -305,6 +328,96 @@
       throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "executeLastDataQueryV2 failed: unknown result");
     }
 
+    public async global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeFastLastDataQueryForOneDeviceV2Async(TSFastLastDataQueryForOneDeviceReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("executeFastLastDataQueryForOneDeviceV2", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.executeFastLastDataQueryForOneDeviceV2Args() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.executeFastLastDataQueryForOneDeviceV2Result();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "executeFastLastDataQueryForOneDeviceV2 failed: unknown result");
+    }
+
+    public async global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeAggregationQueryV2Async(TSAggregationQueryReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("executeAggregationQueryV2", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.executeAggregationQueryV2Args() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.executeAggregationQueryV2Result();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "executeAggregationQueryV2 failed: unknown result");
+    }
+
+    public async global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeGroupByQueryIntervalQueryAsync(TSGroupByQueryIntervalReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("executeGroupByQueryIntervalQuery", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.executeGroupByQueryIntervalQueryArgs() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.executeGroupByQueryIntervalQueryResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "executeGroupByQueryIntervalQuery failed: unknown result");
+    }
+
     public async global::System.Threading.Tasks.Task<TSFetchResultsResp> fetchResultsV2Async(TSFetchResultsReq req, CancellationToken cancellationToken = default)
     {
       await OutputProtocol.WriteMessageBeginAsync(new TMessage("fetchResultsV2", TMessageType.Call, SeqId), cancellationToken);
@@ -1447,6 +1560,36 @@
       throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "executeLastDataQuery failed: unknown result");
     }
 
+    public async global::System.Threading.Tasks.Task<TSExecuteStatementResp> executeAggregationQueryAsync(TSAggregationQueryReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("executeAggregationQuery", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.executeAggregationQueryArgs() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.executeAggregationQueryResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "executeAggregationQuery failed: unknown result");
+    }
+
     public async global::System.Threading.Tasks.Task<long> requestStatementIdAsync(long sessionId, CancellationToken cancellationToken = default)
     {
       await OutputProtocol.WriteMessageBeginAsync(new TMessage("requestStatementId", TMessageType.Call, SeqId), cancellationToken);
@@ -1597,6 +1740,65 @@
       throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "querySchemaTemplate failed: unknown result");
     }
 
+    public async global::System.Threading.Tasks.Task<TShowConfigurationTemplateResp> showConfigurationTemplateAsync(CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("showConfigurationTemplate", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.showConfigurationTemplateArgs() {
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.showConfigurationTemplateResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "showConfigurationTemplate failed: unknown result");
+    }
+
+    public async global::System.Threading.Tasks.Task<TShowConfigurationResp> showConfigurationAsync(int nodeId, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("showConfiguration", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.showConfigurationArgs() {
+        NodeId = nodeId,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.showConfigurationResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "showConfiguration failed: unknown result");
+    }
+
     public async global::System.Threading.Tasks.Task<TSStatus> setSchemaTemplateAsync(TSSetSchemaTemplateReq req, CancellationToken cancellationToken = default)
     {
       await OutputProtocol.WriteMessageBeginAsync(new TMessage("setSchemaTemplate", TMessageType.Call, SeqId), cancellationToken);
@@ -1687,6 +1889,36 @@
       throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "dropSchemaTemplate failed: unknown result");
     }
 
+    public async global::System.Threading.Tasks.Task<TSStatus> createTimeseriesUsingSchemaTemplateAsync(TCreateTimeseriesUsingSchemaTemplateReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("createTimeseriesUsingSchemaTemplate", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.createTimeseriesUsingSchemaTemplateArgs() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.createTimeseriesUsingSchemaTemplateResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "createTimeseriesUsingSchemaTemplate failed: unknown result");
+    }
+
     public async global::System.Threading.Tasks.Task<TSStatus> handshakeAsync(TSyncIdentityInfo info, CancellationToken cancellationToken = default)
     {
       await OutputProtocol.WriteMessageBeginAsync(new TMessage("handshake", TMessageType.Call, SeqId), cancellationToken);
@@ -1778,6 +2010,66 @@
       throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "sendFile failed: unknown result");
     }
 
+    public async global::System.Threading.Tasks.Task<TPipeTransferResp> pipeTransferAsync(TPipeTransferReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("pipeTransfer", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.pipeTransferArgs() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.pipeTransferResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "pipeTransfer failed: unknown result");
+    }
+
+    public async global::System.Threading.Tasks.Task<TPipeSubscribeResp> pipeSubscribeAsync(TPipeSubscribeReq req, CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("pipeSubscribe", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.pipeSubscribeArgs() {
+        Req = req,
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.pipeSubscribeResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "pipeSubscribe failed: unknown result");
+    }
+
     public async global::System.Threading.Tasks.Task<TSBackupConfigurationResp> getBackupConfigurationAsync(CancellationToken cancellationToken = default)
     {
       await OutputProtocol.WriteMessageBeginAsync(new TMessage("getBackupConfiguration", TMessageType.Call, SeqId), cancellationToken);
@@ -1836,6 +2128,35 @@
       throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "fetchAllConnectionsInfo failed: unknown result");
     }
 
+    public async global::System.Threading.Tasks.Task<TSStatus> testConnectionEmptyRPCAsync(CancellationToken cancellationToken = default)
+    {
+      await OutputProtocol.WriteMessageBeginAsync(new TMessage("testConnectionEmptyRPC", TMessageType.Call, SeqId), cancellationToken);
+      
+      var args = new InternalStructs.testConnectionEmptyRPCArgs() {
+      };
+      
+      await args.WriteAsync(OutputProtocol, cancellationToken);
+      await OutputProtocol.WriteMessageEndAsync(cancellationToken);
+      await OutputProtocol.Transport.FlushAsync(cancellationToken);
+      
+      var msg = await InputProtocol.ReadMessageBeginAsync(cancellationToken);
+      if (msg.Type == TMessageType.Exception)
+      {
+        var x = await TApplicationException.ReadAsync(InputProtocol, cancellationToken);
+        await InputProtocol.ReadMessageEndAsync(cancellationToken);
+        throw x;
+      }
+
+      var result = new InternalStructs.testConnectionEmptyRPCResult();
+      await result.ReadAsync(InputProtocol, cancellationToken);
+      await InputProtocol.ReadMessageEndAsync(cancellationToken);
+      if (result.__isset.success)
+      {
+        return result.Success;
+      }
+      throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, "testConnectionEmptyRPC failed: unknown result");
+    }
+
   }
 
   public class AsyncProcessor : ITAsyncProcessor
@@ -1852,6 +2173,9 @@
       processMap_["executeStatementV2"] = executeStatementV2_ProcessAsync;
       processMap_["executeRawDataQueryV2"] = executeRawDataQueryV2_ProcessAsync;
       processMap_["executeLastDataQueryV2"] = executeLastDataQueryV2_ProcessAsync;
+      processMap_["executeFastLastDataQueryForOneDeviceV2"] = executeFastLastDataQueryForOneDeviceV2_ProcessAsync;
+      processMap_["executeAggregationQueryV2"] = executeAggregationQueryV2_ProcessAsync;
+      processMap_["executeGroupByQueryIntervalQuery"] = executeGroupByQueryIntervalQuery_ProcessAsync;
       processMap_["fetchResultsV2"] = fetchResultsV2_ProcessAsync;
       processMap_["openSession"] = openSession_ProcessAsync;
       processMap_["closeSession"] = closeSession_ProcessAsync;
@@ -1890,19 +2214,26 @@
       processMap_["deleteData"] = deleteData_ProcessAsync;
       processMap_["executeRawDataQuery"] = executeRawDataQuery_ProcessAsync;
       processMap_["executeLastDataQuery"] = executeLastDataQuery_ProcessAsync;
+      processMap_["executeAggregationQuery"] = executeAggregationQuery_ProcessAsync;
       processMap_["requestStatementId"] = requestStatementId_ProcessAsync;
       processMap_["createSchemaTemplate"] = createSchemaTemplate_ProcessAsync;
       processMap_["appendSchemaTemplate"] = appendSchemaTemplate_ProcessAsync;
       processMap_["pruneSchemaTemplate"] = pruneSchemaTemplate_ProcessAsync;
       processMap_["querySchemaTemplate"] = querySchemaTemplate_ProcessAsync;
+      processMap_["showConfigurationTemplate"] = showConfigurationTemplate_ProcessAsync;
+      processMap_["showConfiguration"] = showConfiguration_ProcessAsync;
       processMap_["setSchemaTemplate"] = setSchemaTemplate_ProcessAsync;
       processMap_["unsetSchemaTemplate"] = unsetSchemaTemplate_ProcessAsync;
       processMap_["dropSchemaTemplate"] = dropSchemaTemplate_ProcessAsync;
+      processMap_["createTimeseriesUsingSchemaTemplate"] = createTimeseriesUsingSchemaTemplate_ProcessAsync;
       processMap_["handshake"] = handshake_ProcessAsync;
       processMap_["sendPipeData"] = sendPipeData_ProcessAsync;
       processMap_["sendFile"] = sendFile_ProcessAsync;
+      processMap_["pipeTransfer"] = pipeTransfer_ProcessAsync;
+      processMap_["pipeSubscribe"] = pipeSubscribe_ProcessAsync;
       processMap_["getBackupConfiguration"] = getBackupConfiguration_ProcessAsync;
       processMap_["fetchAllConnectionsInfo"] = fetchAllConnectionsInfo_ProcessAsync;
+      processMap_["testConnectionEmptyRPC"] = testConnectionEmptyRPC_ProcessAsync;
     }
 
     protected delegate global::System.Threading.Tasks.Task ProcessFunction(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken);
@@ -2099,6 +2430,99 @@
       await oprot.Transport.FlushAsync(cancellationToken);
     }
 
+    public async global::System.Threading.Tasks.Task executeFastLastDataQueryForOneDeviceV2_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.executeFastLastDataQueryForOneDeviceV2Args();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.executeFastLastDataQueryForOneDeviceV2Result();
+      try
+      {
+        result.Success = await _iAsync.executeFastLastDataQueryForOneDeviceV2Async(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("executeFastLastDataQueryForOneDeviceV2", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("executeFastLastDataQueryForOneDeviceV2", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
+    public async global::System.Threading.Tasks.Task executeAggregationQueryV2_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.executeAggregationQueryV2Args();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.executeAggregationQueryV2Result();
+      try
+      {
+        result.Success = await _iAsync.executeAggregationQueryV2Async(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("executeAggregationQueryV2", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("executeAggregationQueryV2", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
+    public async global::System.Threading.Tasks.Task executeGroupByQueryIntervalQuery_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.executeGroupByQueryIntervalQueryArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.executeGroupByQueryIntervalQueryResult();
+      try
+      {
+        result.Success = await _iAsync.executeGroupByQueryIntervalQueryAsync(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("executeGroupByQueryIntervalQuery", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("executeGroupByQueryIntervalQuery", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
     public async global::System.Threading.Tasks.Task fetchResultsV2_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
     {
       var args = new InternalStructs.fetchResultsV2Args();
@@ -3277,6 +3701,37 @@
       await oprot.Transport.FlushAsync(cancellationToken);
     }
 
+    public async global::System.Threading.Tasks.Task executeAggregationQuery_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.executeAggregationQueryArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.executeAggregationQueryResult();
+      try
+      {
+        result.Success = await _iAsync.executeAggregationQueryAsync(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("executeAggregationQuery", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("executeAggregationQuery", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
     public async global::System.Threading.Tasks.Task requestStatementId_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
     {
       var args = new InternalStructs.requestStatementIdArgs();
@@ -3432,6 +3887,68 @@
       await oprot.Transport.FlushAsync(cancellationToken);
     }
 
+    public async global::System.Threading.Tasks.Task showConfigurationTemplate_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.showConfigurationTemplateArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.showConfigurationTemplateResult();
+      try
+      {
+        result.Success = await _iAsync.showConfigurationTemplateAsync(cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("showConfigurationTemplate", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("showConfigurationTemplate", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
+    public async global::System.Threading.Tasks.Task showConfiguration_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.showConfigurationArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.showConfigurationResult();
+      try
+      {
+        result.Success = await _iAsync.showConfigurationAsync(args.NodeId, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("showConfiguration", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("showConfiguration", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
     public async global::System.Threading.Tasks.Task setSchemaTemplate_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
     {
       var args = new InternalStructs.setSchemaTemplateArgs();
@@ -3525,6 +4042,37 @@
       await oprot.Transport.FlushAsync(cancellationToken);
     }
 
+    public async global::System.Threading.Tasks.Task createTimeseriesUsingSchemaTemplate_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.createTimeseriesUsingSchemaTemplateArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.createTimeseriesUsingSchemaTemplateResult();
+      try
+      {
+        result.Success = await _iAsync.createTimeseriesUsingSchemaTemplateAsync(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("createTimeseriesUsingSchemaTemplate", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("createTimeseriesUsingSchemaTemplate", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
     public async global::System.Threading.Tasks.Task handshake_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
     {
       var args = new InternalStructs.handshakeArgs();
@@ -3618,6 +4166,68 @@
       await oprot.Transport.FlushAsync(cancellationToken);
     }
 
+    public async global::System.Threading.Tasks.Task pipeTransfer_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.pipeTransferArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.pipeTransferResult();
+      try
+      {
+        result.Success = await _iAsync.pipeTransferAsync(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("pipeTransfer", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("pipeTransfer", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
+    public async global::System.Threading.Tasks.Task pipeSubscribe_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.pipeSubscribeArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.pipeSubscribeResult();
+      try
+      {
+        result.Success = await _iAsync.pipeSubscribeAsync(args.Req, cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("pipeSubscribe", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("pipeSubscribe", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
     public async global::System.Threading.Tasks.Task getBackupConfiguration_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
     {
       var args = new InternalStructs.getBackupConfigurationArgs();
@@ -3680,6 +4290,37 @@
       await oprot.Transport.FlushAsync(cancellationToken);
     }
 
+    public async global::System.Threading.Tasks.Task testConnectionEmptyRPC_ProcessAsync(int seqid, TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken)
+    {
+      var args = new InternalStructs.testConnectionEmptyRPCArgs();
+      await args.ReadAsync(iprot, cancellationToken);
+      await iprot.ReadMessageEndAsync(cancellationToken);
+      var result = new InternalStructs.testConnectionEmptyRPCResult();
+      try
+      {
+        result.Success = await _iAsync.testConnectionEmptyRPCAsync(cancellationToken);
+        await oprot.WriteMessageBeginAsync(new TMessage("testConnectionEmptyRPC", TMessageType.Reply, seqid), cancellationToken); 
+        await result.WriteAsync(oprot, cancellationToken);
+      }
+      catch (TTransportException)
+      {
+        throw;
+      }
+      catch (Exception ex)
+      {
+        var sErr = $"Error occurred in {GetType().FullName}: {ex.Message}";
+        if(_logger != null)
+          _logger.LogError(ex, sErr);
+        else
+          Console.Error.WriteLine(sErr);
+        var x = new TApplicationException(TApplicationException.ExceptionType.InternalError," Internal error.");
+        await oprot.WriteMessageBeginAsync(new TMessage("testConnectionEmptyRPC", TMessageType.Exception, seqid), cancellationToken);
+        await x.WriteAsync(oprot, cancellationToken);
+      }
+      await oprot.WriteMessageEndAsync(cancellationToken);
+      await oprot.Transport.FlushAsync(cancellationToken);
+    }
+
   }
 
   public class InternalStructs
@@ -3713,17 +4354,6 @@
       {
       }
 
-      public executeQueryStatementV2Args DeepCopy()
-      {
-        var tmp435 = new executeQueryStatementV2Args();
-        if((Req != null) && __isset.req)
-        {
-          tmp435.Req = (TSExecuteStatementReq)this.Req.DeepCopy();
-        }
-        tmp435.__isset.req = this.__isset.req;
-        return tmp435;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -3815,10 +4445,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeQueryStatementV2_args(");
-        int tmp436 = 0;
+        int tmp417 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp436++) { sb.Append(", "); }
+          if(0 < tmp417++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -3856,17 +4486,6 @@
       {
       }
 
-      public executeQueryStatementV2Result DeepCopy()
-      {
-        var tmp437 = new executeQueryStatementV2Result();
-        if((Success != null) && __isset.success)
-        {
-          tmp437.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp437.__isset.success = this.__isset.success;
-        return tmp437;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -3962,10 +4581,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeQueryStatementV2_result(");
-        int tmp438 = 0;
+        int tmp418 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp438++) { sb.Append(", "); }
+          if(0 < tmp418++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -4003,17 +4622,6 @@
       {
       }
 
-      public executeUpdateStatementV2Args DeepCopy()
-      {
-        var tmp439 = new executeUpdateStatementV2Args();
-        if((Req != null) && __isset.req)
-        {
-          tmp439.Req = (TSExecuteStatementReq)this.Req.DeepCopy();
-        }
-        tmp439.__isset.req = this.__isset.req;
-        return tmp439;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4105,10 +4713,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeUpdateStatementV2_args(");
-        int tmp440 = 0;
+        int tmp419 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp440++) { sb.Append(", "); }
+          if(0 < tmp419++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -4146,17 +4754,6 @@
       {
       }
 
-      public executeUpdateStatementV2Result DeepCopy()
-      {
-        var tmp441 = new executeUpdateStatementV2Result();
-        if((Success != null) && __isset.success)
-        {
-          tmp441.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp441.__isset.success = this.__isset.success;
-        return tmp441;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4252,10 +4849,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeUpdateStatementV2_result(");
-        int tmp442 = 0;
+        int tmp420 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp442++) { sb.Append(", "); }
+          if(0 < tmp420++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -4293,17 +4890,6 @@
       {
       }
 
-      public executeStatementV2Args DeepCopy()
-      {
-        var tmp443 = new executeStatementV2Args();
-        if((Req != null) && __isset.req)
-        {
-          tmp443.Req = (TSExecuteStatementReq)this.Req.DeepCopy();
-        }
-        tmp443.__isset.req = this.__isset.req;
-        return tmp443;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4395,10 +4981,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeStatementV2_args(");
-        int tmp444 = 0;
+        int tmp421 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp444++) { sb.Append(", "); }
+          if(0 < tmp421++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -4436,17 +5022,6 @@
       {
       }
 
-      public executeStatementV2Result DeepCopy()
-      {
-        var tmp445 = new executeStatementV2Result();
-        if((Success != null) && __isset.success)
-        {
-          tmp445.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp445.__isset.success = this.__isset.success;
-        return tmp445;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4542,10 +5117,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeStatementV2_result(");
-        int tmp446 = 0;
+        int tmp422 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp446++) { sb.Append(", "); }
+          if(0 < tmp422++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -4583,17 +5158,6 @@
       {
       }
 
-      public executeRawDataQueryV2Args DeepCopy()
-      {
-        var tmp447 = new executeRawDataQueryV2Args();
-        if((Req != null) && __isset.req)
-        {
-          tmp447.Req = (TSRawDataQueryReq)this.Req.DeepCopy();
-        }
-        tmp447.__isset.req = this.__isset.req;
-        return tmp447;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4685,10 +5249,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeRawDataQueryV2_args(");
-        int tmp448 = 0;
+        int tmp423 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp448++) { sb.Append(", "); }
+          if(0 < tmp423++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -4726,17 +5290,6 @@
       {
       }
 
-      public executeRawDataQueryV2Result DeepCopy()
-      {
-        var tmp449 = new executeRawDataQueryV2Result();
-        if((Success != null) && __isset.success)
-        {
-          tmp449.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp449.__isset.success = this.__isset.success;
-        return tmp449;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4832,10 +5385,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeRawDataQueryV2_result(");
-        int tmp450 = 0;
+        int tmp424 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp450++) { sb.Append(", "); }
+          if(0 < tmp424++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -4873,17 +5426,6 @@
       {
       }
 
-      public executeLastDataQueryV2Args DeepCopy()
-      {
-        var tmp451 = new executeLastDataQueryV2Args();
-        if((Req != null) && __isset.req)
-        {
-          tmp451.Req = (TSLastDataQueryReq)this.Req.DeepCopy();
-        }
-        tmp451.__isset.req = this.__isset.req;
-        return tmp451;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -4975,10 +5517,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeLastDataQueryV2_args(");
-        int tmp452 = 0;
+        int tmp425 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp452++) { sb.Append(", "); }
+          if(0 < tmp425++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -5016,17 +5558,6 @@
       {
       }
 
-      public executeLastDataQueryV2Result DeepCopy()
-      {
-        var tmp453 = new executeLastDataQueryV2Result();
-        if((Success != null) && __isset.success)
-        {
-          tmp453.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp453.__isset.success = this.__isset.success;
-        return tmp453;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5122,10 +5653,814 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeLastDataQueryV2_result(");
-        int tmp454 = 0;
+        int tmp426 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp454++) { sb.Append(", "); }
+          if(0 < tmp426++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeFastLastDataQueryForOneDeviceV2Args : TBase
+    {
+      private TSFastLastDataQueryForOneDeviceReq _req;
+
+      public TSFastLastDataQueryForOneDeviceReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public executeFastLastDataQueryForOneDeviceV2Args()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TSFastLastDataQueryForOneDeviceReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeFastLastDataQueryForOneDeviceV2_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = 1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeFastLastDataQueryForOneDeviceV2Args other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeFastLastDataQueryForOneDeviceV2_args(");
+        int tmp427 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp427++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeFastLastDataQueryForOneDeviceV2Result : TBase
+    {
+      private TSExecuteStatementResp _success;
+
+      public TSExecuteStatementResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public executeFastLastDataQueryForOneDeviceV2Result()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TSExecuteStatementResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeFastLastDataQueryForOneDeviceV2_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeFastLastDataQueryForOneDeviceV2Result other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeFastLastDataQueryForOneDeviceV2_result(");
+        int tmp428 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp428++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeAggregationQueryV2Args : TBase
+    {
+      private TSAggregationQueryReq _req;
+
+      public TSAggregationQueryReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public executeAggregationQueryV2Args()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TSAggregationQueryReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeAggregationQueryV2_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = 1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeAggregationQueryV2Args other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeAggregationQueryV2_args(");
+        int tmp429 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp429++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeAggregationQueryV2Result : TBase
+    {
+      private TSExecuteStatementResp _success;
+
+      public TSExecuteStatementResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public executeAggregationQueryV2Result()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TSExecuteStatementResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeAggregationQueryV2_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeAggregationQueryV2Result other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeAggregationQueryV2_result(");
+        int tmp430 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp430++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeGroupByQueryIntervalQueryArgs : TBase
+    {
+      private TSGroupByQueryIntervalReq _req;
+
+      public TSGroupByQueryIntervalReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public executeGroupByQueryIntervalQueryArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TSGroupByQueryIntervalReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeGroupByQueryIntervalQuery_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = 1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeGroupByQueryIntervalQueryArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeGroupByQueryIntervalQuery_args(");
+        int tmp431 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp431++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeGroupByQueryIntervalQueryResult : TBase
+    {
+      private TSExecuteStatementResp _success;
+
+      public TSExecuteStatementResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public executeGroupByQueryIntervalQueryResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TSExecuteStatementResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeGroupByQueryIntervalQuery_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeGroupByQueryIntervalQueryResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeGroupByQueryIntervalQuery_result(");
+        int tmp432 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp432++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -5163,17 +6498,6 @@
       {
       }
 
-      public fetchResultsV2Args DeepCopy()
-      {
-        var tmp455 = new fetchResultsV2Args();
-        if((Req != null) && __isset.req)
-        {
-          tmp455.Req = (TSFetchResultsReq)this.Req.DeepCopy();
-        }
-        tmp455.__isset.req = this.__isset.req;
-        return tmp455;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5265,10 +6589,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchResultsV2_args(");
-        int tmp456 = 0;
+        int tmp433 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp456++) { sb.Append(", "); }
+          if(0 < tmp433++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -5306,17 +6630,6 @@
       {
       }
 
-      public fetchResultsV2Result DeepCopy()
-      {
-        var tmp457 = new fetchResultsV2Result();
-        if((Success != null) && __isset.success)
-        {
-          tmp457.Success = (TSFetchResultsResp)this.Success.DeepCopy();
-        }
-        tmp457.__isset.success = this.__isset.success;
-        return tmp457;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5412,10 +6725,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchResultsV2_result(");
-        int tmp458 = 0;
+        int tmp434 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp458++) { sb.Append(", "); }
+          if(0 < tmp434++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -5453,17 +6766,6 @@
       {
       }
 
-      public openSessionArgs DeepCopy()
-      {
-        var tmp459 = new openSessionArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp459.Req = (TSOpenSessionReq)this.Req.DeepCopy();
-        }
-        tmp459.__isset.req = this.__isset.req;
-        return tmp459;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5555,10 +6857,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("openSession_args(");
-        int tmp460 = 0;
+        int tmp435 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp460++) { sb.Append(", "); }
+          if(0 < tmp435++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -5596,17 +6898,6 @@
       {
       }
 
-      public openSessionResult DeepCopy()
-      {
-        var tmp461 = new openSessionResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp461.Success = (TSOpenSessionResp)this.Success.DeepCopy();
-        }
-        tmp461.__isset.success = this.__isset.success;
-        return tmp461;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5702,10 +6993,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("openSession_result(");
-        int tmp462 = 0;
+        int tmp436 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp462++) { sb.Append(", "); }
+          if(0 < tmp436++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -5743,17 +7034,6 @@
       {
       }
 
-      public closeSessionArgs DeepCopy()
-      {
-        var tmp463 = new closeSessionArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp463.Req = (TSCloseSessionReq)this.Req.DeepCopy();
-        }
-        tmp463.__isset.req = this.__isset.req;
-        return tmp463;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5845,10 +7125,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("closeSession_args(");
-        int tmp464 = 0;
+        int tmp437 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp464++) { sb.Append(", "); }
+          if(0 < tmp437++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -5886,17 +7166,6 @@
       {
       }
 
-      public closeSessionResult DeepCopy()
-      {
-        var tmp465 = new closeSessionResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp465.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp465.__isset.success = this.__isset.success;
-        return tmp465;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -5992,10 +7261,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("closeSession_result(");
-        int tmp466 = 0;
+        int tmp438 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp466++) { sb.Append(", "); }
+          if(0 < tmp438++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -6033,17 +7302,6 @@
       {
       }
 
-      public executeStatementArgs DeepCopy()
-      {
-        var tmp467 = new executeStatementArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp467.Req = (TSExecuteStatementReq)this.Req.DeepCopy();
-        }
-        tmp467.__isset.req = this.__isset.req;
-        return tmp467;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -6135,10 +7393,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeStatement_args(");
-        int tmp468 = 0;
+        int tmp439 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp468++) { sb.Append(", "); }
+          if(0 < tmp439++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -6176,17 +7434,6 @@
       {
       }
 
-      public executeStatementResult DeepCopy()
-      {
-        var tmp469 = new executeStatementResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp469.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp469.__isset.success = this.__isset.success;
-        return tmp469;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -6282,10 +7529,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeStatement_result(");
-        int tmp470 = 0;
+        int tmp440 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp470++) { sb.Append(", "); }
+          if(0 < tmp440++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -6323,17 +7570,6 @@
       {
       }
 
-      public executeBatchStatementArgs DeepCopy()
-      {
-        var tmp471 = new executeBatchStatementArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp471.Req = (TSExecuteBatchStatementReq)this.Req.DeepCopy();
-        }
-        tmp471.__isset.req = this.__isset.req;
-        return tmp471;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -6425,10 +7661,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeBatchStatement_args(");
-        int tmp472 = 0;
+        int tmp441 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp472++) { sb.Append(", "); }
+          if(0 < tmp441++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -6466,17 +7702,6 @@
       {
       }
 
-      public executeBatchStatementResult DeepCopy()
-      {
-        var tmp473 = new executeBatchStatementResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp473.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp473.__isset.success = this.__isset.success;
-        return tmp473;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -6572,10 +7797,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeBatchStatement_result(");
-        int tmp474 = 0;
+        int tmp442 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp474++) { sb.Append(", "); }
+          if(0 < tmp442++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -6613,17 +7838,6 @@
       {
       }
 
-      public executeQueryStatementArgs DeepCopy()
-      {
-        var tmp475 = new executeQueryStatementArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp475.Req = (TSExecuteStatementReq)this.Req.DeepCopy();
-        }
-        tmp475.__isset.req = this.__isset.req;
-        return tmp475;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -6715,10 +7929,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeQueryStatement_args(");
-        int tmp476 = 0;
+        int tmp443 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp476++) { sb.Append(", "); }
+          if(0 < tmp443++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -6756,17 +7970,6 @@
       {
       }
 
-      public executeQueryStatementResult DeepCopy()
-      {
-        var tmp477 = new executeQueryStatementResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp477.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp477.__isset.success = this.__isset.success;
-        return tmp477;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -6862,10 +8065,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeQueryStatement_result(");
-        int tmp478 = 0;
+        int tmp444 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp478++) { sb.Append(", "); }
+          if(0 < tmp444++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -6903,17 +8106,6 @@
       {
       }
 
-      public executeUpdateStatementArgs DeepCopy()
-      {
-        var tmp479 = new executeUpdateStatementArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp479.Req = (TSExecuteStatementReq)this.Req.DeepCopy();
-        }
-        tmp479.__isset.req = this.__isset.req;
-        return tmp479;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7005,10 +8197,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeUpdateStatement_args(");
-        int tmp480 = 0;
+        int tmp445 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp480++) { sb.Append(", "); }
+          if(0 < tmp445++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -7046,17 +8238,6 @@
       {
       }
 
-      public executeUpdateStatementResult DeepCopy()
-      {
-        var tmp481 = new executeUpdateStatementResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp481.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp481.__isset.success = this.__isset.success;
-        return tmp481;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7152,10 +8333,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeUpdateStatement_result(");
-        int tmp482 = 0;
+        int tmp446 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp482++) { sb.Append(", "); }
+          if(0 < tmp446++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -7193,17 +8374,6 @@
       {
       }
 
-      public fetchResultsArgs DeepCopy()
-      {
-        var tmp483 = new fetchResultsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp483.Req = (TSFetchResultsReq)this.Req.DeepCopy();
-        }
-        tmp483.__isset.req = this.__isset.req;
-        return tmp483;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7295,10 +8465,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchResults_args(");
-        int tmp484 = 0;
+        int tmp447 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp484++) { sb.Append(", "); }
+          if(0 < tmp447++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -7336,17 +8506,6 @@
       {
       }
 
-      public fetchResultsResult DeepCopy()
-      {
-        var tmp485 = new fetchResultsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp485.Success = (TSFetchResultsResp)this.Success.DeepCopy();
-        }
-        tmp485.__isset.success = this.__isset.success;
-        return tmp485;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7442,10 +8601,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchResults_result(");
-        int tmp486 = 0;
+        int tmp448 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp486++) { sb.Append(", "); }
+          if(0 < tmp448++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -7483,17 +8642,6 @@
       {
       }
 
-      public fetchMetadataArgs DeepCopy()
-      {
-        var tmp487 = new fetchMetadataArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp487.Req = (TSFetchMetadataReq)this.Req.DeepCopy();
-        }
-        tmp487.__isset.req = this.__isset.req;
-        return tmp487;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7585,10 +8733,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchMetadata_args(");
-        int tmp488 = 0;
+        int tmp449 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp488++) { sb.Append(", "); }
+          if(0 < tmp449++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -7626,17 +8774,6 @@
       {
       }
 
-      public fetchMetadataResult DeepCopy()
-      {
-        var tmp489 = new fetchMetadataResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp489.Success = (TSFetchMetadataResp)this.Success.DeepCopy();
-        }
-        tmp489.__isset.success = this.__isset.success;
-        return tmp489;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7732,10 +8869,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchMetadata_result(");
-        int tmp490 = 0;
+        int tmp450 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp490++) { sb.Append(", "); }
+          if(0 < tmp450++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -7773,17 +8910,6 @@
       {
       }
 
-      public cancelOperationArgs DeepCopy()
-      {
-        var tmp491 = new cancelOperationArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp491.Req = (TSCancelOperationReq)this.Req.DeepCopy();
-        }
-        tmp491.__isset.req = this.__isset.req;
-        return tmp491;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -7875,10 +9001,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("cancelOperation_args(");
-        int tmp492 = 0;
+        int tmp451 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp492++) { sb.Append(", "); }
+          if(0 < tmp451++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -7916,17 +9042,6 @@
       {
       }
 
-      public cancelOperationResult DeepCopy()
-      {
-        var tmp493 = new cancelOperationResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp493.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp493.__isset.success = this.__isset.success;
-        return tmp493;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8022,10 +9137,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("cancelOperation_result(");
-        int tmp494 = 0;
+        int tmp452 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp494++) { sb.Append(", "); }
+          if(0 < tmp452++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -8063,17 +9178,6 @@
       {
       }
 
-      public closeOperationArgs DeepCopy()
-      {
-        var tmp495 = new closeOperationArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp495.Req = (TSCloseOperationReq)this.Req.DeepCopy();
-        }
-        tmp495.__isset.req = this.__isset.req;
-        return tmp495;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8165,10 +9269,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("closeOperation_args(");
-        int tmp496 = 0;
+        int tmp453 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp496++) { sb.Append(", "); }
+          if(0 < tmp453++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -8206,17 +9310,6 @@
       {
       }
 
-      public closeOperationResult DeepCopy()
-      {
-        var tmp497 = new closeOperationResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp497.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp497.__isset.success = this.__isset.success;
-        return tmp497;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8312,10 +9405,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("closeOperation_result(");
-        int tmp498 = 0;
+        int tmp454 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp498++) { sb.Append(", "); }
+          if(0 < tmp454++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -8353,17 +9446,6 @@
       {
       }
 
-      public getTimeZoneArgs DeepCopy()
-      {
-        var tmp499 = new getTimeZoneArgs();
-        if(__isset.sessionId)
-        {
-          tmp499.SessionId = this.SessionId;
-        }
-        tmp499.__isset.sessionId = this.__isset.sessionId;
-        return tmp499;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8454,10 +9536,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("getTimeZone_args(");
-        int tmp500 = 0;
+        int tmp455 = 0;
         if(__isset.sessionId)
         {
-          if(0 < tmp500++) { sb.Append(", "); }
+          if(0 < tmp455++) { sb.Append(", "); }
           sb.Append("SessionId: ");
           SessionId.ToString(sb);
         }
@@ -8495,17 +9577,6 @@
       {
       }
 
-      public getTimeZoneResult DeepCopy()
-      {
-        var tmp501 = new getTimeZoneResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp501.Success = (TSGetTimeZoneResp)this.Success.DeepCopy();
-        }
-        tmp501.__isset.success = this.__isset.success;
-        return tmp501;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8601,10 +9672,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("getTimeZone_result(");
-        int tmp502 = 0;
+        int tmp456 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp502++) { sb.Append(", "); }
+          if(0 < tmp456++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -8642,17 +9713,6 @@
       {
       }
 
-      public setTimeZoneArgs DeepCopy()
-      {
-        var tmp503 = new setTimeZoneArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp503.Req = (TSSetTimeZoneReq)this.Req.DeepCopy();
-        }
-        tmp503.__isset.req = this.__isset.req;
-        return tmp503;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8744,10 +9804,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("setTimeZone_args(");
-        int tmp504 = 0;
+        int tmp457 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp504++) { sb.Append(", "); }
+          if(0 < tmp457++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -8785,17 +9845,6 @@
       {
       }
 
-      public setTimeZoneResult DeepCopy()
-      {
-        var tmp505 = new setTimeZoneResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp505.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp505.__isset.success = this.__isset.success;
-        return tmp505;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -8891,10 +9940,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("setTimeZone_result(");
-        int tmp506 = 0;
+        int tmp458 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp506++) { sb.Append(", "); }
+          if(0 < tmp458++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -8911,12 +9960,6 @@
       {
       }
 
-      public getPropertiesArgs DeepCopy()
-      {
-        var tmp507 = new getPropertiesArgs();
-        return tmp507;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9017,17 +10060,6 @@
       {
       }
 
-      public getPropertiesResult DeepCopy()
-      {
-        var tmp509 = new getPropertiesResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp509.Success = (ServerProperties)this.Success.DeepCopy();
-        }
-        tmp509.__isset.success = this.__isset.success;
-        return tmp509;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9123,10 +10155,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("getProperties_result(");
-        int tmp510 = 0;
+        int tmp460 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp510++) { sb.Append(", "); }
+          if(0 < tmp460++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -9179,22 +10211,6 @@
       {
       }
 
-      public setStorageGroupArgs DeepCopy()
-      {
-        var tmp511 = new setStorageGroupArgs();
-        if(__isset.sessionId)
-        {
-          tmp511.SessionId = this.SessionId;
-        }
-        tmp511.__isset.sessionId = this.__isset.sessionId;
-        if((StorageGroup != null) && __isset.storageGroup)
-        {
-          tmp511.StorageGroup = this.StorageGroup;
-        }
-        tmp511.__isset.storageGroup = this.__isset.storageGroup;
-        return tmp511;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9309,16 +10325,16 @@
       public override string ToString()
       {
         var sb = new StringBuilder("setStorageGroup_args(");
-        int tmp512 = 0;
+        int tmp461 = 0;
         if(__isset.sessionId)
         {
-          if(0 < tmp512++) { sb.Append(", "); }
+          if(0 < tmp461++) { sb.Append(", "); }
           sb.Append("SessionId: ");
           SessionId.ToString(sb);
         }
         if((StorageGroup != null) && __isset.storageGroup)
         {
-          if(0 < tmp512++) { sb.Append(", "); }
+          if(0 < tmp461++) { sb.Append(", "); }
           sb.Append("StorageGroup: ");
           StorageGroup.ToString(sb);
         }
@@ -9356,17 +10372,6 @@
       {
       }
 
-      public setStorageGroupResult DeepCopy()
-      {
-        var tmp513 = new setStorageGroupResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp513.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp513.__isset.success = this.__isset.success;
-        return tmp513;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9462,10 +10467,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("setStorageGroup_result(");
-        int tmp514 = 0;
+        int tmp462 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp514++) { sb.Append(", "); }
+          if(0 < tmp462++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -9503,17 +10508,6 @@
       {
       }
 
-      public createTimeseriesArgs DeepCopy()
-      {
-        var tmp515 = new createTimeseriesArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp515.Req = (TSCreateTimeseriesReq)this.Req.DeepCopy();
-        }
-        tmp515.__isset.req = this.__isset.req;
-        return tmp515;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9605,10 +10599,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createTimeseries_args(");
-        int tmp516 = 0;
+        int tmp463 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp516++) { sb.Append(", "); }
+          if(0 < tmp463++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -9646,17 +10640,6 @@
       {
       }
 
-      public createTimeseriesResult DeepCopy()
-      {
-        var tmp517 = new createTimeseriesResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp517.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp517.__isset.success = this.__isset.success;
-        return tmp517;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9752,10 +10735,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createTimeseries_result(");
-        int tmp518 = 0;
+        int tmp464 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp518++) { sb.Append(", "); }
+          if(0 < tmp464++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -9793,17 +10776,6 @@
       {
       }
 
-      public createAlignedTimeseriesArgs DeepCopy()
-      {
-        var tmp519 = new createAlignedTimeseriesArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp519.Req = (TSCreateAlignedTimeseriesReq)this.Req.DeepCopy();
-        }
-        tmp519.__isset.req = this.__isset.req;
-        return tmp519;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -9895,10 +10867,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createAlignedTimeseries_args(");
-        int tmp520 = 0;
+        int tmp465 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp520++) { sb.Append(", "); }
+          if(0 < tmp465++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -9936,17 +10908,6 @@
       {
       }
 
-      public createAlignedTimeseriesResult DeepCopy()
-      {
-        var tmp521 = new createAlignedTimeseriesResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp521.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp521.__isset.success = this.__isset.success;
-        return tmp521;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -10042,10 +11003,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createAlignedTimeseries_result(");
-        int tmp522 = 0;
+        int tmp466 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp522++) { sb.Append(", "); }
+          if(0 < tmp466++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -10083,17 +11044,6 @@
       {
       }
 
-      public createMultiTimeseriesArgs DeepCopy()
-      {
-        var tmp523 = new createMultiTimeseriesArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp523.Req = (TSCreateMultiTimeseriesReq)this.Req.DeepCopy();
-        }
-        tmp523.__isset.req = this.__isset.req;
-        return tmp523;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -10185,10 +11135,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createMultiTimeseries_args(");
-        int tmp524 = 0;
+        int tmp467 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp524++) { sb.Append(", "); }
+          if(0 < tmp467++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -10226,17 +11176,6 @@
       {
       }
 
-      public createMultiTimeseriesResult DeepCopy()
-      {
-        var tmp525 = new createMultiTimeseriesResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp525.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp525.__isset.success = this.__isset.success;
-        return tmp525;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -10332,10 +11271,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createMultiTimeseries_result(");
-        int tmp526 = 0;
+        int tmp468 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp526++) { sb.Append(", "); }
+          if(0 < tmp468++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -10388,22 +11327,6 @@
       {
       }
 
-      public deleteTimeseriesArgs DeepCopy()
-      {
-        var tmp527 = new deleteTimeseriesArgs();
-        if(__isset.sessionId)
-        {
-          tmp527.SessionId = this.SessionId;
-        }
-        tmp527.__isset.sessionId = this.__isset.sessionId;
-        if((Path != null) && __isset.path)
-        {
-          tmp527.Path = this.Path.DeepCopy();
-        }
-        tmp527.__isset.path = this.__isset.path;
-        return tmp527;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -10435,13 +11358,13 @@
                 if (field.Type == TType.List)
                 {
                   {
-                    TList _list528 = await iprot.ReadListBeginAsync(cancellationToken);
-                    Path = new List<string>(_list528.Count);
-                    for(int _i529 = 0; _i529 < _list528.Count; ++_i529)
+                    TList _list469 = await iprot.ReadListBeginAsync(cancellationToken);
+                    Path = new List<string>(_list469.Count);
+                    for(int _i470 = 0; _i470 < _list469.Count; ++_i470)
                     {
-                      string _elem530;
-                      _elem530 = await iprot.ReadStringAsync(cancellationToken);
-                      Path.Add(_elem530);
+                      string _elem471;
+                      _elem471 = await iprot.ReadStringAsync(cancellationToken);
+                      Path.Add(_elem471);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
@@ -10492,9 +11415,9 @@
             await oprot.WriteFieldBeginAsync(field, cancellationToken);
             {
               await oprot.WriteListBeginAsync(new TList(TType.String, Path.Count), cancellationToken);
-              foreach (string _iter531 in Path)
+              foreach (string _iter472 in Path)
               {
-                await oprot.WriteStringAsync(_iter531, cancellationToken);
+                await oprot.WriteStringAsync(_iter472, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -10535,16 +11458,16 @@
       public override string ToString()
       {
         var sb = new StringBuilder("deleteTimeseries_args(");
-        int tmp532 = 0;
+        int tmp473 = 0;
         if(__isset.sessionId)
         {
-          if(0 < tmp532++) { sb.Append(", "); }
+          if(0 < tmp473++) { sb.Append(", "); }
           sb.Append("SessionId: ");
           SessionId.ToString(sb);
         }
         if((Path != null) && __isset.path)
         {
-          if(0 < tmp532++) { sb.Append(", "); }
+          if(0 < tmp473++) { sb.Append(", "); }
           sb.Append("Path: ");
           Path.ToString(sb);
         }
@@ -10582,17 +11505,6 @@
       {
       }
 
-      public deleteTimeseriesResult DeepCopy()
-      {
-        var tmp533 = new deleteTimeseriesResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp533.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp533.__isset.success = this.__isset.success;
-        return tmp533;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -10688,10 +11600,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("deleteTimeseries_result(");
-        int tmp534 = 0;
+        int tmp474 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp534++) { sb.Append(", "); }
+          if(0 < tmp474++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -10744,22 +11656,6 @@
       {
       }
 
-      public deleteStorageGroupsArgs DeepCopy()
-      {
-        var tmp535 = new deleteStorageGroupsArgs();
-        if(__isset.sessionId)
-        {
-          tmp535.SessionId = this.SessionId;
-        }
-        tmp535.__isset.sessionId = this.__isset.sessionId;
-        if((StorageGroup != null) && __isset.storageGroup)
-        {
-          tmp535.StorageGroup = this.StorageGroup.DeepCopy();
-        }
-        tmp535.__isset.storageGroup = this.__isset.storageGroup;
-        return tmp535;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -10791,13 +11687,13 @@
                 if (field.Type == TType.List)
                 {
                   {
-                    TList _list536 = await iprot.ReadListBeginAsync(cancellationToken);
-                    StorageGroup = new List<string>(_list536.Count);
-                    for(int _i537 = 0; _i537 < _list536.Count; ++_i537)
+                    TList _list475 = await iprot.ReadListBeginAsync(cancellationToken);
+                    StorageGroup = new List<string>(_list475.Count);
+                    for(int _i476 = 0; _i476 < _list475.Count; ++_i476)
                     {
-                      string _elem538;
-                      _elem538 = await iprot.ReadStringAsync(cancellationToken);
-                      StorageGroup.Add(_elem538);
+                      string _elem477;
+                      _elem477 = await iprot.ReadStringAsync(cancellationToken);
+                      StorageGroup.Add(_elem477);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
@@ -10848,9 +11744,9 @@
             await oprot.WriteFieldBeginAsync(field, cancellationToken);
             {
               await oprot.WriteListBeginAsync(new TList(TType.String, StorageGroup.Count), cancellationToken);
-              foreach (string _iter539 in StorageGroup)
+              foreach (string _iter478 in StorageGroup)
               {
-                await oprot.WriteStringAsync(_iter539, cancellationToken);
+                await oprot.WriteStringAsync(_iter478, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -10891,16 +11787,16 @@
       public override string ToString()
       {
         var sb = new StringBuilder("deleteStorageGroups_args(");
-        int tmp540 = 0;
+        int tmp479 = 0;
         if(__isset.sessionId)
         {
-          if(0 < tmp540++) { sb.Append(", "); }
+          if(0 < tmp479++) { sb.Append(", "); }
           sb.Append("SessionId: ");
           SessionId.ToString(sb);
         }
         if((StorageGroup != null) && __isset.storageGroup)
         {
-          if(0 < tmp540++) { sb.Append(", "); }
+          if(0 < tmp479++) { sb.Append(", "); }
           sb.Append("StorageGroup: ");
           StorageGroup.ToString(sb);
         }
@@ -10938,17 +11834,6 @@
       {
       }
 
-      public deleteStorageGroupsResult DeepCopy()
-      {
-        var tmp541 = new deleteStorageGroupsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp541.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp541.__isset.success = this.__isset.success;
-        return tmp541;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11044,10 +11929,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("deleteStorageGroups_result(");
-        int tmp542 = 0;
+        int tmp480 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp542++) { sb.Append(", "); }
+          if(0 < tmp480++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -11085,17 +11970,6 @@
       {
       }
 
-      public insertRecordArgs DeepCopy()
-      {
-        var tmp543 = new insertRecordArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp543.Req = (TSInsertRecordReq)this.Req.DeepCopy();
-        }
-        tmp543.__isset.req = this.__isset.req;
-        return tmp543;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11187,10 +12061,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertRecord_args(");
-        int tmp544 = 0;
+        int tmp481 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp544++) { sb.Append(", "); }
+          if(0 < tmp481++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -11228,17 +12102,6 @@
       {
       }
 
-      public insertRecordResult DeepCopy()
-      {
-        var tmp545 = new insertRecordResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp545.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp545.__isset.success = this.__isset.success;
-        return tmp545;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11334,10 +12197,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertRecord_result(");
-        int tmp546 = 0;
+        int tmp482 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp546++) { sb.Append(", "); }
+          if(0 < tmp482++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -11375,17 +12238,6 @@
       {
       }
 
-      public insertStringRecordArgs DeepCopy()
-      {
-        var tmp547 = new insertStringRecordArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp547.Req = (TSInsertStringRecordReq)this.Req.DeepCopy();
-        }
-        tmp547.__isset.req = this.__isset.req;
-        return tmp547;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11477,10 +12329,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertStringRecord_args(");
-        int tmp548 = 0;
+        int tmp483 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp548++) { sb.Append(", "); }
+          if(0 < tmp483++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -11518,17 +12370,6 @@
       {
       }
 
-      public insertStringRecordResult DeepCopy()
-      {
-        var tmp549 = new insertStringRecordResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp549.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp549.__isset.success = this.__isset.success;
-        return tmp549;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11624,10 +12465,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertStringRecord_result(");
-        int tmp550 = 0;
+        int tmp484 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp550++) { sb.Append(", "); }
+          if(0 < tmp484++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -11665,17 +12506,6 @@
       {
       }
 
-      public insertTabletArgs DeepCopy()
-      {
-        var tmp551 = new insertTabletArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp551.Req = (TSInsertTabletReq)this.Req.DeepCopy();
-        }
-        tmp551.__isset.req = this.__isset.req;
-        return tmp551;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11767,10 +12597,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertTablet_args(");
-        int tmp552 = 0;
+        int tmp485 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp552++) { sb.Append(", "); }
+          if(0 < tmp485++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -11808,17 +12638,6 @@
       {
       }
 
-      public insertTabletResult DeepCopy()
-      {
-        var tmp553 = new insertTabletResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp553.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp553.__isset.success = this.__isset.success;
-        return tmp553;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -11914,10 +12733,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertTablet_result(");
-        int tmp554 = 0;
+        int tmp486 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp554++) { sb.Append(", "); }
+          if(0 < tmp486++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -11955,17 +12774,6 @@
       {
       }
 
-      public insertTabletsArgs DeepCopy()
-      {
-        var tmp555 = new insertTabletsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp555.Req = (TSInsertTabletsReq)this.Req.DeepCopy();
-        }
-        tmp555.__isset.req = this.__isset.req;
-        return tmp555;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12057,10 +12865,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertTablets_args(");
-        int tmp556 = 0;
+        int tmp487 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp556++) { sb.Append(", "); }
+          if(0 < tmp487++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -12098,17 +12906,6 @@
       {
       }
 
-      public insertTabletsResult DeepCopy()
-      {
-        var tmp557 = new insertTabletsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp557.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp557.__isset.success = this.__isset.success;
-        return tmp557;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12204,10 +13001,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertTablets_result(");
-        int tmp558 = 0;
+        int tmp488 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp558++) { sb.Append(", "); }
+          if(0 < tmp488++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -12245,17 +13042,6 @@
       {
       }
 
-      public insertRecordsArgs DeepCopy()
-      {
-        var tmp559 = new insertRecordsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp559.Req = (TSInsertRecordsReq)this.Req.DeepCopy();
-        }
-        tmp559.__isset.req = this.__isset.req;
-        return tmp559;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12347,10 +13133,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertRecords_args(");
-        int tmp560 = 0;
+        int tmp489 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp560++) { sb.Append(", "); }
+          if(0 < tmp489++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -12388,17 +13174,6 @@
       {
       }
 
-      public insertRecordsResult DeepCopy()
-      {
-        var tmp561 = new insertRecordsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp561.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp561.__isset.success = this.__isset.success;
-        return tmp561;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12494,10 +13269,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertRecords_result(");
-        int tmp562 = 0;
+        int tmp490 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp562++) { sb.Append(", "); }
+          if(0 < tmp490++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -12535,17 +13310,6 @@
       {
       }
 
-      public insertRecordsOfOneDeviceArgs DeepCopy()
-      {
-        var tmp563 = new insertRecordsOfOneDeviceArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp563.Req = (TSInsertRecordsOfOneDeviceReq)this.Req.DeepCopy();
-        }
-        tmp563.__isset.req = this.__isset.req;
-        return tmp563;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12637,10 +13401,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertRecordsOfOneDevice_args(");
-        int tmp564 = 0;
+        int tmp491 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp564++) { sb.Append(", "); }
+          if(0 < tmp491++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -12678,17 +13442,6 @@
       {
       }
 
-      public insertRecordsOfOneDeviceResult DeepCopy()
-      {
-        var tmp565 = new insertRecordsOfOneDeviceResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp565.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp565.__isset.success = this.__isset.success;
-        return tmp565;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12784,10 +13537,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertRecordsOfOneDevice_result(");
-        int tmp566 = 0;
+        int tmp492 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp566++) { sb.Append(", "); }
+          if(0 < tmp492++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -12825,17 +13578,6 @@
       {
       }
 
-      public insertStringRecordsOfOneDeviceArgs DeepCopy()
-      {
-        var tmp567 = new insertStringRecordsOfOneDeviceArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp567.Req = (TSInsertStringRecordsOfOneDeviceReq)this.Req.DeepCopy();
-        }
-        tmp567.__isset.req = this.__isset.req;
-        return tmp567;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -12927,10 +13669,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertStringRecordsOfOneDevice_args(");
-        int tmp568 = 0;
+        int tmp493 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp568++) { sb.Append(", "); }
+          if(0 < tmp493++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -12968,17 +13710,6 @@
       {
       }
 
-      public insertStringRecordsOfOneDeviceResult DeepCopy()
-      {
-        var tmp569 = new insertStringRecordsOfOneDeviceResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp569.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp569.__isset.success = this.__isset.success;
-        return tmp569;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13074,10 +13805,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertStringRecordsOfOneDevice_result(");
-        int tmp570 = 0;
+        int tmp494 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp570++) { sb.Append(", "); }
+          if(0 < tmp494++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -13115,17 +13846,6 @@
       {
       }
 
-      public insertStringRecordsArgs DeepCopy()
-      {
-        var tmp571 = new insertStringRecordsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp571.Req = (TSInsertStringRecordsReq)this.Req.DeepCopy();
-        }
-        tmp571.__isset.req = this.__isset.req;
-        return tmp571;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13217,10 +13937,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertStringRecords_args(");
-        int tmp572 = 0;
+        int tmp495 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp572++) { sb.Append(", "); }
+          if(0 < tmp495++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -13258,17 +13978,6 @@
       {
       }
 
-      public insertStringRecordsResult DeepCopy()
-      {
-        var tmp573 = new insertStringRecordsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp573.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp573.__isset.success = this.__isset.success;
-        return tmp573;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13364,10 +14073,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("insertStringRecords_result(");
-        int tmp574 = 0;
+        int tmp496 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp574++) { sb.Append(", "); }
+          if(0 < tmp496++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -13405,17 +14114,6 @@
       {
       }
 
-      public testInsertTabletArgs DeepCopy()
-      {
-        var tmp575 = new testInsertTabletArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp575.Req = (TSInsertTabletReq)this.Req.DeepCopy();
-        }
-        tmp575.__isset.req = this.__isset.req;
-        return tmp575;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13507,10 +14205,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertTablet_args(");
-        int tmp576 = 0;
+        int tmp497 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp576++) { sb.Append(", "); }
+          if(0 < tmp497++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -13548,17 +14246,6 @@
       {
       }
 
-      public testInsertTabletResult DeepCopy()
-      {
-        var tmp577 = new testInsertTabletResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp577.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp577.__isset.success = this.__isset.success;
-        return tmp577;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13654,10 +14341,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertTablet_result(");
-        int tmp578 = 0;
+        int tmp498 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp578++) { sb.Append(", "); }
+          if(0 < tmp498++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -13695,17 +14382,6 @@
       {
       }
 
-      public testInsertTabletsArgs DeepCopy()
-      {
-        var tmp579 = new testInsertTabletsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp579.Req = (TSInsertTabletsReq)this.Req.DeepCopy();
-        }
-        tmp579.__isset.req = this.__isset.req;
-        return tmp579;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13797,10 +14473,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertTablets_args(");
-        int tmp580 = 0;
+        int tmp499 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp580++) { sb.Append(", "); }
+          if(0 < tmp499++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -13838,17 +14514,6 @@
       {
       }
 
-      public testInsertTabletsResult DeepCopy()
-      {
-        var tmp581 = new testInsertTabletsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp581.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp581.__isset.success = this.__isset.success;
-        return tmp581;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -13944,10 +14609,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertTablets_result(");
-        int tmp582 = 0;
+        int tmp500 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp582++) { sb.Append(", "); }
+          if(0 < tmp500++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -13985,17 +14650,6 @@
       {
       }
 
-      public testInsertRecordArgs DeepCopy()
-      {
-        var tmp583 = new testInsertRecordArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp583.Req = (TSInsertRecordReq)this.Req.DeepCopy();
-        }
-        tmp583.__isset.req = this.__isset.req;
-        return tmp583;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14087,10 +14741,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertRecord_args(");
-        int tmp584 = 0;
+        int tmp501 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp584++) { sb.Append(", "); }
+          if(0 < tmp501++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -14128,17 +14782,6 @@
       {
       }
 
-      public testInsertRecordResult DeepCopy()
-      {
-        var tmp585 = new testInsertRecordResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp585.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp585.__isset.success = this.__isset.success;
-        return tmp585;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14234,10 +14877,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertRecord_result(");
-        int tmp586 = 0;
+        int tmp502 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp586++) { sb.Append(", "); }
+          if(0 < tmp502++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -14275,17 +14918,6 @@
       {
       }
 
-      public testInsertStringRecordArgs DeepCopy()
-      {
-        var tmp587 = new testInsertStringRecordArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp587.Req = (TSInsertStringRecordReq)this.Req.DeepCopy();
-        }
-        tmp587.__isset.req = this.__isset.req;
-        return tmp587;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14377,10 +15009,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertStringRecord_args(");
-        int tmp588 = 0;
+        int tmp503 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp588++) { sb.Append(", "); }
+          if(0 < tmp503++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -14418,17 +15050,6 @@
       {
       }
 
-      public testInsertStringRecordResult DeepCopy()
-      {
-        var tmp589 = new testInsertStringRecordResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp589.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp589.__isset.success = this.__isset.success;
-        return tmp589;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14524,10 +15145,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertStringRecord_result(");
-        int tmp590 = 0;
+        int tmp504 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp590++) { sb.Append(", "); }
+          if(0 < tmp504++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -14565,17 +15186,6 @@
       {
       }
 
-      public testInsertRecordsArgs DeepCopy()
-      {
-        var tmp591 = new testInsertRecordsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp591.Req = (TSInsertRecordsReq)this.Req.DeepCopy();
-        }
-        tmp591.__isset.req = this.__isset.req;
-        return tmp591;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14667,10 +15277,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertRecords_args(");
-        int tmp592 = 0;
+        int tmp505 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp592++) { sb.Append(", "); }
+          if(0 < tmp505++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -14708,17 +15318,6 @@
       {
       }
 
-      public testInsertRecordsResult DeepCopy()
-      {
-        var tmp593 = new testInsertRecordsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp593.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp593.__isset.success = this.__isset.success;
-        return tmp593;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14814,10 +15413,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertRecords_result(");
-        int tmp594 = 0;
+        int tmp506 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp594++) { sb.Append(", "); }
+          if(0 < tmp506++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -14855,17 +15454,6 @@
       {
       }
 
-      public testInsertRecordsOfOneDeviceArgs DeepCopy()
-      {
-        var tmp595 = new testInsertRecordsOfOneDeviceArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp595.Req = (TSInsertRecordsOfOneDeviceReq)this.Req.DeepCopy();
-        }
-        tmp595.__isset.req = this.__isset.req;
-        return tmp595;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -14957,10 +15545,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertRecordsOfOneDevice_args(");
-        int tmp596 = 0;
+        int tmp507 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp596++) { sb.Append(", "); }
+          if(0 < tmp507++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -14998,17 +15586,6 @@
       {
       }
 
-      public testInsertRecordsOfOneDeviceResult DeepCopy()
-      {
-        var tmp597 = new testInsertRecordsOfOneDeviceResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp597.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp597.__isset.success = this.__isset.success;
-        return tmp597;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15104,10 +15681,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertRecordsOfOneDevice_result(");
-        int tmp598 = 0;
+        int tmp508 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp598++) { sb.Append(", "); }
+          if(0 < tmp508++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -15145,17 +15722,6 @@
       {
       }
 
-      public testInsertStringRecordsArgs DeepCopy()
-      {
-        var tmp599 = new testInsertStringRecordsArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp599.Req = (TSInsertStringRecordsReq)this.Req.DeepCopy();
-        }
-        tmp599.__isset.req = this.__isset.req;
-        return tmp599;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15247,10 +15813,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertStringRecords_args(");
-        int tmp600 = 0;
+        int tmp509 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp600++) { sb.Append(", "); }
+          if(0 < tmp509++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -15288,17 +15854,6 @@
       {
       }
 
-      public testInsertStringRecordsResult DeepCopy()
-      {
-        var tmp601 = new testInsertStringRecordsResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp601.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp601.__isset.success = this.__isset.success;
-        return tmp601;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15394,10 +15949,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("testInsertStringRecords_result(");
-        int tmp602 = 0;
+        int tmp510 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp602++) { sb.Append(", "); }
+          if(0 < tmp510++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -15435,17 +15990,6 @@
       {
       }
 
-      public deleteDataArgs DeepCopy()
-      {
-        var tmp603 = new deleteDataArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp603.Req = (TSDeleteDataReq)this.Req.DeepCopy();
-        }
-        tmp603.__isset.req = this.__isset.req;
-        return tmp603;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15537,10 +16081,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("deleteData_args(");
-        int tmp604 = 0;
+        int tmp511 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp604++) { sb.Append(", "); }
+          if(0 < tmp511++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -15578,17 +16122,6 @@
       {
       }
 
-      public deleteDataResult DeepCopy()
-      {
-        var tmp605 = new deleteDataResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp605.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp605.__isset.success = this.__isset.success;
-        return tmp605;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15684,10 +16217,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("deleteData_result(");
-        int tmp606 = 0;
+        int tmp512 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp606++) { sb.Append(", "); }
+          if(0 < tmp512++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -15725,17 +16258,6 @@
       {
       }
 
-      public executeRawDataQueryArgs DeepCopy()
-      {
-        var tmp607 = new executeRawDataQueryArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp607.Req = (TSRawDataQueryReq)this.Req.DeepCopy();
-        }
-        tmp607.__isset.req = this.__isset.req;
-        return tmp607;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15827,10 +16349,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeRawDataQuery_args(");
-        int tmp608 = 0;
+        int tmp513 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp608++) { sb.Append(", "); }
+          if(0 < tmp513++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -15868,17 +16390,6 @@
       {
       }
 
-      public executeRawDataQueryResult DeepCopy()
-      {
-        var tmp609 = new executeRawDataQueryResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp609.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp609.__isset.success = this.__isset.success;
-        return tmp609;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -15974,10 +16485,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeRawDataQuery_result(");
-        int tmp610 = 0;
+        int tmp514 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp610++) { sb.Append(", "); }
+          if(0 < tmp514++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -16015,17 +16526,6 @@
       {
       }
 
-      public executeLastDataQueryArgs DeepCopy()
-      {
-        var tmp611 = new executeLastDataQueryArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp611.Req = (TSLastDataQueryReq)this.Req.DeepCopy();
-        }
-        tmp611.__isset.req = this.__isset.req;
-        return tmp611;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16117,10 +16617,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeLastDataQuery_args(");
-        int tmp612 = 0;
+        int tmp515 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp612++) { sb.Append(", "); }
+          if(0 < tmp515++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -16158,17 +16658,6 @@
       {
       }
 
-      public executeLastDataQueryResult DeepCopy()
-      {
-        var tmp613 = new executeLastDataQueryResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp613.Success = (TSExecuteStatementResp)this.Success.DeepCopy();
-        }
-        tmp613.__isset.success = this.__isset.success;
-        return tmp613;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16264,10 +16753,278 @@
       public override string ToString()
       {
         var sb = new StringBuilder("executeLastDataQuery_result(");
-        int tmp614 = 0;
+        int tmp516 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp614++) { sb.Append(", "); }
+          if(0 < tmp516++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeAggregationQueryArgs : TBase
+    {
+      private TSAggregationQueryReq _req;
+
+      public TSAggregationQueryReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public executeAggregationQueryArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TSAggregationQueryReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeAggregationQuery_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = 1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeAggregationQueryArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeAggregationQuery_args(");
+        int tmp517 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp517++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class executeAggregationQueryResult : TBase
+    {
+      private TSExecuteStatementResp _success;
+
+      public TSExecuteStatementResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public executeAggregationQueryResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TSExecuteStatementResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("executeAggregationQuery_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is executeAggregationQueryResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("executeAggregationQuery_result(");
+        int tmp518 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp518++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -16305,17 +17062,6 @@
       {
       }
 
-      public requestStatementIdArgs DeepCopy()
-      {
-        var tmp615 = new requestStatementIdArgs();
-        if(__isset.sessionId)
-        {
-          tmp615.SessionId = this.SessionId;
-        }
-        tmp615.__isset.sessionId = this.__isset.sessionId;
-        return tmp615;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16406,10 +17152,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("requestStatementId_args(");
-        int tmp616 = 0;
+        int tmp519 = 0;
         if(__isset.sessionId)
         {
-          if(0 < tmp616++) { sb.Append(", "); }
+          if(0 < tmp519++) { sb.Append(", "); }
           sb.Append("SessionId: ");
           SessionId.ToString(sb);
         }
@@ -16447,17 +17193,6 @@
       {
       }
 
-      public requestStatementIdResult DeepCopy()
-      {
-        var tmp617 = new requestStatementIdResult();
-        if(__isset.success)
-        {
-          tmp617.Success = this.Success;
-        }
-        tmp617.__isset.success = this.__isset.success;
-        return tmp617;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16549,10 +17284,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("requestStatementId_result(");
-        int tmp618 = 0;
+        int tmp520 = 0;
         if(__isset.success)
         {
-          if(0 < tmp618++) { sb.Append(", "); }
+          if(0 < tmp520++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -16590,17 +17325,6 @@
       {
       }
 
-      public createSchemaTemplateArgs DeepCopy()
-      {
-        var tmp619 = new createSchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp619.Req = (TSCreateSchemaTemplateReq)this.Req.DeepCopy();
-        }
-        tmp619.__isset.req = this.__isset.req;
-        return tmp619;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16692,10 +17416,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createSchemaTemplate_args(");
-        int tmp620 = 0;
+        int tmp521 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp620++) { sb.Append(", "); }
+          if(0 < tmp521++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -16733,17 +17457,6 @@
       {
       }
 
-      public createSchemaTemplateResult DeepCopy()
-      {
-        var tmp621 = new createSchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp621.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp621.__isset.success = this.__isset.success;
-        return tmp621;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16839,10 +17552,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("createSchemaTemplate_result(");
-        int tmp622 = 0;
+        int tmp522 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp622++) { sb.Append(", "); }
+          if(0 < tmp522++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -16880,17 +17593,6 @@
       {
       }
 
-      public appendSchemaTemplateArgs DeepCopy()
-      {
-        var tmp623 = new appendSchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp623.Req = (TSAppendSchemaTemplateReq)this.Req.DeepCopy();
-        }
-        tmp623.__isset.req = this.__isset.req;
-        return tmp623;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -16982,10 +17684,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("appendSchemaTemplate_args(");
-        int tmp624 = 0;
+        int tmp523 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp624++) { sb.Append(", "); }
+          if(0 < tmp523++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -17023,17 +17725,6 @@
       {
       }
 
-      public appendSchemaTemplateResult DeepCopy()
-      {
-        var tmp625 = new appendSchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp625.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp625.__isset.success = this.__isset.success;
-        return tmp625;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17129,10 +17820,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("appendSchemaTemplate_result(");
-        int tmp626 = 0;
+        int tmp524 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp626++) { sb.Append(", "); }
+          if(0 < tmp524++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -17170,17 +17861,6 @@
       {
       }
 
-      public pruneSchemaTemplateArgs DeepCopy()
-      {
-        var tmp627 = new pruneSchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp627.Req = (TSPruneSchemaTemplateReq)this.Req.DeepCopy();
-        }
-        tmp627.__isset.req = this.__isset.req;
-        return tmp627;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17272,10 +17952,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("pruneSchemaTemplate_args(");
-        int tmp628 = 0;
+        int tmp525 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp628++) { sb.Append(", "); }
+          if(0 < tmp525++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -17313,17 +17993,6 @@
       {
       }
 
-      public pruneSchemaTemplateResult DeepCopy()
-      {
-        var tmp629 = new pruneSchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp629.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp629.__isset.success = this.__isset.success;
-        return tmp629;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17419,10 +18088,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("pruneSchemaTemplate_result(");
-        int tmp630 = 0;
+        int tmp526 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp630++) { sb.Append(", "); }
+          if(0 < tmp526++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -17460,17 +18129,6 @@
       {
       }
 
-      public querySchemaTemplateArgs DeepCopy()
-      {
-        var tmp631 = new querySchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp631.Req = (TSQueryTemplateReq)this.Req.DeepCopy();
-        }
-        tmp631.__isset.req = this.__isset.req;
-        return tmp631;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17562,10 +18220,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("querySchemaTemplate_args(");
-        int tmp632 = 0;
+        int tmp527 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp632++) { sb.Append(", "); }
+          if(0 < tmp527++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -17603,17 +18261,6 @@
       {
       }
 
-      public querySchemaTemplateResult DeepCopy()
-      {
-        var tmp633 = new querySchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp633.Success = (TSQueryTemplateResp)this.Success.DeepCopy();
-        }
-        tmp633.__isset.success = this.__isset.success;
-        return tmp633;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17709,10 +18356,492 @@
       public override string ToString()
       {
         var sb = new StringBuilder("querySchemaTemplate_result(");
-        int tmp634 = 0;
+        int tmp528 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp634++) { sb.Append(", "); }
+          if(0 < tmp528++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class showConfigurationTemplateArgs : TBase
+    {
+
+      public showConfigurationTemplateArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("showConfigurationTemplate_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is showConfigurationTemplateArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return true;
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("showConfigurationTemplate_args(");
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class showConfigurationTemplateResult : TBase
+    {
+      private TShowConfigurationTemplateResp _success;
+
+      public TShowConfigurationTemplateResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public showConfigurationTemplateResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TShowConfigurationTemplateResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("showConfigurationTemplate_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is showConfigurationTemplateResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("showConfigurationTemplate_result(");
+        int tmp530 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp530++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class showConfigurationArgs : TBase
+    {
+      private int _nodeId;
+
+      public int NodeId
+      {
+        get
+        {
+          return _nodeId;
+        }
+        set
+        {
+          __isset.nodeId = true;
+          this._nodeId = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool nodeId;
+      }
+
+      public showConfigurationArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 1:
+                if (field.Type == TType.I32)
+                {
+                  NodeId = await iprot.ReadI32Async(cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("showConfiguration_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if(__isset.nodeId)
+          {
+            field.Name = "nodeId";
+            field.Type = TType.I32;
+            field.ID = 1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await oprot.WriteI32Async(NodeId, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is showConfigurationArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.nodeId == other.__isset.nodeId) && ((!__isset.nodeId) || (System.Object.Equals(NodeId, other.NodeId))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if(__isset.nodeId)
+          {
+            hashcode = (hashcode * 397) + NodeId.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("showConfiguration_args(");
+        int tmp531 = 0;
+        if(__isset.nodeId)
+        {
+          if(0 < tmp531++) { sb.Append(", "); }
+          sb.Append("NodeId: ");
+          NodeId.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class showConfigurationResult : TBase
+    {
+      private TShowConfigurationResp _success;
+
+      public TShowConfigurationResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public showConfigurationResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TShowConfigurationResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("showConfiguration_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is showConfigurationResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("showConfiguration_result(");
+        int tmp532 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp532++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -17750,17 +18879,6 @@
       {
       }
 
-      public setSchemaTemplateArgs DeepCopy()
-      {
-        var tmp635 = new setSchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp635.Req = (TSSetSchemaTemplateReq)this.Req.DeepCopy();
-        }
-        tmp635.__isset.req = this.__isset.req;
-        return tmp635;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17852,10 +18970,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("setSchemaTemplate_args(");
-        int tmp636 = 0;
+        int tmp533 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp636++) { sb.Append(", "); }
+          if(0 < tmp533++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -17893,17 +19011,6 @@
       {
       }
 
-      public setSchemaTemplateResult DeepCopy()
-      {
-        var tmp637 = new setSchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp637.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp637.__isset.success = this.__isset.success;
-        return tmp637;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -17999,10 +19106,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("setSchemaTemplate_result(");
-        int tmp638 = 0;
+        int tmp534 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp638++) { sb.Append(", "); }
+          if(0 < tmp534++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -18040,17 +19147,6 @@
       {
       }
 
-      public unsetSchemaTemplateArgs DeepCopy()
-      {
-        var tmp639 = new unsetSchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp639.Req = (TSUnsetSchemaTemplateReq)this.Req.DeepCopy();
-        }
-        tmp639.__isset.req = this.__isset.req;
-        return tmp639;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -18142,10 +19238,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("unsetSchemaTemplate_args(");
-        int tmp640 = 0;
+        int tmp535 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp640++) { sb.Append(", "); }
+          if(0 < tmp535++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -18183,17 +19279,6 @@
       {
       }
 
-      public unsetSchemaTemplateResult DeepCopy()
-      {
-        var tmp641 = new unsetSchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp641.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp641.__isset.success = this.__isset.success;
-        return tmp641;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -18289,10 +19374,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("unsetSchemaTemplate_result(");
-        int tmp642 = 0;
+        int tmp536 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp642++) { sb.Append(", "); }
+          if(0 < tmp536++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -18330,17 +19415,6 @@
       {
       }
 
-      public dropSchemaTemplateArgs DeepCopy()
-      {
-        var tmp643 = new dropSchemaTemplateArgs();
-        if((Req != null) && __isset.req)
-        {
-          tmp643.Req = (TSDropSchemaTemplateReq)this.Req.DeepCopy();
-        }
-        tmp643.__isset.req = this.__isset.req;
-        return tmp643;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -18432,10 +19506,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("dropSchemaTemplate_args(");
-        int tmp644 = 0;
+        int tmp537 = 0;
         if((Req != null) && __isset.req)
         {
-          if(0 < tmp644++) { sb.Append(", "); }
+          if(0 < tmp537++) { sb.Append(", "); }
           sb.Append("Req: ");
           Req.ToString(sb);
         }
@@ -18473,17 +19547,6 @@
       {
       }
 
-      public dropSchemaTemplateResult DeepCopy()
-      {
-        var tmp645 = new dropSchemaTemplateResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp645.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp645.__isset.success = this.__isset.success;
-        return tmp645;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -18579,10 +19642,278 @@
       public override string ToString()
       {
         var sb = new StringBuilder("dropSchemaTemplate_result(");
-        int tmp646 = 0;
+        int tmp538 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp646++) { sb.Append(", "); }
+          if(0 < tmp538++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class createTimeseriesUsingSchemaTemplateArgs : TBase
+    {
+      private TCreateTimeseriesUsingSchemaTemplateReq _req;
+
+      public TCreateTimeseriesUsingSchemaTemplateReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public createTimeseriesUsingSchemaTemplateArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TCreateTimeseriesUsingSchemaTemplateReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("createTimeseriesUsingSchemaTemplate_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = 1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is createTimeseriesUsingSchemaTemplateArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("createTimeseriesUsingSchemaTemplate_args(");
+        int tmp539 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp539++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class createTimeseriesUsingSchemaTemplateResult : TBase
+    {
+      private TSStatus _success;
+
+      public TSStatus Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public createTimeseriesUsingSchemaTemplateResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TSStatus();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("createTimeseriesUsingSchemaTemplate_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is createTimeseriesUsingSchemaTemplateResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("createTimeseriesUsingSchemaTemplate_result(");
+        int tmp540 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp540++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -18620,17 +19951,6 @@
       {
       }
 
-      public handshakeArgs DeepCopy()
-      {
-        var tmp647 = new handshakeArgs();
-        if((Info != null) && __isset.info)
-        {
-          tmp647.Info = (TSyncIdentityInfo)this.Info.DeepCopy();
-        }
-        tmp647.__isset.info = this.__isset.info;
-        return tmp647;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -18722,10 +20042,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("handshake_args(");
-        int tmp648 = 0;
+        int tmp541 = 0;
         if((Info != null) && __isset.info)
         {
-          if(0 < tmp648++) { sb.Append(", "); }
+          if(0 < tmp541++) { sb.Append(", "); }
           sb.Append("Info: ");
           Info.ToString(sb);
         }
@@ -18763,17 +20083,6 @@
       {
       }
 
-      public handshakeResult DeepCopy()
-      {
-        var tmp649 = new handshakeResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp649.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp649.__isset.success = this.__isset.success;
-        return tmp649;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -18869,10 +20178,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("handshake_result(");
-        int tmp650 = 0;
+        int tmp542 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp650++) { sb.Append(", "); }
+          if(0 < tmp542++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -18910,17 +20219,6 @@
       {
       }
 
-      public sendPipeDataArgs DeepCopy()
-      {
-        var tmp651 = new sendPipeDataArgs();
-        if((Buff != null) && __isset.buff)
-        {
-          tmp651.Buff = this.Buff.ToArray();
-        }
-        tmp651.__isset.buff = this.__isset.buff;
-        return tmp651;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19011,10 +20309,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("sendPipeData_args(");
-        int tmp652 = 0;
+        int tmp543 = 0;
         if((Buff != null) && __isset.buff)
         {
-          if(0 < tmp652++) { sb.Append(", "); }
+          if(0 < tmp543++) { sb.Append(", "); }
           sb.Append("Buff: ");
           Buff.ToString(sb);
         }
@@ -19052,17 +20350,6 @@
       {
       }
 
-      public sendPipeDataResult DeepCopy()
-      {
-        var tmp653 = new sendPipeDataResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp653.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp653.__isset.success = this.__isset.success;
-        return tmp653;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19158,10 +20445,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("sendPipeData_result(");
-        int tmp654 = 0;
+        int tmp544 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp654++) { sb.Append(", "); }
+          if(0 < tmp544++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -19214,22 +20501,6 @@
       {
       }
 
-      public sendFileArgs DeepCopy()
-      {
-        var tmp655 = new sendFileArgs();
-        if((MetaInfo != null) && __isset.metaInfo)
-        {
-          tmp655.MetaInfo = (TSyncTransportMetaInfo)this.MetaInfo.DeepCopy();
-        }
-        tmp655.__isset.metaInfo = this.__isset.metaInfo;
-        if((Buff != null) && __isset.buff)
-        {
-          tmp655.Buff = this.Buff.ToArray();
-        }
-        tmp655.__isset.buff = this.__isset.buff;
-        return tmp655;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19345,16 +20616,16 @@
       public override string ToString()
       {
         var sb = new StringBuilder("sendFile_args(");
-        int tmp656 = 0;
+        int tmp545 = 0;
         if((MetaInfo != null) && __isset.metaInfo)
         {
-          if(0 < tmp656++) { sb.Append(", "); }
+          if(0 < tmp545++) { sb.Append(", "); }
           sb.Append("MetaInfo: ");
           MetaInfo.ToString(sb);
         }
         if((Buff != null) && __isset.buff)
         {
-          if(0 < tmp656++) { sb.Append(", "); }
+          if(0 < tmp545++) { sb.Append(", "); }
           sb.Append("Buff: ");
           Buff.ToString(sb);
         }
@@ -19392,17 +20663,6 @@
       {
       }
 
-      public sendFileResult DeepCopy()
-      {
-        var tmp657 = new sendFileResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp657.Success = (TSStatus)this.Success.DeepCopy();
-        }
-        tmp657.__isset.success = this.__isset.success;
-        return tmp657;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19498,10 +20758,546 @@
       public override string ToString()
       {
         var sb = new StringBuilder("sendFile_result(");
-        int tmp658 = 0;
+        int tmp546 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp658++) { sb.Append(", "); }
+          if(0 < tmp546++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class pipeTransferArgs : TBase
+    {
+      private TPipeTransferReq _req;
+
+      public TPipeTransferReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public pipeTransferArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case -1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TPipeTransferReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("pipeTransfer_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = -1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is pipeTransferArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("pipeTransfer_args(");
+        int tmp547 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp547++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class pipeTransferResult : TBase
+    {
+      private TPipeTransferResp _success;
+
+      public TPipeTransferResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public pipeTransferResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TPipeTransferResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("pipeTransfer_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is pipeTransferResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("pipeTransfer_result(");
+        int tmp548 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp548++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class pipeSubscribeArgs : TBase
+    {
+      private TPipeSubscribeReq _req;
+
+      public TPipeSubscribeReq Req
+      {
+        get
+        {
+          return _req;
+        }
+        set
+        {
+          __isset.req = true;
+          this._req = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool req;
+      }
+
+      public pipeSubscribeArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case -1:
+                if (field.Type == TType.Struct)
+                {
+                  Req = new TPipeSubscribeReq();
+                  await Req.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("pipeSubscribe_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+          if((Req != null) && __isset.req)
+          {
+            field.Name = "req";
+            field.Type = TType.Struct;
+            field.ID = -1;
+            await oprot.WriteFieldBeginAsync(field, cancellationToken);
+            await Req.WriteAsync(oprot, cancellationToken);
+            await oprot.WriteFieldEndAsync(cancellationToken);
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is pipeSubscribeArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.req == other.__isset.req) && ((!__isset.req) || (System.Object.Equals(Req, other.Req))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Req != null) && __isset.req)
+          {
+            hashcode = (hashcode * 397) + Req.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("pipeSubscribe_args(");
+        int tmp549 = 0;
+        if((Req != null) && __isset.req)
+        {
+          if(0 < tmp549++) { sb.Append(", "); }
+          sb.Append("Req: ");
+          Req.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class pipeSubscribeResult : TBase
+    {
+      private TPipeSubscribeResp _success;
+
+      public TPipeSubscribeResp Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public pipeSubscribeResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TPipeSubscribeResp();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("pipeSubscribe_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is pipeSubscribeResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("pipeSubscribe_result(");
+        int tmp550 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp550++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -19518,12 +21314,6 @@
       {
       }
 
-      public getBackupConfigurationArgs DeepCopy()
-      {
-        var tmp659 = new getBackupConfigurationArgs();
-        return tmp659;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19624,17 +21414,6 @@
       {
       }
 
-      public getBackupConfigurationResult DeepCopy()
-      {
-        var tmp661 = new getBackupConfigurationResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp661.Success = (TSBackupConfigurationResp)this.Success.DeepCopy();
-        }
-        tmp661.__isset.success = this.__isset.success;
-        return tmp661;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19730,10 +21509,10 @@
       public override string ToString()
       {
         var sb = new StringBuilder("getBackupConfiguration_result(");
-        int tmp662 = 0;
+        int tmp552 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp662++) { sb.Append(", "); }
+          if(0 < tmp552++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
@@ -19750,12 +21529,6 @@
       {
       }
 
-      public fetchAllConnectionsInfoArgs DeepCopy()
-      {
-        var tmp663 = new fetchAllConnectionsInfoArgs();
-        return tmp663;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19856,17 +21629,6 @@
       {
       }
 
-      public fetchAllConnectionsInfoResult DeepCopy()
-      {
-        var tmp665 = new fetchAllConnectionsInfoResult();
-        if((Success != null) && __isset.success)
-        {
-          tmp665.Success = (TSConnectionInfoResp)this.Success.DeepCopy();
-        }
-        tmp665.__isset.success = this.__isset.success;
-        return tmp665;
-      }
-
       public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
       {
         iprot.IncrementRecursionDepth();
@@ -19962,10 +21724,225 @@
       public override string ToString()
       {
         var sb = new StringBuilder("fetchAllConnectionsInfo_result(");
-        int tmp666 = 0;
+        int tmp554 = 0;
         if((Success != null) && __isset.success)
         {
-          if(0 < tmp666++) { sb.Append(", "); }
+          if(0 < tmp554++) { sb.Append(", "); }
+          sb.Append("Success: ");
+          Success.ToString(sb);
+        }
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class testConnectionEmptyRPCArgs : TBase
+    {
+
+      public testConnectionEmptyRPCArgs()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("testConnectionEmptyRPC_args");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is testConnectionEmptyRPCArgs other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return true;
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("testConnectionEmptyRPC_args(");
+        sb.Append(')');
+        return sb.ToString();
+      }
+    }
+
+
+    public partial class testConnectionEmptyRPCResult : TBase
+    {
+      private TSStatus _success;
+
+      public TSStatus Success
+      {
+        get
+        {
+          return _success;
+        }
+        set
+        {
+          __isset.success = true;
+          this._success = value;
+        }
+      }
+
+
+      public Isset __isset;
+      public struct Isset
+      {
+        public bool success;
+      }
+
+      public testConnectionEmptyRPCResult()
+      {
+      }
+
+      public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+      {
+        iprot.IncrementRecursionDepth();
+        try
+        {
+          TField field;
+          await iprot.ReadStructBeginAsync(cancellationToken);
+          while (true)
+          {
+            field = await iprot.ReadFieldBeginAsync(cancellationToken);
+            if (field.Type == TType.Stop)
+            {
+              break;
+            }
+
+            switch (field.ID)
+            {
+              case 0:
+                if (field.Type == TType.Struct)
+                {
+                  Success = new TSStatus();
+                  await Success.ReadAsync(iprot, cancellationToken);
+                }
+                else
+                {
+                  await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                }
+                break;
+              default: 
+                await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+                break;
+            }
+
+            await iprot.ReadFieldEndAsync(cancellationToken);
+          }
+
+          await iprot.ReadStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          iprot.DecrementRecursionDepth();
+        }
+      }
+
+      public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+      {
+        oprot.IncrementRecursionDepth();
+        try
+        {
+          var struc = new TStruct("testConnectionEmptyRPC_result");
+          await oprot.WriteStructBeginAsync(struc, cancellationToken);
+          var field = new TField();
+
+          if(this.__isset.success)
+          {
+            if (Success != null)
+            {
+              field.Name = "Success";
+              field.Type = TType.Struct;
+              field.ID = 0;
+              await oprot.WriteFieldBeginAsync(field, cancellationToken);
+              await Success.WriteAsync(oprot, cancellationToken);
+              await oprot.WriteFieldEndAsync(cancellationToken);
+            }
+          }
+          await oprot.WriteFieldStopAsync(cancellationToken);
+          await oprot.WriteStructEndAsync(cancellationToken);
+        }
+        finally
+        {
+          oprot.DecrementRecursionDepth();
+        }
+      }
+
+      public override bool Equals(object that)
+      {
+        if (!(that is testConnectionEmptyRPCResult other)) return false;
+        if (ReferenceEquals(this, other)) return true;
+        return ((__isset.success == other.__isset.success) && ((!__isset.success) || (System.Object.Equals(Success, other.Success))));
+      }
+
+      public override int GetHashCode() {
+        int hashcode = 157;
+        unchecked {
+          if((Success != null) && __isset.success)
+          {
+            hashcode = (hashcode * 397) + Success.GetHashCode();
+          }
+        }
+        return hashcode;
+      }
+
+      public override string ToString()
+      {
+        var sb = new StringBuilder("testConnectionEmptyRPC_result(");
+        int tmp556 = 0;
+        if((Success != null) && __isset.success)
+        {
+          if(0 < tmp556++) { sb.Append(", "); }
           sb.Append("Success: ");
           Success.ToString(sb);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/ServerProperties.cs b/src/Apache.IoTDB/Rpc/Generated/ServerProperties.cs
index 30fc408..f6d9f2f 100644
--- a/src/Apache.IoTDB/Rpc/Generated/ServerProperties.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/ServerProperties.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -32,13 +32,10 @@
 public partial class ServerProperties : TBase
 {
   private int _maxConcurrentClientNum;
-  private string _watermarkSecretKey;
-  private string _watermarkBitString;
-  private int _watermarkParamMarkRate;
-  private int _watermarkParamMaxRightBit;
   private int _thriftMaxFrameSize;
   private bool _isReadOnly;
   private string _buildInfo;
+  private string _logo;
 
   public string Version { get; set; }
 
@@ -59,58 +56,6 @@
     }
   }
 
-  public string WatermarkSecretKey
-  {
-    get
-    {
-      return _watermarkSecretKey;
-    }
-    set
-    {
-      __isset.watermarkSecretKey = true;
-      this._watermarkSecretKey = value;
-    }
-  }
-
-  public string WatermarkBitString
-  {
-    get
-    {
-      return _watermarkBitString;
-    }
-    set
-    {
-      __isset.watermarkBitString = true;
-      this._watermarkBitString = value;
-    }
-  }
-
-  public int WatermarkParamMarkRate
-  {
-    get
-    {
-      return _watermarkParamMarkRate;
-    }
-    set
-    {
-      __isset.watermarkParamMarkRate = true;
-      this._watermarkParamMarkRate = value;
-    }
-  }
-
-  public int WatermarkParamMaxRightBit
-  {
-    get
-    {
-      return _watermarkParamMaxRightBit;
-    }
-    set
-    {
-      __isset.watermarkParamMaxRightBit = true;
-      this._watermarkParamMaxRightBit = value;
-    }
-  }
-
   public int ThriftMaxFrameSize
   {
     get
@@ -150,18 +95,28 @@
     }
   }
 
+  public string Logo
+  {
+    get
+    {
+      return _logo;
+    }
+    set
+    {
+      __isset.logo = true;
+      this._logo = value;
+    }
+  }
+
 
   public Isset __isset;
   public struct Isset
   {
     public bool maxConcurrentClientNum;
-    public bool watermarkSecretKey;
-    public bool watermarkBitString;
-    public bool watermarkParamMarkRate;
-    public bool watermarkParamMaxRightBit;
     public bool thriftMaxFrameSize;
     public bool isReadOnly;
     public bool buildInfo;
+    public bool logo;
   }
 
   public ServerProperties()
@@ -175,64 +130,6 @@
     this.TimestampPrecision = timestampPrecision;
   }
 
-  public ServerProperties DeepCopy()
-  {
-    var tmp379 = new ServerProperties();
-    if((Version != null))
-    {
-      tmp379.Version = this.Version;
-    }
-    if((SupportedTimeAggregationOperations != null))
-    {
-      tmp379.SupportedTimeAggregationOperations = this.SupportedTimeAggregationOperations.DeepCopy();
-    }
-    if((TimestampPrecision != null))
-    {
-      tmp379.TimestampPrecision = this.TimestampPrecision;
-    }
-    if(__isset.maxConcurrentClientNum)
-    {
-      tmp379.MaxConcurrentClientNum = this.MaxConcurrentClientNum;
-    }
-    tmp379.__isset.maxConcurrentClientNum = this.__isset.maxConcurrentClientNum;
-    if((WatermarkSecretKey != null) && __isset.watermarkSecretKey)
-    {
-      tmp379.WatermarkSecretKey = this.WatermarkSecretKey;
-    }
-    tmp379.__isset.watermarkSecretKey = this.__isset.watermarkSecretKey;
-    if((WatermarkBitString != null) && __isset.watermarkBitString)
-    {
-      tmp379.WatermarkBitString = this.WatermarkBitString;
-    }
-    tmp379.__isset.watermarkBitString = this.__isset.watermarkBitString;
-    if(__isset.watermarkParamMarkRate)
-    {
-      tmp379.WatermarkParamMarkRate = this.WatermarkParamMarkRate;
-    }
-    tmp379.__isset.watermarkParamMarkRate = this.__isset.watermarkParamMarkRate;
-    if(__isset.watermarkParamMaxRightBit)
-    {
-      tmp379.WatermarkParamMaxRightBit = this.WatermarkParamMaxRightBit;
-    }
-    tmp379.__isset.watermarkParamMaxRightBit = this.__isset.watermarkParamMaxRightBit;
-    if(__isset.thriftMaxFrameSize)
-    {
-      tmp379.ThriftMaxFrameSize = this.ThriftMaxFrameSize;
-    }
-    tmp379.__isset.thriftMaxFrameSize = this.__isset.thriftMaxFrameSize;
-    if(__isset.isReadOnly)
-    {
-      tmp379.IsReadOnly = this.IsReadOnly;
-    }
-    tmp379.__isset.isReadOnly = this.__isset.isReadOnly;
-    if((BuildInfo != null) && __isset.buildInfo)
-    {
-      tmp379.BuildInfo = this.BuildInfo;
-    }
-    tmp379.__isset.buildInfo = this.__isset.buildInfo;
-    return tmp379;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -268,13 +165,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list380 = await iprot.ReadListBeginAsync(cancellationToken);
-                SupportedTimeAggregationOperations = new List<string>(_list380.Count);
-                for(int _i381 = 0; _i381 < _list380.Count; ++_i381)
+                TList _list362 = await iprot.ReadListBeginAsync(cancellationToken);
+                SupportedTimeAggregationOperations = new List<string>(_list362.Count);
+                for(int _i363 = 0; _i363 < _list362.Count; ++_i363)
                 {
-                  string _elem382;
-                  _elem382 = await iprot.ReadStringAsync(cancellationToken);
-                  SupportedTimeAggregationOperations.Add(_elem382);
+                  string _elem364;
+                  _elem364 = await iprot.ReadStringAsync(cancellationToken);
+                  SupportedTimeAggregationOperations.Add(_elem364);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -307,46 +204,6 @@
             }
             break;
           case 5:
-            if (field.Type == TType.String)
-            {
-              WatermarkSecretKey = await iprot.ReadStringAsync(cancellationToken);
-            }
-            else
-            {
-              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
-            }
-            break;
-          case 6:
-            if (field.Type == TType.String)
-            {
-              WatermarkBitString = await iprot.ReadStringAsync(cancellationToken);
-            }
-            else
-            {
-              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
-            }
-            break;
-          case 7:
-            if (field.Type == TType.I32)
-            {
-              WatermarkParamMarkRate = await iprot.ReadI32Async(cancellationToken);
-            }
-            else
-            {
-              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
-            }
-            break;
-          case 8:
-            if (field.Type == TType.I32)
-            {
-              WatermarkParamMaxRightBit = await iprot.ReadI32Async(cancellationToken);
-            }
-            else
-            {
-              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
-            }
-            break;
-          case 9:
             if (field.Type == TType.I32)
             {
               ThriftMaxFrameSize = await iprot.ReadI32Async(cancellationToken);
@@ -356,7 +213,7 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
-          case 10:
+          case 6:
             if (field.Type == TType.Bool)
             {
               IsReadOnly = await iprot.ReadBoolAsync(cancellationToken);
@@ -366,7 +223,7 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
-          case 11:
+          case 7:
             if (field.Type == TType.String)
             {
               BuildInfo = await iprot.ReadStringAsync(cancellationToken);
@@ -376,6 +233,16 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
+          case 8:
+            if (field.Type == TType.String)
+            {
+              Logo = await iprot.ReadStringAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
           default: 
             await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             break;
@@ -429,9 +296,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, SupportedTimeAggregationOperations.Count), cancellationToken);
-          foreach (string _iter383 in SupportedTimeAggregationOperations)
+          foreach (string _iter365 in SupportedTimeAggregationOperations)
           {
-            await oprot.WriteStringAsync(_iter383, cancellationToken);
+            await oprot.WriteStringAsync(_iter365, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -455,47 +322,11 @@
         await oprot.WriteI32Async(MaxConcurrentClientNum, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
       }
-      if((WatermarkSecretKey != null) && __isset.watermarkSecretKey)
-      {
-        field.Name = "watermarkSecretKey";
-        field.Type = TType.String;
-        field.ID = 5;
-        await oprot.WriteFieldBeginAsync(field, cancellationToken);
-        await oprot.WriteStringAsync(WatermarkSecretKey, cancellationToken);
-        await oprot.WriteFieldEndAsync(cancellationToken);
-      }
-      if((WatermarkBitString != null) && __isset.watermarkBitString)
-      {
-        field.Name = "watermarkBitString";
-        field.Type = TType.String;
-        field.ID = 6;
-        await oprot.WriteFieldBeginAsync(field, cancellationToken);
-        await oprot.WriteStringAsync(WatermarkBitString, cancellationToken);
-        await oprot.WriteFieldEndAsync(cancellationToken);
-      }
-      if(__isset.watermarkParamMarkRate)
-      {
-        field.Name = "watermarkParamMarkRate";
-        field.Type = TType.I32;
-        field.ID = 7;
-        await oprot.WriteFieldBeginAsync(field, cancellationToken);
-        await oprot.WriteI32Async(WatermarkParamMarkRate, cancellationToken);
-        await oprot.WriteFieldEndAsync(cancellationToken);
-      }
-      if(__isset.watermarkParamMaxRightBit)
-      {
-        field.Name = "watermarkParamMaxRightBit";
-        field.Type = TType.I32;
-        field.ID = 8;
-        await oprot.WriteFieldBeginAsync(field, cancellationToken);
-        await oprot.WriteI32Async(WatermarkParamMaxRightBit, cancellationToken);
-        await oprot.WriteFieldEndAsync(cancellationToken);
-      }
       if(__isset.thriftMaxFrameSize)
       {
         field.Name = "thriftMaxFrameSize";
         field.Type = TType.I32;
-        field.ID = 9;
+        field.ID = 5;
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         await oprot.WriteI32Async(ThriftMaxFrameSize, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
@@ -504,7 +335,7 @@
       {
         field.Name = "isReadOnly";
         field.Type = TType.Bool;
-        field.ID = 10;
+        field.ID = 6;
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         await oprot.WriteBoolAsync(IsReadOnly, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
@@ -513,11 +344,20 @@
       {
         field.Name = "buildInfo";
         field.Type = TType.String;
-        field.ID = 11;
+        field.ID = 7;
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         await oprot.WriteStringAsync(BuildInfo, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
       }
+      if((Logo != null) && __isset.logo)
+      {
+        field.Name = "logo";
+        field.Type = TType.String;
+        field.ID = 8;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Logo, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
       await oprot.WriteFieldStopAsync(cancellationToken);
       await oprot.WriteStructEndAsync(cancellationToken);
     }
@@ -535,13 +375,10 @@
       && TCollections.Equals(SupportedTimeAggregationOperations, other.SupportedTimeAggregationOperations)
       && System.Object.Equals(TimestampPrecision, other.TimestampPrecision)
       && ((__isset.maxConcurrentClientNum == other.__isset.maxConcurrentClientNum) && ((!__isset.maxConcurrentClientNum) || (System.Object.Equals(MaxConcurrentClientNum, other.MaxConcurrentClientNum))))
-      && ((__isset.watermarkSecretKey == other.__isset.watermarkSecretKey) && ((!__isset.watermarkSecretKey) || (System.Object.Equals(WatermarkSecretKey, other.WatermarkSecretKey))))
-      && ((__isset.watermarkBitString == other.__isset.watermarkBitString) && ((!__isset.watermarkBitString) || (System.Object.Equals(WatermarkBitString, other.WatermarkBitString))))
-      && ((__isset.watermarkParamMarkRate == other.__isset.watermarkParamMarkRate) && ((!__isset.watermarkParamMarkRate) || (System.Object.Equals(WatermarkParamMarkRate, other.WatermarkParamMarkRate))))
-      && ((__isset.watermarkParamMaxRightBit == other.__isset.watermarkParamMaxRightBit) && ((!__isset.watermarkParamMaxRightBit) || (System.Object.Equals(WatermarkParamMaxRightBit, other.WatermarkParamMaxRightBit))))
       && ((__isset.thriftMaxFrameSize == other.__isset.thriftMaxFrameSize) && ((!__isset.thriftMaxFrameSize) || (System.Object.Equals(ThriftMaxFrameSize, other.ThriftMaxFrameSize))))
       && ((__isset.isReadOnly == other.__isset.isReadOnly) && ((!__isset.isReadOnly) || (System.Object.Equals(IsReadOnly, other.IsReadOnly))))
-      && ((__isset.buildInfo == other.__isset.buildInfo) && ((!__isset.buildInfo) || (System.Object.Equals(BuildInfo, other.BuildInfo))));
+      && ((__isset.buildInfo == other.__isset.buildInfo) && ((!__isset.buildInfo) || (System.Object.Equals(BuildInfo, other.BuildInfo))))
+      && ((__isset.logo == other.__isset.logo) && ((!__isset.logo) || (System.Object.Equals(Logo, other.Logo))));
   }
 
   public override int GetHashCode() {
@@ -563,22 +400,6 @@
       {
         hashcode = (hashcode * 397) + MaxConcurrentClientNum.GetHashCode();
       }
-      if((WatermarkSecretKey != null) && __isset.watermarkSecretKey)
-      {
-        hashcode = (hashcode * 397) + WatermarkSecretKey.GetHashCode();
-      }
-      if((WatermarkBitString != null) && __isset.watermarkBitString)
-      {
-        hashcode = (hashcode * 397) + WatermarkBitString.GetHashCode();
-      }
-      if(__isset.watermarkParamMarkRate)
-      {
-        hashcode = (hashcode * 397) + WatermarkParamMarkRate.GetHashCode();
-      }
-      if(__isset.watermarkParamMaxRightBit)
-      {
-        hashcode = (hashcode * 397) + WatermarkParamMaxRightBit.GetHashCode();
-      }
       if(__isset.thriftMaxFrameSize)
       {
         hashcode = (hashcode * 397) + ThriftMaxFrameSize.GetHashCode();
@@ -591,6 +412,10 @@
       {
         hashcode = (hashcode * 397) + BuildInfo.GetHashCode();
       }
+      if((Logo != null) && __isset.logo)
+      {
+        hashcode = (hashcode * 397) + Logo.GetHashCode();
+      }
     }
     return hashcode;
   }
@@ -618,26 +443,6 @@
       sb.Append(", MaxConcurrentClientNum: ");
       MaxConcurrentClientNum.ToString(sb);
     }
-    if((WatermarkSecretKey != null) && __isset.watermarkSecretKey)
-    {
-      sb.Append(", WatermarkSecretKey: ");
-      WatermarkSecretKey.ToString(sb);
-    }
-    if((WatermarkBitString != null) && __isset.watermarkBitString)
-    {
-      sb.Append(", WatermarkBitString: ");
-      WatermarkBitString.ToString(sb);
-    }
-    if(__isset.watermarkParamMarkRate)
-    {
-      sb.Append(", WatermarkParamMarkRate: ");
-      WatermarkParamMarkRate.ToString(sb);
-    }
-    if(__isset.watermarkParamMaxRightBit)
-    {
-      sb.Append(", WatermarkParamMaxRightBit: ");
-      WatermarkParamMaxRightBit.ToString(sb);
-    }
     if(__isset.thriftMaxFrameSize)
     {
       sb.Append(", ThriftMaxFrameSize: ");
@@ -653,6 +458,11 @@
       sb.Append(", BuildInfo: ");
       BuildInfo.ToString(sb);
     }
+    if((Logo != null) && __isset.logo)
+    {
+      sb.Append(", Logo: ");
+      Logo.ToString(sb);
+    }
     sb.Append(')');
     return sb.ToString();
   }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TAggregationType.cs b/src/Apache.IoTDB/Rpc/Generated/TAggregationType.cs
new file mode 100644
index 0000000..fb8929f
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TAggregationType.cs
@@ -0,0 +1,36 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+public enum TAggregationType
+{
+  COUNT = 0,
+  AVG = 1,
+  SUM = 2,
+  FIRST_VALUE = 3,
+  LAST_VALUE = 4,
+  MAX_TIME = 5,
+  MIN_TIME = 6,
+  MAX_VALUE = 7,
+  MIN_VALUE = 8,
+  EXTREME = 9,
+  COUNT_IF = 10,
+  TIME_DURATION = 11,
+  MODE = 12,
+  COUNT_TIME = 13,
+  STDDEV = 14,
+  STDDEV_POP = 15,
+  STDDEV_SAMP = 16,
+  VARIANCE = 17,
+  VAR_POP = 18,
+  VAR_SAMP = 19,
+  MAX_BY = 20,
+  MIN_BY = 21,
+  UDAF = 22,
+}
diff --git a/src/Apache.IoTDB/Rpc/Generated/TConfigNodeLocation.cs b/src/Apache.IoTDB/Rpc/Generated/TConfigNodeLocation.cs
index f3bcf28..f43a427 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TConfigNodeLocation.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TConfigNodeLocation.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -49,21 +49,6 @@
     this.ConsensusEndPoint = consensusEndPoint;
   }
 
-  public TConfigNodeLocation DeepCopy()
-  {
-    var tmp22 = new TConfigNodeLocation();
-    tmp22.ConfigNodeId = this.ConfigNodeId;
-    if((InternalEndPoint != null))
-    {
-      tmp22.InternalEndPoint = (TEndPoint)this.InternalEndPoint.DeepCopy();
-    }
-    if((ConsensusEndPoint != null))
-    {
-      tmp22.ConsensusEndPoint = (TEndPoint)this.ConsensusEndPoint.DeepCopy();
-    }
-    return tmp22;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupId.cs b/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupId.cs
index 1fa2c11..34492a9 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupId.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupId.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -50,14 +50,6 @@
     this.Id = id;
   }
 
-  public TConsensusGroupId DeepCopy()
-  {
-    var tmp8 = new TConsensusGroupId();
-    tmp8.Type = this.Type;
-    tmp8.Id = this.Id;
-    return tmp8;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupType.cs b/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupType.cs
index ad1b2b7..c4f3c78 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupType.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TConsensusGroupType.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -10,7 +10,7 @@
 
 public enum TConsensusGroupType
 {
-  ConfigNodeRegion = 0,
+  ConfigRegion = 0,
   DataRegion = 1,
   SchemaRegion = 2,
 }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TCreateTimeseriesUsingSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TCreateTimeseriesUsingSchemaTemplateReq.cs
new file mode 100644
index 0000000..0fc0689
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TCreateTimeseriesUsingSchemaTemplateReq.cs
@@ -0,0 +1,197 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TCreateTimeseriesUsingSchemaTemplateReq : TBase
+{
+
+  public long SessionId { get; set; }
+
+  public List<string> DevicePathList { get; set; }
+
+  public TCreateTimeseriesUsingSchemaTemplateReq()
+  {
+  }
+
+  public TCreateTimeseriesUsingSchemaTemplateReq(long sessionId, List<string> devicePathList) : this()
+  {
+    this.SessionId = sessionId;
+    this.DevicePathList = devicePathList;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_sessionId = false;
+      bool isset_devicePathList = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              SessionId = await iprot.ReadI64Async(cancellationToken);
+              isset_sessionId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list395 = await iprot.ReadListBeginAsync(cancellationToken);
+                DevicePathList = new List<string>(_list395.Count);
+                for(int _i396 = 0; _i396 < _list395.Count; ++_i396)
+                {
+                  string _elem397;
+                  _elem397 = await iprot.ReadStringAsync(cancellationToken);
+                  DevicePathList.Add(_elem397);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_devicePathList = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_sessionId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_devicePathList)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TCreateTimeseriesUsingSchemaTemplateReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "sessionId";
+      field.Type = TType.I64;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(SessionId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((DevicePathList != null))
+      {
+        field.Name = "devicePathList";
+        field.Type = TType.List;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, DevicePathList.Count), cancellationToken);
+          foreach (string _iter398 in DevicePathList)
+          {
+            await oprot.WriteStringAsync(_iter398, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TCreateTimeseriesUsingSchemaTemplateReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(SessionId, other.SessionId)
+      && TCollections.Equals(DevicePathList, other.DevicePathList);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + SessionId.GetHashCode();
+      if((DevicePathList != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(DevicePathList);
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TCreateTimeseriesUsingSchemaTemplateReq(");
+    sb.Append(", SessionId: ");
+    SessionId.ToString(sb);
+    if((DevicePathList != null))
+    {
+      sb.Append(", DevicePathList: ");
+      DevicePathList.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TDataNodeConfiguration.cs b/src/Apache.IoTDB/Rpc/Generated/TDataNodeConfiguration.cs
index 66af75e..e56db6c 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TDataNodeConfiguration.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TDataNodeConfiguration.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,20 +46,6 @@
     this.Resource = resource;
   }
 
-  public TDataNodeConfiguration DeepCopy()
-  {
-    var tmp26 = new TDataNodeConfiguration();
-    if((Location != null))
-    {
-      tmp26.Location = (TDataNodeLocation)this.Location.DeepCopy();
-    }
-    if((Resource != null))
-    {
-      tmp26.Resource = (TNodeResource)this.Resource.DeepCopy();
-    }
-    return tmp26;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TDataNodeLocation.cs b/src/Apache.IoTDB/Rpc/Generated/TDataNodeLocation.cs
index eb6c0b3..303f0b6 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TDataNodeLocation.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TDataNodeLocation.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -58,33 +58,6 @@
     this.SchemaRegionConsensusEndPoint = schemaRegionConsensusEndPoint;
   }
 
-  public TDataNodeLocation DeepCopy()
-  {
-    var tmp24 = new TDataNodeLocation();
-    tmp24.DataNodeId = this.DataNodeId;
-    if((ClientRpcEndPoint != null))
-    {
-      tmp24.ClientRpcEndPoint = (TEndPoint)this.ClientRpcEndPoint.DeepCopy();
-    }
-    if((InternalEndPoint != null))
-    {
-      tmp24.InternalEndPoint = (TEndPoint)this.InternalEndPoint.DeepCopy();
-    }
-    if((MPPDataExchangeEndPoint != null))
-    {
-      tmp24.MPPDataExchangeEndPoint = (TEndPoint)this.MPPDataExchangeEndPoint.DeepCopy();
-    }
-    if((DataRegionConsensusEndPoint != null))
-    {
-      tmp24.DataRegionConsensusEndPoint = (TEndPoint)this.DataRegionConsensusEndPoint.DeepCopy();
-    }
-    if((SchemaRegionConsensusEndPoint != null))
-    {
-      tmp24.SchemaRegionConsensusEndPoint = (TEndPoint)this.SchemaRegionConsensusEndPoint.DeepCopy();
-    }
-    return tmp24;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TEndPoint.cs b/src/Apache.IoTDB/Rpc/Generated/TEndPoint.cs
index 6388421..db66a12 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TEndPoint.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TEndPoint.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,17 +46,6 @@
     this.Port = port;
   }
 
-  public TEndPoint DeepCopy()
-  {
-    var tmp0 = new TEndPoint();
-    if((Ip != null))
-    {
-      tmp0.Ip = this.Ip;
-    }
-    tmp0.Port = this.Port;
-    return tmp0;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TFile.cs b/src/Apache.IoTDB/Rpc/Generated/TFile.cs
index 16bd754..1ff51fc 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TFile.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TFile.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,20 +46,6 @@
     this.File = file;
   }
 
-  public TFile DeepCopy()
-  {
-    var tmp42 = new TFile();
-    if((FileName != null))
-    {
-      tmp42.FileName = this.FileName;
-    }
-    if((File != null))
-    {
-      tmp42.File = this.File.ToArray();
-    }
-    return tmp42;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TFilesResp.cs b/src/Apache.IoTDB/Rpc/Generated/TFilesResp.cs
index e669773..86fc887 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TFilesResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TFilesResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,20 +46,6 @@
     this.Files = files;
   }
 
-  public TFilesResp DeepCopy()
-  {
-    var tmp44 = new TFilesResp();
-    if((Status != null))
-    {
-      tmp44.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    if((Files != null))
-    {
-      tmp44.Files = this.Files.DeepCopy();
-    }
-    return tmp44;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -95,14 +81,14 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list45 = await iprot.ReadListBeginAsync(cancellationToken);
-                Files = new List<TFile>(_list45.Count);
-                for(int _i46 = 0; _i46 < _list45.Count; ++_i46)
+                TList _list46 = await iprot.ReadListBeginAsync(cancellationToken);
+                Files = new List<TFile>(_list46.Count);
+                for(int _i47 = 0; _i47 < _list46.Count; ++_i47)
                 {
-                  TFile _elem47;
-                  _elem47 = new TFile();
-                  await _elem47.ReadAsync(iprot, cancellationToken);
-                  Files.Add(_elem47);
+                  TFile _elem48;
+                  _elem48 = new TFile();
+                  await _elem48.ReadAsync(iprot, cancellationToken);
+                  Files.Add(_elem48);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -162,9 +148,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Struct, Files.Count), cancellationToken);
-          foreach (TFile _iter48 in Files)
+          foreach (TFile _iter49 in Files)
           {
-            await _iter48.WriteAsync(oprot, cancellationToken);
+            await _iter49.WriteAsync(oprot, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TFlushReq.cs b/src/Apache.IoTDB/Rpc/Generated/TFlushReq.cs
index 96969e8..99267a4 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TFlushReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TFlushReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -72,22 +72,6 @@
   {
   }
 
-  public TFlushReq DeepCopy()
-  {
-    var tmp28 = new TFlushReq();
-    if((IsSeq != null) && __isset.isSeq)
-    {
-      tmp28.IsSeq = this.IsSeq;
-    }
-    tmp28.__isset.isSeq = this.__isset.isSeq;
-    if((StorageGroups != null) && __isset.storageGroups)
-    {
-      tmp28.StorageGroups = this.StorageGroups.DeepCopy();
-    }
-    tmp28.__isset.storageGroups = this.__isset.storageGroups;
-    return tmp28;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -119,13 +103,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list29 = await iprot.ReadListBeginAsync(cancellationToken);
-                StorageGroups = new List<string>(_list29.Count);
-                for(int _i30 = 0; _i30 < _list29.Count; ++_i30)
+                TList _list18 = await iprot.ReadListBeginAsync(cancellationToken);
+                StorageGroups = new List<string>(_list18.Count);
+                for(int _i19 = 0; _i19 < _list18.Count; ++_i19)
                 {
-                  string _elem31;
-                  _elem31 = await iprot.ReadStringAsync(cancellationToken);
-                  StorageGroups.Add(_elem31);
+                  string _elem20;
+                  _elem20 = await iprot.ReadStringAsync(cancellationToken);
+                  StorageGroups.Add(_elem20);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -176,9 +160,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, StorageGroups.Count), cancellationToken);
-          foreach (string _iter32 in StorageGroups)
+          foreach (string _iter21 in StorageGroups)
           {
-            await oprot.WriteStringAsync(_iter32, cancellationToken);
+            await oprot.WriteStringAsync(_iter21, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -219,16 +203,16 @@
   public override string ToString()
   {
     var sb = new StringBuilder("TFlushReq(");
-    int tmp33 = 0;
+    int tmp22 = 0;
     if((IsSeq != null) && __isset.isSeq)
     {
-      if(0 < tmp33++) { sb.Append(", "); }
+      if(0 < tmp22++) { sb.Append(", "); }
       sb.Append("IsSeq: ");
       IsSeq.ToString(sb);
     }
     if((StorageGroups != null) && __isset.storageGroups)
     {
-      if(0 < tmp33++) { sb.Append(", "); }
+      if(0 < tmp22++) { sb.Append(", "); }
       sb.Append("StorageGroups: ");
       StorageGroups.ToString(sb);
     }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TLicense.cs b/src/Apache.IoTDB/Rpc/Generated/TLicense.cs
new file mode 100644
index 0000000..173ddf7
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TLicense.cs
@@ -0,0 +1,345 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TLicense : TBase
+{
+
+  public long LicenseIssueTimestamp { get; set; }
+
+  public long ExpireTimestamp { get; set; }
+
+  public short DataNodeNumLimit { get; set; }
+
+  public int CpuCoreNumLimit { get; set; }
+
+  public long DeviceNumLimit { get; set; }
+
+  public long SensorNumLimit { get; set; }
+
+  public long DisconnectionFromActiveNodeTimeLimit { get; set; }
+
+  public short MlNodeNumLimit { get; set; }
+
+  public TLicense()
+  {
+  }
+
+  public TLicense(long licenseIssueTimestamp, long expireTimestamp, short dataNodeNumLimit, int cpuCoreNumLimit, long deviceNumLimit, long sensorNumLimit, long disconnectionFromActiveNodeTimeLimit, short mlNodeNumLimit) : this()
+  {
+    this.LicenseIssueTimestamp = licenseIssueTimestamp;
+    this.ExpireTimestamp = expireTimestamp;
+    this.DataNodeNumLimit = dataNodeNumLimit;
+    this.CpuCoreNumLimit = cpuCoreNumLimit;
+    this.DeviceNumLimit = deviceNumLimit;
+    this.SensorNumLimit = sensorNumLimit;
+    this.DisconnectionFromActiveNodeTimeLimit = disconnectionFromActiveNodeTimeLimit;
+    this.MlNodeNumLimit = mlNodeNumLimit;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_licenseIssueTimestamp = false;
+      bool isset_expireTimestamp = false;
+      bool isset_dataNodeNumLimit = false;
+      bool isset_cpuCoreNumLimit = false;
+      bool isset_deviceNumLimit = false;
+      bool isset_sensorNumLimit = false;
+      bool isset_disconnectionFromActiveNodeTimeLimit = false;
+      bool isset_mlNodeNumLimit = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              LicenseIssueTimestamp = await iprot.ReadI64Async(cancellationToken);
+              isset_licenseIssueTimestamp = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I64)
+            {
+              ExpireTimestamp = await iprot.ReadI64Async(cancellationToken);
+              isset_expireTimestamp = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 4:
+            if (field.Type == TType.I16)
+            {
+              DataNodeNumLimit = await iprot.ReadI16Async(cancellationToken);
+              isset_dataNodeNumLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 5:
+            if (field.Type == TType.I32)
+            {
+              CpuCoreNumLimit = await iprot.ReadI32Async(cancellationToken);
+              isset_cpuCoreNumLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 6:
+            if (field.Type == TType.I64)
+            {
+              DeviceNumLimit = await iprot.ReadI64Async(cancellationToken);
+              isset_deviceNumLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 7:
+            if (field.Type == TType.I64)
+            {
+              SensorNumLimit = await iprot.ReadI64Async(cancellationToken);
+              isset_sensorNumLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 8:
+            if (field.Type == TType.I64)
+            {
+              DisconnectionFromActiveNodeTimeLimit = await iprot.ReadI64Async(cancellationToken);
+              isset_disconnectionFromActiveNodeTimeLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 9:
+            if (field.Type == TType.I16)
+            {
+              MlNodeNumLimit = await iprot.ReadI16Async(cancellationToken);
+              isset_mlNodeNumLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_licenseIssueTimestamp)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_expireTimestamp)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_dataNodeNumLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_cpuCoreNumLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_deviceNumLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_sensorNumLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_disconnectionFromActiveNodeTimeLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_mlNodeNumLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TLicense");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "licenseIssueTimestamp";
+      field.Type = TType.I64;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(LicenseIssueTimestamp, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "expireTimestamp";
+      field.Type = TType.I64;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(ExpireTimestamp, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "dataNodeNumLimit";
+      field.Type = TType.I16;
+      field.ID = 4;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI16Async(DataNodeNumLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "cpuCoreNumLimit";
+      field.Type = TType.I32;
+      field.ID = 5;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI32Async(CpuCoreNumLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "deviceNumLimit";
+      field.Type = TType.I64;
+      field.ID = 6;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(DeviceNumLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "sensorNumLimit";
+      field.Type = TType.I64;
+      field.ID = 7;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(SensorNumLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "disconnectionFromActiveNodeTimeLimit";
+      field.Type = TType.I64;
+      field.ID = 8;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(DisconnectionFromActiveNodeTimeLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "mlNodeNumLimit";
+      field.Type = TType.I16;
+      field.ID = 9;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI16Async(MlNodeNumLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TLicense other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(LicenseIssueTimestamp, other.LicenseIssueTimestamp)
+      && System.Object.Equals(ExpireTimestamp, other.ExpireTimestamp)
+      && System.Object.Equals(DataNodeNumLimit, other.DataNodeNumLimit)
+      && System.Object.Equals(CpuCoreNumLimit, other.CpuCoreNumLimit)
+      && System.Object.Equals(DeviceNumLimit, other.DeviceNumLimit)
+      && System.Object.Equals(SensorNumLimit, other.SensorNumLimit)
+      && System.Object.Equals(DisconnectionFromActiveNodeTimeLimit, other.DisconnectionFromActiveNodeTimeLimit)
+      && System.Object.Equals(MlNodeNumLimit, other.MlNodeNumLimit);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + LicenseIssueTimestamp.GetHashCode();
+      hashcode = (hashcode * 397) + ExpireTimestamp.GetHashCode();
+      hashcode = (hashcode * 397) + DataNodeNumLimit.GetHashCode();
+      hashcode = (hashcode * 397) + CpuCoreNumLimit.GetHashCode();
+      hashcode = (hashcode * 397) + DeviceNumLimit.GetHashCode();
+      hashcode = (hashcode * 397) + SensorNumLimit.GetHashCode();
+      hashcode = (hashcode * 397) + DisconnectionFromActiveNodeTimeLimit.GetHashCode();
+      hashcode = (hashcode * 397) + MlNodeNumLimit.GetHashCode();
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TLicense(");
+    sb.Append(", LicenseIssueTimestamp: ");
+    LicenseIssueTimestamp.ToString(sb);
+    sb.Append(", ExpireTimestamp: ");
+    ExpireTimestamp.ToString(sb);
+    sb.Append(", DataNodeNumLimit: ");
+    DataNodeNumLimit.ToString(sb);
+    sb.Append(", CpuCoreNumLimit: ");
+    CpuCoreNumLimit.ToString(sb);
+    sb.Append(", DeviceNumLimit: ");
+    DeviceNumLimit.ToString(sb);
+    sb.Append(", SensorNumLimit: ");
+    SensorNumLimit.ToString(sb);
+    sb.Append(", DisconnectionFromActiveNodeTimeLimit: ");
+    DisconnectionFromActiveNodeTimeLimit.ToString(sb);
+    sb.Append(", MlNodeNumLimit: ");
+    MlNodeNumLimit.ToString(sb);
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TNodeLocations.cs b/src/Apache.IoTDB/Rpc/Generated/TNodeLocations.cs
new file mode 100644
index 0000000..43d3a2c
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TNodeLocations.cs
@@ -0,0 +1,242 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TNodeLocations : TBase
+{
+  private List<TConfigNodeLocation> _configNodeLocations;
+  private List<TDataNodeLocation> _dataNodeLocations;
+
+  public List<TConfigNodeLocation> ConfigNodeLocations
+  {
+    get
+    {
+      return _configNodeLocations;
+    }
+    set
+    {
+      __isset.configNodeLocations = true;
+      this._configNodeLocations = value;
+    }
+  }
+
+  public List<TDataNodeLocation> DataNodeLocations
+  {
+    get
+    {
+      return _dataNodeLocations;
+    }
+    set
+    {
+      __isset.dataNodeLocations = true;
+      this._dataNodeLocations = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool configNodeLocations;
+    public bool dataNodeLocations;
+  }
+
+  public TNodeLocations()
+  {
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list74 = await iprot.ReadListBeginAsync(cancellationToken);
+                ConfigNodeLocations = new List<TConfigNodeLocation>(_list74.Count);
+                for(int _i75 = 0; _i75 < _list74.Count; ++_i75)
+                {
+                  TConfigNodeLocation _elem76;
+                  _elem76 = new TConfigNodeLocation();
+                  await _elem76.ReadAsync(iprot, cancellationToken);
+                  ConfigNodeLocations.Add(_elem76);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list77 = await iprot.ReadListBeginAsync(cancellationToken);
+                DataNodeLocations = new List<TDataNodeLocation>(_list77.Count);
+                for(int _i78 = 0; _i78 < _list77.Count; ++_i78)
+                {
+                  TDataNodeLocation _elem79;
+                  _elem79 = new TDataNodeLocation();
+                  await _elem79.ReadAsync(iprot, cancellationToken);
+                  DataNodeLocations.Add(_elem79);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TNodeLocations");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((ConfigNodeLocations != null) && __isset.configNodeLocations)
+      {
+        field.Name = "configNodeLocations";
+        field.Type = TType.List;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.Struct, ConfigNodeLocations.Count), cancellationToken);
+          foreach (TConfigNodeLocation _iter80 in ConfigNodeLocations)
+          {
+            await _iter80.WriteAsync(oprot, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((DataNodeLocations != null) && __isset.dataNodeLocations)
+      {
+        field.Name = "dataNodeLocations";
+        field.Type = TType.List;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.Struct, DataNodeLocations.Count), cancellationToken);
+          foreach (TDataNodeLocation _iter81 in DataNodeLocations)
+          {
+            await _iter81.WriteAsync(oprot, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TNodeLocations other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return ((__isset.configNodeLocations == other.__isset.configNodeLocations) && ((!__isset.configNodeLocations) || (TCollections.Equals(ConfigNodeLocations, other.ConfigNodeLocations))))
+      && ((__isset.dataNodeLocations == other.__isset.dataNodeLocations) && ((!__isset.dataNodeLocations) || (TCollections.Equals(DataNodeLocations, other.DataNodeLocations))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((ConfigNodeLocations != null) && __isset.configNodeLocations)
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(ConfigNodeLocations);
+      }
+      if((DataNodeLocations != null) && __isset.dataNodeLocations)
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(DataNodeLocations);
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TNodeLocations(");
+    int tmp82 = 0;
+    if((ConfigNodeLocations != null) && __isset.configNodeLocations)
+    {
+      if(0 < tmp82++) { sb.Append(", "); }
+      sb.Append("ConfigNodeLocations: ");
+      ConfigNodeLocations.ToString(sb);
+    }
+    if((DataNodeLocations != null) && __isset.dataNodeLocations)
+    {
+      if(0 < tmp82++) { sb.Append(", "); }
+      sb.Append("DataNodeLocations: ");
+      DataNodeLocations.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TNodeResource.cs b/src/Apache.IoTDB/Rpc/Generated/TNodeResource.cs
index e42dc58..3df3303 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TNodeResource.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TNodeResource.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,14 +46,6 @@
     this.MaxMemory = maxMemory;
   }
 
-  public TNodeResource DeepCopy()
-  {
-    var tmp20 = new TNodeResource();
-    tmp20.CpuCoreNum = this.CpuCoreNum;
-    tmp20.MaxMemory = this.MaxMemory;
-    return tmp20;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TPipeSubscribeReq.cs b/src/Apache.IoTDB/Rpc/Generated/TPipeSubscribeReq.cs
new file mode 100644
index 0000000..bf1e167
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TPipeSubscribeReq.cs
@@ -0,0 +1,221 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TPipeSubscribeReq : TBase
+{
+  private byte[] _body;
+
+  public sbyte Version { get; set; }
+
+  public short Type { get; set; }
+
+  public byte[] Body
+  {
+    get
+    {
+      return _body;
+    }
+    set
+    {
+      __isset.body = true;
+      this._body = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool body;
+  }
+
+  public TPipeSubscribeReq()
+  {
+  }
+
+  public TPipeSubscribeReq(sbyte version, short type) : this()
+  {
+    this.Version = version;
+    this.Type = type;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_version = false;
+      bool isset_type = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Byte)
+            {
+              Version = await iprot.ReadByteAsync(cancellationToken);
+              isset_version = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I16)
+            {
+              Type = await iprot.ReadI16Async(cancellationToken);
+              isset_type = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.String)
+            {
+              Body = await iprot.ReadBinaryAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_version)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_type)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TPipeSubscribeReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "version";
+      field.Type = TType.Byte;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteByteAsync(Version, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "type";
+      field.Type = TType.I16;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI16Async(Type, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Body != null) && __isset.body)
+      {
+        field.Name = "body";
+        field.Type = TType.String;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBinaryAsync(Body, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TPipeSubscribeReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Version, other.Version)
+      && System.Object.Equals(Type, other.Type)
+      && ((__isset.body == other.__isset.body) && ((!__isset.body) || (TCollections.Equals(Body, other.Body))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + Version.GetHashCode();
+      hashcode = (hashcode * 397) + Type.GetHashCode();
+      if((Body != null) && __isset.body)
+      {
+        hashcode = (hashcode * 397) + Body.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TPipeSubscribeReq(");
+    sb.Append(", Version: ");
+    Version.ToString(sb);
+    sb.Append(", Type: ");
+    Type.ToString(sb);
+    if((Body != null) && __isset.body)
+    {
+      sb.Append(", Body: ");
+      Body.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TPipeSubscribeResp.cs b/src/Apache.IoTDB/Rpc/Generated/TPipeSubscribeResp.cs
new file mode 100644
index 0000000..b020c67
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TPipeSubscribeResp.cs
@@ -0,0 +1,277 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TPipeSubscribeResp : TBase
+{
+  private List<byte[]> _body;
+
+  public TSStatus Status { get; set; }
+
+  public sbyte Version { get; set; }
+
+  public short Type { get; set; }
+
+  public List<byte[]> Body
+  {
+    get
+    {
+      return _body;
+    }
+    set
+    {
+      __isset.body = true;
+      this._body = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool body;
+  }
+
+  public TPipeSubscribeResp()
+  {
+  }
+
+  public TPipeSubscribeResp(TSStatus status, sbyte version, short type) : this()
+  {
+    this.Status = status;
+    this.Version = version;
+    this.Type = type;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_status = false;
+      bool isset_version = false;
+      bool isset_type = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              Status = new TSStatus();
+              await Status.ReadAsync(iprot, cancellationToken);
+              isset_status = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.Byte)
+            {
+              Version = await iprot.ReadByteAsync(cancellationToken);
+              isset_version = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.I16)
+            {
+              Type = await iprot.ReadI16Async(cancellationToken);
+              isset_type = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 4:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list405 = await iprot.ReadListBeginAsync(cancellationToken);
+                Body = new List<byte[]>(_list405.Count);
+                for(int _i406 = 0; _i406 < _list405.Count; ++_i406)
+                {
+                  byte[] _elem407;
+                  _elem407 = await iprot.ReadBinaryAsync(cancellationToken);
+                  Body.Add(_elem407);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_status)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_version)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_type)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TPipeSubscribeResp");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Status != null))
+      {
+        field.Name = "status";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await Status.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      field.Name = "version";
+      field.Type = TType.Byte;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteByteAsync(Version, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "type";
+      field.Type = TType.I16;
+      field.ID = 3;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI16Async(Type, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Body != null) && __isset.body)
+      {
+        field.Name = "body";
+        field.Type = TType.List;
+        field.ID = 4;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, Body.Count), cancellationToken);
+          foreach (byte[] _iter408 in Body)
+          {
+            await oprot.WriteBinaryAsync(_iter408, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TPipeSubscribeResp other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Status, other.Status)
+      && System.Object.Equals(Version, other.Version)
+      && System.Object.Equals(Type, other.Type)
+      && ((__isset.body == other.__isset.body) && ((!__isset.body) || (TCollections.Equals(Body, other.Body))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Status != null))
+      {
+        hashcode = (hashcode * 397) + Status.GetHashCode();
+      }
+      hashcode = (hashcode * 397) + Version.GetHashCode();
+      hashcode = (hashcode * 397) + Type.GetHashCode();
+      if((Body != null) && __isset.body)
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Body);
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TPipeSubscribeResp(");
+    if((Status != null))
+    {
+      sb.Append(", Status: ");
+      Status.ToString(sb);
+    }
+    sb.Append(", Version: ");
+    Version.ToString(sb);
+    sb.Append(", Type: ");
+    Type.ToString(sb);
+    if((Body != null) && __isset.body)
+    {
+      sb.Append(", Body: ");
+      Body.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TPipeTransferReq.cs b/src/Apache.IoTDB/Rpc/Generated/TPipeTransferReq.cs
new file mode 100644
index 0000000..dc854d7
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TPipeTransferReq.cs
@@ -0,0 +1,209 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TPipeTransferReq : TBase
+{
+
+  public sbyte Version { get; set; }
+
+  public short Type { get; set; }
+
+  public byte[] Body { get; set; }
+
+  public TPipeTransferReq()
+  {
+  }
+
+  public TPipeTransferReq(sbyte version, short type, byte[] body) : this()
+  {
+    this.Version = version;
+    this.Type = type;
+    this.Body = body;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_version = false;
+      bool isset_type = false;
+      bool isset_body = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Byte)
+            {
+              Version = await iprot.ReadByteAsync(cancellationToken);
+              isset_version = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I16)
+            {
+              Type = await iprot.ReadI16Async(cancellationToken);
+              isset_type = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.String)
+            {
+              Body = await iprot.ReadBinaryAsync(cancellationToken);
+              isset_body = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_version)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_type)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_body)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TPipeTransferReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "version";
+      field.Type = TType.Byte;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteByteAsync(Version, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "type";
+      field.Type = TType.I16;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI16Async(Type, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Body != null))
+      {
+        field.Name = "body";
+        field.Type = TType.String;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBinaryAsync(Body, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TPipeTransferReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Version, other.Version)
+      && System.Object.Equals(Type, other.Type)
+      && TCollections.Equals(Body, other.Body);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + Version.GetHashCode();
+      hashcode = (hashcode * 397) + Type.GetHashCode();
+      if((Body != null))
+      {
+        hashcode = (hashcode * 397) + Body.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TPipeTransferReq(");
+    sb.Append(", Version: ");
+    Version.ToString(sb);
+    sb.Append(", Type: ");
+    Type.ToString(sb);
+    if((Body != null))
+    {
+      sb.Append(", Body: ");
+      Body.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TPipeTransferResp.cs b/src/Apache.IoTDB/Rpc/Generated/TPipeTransferResp.cs
new file mode 100644
index 0000000..faaa628
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TPipeTransferResp.cs
@@ -0,0 +1,202 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TPipeTransferResp : TBase
+{
+  private byte[] _body;
+
+  public TSStatus Status { get; set; }
+
+  public byte[] Body
+  {
+    get
+    {
+      return _body;
+    }
+    set
+    {
+      __isset.body = true;
+      this._body = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool body;
+  }
+
+  public TPipeTransferResp()
+  {
+  }
+
+  public TPipeTransferResp(TSStatus status) : this()
+  {
+    this.Status = status;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_status = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              Status = new TSStatus();
+              await Status.ReadAsync(iprot, cancellationToken);
+              isset_status = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.String)
+            {
+              Body = await iprot.ReadBinaryAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_status)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TPipeTransferResp");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Status != null))
+      {
+        field.Name = "status";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await Status.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Body != null) && __isset.body)
+      {
+        field.Name = "body";
+        field.Type = TType.String;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBinaryAsync(Body, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TPipeTransferResp other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Status, other.Status)
+      && ((__isset.body == other.__isset.body) && ((!__isset.body) || (TCollections.Equals(Body, other.Body))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Status != null))
+      {
+        hashcode = (hashcode * 397) + Status.GetHashCode();
+      }
+      if((Body != null) && __isset.body)
+      {
+        hashcode = (hashcode * 397) + Body.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TPipeTransferResp(");
+    if((Status != null))
+    {
+      sb.Append(", Status: ");
+      Status.ToString(sb);
+    }
+    if((Body != null) && __isset.body)
+    {
+      sb.Append(", Body: ");
+      Body.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TRegionMaintainTaskStatus.cs b/src/Apache.IoTDB/Rpc/Generated/TRegionMaintainTaskStatus.cs
new file mode 100644
index 0000000..e0904fb
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TRegionMaintainTaskStatus.cs
@@ -0,0 +1,17 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+public enum TRegionMaintainTaskStatus
+{
+  TASK_NOT_EXIST = 0,
+  PROCESSING = 1,
+  SUCCESS = 2,
+  FAIL = 3,
+}
diff --git a/src/Apache.IoTDB/Rpc/Generated/TRegionMigrateFailedType.cs b/src/Apache.IoTDB/Rpc/Generated/TRegionMigrateFailedType.cs
index f073d83..1306ac5 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TRegionMigrateFailedType.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TRegionMigrateFailedType.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -15,4 +15,5 @@
   RemoveConsensusGroupFailed = 2,
   DeleteRegionFailed = 3,
   CreateRegionFailed = 4,
+  Disconnect = 5,
 }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TRegionReplicaSet.cs b/src/Apache.IoTDB/Rpc/Generated/TRegionReplicaSet.cs
index 00eb286..d745048 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TRegionReplicaSet.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TRegionReplicaSet.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,20 +46,6 @@
     this.DataNodeLocations = dataNodeLocations;
   }
 
-  public TRegionReplicaSet DeepCopy()
-  {
-    var tmp14 = new TRegionReplicaSet();
-    if((RegionId != null))
-    {
-      tmp14.RegionId = (TConsensusGroupId)this.RegionId.DeepCopy();
-    }
-    if((DataNodeLocations != null))
-    {
-      tmp14.DataNodeLocations = this.DataNodeLocations.DeepCopy();
-    }
-    return tmp14;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -95,14 +81,14 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list15 = await iprot.ReadListBeginAsync(cancellationToken);
-                DataNodeLocations = new List<TDataNodeLocation>(_list15.Count);
-                for(int _i16 = 0; _i16 < _list15.Count; ++_i16)
+                TList _list9 = await iprot.ReadListBeginAsync(cancellationToken);
+                DataNodeLocations = new List<TDataNodeLocation>(_list9.Count);
+                for(int _i10 = 0; _i10 < _list9.Count; ++_i10)
                 {
-                  TDataNodeLocation _elem17;
-                  _elem17 = new TDataNodeLocation();
-                  await _elem17.ReadAsync(iprot, cancellationToken);
-                  DataNodeLocations.Add(_elem17);
+                  TDataNodeLocation _elem11;
+                  _elem11 = new TDataNodeLocation();
+                  await _elem11.ReadAsync(iprot, cancellationToken);
+                  DataNodeLocations.Add(_elem11);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -162,9 +148,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Struct, DataNodeLocations.Count), cancellationToken);
-          foreach (TDataNodeLocation _iter18 in DataNodeLocations)
+          foreach (TDataNodeLocation _iter12 in DataNodeLocations)
           {
-            await _iter18.WriteAsync(oprot, cancellationToken);
+            await _iter12.WriteAsync(oprot, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSAggregationQueryReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSAggregationQueryReq.cs
new file mode 100644
index 0000000..7e4c9c5
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSAggregationQueryReq.cs
@@ -0,0 +1,595 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSAggregationQueryReq : TBase
+{
+  private long _startTime;
+  private long _endTime;
+  private long _interval;
+  private long _slidingStep;
+  private int _fetchSize;
+  private long _timeout;
+  private bool _legalPathNodes;
+
+  public long SessionId { get; set; }
+
+  public long StatementId { get; set; }
+
+  public List<string> Paths { get; set; }
+
+  public List<TAggregationType> Aggregations { get; set; }
+
+  public long StartTime
+  {
+    get
+    {
+      return _startTime;
+    }
+    set
+    {
+      __isset.startTime = true;
+      this._startTime = value;
+    }
+  }
+
+  public long EndTime
+  {
+    get
+    {
+      return _endTime;
+    }
+    set
+    {
+      __isset.endTime = true;
+      this._endTime = value;
+    }
+  }
+
+  public long Interval
+  {
+    get
+    {
+      return _interval;
+    }
+    set
+    {
+      __isset.interval = true;
+      this._interval = value;
+    }
+  }
+
+  public long SlidingStep
+  {
+    get
+    {
+      return _slidingStep;
+    }
+    set
+    {
+      __isset.slidingStep = true;
+      this._slidingStep = value;
+    }
+  }
+
+  public int FetchSize
+  {
+    get
+    {
+      return _fetchSize;
+    }
+    set
+    {
+      __isset.fetchSize = true;
+      this._fetchSize = value;
+    }
+  }
+
+  public long Timeout
+  {
+    get
+    {
+      return _timeout;
+    }
+    set
+    {
+      __isset.timeout = true;
+      this._timeout = value;
+    }
+  }
+
+  public bool LegalPathNodes
+  {
+    get
+    {
+      return _legalPathNodes;
+    }
+    set
+    {
+      __isset.legalPathNodes = true;
+      this._legalPathNodes = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool startTime;
+    public bool endTime;
+    public bool interval;
+    public bool slidingStep;
+    public bool fetchSize;
+    public bool timeout;
+    public bool legalPathNodes;
+  }
+
+  public TSAggregationQueryReq()
+  {
+  }
+
+  public TSAggregationQueryReq(long sessionId, long statementId, List<string> paths, List<TAggregationType> aggregations) : this()
+  {
+    this.SessionId = sessionId;
+    this.StatementId = statementId;
+    this.Paths = paths;
+    this.Aggregations = aggregations;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_sessionId = false;
+      bool isset_statementId = false;
+      bool isset_paths = false;
+      bool isset_aggregations = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              SessionId = await iprot.ReadI64Async(cancellationToken);
+              isset_sessionId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I64)
+            {
+              StatementId = await iprot.ReadI64Async(cancellationToken);
+              isset_statementId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list304 = await iprot.ReadListBeginAsync(cancellationToken);
+                Paths = new List<string>(_list304.Count);
+                for(int _i305 = 0; _i305 < _list304.Count; ++_i305)
+                {
+                  string _elem306;
+                  _elem306 = await iprot.ReadStringAsync(cancellationToken);
+                  Paths.Add(_elem306);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_paths = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 4:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list307 = await iprot.ReadListBeginAsync(cancellationToken);
+                Aggregations = new List<TAggregationType>(_list307.Count);
+                for(int _i308 = 0; _i308 < _list307.Count; ++_i308)
+                {
+                  TAggregationType _elem309;
+                  _elem309 = (TAggregationType)await iprot.ReadI32Async(cancellationToken);
+                  Aggregations.Add(_elem309);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_aggregations = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 5:
+            if (field.Type == TType.I64)
+            {
+              StartTime = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 6:
+            if (field.Type == TType.I64)
+            {
+              EndTime = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 7:
+            if (field.Type == TType.I64)
+            {
+              Interval = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 8:
+            if (field.Type == TType.I64)
+            {
+              SlidingStep = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 9:
+            if (field.Type == TType.I32)
+            {
+              FetchSize = await iprot.ReadI32Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 10:
+            if (field.Type == TType.I64)
+            {
+              Timeout = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 11:
+            if (field.Type == TType.Bool)
+            {
+              LegalPathNodes = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_sessionId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_statementId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_paths)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_aggregations)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSAggregationQueryReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "sessionId";
+      field.Type = TType.I64;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(SessionId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "statementId";
+      field.Type = TType.I64;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(StatementId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Paths != null))
+      {
+        field.Name = "paths";
+        field.Type = TType.List;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, Paths.Count), cancellationToken);
+          foreach (string _iter310 in Paths)
+          {
+            await oprot.WriteStringAsync(_iter310, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Aggregations != null))
+      {
+        field.Name = "aggregations";
+        field.Type = TType.List;
+        field.ID = 4;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.I32, Aggregations.Count), cancellationToken);
+          foreach (TAggregationType _iter311 in Aggregations)
+          {
+            await oprot.WriteI32Async((int)_iter311, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.startTime)
+      {
+        field.Name = "startTime";
+        field.Type = TType.I64;
+        field.ID = 5;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(StartTime, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.endTime)
+      {
+        field.Name = "endTime";
+        field.Type = TType.I64;
+        field.ID = 6;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(EndTime, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.interval)
+      {
+        field.Name = "interval";
+        field.Type = TType.I64;
+        field.ID = 7;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(Interval, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.slidingStep)
+      {
+        field.Name = "slidingStep";
+        field.Type = TType.I64;
+        field.ID = 8;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(SlidingStep, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.fetchSize)
+      {
+        field.Name = "fetchSize";
+        field.Type = TType.I32;
+        field.ID = 9;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI32Async(FetchSize, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.timeout)
+      {
+        field.Name = "timeout";
+        field.Type = TType.I64;
+        field.ID = 10;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(Timeout, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.legalPathNodes)
+      {
+        field.Name = "legalPathNodes";
+        field.Type = TType.Bool;
+        field.ID = 11;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(LegalPathNodes, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSAggregationQueryReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(SessionId, other.SessionId)
+      && System.Object.Equals(StatementId, other.StatementId)
+      && TCollections.Equals(Paths, other.Paths)
+      && TCollections.Equals(Aggregations, other.Aggregations)
+      && ((__isset.startTime == other.__isset.startTime) && ((!__isset.startTime) || (System.Object.Equals(StartTime, other.StartTime))))
+      && ((__isset.endTime == other.__isset.endTime) && ((!__isset.endTime) || (System.Object.Equals(EndTime, other.EndTime))))
+      && ((__isset.interval == other.__isset.interval) && ((!__isset.interval) || (System.Object.Equals(Interval, other.Interval))))
+      && ((__isset.slidingStep == other.__isset.slidingStep) && ((!__isset.slidingStep) || (System.Object.Equals(SlidingStep, other.SlidingStep))))
+      && ((__isset.fetchSize == other.__isset.fetchSize) && ((!__isset.fetchSize) || (System.Object.Equals(FetchSize, other.FetchSize))))
+      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))))
+      && ((__isset.legalPathNodes == other.__isset.legalPathNodes) && ((!__isset.legalPathNodes) || (System.Object.Equals(LegalPathNodes, other.LegalPathNodes))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + SessionId.GetHashCode();
+      hashcode = (hashcode * 397) + StatementId.GetHashCode();
+      if((Paths != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Paths);
+      }
+      if((Aggregations != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Aggregations);
+      }
+      if(__isset.startTime)
+      {
+        hashcode = (hashcode * 397) + StartTime.GetHashCode();
+      }
+      if(__isset.endTime)
+      {
+        hashcode = (hashcode * 397) + EndTime.GetHashCode();
+      }
+      if(__isset.interval)
+      {
+        hashcode = (hashcode * 397) + Interval.GetHashCode();
+      }
+      if(__isset.slidingStep)
+      {
+        hashcode = (hashcode * 397) + SlidingStep.GetHashCode();
+      }
+      if(__isset.fetchSize)
+      {
+        hashcode = (hashcode * 397) + FetchSize.GetHashCode();
+      }
+      if(__isset.timeout)
+      {
+        hashcode = (hashcode * 397) + Timeout.GetHashCode();
+      }
+      if(__isset.legalPathNodes)
+      {
+        hashcode = (hashcode * 397) + LegalPathNodes.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSAggregationQueryReq(");
+    sb.Append(", SessionId: ");
+    SessionId.ToString(sb);
+    sb.Append(", StatementId: ");
+    StatementId.ToString(sb);
+    if((Paths != null))
+    {
+      sb.Append(", Paths: ");
+      Paths.ToString(sb);
+    }
+    if((Aggregations != null))
+    {
+      sb.Append(", Aggregations: ");
+      Aggregations.ToString(sb);
+    }
+    if(__isset.startTime)
+    {
+      sb.Append(", StartTime: ");
+      StartTime.ToString(sb);
+    }
+    if(__isset.endTime)
+    {
+      sb.Append(", EndTime: ");
+      EndTime.ToString(sb);
+    }
+    if(__isset.interval)
+    {
+      sb.Append(", Interval: ");
+      Interval.ToString(sb);
+    }
+    if(__isset.slidingStep)
+    {
+      sb.Append(", SlidingStep: ");
+      SlidingStep.ToString(sb);
+    }
+    if(__isset.fetchSize)
+    {
+      sb.Append(", FetchSize: ");
+      FetchSize.ToString(sb);
+    }
+    if(__isset.timeout)
+    {
+      sb.Append(", Timeout: ");
+      Timeout.ToString(sb);
+    }
+    if(__isset.legalPathNodes)
+    {
+      sb.Append(", LegalPathNodes: ");
+      LegalPathNodes.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSAppendSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSAppendSchemaTemplateReq.cs
index ed9994e..d5c545b 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSAppendSchemaTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSAppendSchemaTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -61,34 +61,6 @@
     this.Compressors = compressors;
   }
 
-  public TSAppendSchemaTemplateReq DeepCopy()
-  {
-    var tmp389 = new TSAppendSchemaTemplateReq();
-    tmp389.SessionId = this.SessionId;
-    if((Name != null))
-    {
-      tmp389.Name = this.Name;
-    }
-    tmp389.IsAligned = this.IsAligned;
-    if((Measurements != null))
-    {
-      tmp389.Measurements = this.Measurements.DeepCopy();
-    }
-    if((DataTypes != null))
-    {
-      tmp389.DataTypes = this.DataTypes.DeepCopy();
-    }
-    if((Encodings != null))
-    {
-      tmp389.Encodings = this.Encodings.DeepCopy();
-    }
-    if((Compressors != null))
-    {
-      tmp389.Compressors = this.Compressors.DeepCopy();
-    }
-    return tmp389;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -150,13 +122,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list390 = await iprot.ReadListBeginAsync(cancellationToken);
-                Measurements = new List<string>(_list390.Count);
-                for(int _i391 = 0; _i391 < _list390.Count; ++_i391)
+                TList _list369 = await iprot.ReadListBeginAsync(cancellationToken);
+                Measurements = new List<string>(_list369.Count);
+                for(int _i370 = 0; _i370 < _list369.Count; ++_i370)
                 {
-                  string _elem392;
-                  _elem392 = await iprot.ReadStringAsync(cancellationToken);
-                  Measurements.Add(_elem392);
+                  string _elem371;
+                  _elem371 = await iprot.ReadStringAsync(cancellationToken);
+                  Measurements.Add(_elem371);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -171,13 +143,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list393 = await iprot.ReadListBeginAsync(cancellationToken);
-                DataTypes = new List<int>(_list393.Count);
-                for(int _i394 = 0; _i394 < _list393.Count; ++_i394)
+                TList _list372 = await iprot.ReadListBeginAsync(cancellationToken);
+                DataTypes = new List<int>(_list372.Count);
+                for(int _i373 = 0; _i373 < _list372.Count; ++_i373)
                 {
-                  int _elem395;
-                  _elem395 = await iprot.ReadI32Async(cancellationToken);
-                  DataTypes.Add(_elem395);
+                  int _elem374;
+                  _elem374 = await iprot.ReadI32Async(cancellationToken);
+                  DataTypes.Add(_elem374);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -192,13 +164,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list396 = await iprot.ReadListBeginAsync(cancellationToken);
-                Encodings = new List<int>(_list396.Count);
-                for(int _i397 = 0; _i397 < _list396.Count; ++_i397)
+                TList _list375 = await iprot.ReadListBeginAsync(cancellationToken);
+                Encodings = new List<int>(_list375.Count);
+                for(int _i376 = 0; _i376 < _list375.Count; ++_i376)
                 {
-                  int _elem398;
-                  _elem398 = await iprot.ReadI32Async(cancellationToken);
-                  Encodings.Add(_elem398);
+                  int _elem377;
+                  _elem377 = await iprot.ReadI32Async(cancellationToken);
+                  Encodings.Add(_elem377);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -213,13 +185,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list399 = await iprot.ReadListBeginAsync(cancellationToken);
-                Compressors = new List<int>(_list399.Count);
-                for(int _i400 = 0; _i400 < _list399.Count; ++_i400)
+                TList _list378 = await iprot.ReadListBeginAsync(cancellationToken);
+                Compressors = new List<int>(_list378.Count);
+                for(int _i379 = 0; _i379 < _list378.Count; ++_i379)
                 {
-                  int _elem401;
-                  _elem401 = await iprot.ReadI32Async(cancellationToken);
-                  Compressors.Add(_elem401);
+                  int _elem380;
+                  _elem380 = await iprot.ReadI32Async(cancellationToken);
+                  Compressors.Add(_elem380);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -311,9 +283,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Measurements.Count), cancellationToken);
-          foreach (string _iter402 in Measurements)
+          foreach (string _iter381 in Measurements)
           {
-            await oprot.WriteStringAsync(_iter402, cancellationToken);
+            await oprot.WriteStringAsync(_iter381, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -327,9 +299,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, DataTypes.Count), cancellationToken);
-          foreach (int _iter403 in DataTypes)
+          foreach (int _iter382 in DataTypes)
           {
-            await oprot.WriteI32Async(_iter403, cancellationToken);
+            await oprot.WriteI32Async(_iter382, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -343,9 +315,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Encodings.Count), cancellationToken);
-          foreach (int _iter404 in Encodings)
+          foreach (int _iter383 in Encodings)
           {
-            await oprot.WriteI32Async(_iter404, cancellationToken);
+            await oprot.WriteI32Async(_iter383, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -359,9 +331,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Compressors.Count), cancellationToken);
-          foreach (int _iter405 in Compressors)
+          foreach (int _iter384 in Compressors)
           {
-            await oprot.WriteI32Async(_iter405, cancellationToken);
+            await oprot.WriteI32Async(_iter384, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSBackupConfigurationResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSBackupConfigurationResp.cs
index 85290d5..5cdb21f 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSBackupConfigurationResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSBackupConfigurationResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -94,31 +94,6 @@
     this.Status = status;
   }
 
-  public TSBackupConfigurationResp DeepCopy()
-  {
-    var tmp425 = new TSBackupConfigurationResp();
-    if((Status != null))
-    {
-      tmp425.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    if(__isset.enableOperationSync)
-    {
-      tmp425.EnableOperationSync = this.EnableOperationSync;
-    }
-    tmp425.__isset.enableOperationSync = this.__isset.enableOperationSync;
-    if((SecondaryAddress != null) && __isset.secondaryAddress)
-    {
-      tmp425.SecondaryAddress = this.SecondaryAddress;
-    }
-    tmp425.__isset.secondaryAddress = this.__isset.secondaryAddress;
-    if(__isset.secondaryPort)
-    {
-      tmp425.SecondaryPort = this.SecondaryPort;
-    }
-    tmp425.__isset.secondaryPort = this.__isset.secondaryPort;
-    return tmp425;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCancelOperationReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCancelOperationReq.cs
index 929b5b5..6cd4f4a 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCancelOperationReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCancelOperationReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,14 +46,6 @@
     this.QueryId = queryId;
   }
 
-  public TSCancelOperationReq DeepCopy()
-  {
-    var tmp83 = new TSCancelOperationReq();
-    tmp83.SessionId = this.SessionId;
-    tmp83.QueryId = this.QueryId;
-    return tmp83;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCloseOperationReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCloseOperationReq.cs
index 4ae3a3d..c574d80 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCloseOperationReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCloseOperationReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -79,23 +79,6 @@
     this.SessionId = sessionId;
   }
 
-  public TSCloseOperationReq DeepCopy()
-  {
-    var tmp85 = new TSCloseOperationReq();
-    tmp85.SessionId = this.SessionId;
-    if(__isset.queryId)
-    {
-      tmp85.QueryId = this.QueryId;
-    }
-    tmp85.__isset.queryId = this.__isset.queryId;
-    if(__isset.statementId)
-    {
-      tmp85.StatementId = this.StatementId;
-    }
-    tmp85.__isset.statementId = this.__isset.statementId;
-    return tmp85;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCloseSessionReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCloseSessionReq.cs
index 673c913..e0c3a44 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCloseSessionReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCloseSessionReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -43,13 +43,6 @@
     this.SessionId = sessionId;
   }
 
-  public TSCloseSessionReq DeepCopy()
-  {
-    var tmp71 = new TSCloseSessionReq();
-    tmp71.SessionId = this.SessionId;
-    return tmp71;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfo.cs b/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfo.cs
index d1f5a7c..95c1a2e 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfo.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfo.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -56,22 +56,6 @@
     this.Type = type;
   }
 
-  public TSConnectionInfo DeepCopy()
-  {
-    var tmp427 = new TSConnectionInfo();
-    if((UserName != null))
-    {
-      tmp427.UserName = this.UserName;
-    }
-    tmp427.LogInTime = this.LogInTime;
-    if((ConnectionId != null))
-    {
-      tmp427.ConnectionId = this.ConnectionId;
-    }
-    tmp427.Type = this.Type;
-    return tmp427;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfoResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfoResp.cs
index a555348..e7cb0e6 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfoResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSConnectionInfoResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -43,16 +43,6 @@
     this.ConnectionInfoList = connectionInfoList;
   }
 
-  public TSConnectionInfoResp DeepCopy()
-  {
-    var tmp429 = new TSConnectionInfoResp();
-    if((ConnectionInfoList != null))
-    {
-      tmp429.ConnectionInfoList = this.ConnectionInfoList.DeepCopy();
-    }
-    return tmp429;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -75,14 +65,14 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list430 = await iprot.ReadListBeginAsync(cancellationToken);
-                ConnectionInfoList = new List<TSConnectionInfo>(_list430.Count);
-                for(int _i431 = 0; _i431 < _list430.Count; ++_i431)
+                TList _list412 = await iprot.ReadListBeginAsync(cancellationToken);
+                ConnectionInfoList = new List<TSConnectionInfo>(_list412.Count);
+                for(int _i413 = 0; _i413 < _list412.Count; ++_i413)
                 {
-                  TSConnectionInfo _elem432;
-                  _elem432 = new TSConnectionInfo();
-                  await _elem432.ReadAsync(iprot, cancellationToken);
-                  ConnectionInfoList.Add(_elem432);
+                  TSConnectionInfo _elem414;
+                  _elem414 = new TSConnectionInfo();
+                  await _elem414.ReadAsync(iprot, cancellationToken);
+                  ConnectionInfoList.Add(_elem414);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -129,9 +119,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Struct, ConnectionInfoList.Count), cancellationToken);
-          foreach (TSConnectionInfo _iter433 in ConnectionInfoList)
+          foreach (TSConnectionInfo _iter415 in ConnectionInfoList)
           {
-            await _iter433.WriteAsync(oprot, cancellationToken);
+            await _iter415.WriteAsync(oprot, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSConnectionType.cs b/src/Apache.IoTDB/Rpc/Generated/TSConnectionType.cs
index 7a23661..0e5435a 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSConnectionType.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSConnectionType.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -13,4 +13,5 @@
   THRIFT_BASED = 0,
   MQTT_BASED = 1,
   INTERNAL = 2,
+  REST_BASED = 3,
 }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCreateAlignedTimeseriesReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCreateAlignedTimeseriesReq.cs
index 7aa50fa..2ec2028 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCreateAlignedTimeseriesReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCreateAlignedTimeseriesReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -109,48 +109,6 @@
     this.Compressors = compressors;
   }
 
-  public TSCreateAlignedTimeseriesReq DeepCopy()
-  {
-    var tmp278 = new TSCreateAlignedTimeseriesReq();
-    tmp278.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp278.PrefixPath = this.PrefixPath;
-    }
-    if((Measurements != null))
-    {
-      tmp278.Measurements = this.Measurements.DeepCopy();
-    }
-    if((DataTypes != null))
-    {
-      tmp278.DataTypes = this.DataTypes.DeepCopy();
-    }
-    if((Encodings != null))
-    {
-      tmp278.Encodings = this.Encodings.DeepCopy();
-    }
-    if((Compressors != null))
-    {
-      tmp278.Compressors = this.Compressors.DeepCopy();
-    }
-    if((MeasurementAlias != null) && __isset.measurementAlias)
-    {
-      tmp278.MeasurementAlias = this.MeasurementAlias.DeepCopy();
-    }
-    tmp278.__isset.measurementAlias = this.__isset.measurementAlias;
-    if((TagsList != null) && __isset.tagsList)
-    {
-      tmp278.TagsList = this.TagsList.DeepCopy();
-    }
-    tmp278.__isset.tagsList = this.__isset.tagsList;
-    if((AttributesList != null) && __isset.attributesList)
-    {
-      tmp278.AttributesList = this.AttributesList.DeepCopy();
-    }
-    tmp278.__isset.attributesList = this.__isset.attributesList;
-    return tmp278;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -200,13 +158,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list279 = await iprot.ReadListBeginAsync(cancellationToken);
-                Measurements = new List<string>(_list279.Count);
-                for(int _i280 = 0; _i280 < _list279.Count; ++_i280)
+                TList _list250 = await iprot.ReadListBeginAsync(cancellationToken);
+                Measurements = new List<string>(_list250.Count);
+                for(int _i251 = 0; _i251 < _list250.Count; ++_i251)
                 {
-                  string _elem281;
-                  _elem281 = await iprot.ReadStringAsync(cancellationToken);
-                  Measurements.Add(_elem281);
+                  string _elem252;
+                  _elem252 = await iprot.ReadStringAsync(cancellationToken);
+                  Measurements.Add(_elem252);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -221,13 +179,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list282 = await iprot.ReadListBeginAsync(cancellationToken);
-                DataTypes = new List<int>(_list282.Count);
-                for(int _i283 = 0; _i283 < _list282.Count; ++_i283)
+                TList _list253 = await iprot.ReadListBeginAsync(cancellationToken);
+                DataTypes = new List<int>(_list253.Count);
+                for(int _i254 = 0; _i254 < _list253.Count; ++_i254)
                 {
-                  int _elem284;
-                  _elem284 = await iprot.ReadI32Async(cancellationToken);
-                  DataTypes.Add(_elem284);
+                  int _elem255;
+                  _elem255 = await iprot.ReadI32Async(cancellationToken);
+                  DataTypes.Add(_elem255);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -242,13 +200,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list285 = await iprot.ReadListBeginAsync(cancellationToken);
-                Encodings = new List<int>(_list285.Count);
-                for(int _i286 = 0; _i286 < _list285.Count; ++_i286)
+                TList _list256 = await iprot.ReadListBeginAsync(cancellationToken);
+                Encodings = new List<int>(_list256.Count);
+                for(int _i257 = 0; _i257 < _list256.Count; ++_i257)
                 {
-                  int _elem287;
-                  _elem287 = await iprot.ReadI32Async(cancellationToken);
-                  Encodings.Add(_elem287);
+                  int _elem258;
+                  _elem258 = await iprot.ReadI32Async(cancellationToken);
+                  Encodings.Add(_elem258);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -263,13 +221,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list288 = await iprot.ReadListBeginAsync(cancellationToken);
-                Compressors = new List<int>(_list288.Count);
-                for(int _i289 = 0; _i289 < _list288.Count; ++_i289)
+                TList _list259 = await iprot.ReadListBeginAsync(cancellationToken);
+                Compressors = new List<int>(_list259.Count);
+                for(int _i260 = 0; _i260 < _list259.Count; ++_i260)
                 {
-                  int _elem290;
-                  _elem290 = await iprot.ReadI32Async(cancellationToken);
-                  Compressors.Add(_elem290);
+                  int _elem261;
+                  _elem261 = await iprot.ReadI32Async(cancellationToken);
+                  Compressors.Add(_elem261);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -284,13 +242,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list291 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementAlias = new List<string>(_list291.Count);
-                for(int _i292 = 0; _i292 < _list291.Count; ++_i292)
+                TList _list262 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementAlias = new List<string>(_list262.Count);
+                for(int _i263 = 0; _i263 < _list262.Count; ++_i263)
                 {
-                  string _elem293;
-                  _elem293 = await iprot.ReadStringAsync(cancellationToken);
-                  MeasurementAlias.Add(_elem293);
+                  string _elem264;
+                  _elem264 = await iprot.ReadStringAsync(cancellationToken);
+                  MeasurementAlias.Add(_elem264);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -304,25 +262,25 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list294 = await iprot.ReadListBeginAsync(cancellationToken);
-                TagsList = new List<Dictionary<string, string>>(_list294.Count);
-                for(int _i295 = 0; _i295 < _list294.Count; ++_i295)
+                TList _list265 = await iprot.ReadListBeginAsync(cancellationToken);
+                TagsList = new List<Dictionary<string, string>>(_list265.Count);
+                for(int _i266 = 0; _i266 < _list265.Count; ++_i266)
                 {
-                  Dictionary<string, string> _elem296;
+                  Dictionary<string, string> _elem267;
                   {
-                    TMap _map297 = await iprot.ReadMapBeginAsync(cancellationToken);
-                    _elem296 = new Dictionary<string, string>(_map297.Count);
-                    for(int _i298 = 0; _i298 < _map297.Count; ++_i298)
+                    TMap _map268 = await iprot.ReadMapBeginAsync(cancellationToken);
+                    _elem267 = new Dictionary<string, string>(_map268.Count);
+                    for(int _i269 = 0; _i269 < _map268.Count; ++_i269)
                     {
-                      string _key299;
-                      string _val300;
-                      _key299 = await iprot.ReadStringAsync(cancellationToken);
-                      _val300 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem296[_key299] = _val300;
+                      string _key270;
+                      string _val271;
+                      _key270 = await iprot.ReadStringAsync(cancellationToken);
+                      _val271 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem267[_key270] = _val271;
                     }
                     await iprot.ReadMapEndAsync(cancellationToken);
                   }
-                  TagsList.Add(_elem296);
+                  TagsList.Add(_elem267);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -336,25 +294,25 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list301 = await iprot.ReadListBeginAsync(cancellationToken);
-                AttributesList = new List<Dictionary<string, string>>(_list301.Count);
-                for(int _i302 = 0; _i302 < _list301.Count; ++_i302)
+                TList _list272 = await iprot.ReadListBeginAsync(cancellationToken);
+                AttributesList = new List<Dictionary<string, string>>(_list272.Count);
+                for(int _i273 = 0; _i273 < _list272.Count; ++_i273)
                 {
-                  Dictionary<string, string> _elem303;
+                  Dictionary<string, string> _elem274;
                   {
-                    TMap _map304 = await iprot.ReadMapBeginAsync(cancellationToken);
-                    _elem303 = new Dictionary<string, string>(_map304.Count);
-                    for(int _i305 = 0; _i305 < _map304.Count; ++_i305)
+                    TMap _map275 = await iprot.ReadMapBeginAsync(cancellationToken);
+                    _elem274 = new Dictionary<string, string>(_map275.Count);
+                    for(int _i276 = 0; _i276 < _map275.Count; ++_i276)
                     {
-                      string _key306;
-                      string _val307;
-                      _key306 = await iprot.ReadStringAsync(cancellationToken);
-                      _val307 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem303[_key306] = _val307;
+                      string _key277;
+                      string _val278;
+                      _key277 = await iprot.ReadStringAsync(cancellationToken);
+                      _val278 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem274[_key277] = _val278;
                     }
                     await iprot.ReadMapEndAsync(cancellationToken);
                   }
-                  AttributesList.Add(_elem303);
+                  AttributesList.Add(_elem274);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -435,9 +393,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Measurements.Count), cancellationToken);
-          foreach (string _iter308 in Measurements)
+          foreach (string _iter279 in Measurements)
           {
-            await oprot.WriteStringAsync(_iter308, cancellationToken);
+            await oprot.WriteStringAsync(_iter279, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -451,9 +409,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, DataTypes.Count), cancellationToken);
-          foreach (int _iter309 in DataTypes)
+          foreach (int _iter280 in DataTypes)
           {
-            await oprot.WriteI32Async(_iter309, cancellationToken);
+            await oprot.WriteI32Async(_iter280, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -467,9 +425,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Encodings.Count), cancellationToken);
-          foreach (int _iter310 in Encodings)
+          foreach (int _iter281 in Encodings)
           {
-            await oprot.WriteI32Async(_iter310, cancellationToken);
+            await oprot.WriteI32Async(_iter281, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -483,9 +441,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Compressors.Count), cancellationToken);
-          foreach (int _iter311 in Compressors)
+          foreach (int _iter282 in Compressors)
           {
-            await oprot.WriteI32Async(_iter311, cancellationToken);
+            await oprot.WriteI32Async(_iter282, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -499,9 +457,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, MeasurementAlias.Count), cancellationToken);
-          foreach (string _iter312 in MeasurementAlias)
+          foreach (string _iter283 in MeasurementAlias)
           {
-            await oprot.WriteStringAsync(_iter312, cancellationToken);
+            await oprot.WriteStringAsync(_iter283, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -515,14 +473,14 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Map, TagsList.Count), cancellationToken);
-          foreach (Dictionary<string, string> _iter313 in TagsList)
+          foreach (Dictionary<string, string> _iter284 in TagsList)
           {
             {
-              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter313.Count), cancellationToken);
-              foreach (string _iter314 in _iter313.Keys)
+              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter284.Count), cancellationToken);
+              foreach (string _iter285 in _iter284.Keys)
               {
-                await oprot.WriteStringAsync(_iter314, cancellationToken);
-                await oprot.WriteStringAsync(_iter313[_iter314], cancellationToken);
+                await oprot.WriteStringAsync(_iter285, cancellationToken);
+                await oprot.WriteStringAsync(_iter284[_iter285], cancellationToken);
               }
               await oprot.WriteMapEndAsync(cancellationToken);
             }
@@ -539,14 +497,14 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Map, AttributesList.Count), cancellationToken);
-          foreach (Dictionary<string, string> _iter315 in AttributesList)
+          foreach (Dictionary<string, string> _iter286 in AttributesList)
           {
             {
-              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter315.Count), cancellationToken);
-              foreach (string _iter316 in _iter315.Keys)
+              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter286.Count), cancellationToken);
+              foreach (string _iter287 in _iter286.Keys)
               {
-                await oprot.WriteStringAsync(_iter316, cancellationToken);
-                await oprot.WriteStringAsync(_iter315[_iter316], cancellationToken);
+                await oprot.WriteStringAsync(_iter287, cancellationToken);
+                await oprot.WriteStringAsync(_iter286[_iter287], cancellationToken);
               }
               await oprot.WriteMapEndAsync(cancellationToken);
             }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCreateMultiTimeseriesReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCreateMultiTimeseriesReq.cs
index 64f9e17..4141f0e 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCreateMultiTimeseriesReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCreateMultiTimeseriesReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -121,49 +121,6 @@
     this.Compressors = compressors;
   }
 
-  public TSCreateMultiTimeseriesReq DeepCopy()
-  {
-    var tmp330 = new TSCreateMultiTimeseriesReq();
-    tmp330.SessionId = this.SessionId;
-    if((Paths != null))
-    {
-      tmp330.Paths = this.Paths.DeepCopy();
-    }
-    if((DataTypes != null))
-    {
-      tmp330.DataTypes = this.DataTypes.DeepCopy();
-    }
-    if((Encodings != null))
-    {
-      tmp330.Encodings = this.Encodings.DeepCopy();
-    }
-    if((Compressors != null))
-    {
-      tmp330.Compressors = this.Compressors.DeepCopy();
-    }
-    if((PropsList != null) && __isset.propsList)
-    {
-      tmp330.PropsList = this.PropsList.DeepCopy();
-    }
-    tmp330.__isset.propsList = this.__isset.propsList;
-    if((TagsList != null) && __isset.tagsList)
-    {
-      tmp330.TagsList = this.TagsList.DeepCopy();
-    }
-    tmp330.__isset.tagsList = this.__isset.tagsList;
-    if((AttributesList != null) && __isset.attributesList)
-    {
-      tmp330.AttributesList = this.AttributesList.DeepCopy();
-    }
-    tmp330.__isset.attributesList = this.__isset.attributesList;
-    if((MeasurementAliasList != null) && __isset.measurementAliasList)
-    {
-      tmp330.MeasurementAliasList = this.MeasurementAliasList.DeepCopy();
-    }
-    tmp330.__isset.measurementAliasList = this.__isset.measurementAliasList;
-    return tmp330;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -201,13 +158,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list331 = await iprot.ReadListBeginAsync(cancellationToken);
-                Paths = new List<string>(_list331.Count);
-                for(int _i332 = 0; _i332 < _list331.Count; ++_i332)
+                TList _list314 = await iprot.ReadListBeginAsync(cancellationToken);
+                Paths = new List<string>(_list314.Count);
+                for(int _i315 = 0; _i315 < _list314.Count; ++_i315)
                 {
-                  string _elem333;
-                  _elem333 = await iprot.ReadStringAsync(cancellationToken);
-                  Paths.Add(_elem333);
+                  string _elem316;
+                  _elem316 = await iprot.ReadStringAsync(cancellationToken);
+                  Paths.Add(_elem316);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -222,13 +179,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list334 = await iprot.ReadListBeginAsync(cancellationToken);
-                DataTypes = new List<int>(_list334.Count);
-                for(int _i335 = 0; _i335 < _list334.Count; ++_i335)
+                TList _list317 = await iprot.ReadListBeginAsync(cancellationToken);
+                DataTypes = new List<int>(_list317.Count);
+                for(int _i318 = 0; _i318 < _list317.Count; ++_i318)
                 {
-                  int _elem336;
-                  _elem336 = await iprot.ReadI32Async(cancellationToken);
-                  DataTypes.Add(_elem336);
+                  int _elem319;
+                  _elem319 = await iprot.ReadI32Async(cancellationToken);
+                  DataTypes.Add(_elem319);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -243,13 +200,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list337 = await iprot.ReadListBeginAsync(cancellationToken);
-                Encodings = new List<int>(_list337.Count);
-                for(int _i338 = 0; _i338 < _list337.Count; ++_i338)
+                TList _list320 = await iprot.ReadListBeginAsync(cancellationToken);
+                Encodings = new List<int>(_list320.Count);
+                for(int _i321 = 0; _i321 < _list320.Count; ++_i321)
                 {
-                  int _elem339;
-                  _elem339 = await iprot.ReadI32Async(cancellationToken);
-                  Encodings.Add(_elem339);
+                  int _elem322;
+                  _elem322 = await iprot.ReadI32Async(cancellationToken);
+                  Encodings.Add(_elem322);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -264,13 +221,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list340 = await iprot.ReadListBeginAsync(cancellationToken);
-                Compressors = new List<int>(_list340.Count);
-                for(int _i341 = 0; _i341 < _list340.Count; ++_i341)
+                TList _list323 = await iprot.ReadListBeginAsync(cancellationToken);
+                Compressors = new List<int>(_list323.Count);
+                for(int _i324 = 0; _i324 < _list323.Count; ++_i324)
                 {
-                  int _elem342;
-                  _elem342 = await iprot.ReadI32Async(cancellationToken);
-                  Compressors.Add(_elem342);
+                  int _elem325;
+                  _elem325 = await iprot.ReadI32Async(cancellationToken);
+                  Compressors.Add(_elem325);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -285,25 +242,25 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list343 = await iprot.ReadListBeginAsync(cancellationToken);
-                PropsList = new List<Dictionary<string, string>>(_list343.Count);
-                for(int _i344 = 0; _i344 < _list343.Count; ++_i344)
+                TList _list326 = await iprot.ReadListBeginAsync(cancellationToken);
+                PropsList = new List<Dictionary<string, string>>(_list326.Count);
+                for(int _i327 = 0; _i327 < _list326.Count; ++_i327)
                 {
-                  Dictionary<string, string> _elem345;
+                  Dictionary<string, string> _elem328;
                   {
-                    TMap _map346 = await iprot.ReadMapBeginAsync(cancellationToken);
-                    _elem345 = new Dictionary<string, string>(_map346.Count);
-                    for(int _i347 = 0; _i347 < _map346.Count; ++_i347)
+                    TMap _map329 = await iprot.ReadMapBeginAsync(cancellationToken);
+                    _elem328 = new Dictionary<string, string>(_map329.Count);
+                    for(int _i330 = 0; _i330 < _map329.Count; ++_i330)
                     {
-                      string _key348;
-                      string _val349;
-                      _key348 = await iprot.ReadStringAsync(cancellationToken);
-                      _val349 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem345[_key348] = _val349;
+                      string _key331;
+                      string _val332;
+                      _key331 = await iprot.ReadStringAsync(cancellationToken);
+                      _val332 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem328[_key331] = _val332;
                     }
                     await iprot.ReadMapEndAsync(cancellationToken);
                   }
-                  PropsList.Add(_elem345);
+                  PropsList.Add(_elem328);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -317,25 +274,25 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list350 = await iprot.ReadListBeginAsync(cancellationToken);
-                TagsList = new List<Dictionary<string, string>>(_list350.Count);
-                for(int _i351 = 0; _i351 < _list350.Count; ++_i351)
+                TList _list333 = await iprot.ReadListBeginAsync(cancellationToken);
+                TagsList = new List<Dictionary<string, string>>(_list333.Count);
+                for(int _i334 = 0; _i334 < _list333.Count; ++_i334)
                 {
-                  Dictionary<string, string> _elem352;
+                  Dictionary<string, string> _elem335;
                   {
-                    TMap _map353 = await iprot.ReadMapBeginAsync(cancellationToken);
-                    _elem352 = new Dictionary<string, string>(_map353.Count);
-                    for(int _i354 = 0; _i354 < _map353.Count; ++_i354)
+                    TMap _map336 = await iprot.ReadMapBeginAsync(cancellationToken);
+                    _elem335 = new Dictionary<string, string>(_map336.Count);
+                    for(int _i337 = 0; _i337 < _map336.Count; ++_i337)
                     {
-                      string _key355;
-                      string _val356;
-                      _key355 = await iprot.ReadStringAsync(cancellationToken);
-                      _val356 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem352[_key355] = _val356;
+                      string _key338;
+                      string _val339;
+                      _key338 = await iprot.ReadStringAsync(cancellationToken);
+                      _val339 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem335[_key338] = _val339;
                     }
                     await iprot.ReadMapEndAsync(cancellationToken);
                   }
-                  TagsList.Add(_elem352);
+                  TagsList.Add(_elem335);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -349,25 +306,25 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list357 = await iprot.ReadListBeginAsync(cancellationToken);
-                AttributesList = new List<Dictionary<string, string>>(_list357.Count);
-                for(int _i358 = 0; _i358 < _list357.Count; ++_i358)
+                TList _list340 = await iprot.ReadListBeginAsync(cancellationToken);
+                AttributesList = new List<Dictionary<string, string>>(_list340.Count);
+                for(int _i341 = 0; _i341 < _list340.Count; ++_i341)
                 {
-                  Dictionary<string, string> _elem359;
+                  Dictionary<string, string> _elem342;
                   {
-                    TMap _map360 = await iprot.ReadMapBeginAsync(cancellationToken);
-                    _elem359 = new Dictionary<string, string>(_map360.Count);
-                    for(int _i361 = 0; _i361 < _map360.Count; ++_i361)
+                    TMap _map343 = await iprot.ReadMapBeginAsync(cancellationToken);
+                    _elem342 = new Dictionary<string, string>(_map343.Count);
+                    for(int _i344 = 0; _i344 < _map343.Count; ++_i344)
                     {
-                      string _key362;
-                      string _val363;
-                      _key362 = await iprot.ReadStringAsync(cancellationToken);
-                      _val363 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem359[_key362] = _val363;
+                      string _key345;
+                      string _val346;
+                      _key345 = await iprot.ReadStringAsync(cancellationToken);
+                      _val346 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem342[_key345] = _val346;
                     }
                     await iprot.ReadMapEndAsync(cancellationToken);
                   }
-                  AttributesList.Add(_elem359);
+                  AttributesList.Add(_elem342);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -381,13 +338,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list364 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementAliasList = new List<string>(_list364.Count);
-                for(int _i365 = 0; _i365 < _list364.Count; ++_i365)
+                TList _list347 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementAliasList = new List<string>(_list347.Count);
+                for(int _i348 = 0; _i348 < _list347.Count; ++_i348)
                 {
-                  string _elem366;
-                  _elem366 = await iprot.ReadStringAsync(cancellationToken);
-                  MeasurementAliasList.Add(_elem366);
+                  string _elem349;
+                  _elem349 = await iprot.ReadStringAsync(cancellationToken);
+                  MeasurementAliasList.Add(_elem349);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -455,9 +412,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Paths.Count), cancellationToken);
-          foreach (string _iter367 in Paths)
+          foreach (string _iter350 in Paths)
           {
-            await oprot.WriteStringAsync(_iter367, cancellationToken);
+            await oprot.WriteStringAsync(_iter350, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -471,9 +428,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, DataTypes.Count), cancellationToken);
-          foreach (int _iter368 in DataTypes)
+          foreach (int _iter351 in DataTypes)
           {
-            await oprot.WriteI32Async(_iter368, cancellationToken);
+            await oprot.WriteI32Async(_iter351, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -487,9 +444,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Encodings.Count), cancellationToken);
-          foreach (int _iter369 in Encodings)
+          foreach (int _iter352 in Encodings)
           {
-            await oprot.WriteI32Async(_iter369, cancellationToken);
+            await oprot.WriteI32Async(_iter352, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -503,9 +460,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Compressors.Count), cancellationToken);
-          foreach (int _iter370 in Compressors)
+          foreach (int _iter353 in Compressors)
           {
-            await oprot.WriteI32Async(_iter370, cancellationToken);
+            await oprot.WriteI32Async(_iter353, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -519,14 +476,14 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Map, PropsList.Count), cancellationToken);
-          foreach (Dictionary<string, string> _iter371 in PropsList)
+          foreach (Dictionary<string, string> _iter354 in PropsList)
           {
             {
-              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter371.Count), cancellationToken);
-              foreach (string _iter372 in _iter371.Keys)
+              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter354.Count), cancellationToken);
+              foreach (string _iter355 in _iter354.Keys)
               {
-                await oprot.WriteStringAsync(_iter372, cancellationToken);
-                await oprot.WriteStringAsync(_iter371[_iter372], cancellationToken);
+                await oprot.WriteStringAsync(_iter355, cancellationToken);
+                await oprot.WriteStringAsync(_iter354[_iter355], cancellationToken);
               }
               await oprot.WriteMapEndAsync(cancellationToken);
             }
@@ -543,14 +500,14 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Map, TagsList.Count), cancellationToken);
-          foreach (Dictionary<string, string> _iter373 in TagsList)
+          foreach (Dictionary<string, string> _iter356 in TagsList)
           {
             {
-              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter373.Count), cancellationToken);
-              foreach (string _iter374 in _iter373.Keys)
+              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter356.Count), cancellationToken);
+              foreach (string _iter357 in _iter356.Keys)
               {
-                await oprot.WriteStringAsync(_iter374, cancellationToken);
-                await oprot.WriteStringAsync(_iter373[_iter374], cancellationToken);
+                await oprot.WriteStringAsync(_iter357, cancellationToken);
+                await oprot.WriteStringAsync(_iter356[_iter357], cancellationToken);
               }
               await oprot.WriteMapEndAsync(cancellationToken);
             }
@@ -567,14 +524,14 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Map, AttributesList.Count), cancellationToken);
-          foreach (Dictionary<string, string> _iter375 in AttributesList)
+          foreach (Dictionary<string, string> _iter358 in AttributesList)
           {
             {
-              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter375.Count), cancellationToken);
-              foreach (string _iter376 in _iter375.Keys)
+              await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, _iter358.Count), cancellationToken);
+              foreach (string _iter359 in _iter358.Keys)
               {
-                await oprot.WriteStringAsync(_iter376, cancellationToken);
-                await oprot.WriteStringAsync(_iter375[_iter376], cancellationToken);
+                await oprot.WriteStringAsync(_iter359, cancellationToken);
+                await oprot.WriteStringAsync(_iter358[_iter359], cancellationToken);
               }
               await oprot.WriteMapEndAsync(cancellationToken);
             }
@@ -591,9 +548,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, MeasurementAliasList.Count), cancellationToken);
-          foreach (string _iter377 in MeasurementAliasList)
+          foreach (string _iter360 in MeasurementAliasList)
           {
-            await oprot.WriteStringAsync(_iter377, cancellationToken);
+            await oprot.WriteStringAsync(_iter360, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCreateSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCreateSchemaTemplateReq.cs
index 7ad6092..8167de9 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCreateSchemaTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCreateSchemaTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -49,21 +49,6 @@
     this.SerializedTemplate = serializedTemplate;
   }
 
-  public TSCreateSchemaTemplateReq DeepCopy()
-  {
-    var tmp387 = new TSCreateSchemaTemplateReq();
-    tmp387.SessionId = this.SessionId;
-    if((Name != null))
-    {
-      tmp387.Name = this.Name;
-    }
-    if((SerializedTemplate != null))
-    {
-      tmp387.SerializedTemplate = this.SerializedTemplate.ToArray();
-    }
-    return tmp387;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSCreateTimeseriesReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSCreateTimeseriesReq.cs
index d2c2f7c..5614bc5 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSCreateTimeseriesReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSCreateTimeseriesReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -121,40 +121,6 @@
     this.Compressor = compressor;
   }
 
-  public TSCreateTimeseriesReq DeepCopy()
-  {
-    var tmp261 = new TSCreateTimeseriesReq();
-    tmp261.SessionId = this.SessionId;
-    if((Path != null))
-    {
-      tmp261.Path = this.Path;
-    }
-    tmp261.DataType = this.DataType;
-    tmp261.Encoding = this.Encoding;
-    tmp261.Compressor = this.Compressor;
-    if((Props != null) && __isset.props)
-    {
-      tmp261.Props = this.Props.DeepCopy();
-    }
-    tmp261.__isset.props = this.__isset.props;
-    if((Tags != null) && __isset.tags)
-    {
-      tmp261.Tags = this.Tags.DeepCopy();
-    }
-    tmp261.__isset.tags = this.__isset.tags;
-    if((Attributes != null) && __isset.attributes)
-    {
-      tmp261.Attributes = this.Attributes.DeepCopy();
-    }
-    tmp261.__isset.attributes = this.__isset.attributes;
-    if((MeasurementAlias != null) && __isset.measurementAlias)
-    {
-      tmp261.MeasurementAlias = this.MeasurementAlias;
-    }
-    tmp261.__isset.measurementAlias = this.__isset.measurementAlias;
-    return tmp261;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -236,15 +202,15 @@
             if (field.Type == TType.Map)
             {
               {
-                TMap _map262 = await iprot.ReadMapBeginAsync(cancellationToken);
-                Props = new Dictionary<string, string>(_map262.Count);
-                for(int _i263 = 0; _i263 < _map262.Count; ++_i263)
+                TMap _map234 = await iprot.ReadMapBeginAsync(cancellationToken);
+                Props = new Dictionary<string, string>(_map234.Count);
+                for(int _i235 = 0; _i235 < _map234.Count; ++_i235)
                 {
-                  string _key264;
-                  string _val265;
-                  _key264 = await iprot.ReadStringAsync(cancellationToken);
-                  _val265 = await iprot.ReadStringAsync(cancellationToken);
-                  Props[_key264] = _val265;
+                  string _key236;
+                  string _val237;
+                  _key236 = await iprot.ReadStringAsync(cancellationToken);
+                  _val237 = await iprot.ReadStringAsync(cancellationToken);
+                  Props[_key236] = _val237;
                 }
                 await iprot.ReadMapEndAsync(cancellationToken);
               }
@@ -258,15 +224,15 @@
             if (field.Type == TType.Map)
             {
               {
-                TMap _map266 = await iprot.ReadMapBeginAsync(cancellationToken);
-                Tags = new Dictionary<string, string>(_map266.Count);
-                for(int _i267 = 0; _i267 < _map266.Count; ++_i267)
+                TMap _map238 = await iprot.ReadMapBeginAsync(cancellationToken);
+                Tags = new Dictionary<string, string>(_map238.Count);
+                for(int _i239 = 0; _i239 < _map238.Count; ++_i239)
                 {
-                  string _key268;
-                  string _val269;
-                  _key268 = await iprot.ReadStringAsync(cancellationToken);
-                  _val269 = await iprot.ReadStringAsync(cancellationToken);
-                  Tags[_key268] = _val269;
+                  string _key240;
+                  string _val241;
+                  _key240 = await iprot.ReadStringAsync(cancellationToken);
+                  _val241 = await iprot.ReadStringAsync(cancellationToken);
+                  Tags[_key240] = _val241;
                 }
                 await iprot.ReadMapEndAsync(cancellationToken);
               }
@@ -280,15 +246,15 @@
             if (field.Type == TType.Map)
             {
               {
-                TMap _map270 = await iprot.ReadMapBeginAsync(cancellationToken);
-                Attributes = new Dictionary<string, string>(_map270.Count);
-                for(int _i271 = 0; _i271 < _map270.Count; ++_i271)
+                TMap _map242 = await iprot.ReadMapBeginAsync(cancellationToken);
+                Attributes = new Dictionary<string, string>(_map242.Count);
+                for(int _i243 = 0; _i243 < _map242.Count; ++_i243)
                 {
-                  string _key272;
-                  string _val273;
-                  _key272 = await iprot.ReadStringAsync(cancellationToken);
-                  _val273 = await iprot.ReadStringAsync(cancellationToken);
-                  Attributes[_key272] = _val273;
+                  string _key244;
+                  string _val245;
+                  _key244 = await iprot.ReadStringAsync(cancellationToken);
+                  _val245 = await iprot.ReadStringAsync(cancellationToken);
+                  Attributes[_key244] = _val245;
                 }
                 await iprot.ReadMapEndAsync(cancellationToken);
               }
@@ -393,10 +359,10 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, Props.Count), cancellationToken);
-          foreach (string _iter274 in Props.Keys)
+          foreach (string _iter246 in Props.Keys)
           {
-            await oprot.WriteStringAsync(_iter274, cancellationToken);
-            await oprot.WriteStringAsync(Props[_iter274], cancellationToken);
+            await oprot.WriteStringAsync(_iter246, cancellationToken);
+            await oprot.WriteStringAsync(Props[_iter246], cancellationToken);
           }
           await oprot.WriteMapEndAsync(cancellationToken);
         }
@@ -410,10 +376,10 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, Tags.Count), cancellationToken);
-          foreach (string _iter275 in Tags.Keys)
+          foreach (string _iter247 in Tags.Keys)
           {
-            await oprot.WriteStringAsync(_iter275, cancellationToken);
-            await oprot.WriteStringAsync(Tags[_iter275], cancellationToken);
+            await oprot.WriteStringAsync(_iter247, cancellationToken);
+            await oprot.WriteStringAsync(Tags[_iter247], cancellationToken);
           }
           await oprot.WriteMapEndAsync(cancellationToken);
         }
@@ -427,10 +393,10 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, Attributes.Count), cancellationToken);
-          foreach (string _iter276 in Attributes.Keys)
+          foreach (string _iter248 in Attributes.Keys)
           {
-            await oprot.WriteStringAsync(_iter276, cancellationToken);
-            await oprot.WriteStringAsync(Attributes[_iter276], cancellationToken);
+            await oprot.WriteStringAsync(_iter248, cancellationToken);
+            await oprot.WriteStringAsync(Attributes[_iter248], cancellationToken);
           }
           await oprot.WriteMapEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSDeleteDataReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSDeleteDataReq.cs
index c3e9977..db43550 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSDeleteDataReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSDeleteDataReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -52,19 +52,6 @@
     this.EndTime = endTime;
   }
 
-  public TSDeleteDataReq DeepCopy()
-  {
-    var tmp255 = new TSDeleteDataReq();
-    tmp255.SessionId = this.SessionId;
-    if((Paths != null))
-    {
-      tmp255.Paths = this.Paths.DeepCopy();
-    }
-    tmp255.StartTime = this.StartTime;
-    tmp255.EndTime = this.EndTime;
-    return tmp255;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -101,13 +88,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list256 = await iprot.ReadListBeginAsync(cancellationToken);
-                Paths = new List<string>(_list256.Count);
-                for(int _i257 = 0; _i257 < _list256.Count; ++_i257)
+                TList _list229 = await iprot.ReadListBeginAsync(cancellationToken);
+                Paths = new List<string>(_list229.Count);
+                for(int _i230 = 0; _i230 < _list229.Count; ++_i230)
                 {
-                  string _elem258;
-                  _elem258 = await iprot.ReadStringAsync(cancellationToken);
-                  Paths.Add(_elem258);
+                  string _elem231;
+                  _elem231 = await iprot.ReadStringAsync(cancellationToken);
+                  Paths.Add(_elem231);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -194,9 +181,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Paths.Count), cancellationToken);
-          foreach (string _iter259 in Paths)
+          foreach (string _iter232 in Paths)
           {
-            await oprot.WriteStringAsync(_iter259, cancellationToken);
+            await oprot.WriteStringAsync(_iter232, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSDropSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSDropSchemaTemplateReq.cs
index 7d8b01c..8454585 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSDropSchemaTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSDropSchemaTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,17 +46,6 @@
     this.TemplateName = templateName;
   }
 
-  public TSDropSchemaTemplateReq DeepCopy()
-  {
-    var tmp419 = new TSDropSchemaTemplateReq();
-    tmp419.SessionId = this.SessionId;
-    if((TemplateName != null))
-    {
-      tmp419.TemplateName = this.TemplateName;
-    }
-    return tmp419;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSExecuteBatchStatementReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSExecuteBatchStatementReq.cs
index c2b68a7..65339eb 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSExecuteBatchStatementReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSExecuteBatchStatementReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,17 +46,6 @@
     this.Statements = statements;
   }
 
-  public TSExecuteBatchStatementReq DeepCopy()
-  {
-    var tmp75 = new TSExecuteBatchStatementReq();
-    tmp75.SessionId = this.SessionId;
-    if((Statements != null))
-    {
-      tmp75.Statements = this.Statements.DeepCopy();
-    }
-    return tmp75;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -91,13 +80,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list76 = await iprot.ReadListBeginAsync(cancellationToken);
-                Statements = new List<string>(_list76.Count);
-                for(int _i77 = 0; _i77 < _list76.Count; ++_i77)
+                TList _list67 = await iprot.ReadListBeginAsync(cancellationToken);
+                Statements = new List<string>(_list67.Count);
+                for(int _i68 = 0; _i68 < _list67.Count; ++_i68)
                 {
-                  string _elem78;
-                  _elem78 = await iprot.ReadStringAsync(cancellationToken);
-                  Statements.Add(_elem78);
+                  string _elem69;
+                  _elem69 = await iprot.ReadStringAsync(cancellationToken);
+                  Statements.Add(_elem69);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -154,9 +143,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Statements.Count), cancellationToken);
-          foreach (string _iter79 in Statements)
+          foreach (string _iter70 in Statements)
           {
-            await oprot.WriteStringAsync(_iter79, cancellationToken);
+            await oprot.WriteStringAsync(_iter70, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementReq.cs
index c6bc462..c626b3e 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -115,38 +115,6 @@
     this.StatementId = statementId;
   }
 
-  public TSExecuteStatementReq DeepCopy()
-  {
-    var tmp73 = new TSExecuteStatementReq();
-    tmp73.SessionId = this.SessionId;
-    if((Statement != null))
-    {
-      tmp73.Statement = this.Statement;
-    }
-    tmp73.StatementId = this.StatementId;
-    if(__isset.fetchSize)
-    {
-      tmp73.FetchSize = this.FetchSize;
-    }
-    tmp73.__isset.fetchSize = this.__isset.fetchSize;
-    if(__isset.timeout)
-    {
-      tmp73.Timeout = this.Timeout;
-    }
-    tmp73.__isset.timeout = this.__isset.timeout;
-    if(__isset.enableRedirectQuery)
-    {
-      tmp73.EnableRedirectQuery = this.EnableRedirectQuery;
-    }
-    tmp73.__isset.enableRedirectQuery = this.__isset.enableRedirectQuery;
-    if(__isset.jdbcQuery)
-    {
-      tmp73.JdbcQuery = this.JdbcQuery;
-    }
-    tmp73.__isset.jdbcQuery = this.__isset.jdbcQuery;
-    return tmp73;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementResp.cs
index ae7c4a4..7a86333 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSExecuteStatementResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -244,81 +244,6 @@
     this.Status = status;
   }
 
-  public TSExecuteStatementResp DeepCopy()
-  {
-    var tmp30 = new TSExecuteStatementResp();
-    if((Status != null))
-    {
-      tmp30.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    if(__isset.queryId)
-    {
-      tmp30.QueryId = this.QueryId;
-    }
-    tmp30.__isset.queryId = this.__isset.queryId;
-    if((Columns != null) && __isset.columns)
-    {
-      tmp30.Columns = this.Columns.DeepCopy();
-    }
-    tmp30.__isset.columns = this.__isset.columns;
-    if((OperationType != null) && __isset.operationType)
-    {
-      tmp30.OperationType = this.OperationType;
-    }
-    tmp30.__isset.operationType = this.__isset.operationType;
-    if(__isset.ignoreTimeStamp)
-    {
-      tmp30.IgnoreTimeStamp = this.IgnoreTimeStamp;
-    }
-    tmp30.__isset.ignoreTimeStamp = this.__isset.ignoreTimeStamp;
-    if((DataTypeList != null) && __isset.dataTypeList)
-    {
-      tmp30.DataTypeList = this.DataTypeList.DeepCopy();
-    }
-    tmp30.__isset.dataTypeList = this.__isset.dataTypeList;
-    if((QueryDataSet != null) && __isset.queryDataSet)
-    {
-      tmp30.QueryDataSet = (TSQueryDataSet)this.QueryDataSet.DeepCopy();
-    }
-    tmp30.__isset.queryDataSet = this.__isset.queryDataSet;
-    if((NonAlignQueryDataSet != null) && __isset.nonAlignQueryDataSet)
-    {
-      tmp30.NonAlignQueryDataSet = (TSQueryNonAlignDataSet)this.NonAlignQueryDataSet.DeepCopy();
-    }
-    tmp30.__isset.nonAlignQueryDataSet = this.__isset.nonAlignQueryDataSet;
-    if((ColumnNameIndexMap != null) && __isset.columnNameIndexMap)
-    {
-      tmp30.ColumnNameIndexMap = this.ColumnNameIndexMap.DeepCopy();
-    }
-    tmp30.__isset.columnNameIndexMap = this.__isset.columnNameIndexMap;
-    if((SgColumns != null) && __isset.sgColumns)
-    {
-      tmp30.SgColumns = this.SgColumns.DeepCopy();
-    }
-    tmp30.__isset.sgColumns = this.__isset.sgColumns;
-    if((AliasColumns != null) && __isset.aliasColumns)
-    {
-      tmp30.AliasColumns = this.AliasColumns.DeepCopy();
-    }
-    tmp30.__isset.aliasColumns = this.__isset.aliasColumns;
-    if((TracingInfo != null) && __isset.tracingInfo)
-    {
-      tmp30.TracingInfo = (TSTracingInfo)this.TracingInfo.DeepCopy();
-    }
-    tmp30.__isset.tracingInfo = this.__isset.tracingInfo;
-    if((QueryResult != null) && __isset.queryResult)
-    {
-      tmp30.QueryResult = this.QueryResult.DeepCopy();
-    }
-    tmp30.__isset.queryResult = this.__isset.queryResult;
-    if(__isset.moreData)
-    {
-      tmp30.MoreData = this.MoreData;
-    }
-    tmp30.__isset.moreData = this.__isset.moreData;
-    return tmp30;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -363,13 +288,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list31 = await iprot.ReadListBeginAsync(cancellationToken);
-                Columns = new List<string>(_list31.Count);
-                for(int _i32 = 0; _i32 < _list31.Count; ++_i32)
+                TList _list27 = await iprot.ReadListBeginAsync(cancellationToken);
+                Columns = new List<string>(_list27.Count);
+                for(int _i28 = 0; _i28 < _list27.Count; ++_i28)
                 {
-                  string _elem33;
-                  _elem33 = await iprot.ReadStringAsync(cancellationToken);
-                  Columns.Add(_elem33);
+                  string _elem29;
+                  _elem29 = await iprot.ReadStringAsync(cancellationToken);
+                  Columns.Add(_elem29);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -403,13 +328,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list34 = await iprot.ReadListBeginAsync(cancellationToken);
-                DataTypeList = new List<string>(_list34.Count);
-                for(int _i35 = 0; _i35 < _list34.Count; ++_i35)
+                TList _list30 = await iprot.ReadListBeginAsync(cancellationToken);
+                DataTypeList = new List<string>(_list30.Count);
+                for(int _i31 = 0; _i31 < _list30.Count; ++_i31)
                 {
-                  string _elem36;
-                  _elem36 = await iprot.ReadStringAsync(cancellationToken);
-                  DataTypeList.Add(_elem36);
+                  string _elem32;
+                  _elem32 = await iprot.ReadStringAsync(cancellationToken);
+                  DataTypeList.Add(_elem32);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -445,15 +370,15 @@
             if (field.Type == TType.Map)
             {
               {
-                TMap _map37 = await iprot.ReadMapBeginAsync(cancellationToken);
-                ColumnNameIndexMap = new Dictionary<string, int>(_map37.Count);
-                for(int _i38 = 0; _i38 < _map37.Count; ++_i38)
+                TMap _map33 = await iprot.ReadMapBeginAsync(cancellationToken);
+                ColumnNameIndexMap = new Dictionary<string, int>(_map33.Count);
+                for(int _i34 = 0; _i34 < _map33.Count; ++_i34)
                 {
-                  string _key39;
-                  int _val40;
-                  _key39 = await iprot.ReadStringAsync(cancellationToken);
-                  _val40 = await iprot.ReadI32Async(cancellationToken);
-                  ColumnNameIndexMap[_key39] = _val40;
+                  string _key35;
+                  int _val36;
+                  _key35 = await iprot.ReadStringAsync(cancellationToken);
+                  _val36 = await iprot.ReadI32Async(cancellationToken);
+                  ColumnNameIndexMap[_key35] = _val36;
                 }
                 await iprot.ReadMapEndAsync(cancellationToken);
               }
@@ -467,13 +392,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list41 = await iprot.ReadListBeginAsync(cancellationToken);
-                SgColumns = new List<string>(_list41.Count);
-                for(int _i42 = 0; _i42 < _list41.Count; ++_i42)
+                TList _list37 = await iprot.ReadListBeginAsync(cancellationToken);
+                SgColumns = new List<string>(_list37.Count);
+                for(int _i38 = 0; _i38 < _list37.Count; ++_i38)
                 {
-                  string _elem43;
-                  _elem43 = await iprot.ReadStringAsync(cancellationToken);
-                  SgColumns.Add(_elem43);
+                  string _elem39;
+                  _elem39 = await iprot.ReadStringAsync(cancellationToken);
+                  SgColumns.Add(_elem39);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -487,13 +412,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list44 = await iprot.ReadListBeginAsync(cancellationToken);
-                AliasColumns = new List<sbyte>(_list44.Count);
-                for(int _i45 = 0; _i45 < _list44.Count; ++_i45)
+                TList _list40 = await iprot.ReadListBeginAsync(cancellationToken);
+                AliasColumns = new List<sbyte>(_list40.Count);
+                for(int _i41 = 0; _i41 < _list40.Count; ++_i41)
                 {
-                  sbyte _elem46;
-                  _elem46 = await iprot.ReadByteAsync(cancellationToken);
-                  AliasColumns.Add(_elem46);
+                  sbyte _elem42;
+                  _elem42 = await iprot.ReadByteAsync(cancellationToken);
+                  AliasColumns.Add(_elem42);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -518,13 +443,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list47 = await iprot.ReadListBeginAsync(cancellationToken);
-                QueryResult = new List<byte[]>(_list47.Count);
-                for(int _i48 = 0; _i48 < _list47.Count; ++_i48)
+                TList _list43 = await iprot.ReadListBeginAsync(cancellationToken);
+                QueryResult = new List<byte[]>(_list43.Count);
+                for(int _i44 = 0; _i44 < _list43.Count; ++_i44)
                 {
-                  byte[] _elem49;
-                  _elem49 = await iprot.ReadBinaryAsync(cancellationToken);
-                  QueryResult.Add(_elem49);
+                  byte[] _elem45;
+                  _elem45 = await iprot.ReadBinaryAsync(cancellationToken);
+                  QueryResult.Add(_elem45);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -598,9 +523,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Columns.Count), cancellationToken);
-          foreach (string _iter50 in Columns)
+          foreach (string _iter46 in Columns)
           {
-            await oprot.WriteStringAsync(_iter50, cancellationToken);
+            await oprot.WriteStringAsync(_iter46, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -632,9 +557,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, DataTypeList.Count), cancellationToken);
-          foreach (string _iter51 in DataTypeList)
+          foreach (string _iter47 in DataTypeList)
           {
-            await oprot.WriteStringAsync(_iter51, cancellationToken);
+            await oprot.WriteStringAsync(_iter47, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -666,10 +591,10 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.I32, ColumnNameIndexMap.Count), cancellationToken);
-          foreach (string _iter52 in ColumnNameIndexMap.Keys)
+          foreach (string _iter48 in ColumnNameIndexMap.Keys)
           {
-            await oprot.WriteStringAsync(_iter52, cancellationToken);
-            await oprot.WriteI32Async(ColumnNameIndexMap[_iter52], cancellationToken);
+            await oprot.WriteStringAsync(_iter48, cancellationToken);
+            await oprot.WriteI32Async(ColumnNameIndexMap[_iter48], cancellationToken);
           }
           await oprot.WriteMapEndAsync(cancellationToken);
         }
@@ -683,9 +608,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, SgColumns.Count), cancellationToken);
-          foreach (string _iter53 in SgColumns)
+          foreach (string _iter49 in SgColumns)
           {
-            await oprot.WriteStringAsync(_iter53, cancellationToken);
+            await oprot.WriteStringAsync(_iter49, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -699,9 +624,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Byte, AliasColumns.Count), cancellationToken);
-          foreach (sbyte _iter54 in AliasColumns)
+          foreach (sbyte _iter50 in AliasColumns)
           {
-            await oprot.WriteByteAsync(_iter54, cancellationToken);
+            await oprot.WriteByteAsync(_iter50, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -724,9 +649,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, QueryResult.Count), cancellationToken);
-          foreach (byte[] _iter55 in QueryResult)
+          foreach (byte[] _iter51 in QueryResult)
           {
-            await oprot.WriteBinaryAsync(_iter55, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter51, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSFastLastDataQueryForOneDeviceReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSFastLastDataQueryForOneDeviceReq.cs
new file mode 100644
index 0000000..b1ce861
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSFastLastDataQueryForOneDeviceReq.cs
@@ -0,0 +1,528 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSFastLastDataQueryForOneDeviceReq : TBase
+{
+  private int _fetchSize;
+  private bool _enableRedirectQuery;
+  private bool _jdbcQuery;
+  private long _timeout;
+  private bool _legalPathNodes;
+
+  public long SessionId { get; set; }
+
+  public string Db { get; set; }
+
+  public string DeviceId { get; set; }
+
+  public List<string> Sensors { get; set; }
+
+  public int FetchSize
+  {
+    get
+    {
+      return _fetchSize;
+    }
+    set
+    {
+      __isset.fetchSize = true;
+      this._fetchSize = value;
+    }
+  }
+
+  public long StatementId { get; set; }
+
+  public bool EnableRedirectQuery
+  {
+    get
+    {
+      return _enableRedirectQuery;
+    }
+    set
+    {
+      __isset.enableRedirectQuery = true;
+      this._enableRedirectQuery = value;
+    }
+  }
+
+  public bool JdbcQuery
+  {
+    get
+    {
+      return _jdbcQuery;
+    }
+    set
+    {
+      __isset.jdbcQuery = true;
+      this._jdbcQuery = value;
+    }
+  }
+
+  public long Timeout
+  {
+    get
+    {
+      return _timeout;
+    }
+    set
+    {
+      __isset.timeout = true;
+      this._timeout = value;
+    }
+  }
+
+  public bool LegalPathNodes
+  {
+    get
+    {
+      return _legalPathNodes;
+    }
+    set
+    {
+      __isset.legalPathNodes = true;
+      this._legalPathNodes = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool fetchSize;
+    public bool enableRedirectQuery;
+    public bool jdbcQuery;
+    public bool timeout;
+    public bool legalPathNodes;
+  }
+
+  public TSFastLastDataQueryForOneDeviceReq()
+  {
+  }
+
+  public TSFastLastDataQueryForOneDeviceReq(long sessionId, string db, string deviceId, List<string> sensors, long statementId) : this()
+  {
+    this.SessionId = sessionId;
+    this.Db = db;
+    this.DeviceId = deviceId;
+    this.Sensors = sensors;
+    this.StatementId = statementId;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_sessionId = false;
+      bool isset_db = false;
+      bool isset_deviceId = false;
+      bool isset_sensors = false;
+      bool isset_statementId = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              SessionId = await iprot.ReadI64Async(cancellationToken);
+              isset_sessionId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.String)
+            {
+              Db = await iprot.ReadStringAsync(cancellationToken);
+              isset_db = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.String)
+            {
+              DeviceId = await iprot.ReadStringAsync(cancellationToken);
+              isset_deviceId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 4:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list299 = await iprot.ReadListBeginAsync(cancellationToken);
+                Sensors = new List<string>(_list299.Count);
+                for(int _i300 = 0; _i300 < _list299.Count; ++_i300)
+                {
+                  string _elem301;
+                  _elem301 = await iprot.ReadStringAsync(cancellationToken);
+                  Sensors.Add(_elem301);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_sensors = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 5:
+            if (field.Type == TType.I32)
+            {
+              FetchSize = await iprot.ReadI32Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 6:
+            if (field.Type == TType.I64)
+            {
+              StatementId = await iprot.ReadI64Async(cancellationToken);
+              isset_statementId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 7:
+            if (field.Type == TType.Bool)
+            {
+              EnableRedirectQuery = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 8:
+            if (field.Type == TType.Bool)
+            {
+              JdbcQuery = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 9:
+            if (field.Type == TType.I64)
+            {
+              Timeout = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 10:
+            if (field.Type == TType.Bool)
+            {
+              LegalPathNodes = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_sessionId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_db)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_deviceId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_sensors)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_statementId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSFastLastDataQueryForOneDeviceReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "sessionId";
+      field.Type = TType.I64;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(SessionId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Db != null))
+      {
+        field.Name = "db";
+        field.Type = TType.String;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Db, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((DeviceId != null))
+      {
+        field.Name = "deviceId";
+        field.Type = TType.String;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(DeviceId, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Sensors != null))
+      {
+        field.Name = "sensors";
+        field.Type = TType.List;
+        field.ID = 4;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, Sensors.Count), cancellationToken);
+          foreach (string _iter302 in Sensors)
+          {
+            await oprot.WriteStringAsync(_iter302, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.fetchSize)
+      {
+        field.Name = "fetchSize";
+        field.Type = TType.I32;
+        field.ID = 5;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI32Async(FetchSize, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      field.Name = "statementId";
+      field.Type = TType.I64;
+      field.ID = 6;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(StatementId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if(__isset.enableRedirectQuery)
+      {
+        field.Name = "enableRedirectQuery";
+        field.Type = TType.Bool;
+        field.ID = 7;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(EnableRedirectQuery, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.jdbcQuery)
+      {
+        field.Name = "jdbcQuery";
+        field.Type = TType.Bool;
+        field.ID = 8;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(JdbcQuery, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.timeout)
+      {
+        field.Name = "timeout";
+        field.Type = TType.I64;
+        field.ID = 9;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(Timeout, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.legalPathNodes)
+      {
+        field.Name = "legalPathNodes";
+        field.Type = TType.Bool;
+        field.ID = 10;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(LegalPathNodes, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSFastLastDataQueryForOneDeviceReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(SessionId, other.SessionId)
+      && System.Object.Equals(Db, other.Db)
+      && System.Object.Equals(DeviceId, other.DeviceId)
+      && TCollections.Equals(Sensors, other.Sensors)
+      && ((__isset.fetchSize == other.__isset.fetchSize) && ((!__isset.fetchSize) || (System.Object.Equals(FetchSize, other.FetchSize))))
+      && System.Object.Equals(StatementId, other.StatementId)
+      && ((__isset.enableRedirectQuery == other.__isset.enableRedirectQuery) && ((!__isset.enableRedirectQuery) || (System.Object.Equals(EnableRedirectQuery, other.EnableRedirectQuery))))
+      && ((__isset.jdbcQuery == other.__isset.jdbcQuery) && ((!__isset.jdbcQuery) || (System.Object.Equals(JdbcQuery, other.JdbcQuery))))
+      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))))
+      && ((__isset.legalPathNodes == other.__isset.legalPathNodes) && ((!__isset.legalPathNodes) || (System.Object.Equals(LegalPathNodes, other.LegalPathNodes))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + SessionId.GetHashCode();
+      if((Db != null))
+      {
+        hashcode = (hashcode * 397) + Db.GetHashCode();
+      }
+      if((DeviceId != null))
+      {
+        hashcode = (hashcode * 397) + DeviceId.GetHashCode();
+      }
+      if((Sensors != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Sensors);
+      }
+      if(__isset.fetchSize)
+      {
+        hashcode = (hashcode * 397) + FetchSize.GetHashCode();
+      }
+      hashcode = (hashcode * 397) + StatementId.GetHashCode();
+      if(__isset.enableRedirectQuery)
+      {
+        hashcode = (hashcode * 397) + EnableRedirectQuery.GetHashCode();
+      }
+      if(__isset.jdbcQuery)
+      {
+        hashcode = (hashcode * 397) + JdbcQuery.GetHashCode();
+      }
+      if(__isset.timeout)
+      {
+        hashcode = (hashcode * 397) + Timeout.GetHashCode();
+      }
+      if(__isset.legalPathNodes)
+      {
+        hashcode = (hashcode * 397) + LegalPathNodes.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSFastLastDataQueryForOneDeviceReq(");
+    sb.Append(", SessionId: ");
+    SessionId.ToString(sb);
+    if((Db != null))
+    {
+      sb.Append(", Db: ");
+      Db.ToString(sb);
+    }
+    if((DeviceId != null))
+    {
+      sb.Append(", DeviceId: ");
+      DeviceId.ToString(sb);
+    }
+    if((Sensors != null))
+    {
+      sb.Append(", Sensors: ");
+      Sensors.ToString(sb);
+    }
+    if(__isset.fetchSize)
+    {
+      sb.Append(", FetchSize: ");
+      FetchSize.ToString(sb);
+    }
+    sb.Append(", StatementId: ");
+    StatementId.ToString(sb);
+    if(__isset.enableRedirectQuery)
+    {
+      sb.Append(", EnableRedirectQuery: ");
+      EnableRedirectQuery.ToString(sb);
+    }
+    if(__isset.jdbcQuery)
+    {
+      sb.Append(", JdbcQuery: ");
+      JdbcQuery.ToString(sb);
+    }
+    if(__isset.timeout)
+    {
+      sb.Append(", Timeout: ");
+      Timeout.ToString(sb);
+    }
+    if(__isset.legalPathNodes)
+    {
+      sb.Append(", LegalPathNodes: ");
+      LegalPathNodes.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataReq.cs
index 4b998c3..630fab7 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -67,22 +67,6 @@
     this.Type = type;
   }
 
-  public TSFetchMetadataReq DeepCopy()
-  {
-    var tmp101 = new TSFetchMetadataReq();
-    tmp101.SessionId = this.SessionId;
-    if((Type != null))
-    {
-      tmp101.Type = this.Type;
-    }
-    if((ColumnPath != null) && __isset.columnPath)
-    {
-      tmp101.ColumnPath = this.ColumnPath;
-    }
-    tmp101.__isset.columnPath = this.__isset.columnPath;
-    return tmp101;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataResp.cs
index 751f6d9..b6df764 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSFetchMetadataResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -94,31 +94,6 @@
     this.Status = status;
   }
 
-  public TSFetchMetadataResp DeepCopy()
-  {
-    var tmp95 = new TSFetchMetadataResp();
-    if((Status != null))
-    {
-      tmp95.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    if((MetadataInJson != null) && __isset.metadataInJson)
-    {
-      tmp95.MetadataInJson = this.MetadataInJson;
-    }
-    tmp95.__isset.metadataInJson = this.__isset.metadataInJson;
-    if((ColumnsList != null) && __isset.columnsList)
-    {
-      tmp95.ColumnsList = this.ColumnsList.DeepCopy();
-    }
-    tmp95.__isset.columnsList = this.__isset.columnsList;
-    if((DataType != null) && __isset.dataType)
-    {
-      tmp95.DataType = this.DataType;
-    }
-    tmp95.__isset.dataType = this.__isset.dataType;
-    return tmp95;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -163,13 +138,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list96 = await iprot.ReadListBeginAsync(cancellationToken);
-                ColumnsList = new List<string>(_list96.Count);
-                for(int _i97 = 0; _i97 < _list96.Count; ++_i97)
+                TList _list81 = await iprot.ReadListBeginAsync(cancellationToken);
+                ColumnsList = new List<string>(_list81.Count);
+                for(int _i82 = 0; _i82 < _list81.Count; ++_i82)
                 {
-                  string _elem98;
-                  _elem98 = await iprot.ReadStringAsync(cancellationToken);
-                  ColumnsList.Add(_elem98);
+                  string _elem83;
+                  _elem83 = await iprot.ReadStringAsync(cancellationToken);
+                  ColumnsList.Add(_elem83);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -243,9 +218,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ColumnsList.Count), cancellationToken);
-          foreach (string _iter99 in ColumnsList)
+          foreach (string _iter84 in ColumnsList)
           {
-            await oprot.WriteStringAsync(_iter99, cancellationToken);
+            await oprot.WriteStringAsync(_iter84, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsReq.cs
index a361ca0..828f47d 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -76,25 +76,6 @@
     this.IsAlign = isAlign;
   }
 
-  public TSFetchResultsReq DeepCopy()
-  {
-    var tmp87 = new TSFetchResultsReq();
-    tmp87.SessionId = this.SessionId;
-    if((Statement != null))
-    {
-      tmp87.Statement = this.Statement;
-    }
-    tmp87.FetchSize = this.FetchSize;
-    tmp87.QueryId = this.QueryId;
-    tmp87.IsAlign = this.IsAlign;
-    if(__isset.timeout)
-    {
-      tmp87.Timeout = this.Timeout;
-    }
-    tmp87.__isset.timeout = this.__isset.timeout;
-    return tmp87;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsResp.cs
index 5da2723..657cc6a 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSFetchResultsResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -115,38 +115,6 @@
     this.IsAlign = isAlign;
   }
 
-  public TSFetchResultsResp DeepCopy()
-  {
-    var tmp89 = new TSFetchResultsResp();
-    if((Status != null))
-    {
-      tmp89.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    tmp89.HasResultSet = this.HasResultSet;
-    tmp89.IsAlign = this.IsAlign;
-    if((QueryDataSet != null) && __isset.queryDataSet)
-    {
-      tmp89.QueryDataSet = (TSQueryDataSet)this.QueryDataSet.DeepCopy();
-    }
-    tmp89.__isset.queryDataSet = this.__isset.queryDataSet;
-    if((NonAlignQueryDataSet != null) && __isset.nonAlignQueryDataSet)
-    {
-      tmp89.NonAlignQueryDataSet = (TSQueryNonAlignDataSet)this.NonAlignQueryDataSet.DeepCopy();
-    }
-    tmp89.__isset.nonAlignQueryDataSet = this.__isset.nonAlignQueryDataSet;
-    if((QueryResult != null) && __isset.queryResult)
-    {
-      tmp89.QueryResult = this.QueryResult.DeepCopy();
-    }
-    tmp89.__isset.queryResult = this.__isset.queryResult;
-    if(__isset.moreData)
-    {
-      tmp89.MoreData = this.MoreData;
-    }
-    tmp89.__isset.moreData = this.__isset.moreData;
-    return tmp89;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -227,13 +195,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list90 = await iprot.ReadListBeginAsync(cancellationToken);
-                QueryResult = new List<byte[]>(_list90.Count);
-                for(int _i91 = 0; _i91 < _list90.Count; ++_i91)
+                TList _list76 = await iprot.ReadListBeginAsync(cancellationToken);
+                QueryResult = new List<byte[]>(_list76.Count);
+                for(int _i77 = 0; _i77 < _list76.Count; ++_i77)
                 {
-                  byte[] _elem92;
-                  _elem92 = await iprot.ReadBinaryAsync(cancellationToken);
-                  QueryResult.Add(_elem92);
+                  byte[] _elem78;
+                  _elem78 = await iprot.ReadBinaryAsync(cancellationToken);
+                  QueryResult.Add(_elem78);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -336,9 +304,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, QueryResult.Count), cancellationToken);
-          foreach (byte[] _iter93 in QueryResult)
+          foreach (byte[] _iter79 in QueryResult)
           {
-            await oprot.WriteBinaryAsync(_iter93, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter79, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSGetOperationStatusReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSGetOperationStatusReq.cs
index 7f35755..7369e01 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSGetOperationStatusReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSGetOperationStatusReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,14 +46,6 @@
     this.QueryId = queryId;
   }
 
-  public TSGetOperationStatusReq DeepCopy()
-  {
-    var tmp81 = new TSGetOperationStatusReq();
-    tmp81.SessionId = this.SessionId;
-    tmp81.QueryId = this.QueryId;
-    return tmp81;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSGetTimeZoneResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSGetTimeZoneResp.cs
index 4dca3ad..e10c613 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSGetTimeZoneResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSGetTimeZoneResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,20 +46,6 @@
     this.TimeZone = timeZone;
   }
 
-  public TSGetTimeZoneResp DeepCopy()
-  {
-    var tmp103 = new TSGetTimeZoneResp();
-    if((Status != null))
-    {
-      tmp103.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    if((TimeZone != null))
-    {
-      tmp103.TimeZone = this.TimeZone;
-    }
-    return tmp103;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSGroupByQueryIntervalReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSGroupByQueryIntervalReq.cs
new file mode 100644
index 0000000..5f43094
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSGroupByQueryIntervalReq.cs
@@ -0,0 +1,579 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSGroupByQueryIntervalReq : TBase
+{
+  private string _database;
+  private long _startTime;
+  private long _endTime;
+  private long _interval;
+  private int _fetchSize;
+  private long _timeout;
+
+  public long SessionId { get; set; }
+
+  public long StatementId { get; set; }
+
+  public string Device { get; set; }
+
+  public string Measurement { get; set; }
+
+  public int DataType { get; set; }
+
+  /// <summary>
+  /// 
+  /// <seealso cref="global::.TAggregationType"/>
+  /// </summary>
+  public TAggregationType AggregationType { get; set; }
+
+  public string Database
+  {
+    get
+    {
+      return _database;
+    }
+    set
+    {
+      __isset.database = true;
+      this._database = value;
+    }
+  }
+
+  public long StartTime
+  {
+    get
+    {
+      return _startTime;
+    }
+    set
+    {
+      __isset.startTime = true;
+      this._startTime = value;
+    }
+  }
+
+  public long EndTime
+  {
+    get
+    {
+      return _endTime;
+    }
+    set
+    {
+      __isset.endTime = true;
+      this._endTime = value;
+    }
+  }
+
+  public long Interval
+  {
+    get
+    {
+      return _interval;
+    }
+    set
+    {
+      __isset.interval = true;
+      this._interval = value;
+    }
+  }
+
+  public int FetchSize
+  {
+    get
+    {
+      return _fetchSize;
+    }
+    set
+    {
+      __isset.fetchSize = true;
+      this._fetchSize = value;
+    }
+  }
+
+  public long Timeout
+  {
+    get
+    {
+      return _timeout;
+    }
+    set
+    {
+      __isset.timeout = true;
+      this._timeout = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool database;
+    public bool startTime;
+    public bool endTime;
+    public bool interval;
+    public bool fetchSize;
+    public bool timeout;
+  }
+
+  public TSGroupByQueryIntervalReq()
+  {
+  }
+
+  public TSGroupByQueryIntervalReq(long sessionId, long statementId, string device, string measurement, int dataType, TAggregationType aggregationType) : this()
+  {
+    this.SessionId = sessionId;
+    this.StatementId = statementId;
+    this.Device = device;
+    this.Measurement = measurement;
+    this.DataType = dataType;
+    this.AggregationType = aggregationType;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_sessionId = false;
+      bool isset_statementId = false;
+      bool isset_device = false;
+      bool isset_measurement = false;
+      bool isset_dataType = false;
+      bool isset_aggregationType = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              SessionId = await iprot.ReadI64Async(cancellationToken);
+              isset_sessionId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I64)
+            {
+              StatementId = await iprot.ReadI64Async(cancellationToken);
+              isset_statementId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.String)
+            {
+              Device = await iprot.ReadStringAsync(cancellationToken);
+              isset_device = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 4:
+            if (field.Type == TType.String)
+            {
+              Measurement = await iprot.ReadStringAsync(cancellationToken);
+              isset_measurement = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 5:
+            if (field.Type == TType.I32)
+            {
+              DataType = await iprot.ReadI32Async(cancellationToken);
+              isset_dataType = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 6:
+            if (field.Type == TType.I32)
+            {
+              AggregationType = (TAggregationType)await iprot.ReadI32Async(cancellationToken);
+              isset_aggregationType = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 7:
+            if (field.Type == TType.String)
+            {
+              Database = await iprot.ReadStringAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 8:
+            if (field.Type == TType.I64)
+            {
+              StartTime = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 9:
+            if (field.Type == TType.I64)
+            {
+              EndTime = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 10:
+            if (field.Type == TType.I64)
+            {
+              Interval = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 11:
+            if (field.Type == TType.I32)
+            {
+              FetchSize = await iprot.ReadI32Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 12:
+            if (field.Type == TType.I64)
+            {
+              Timeout = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_sessionId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_statementId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_device)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_measurement)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_dataType)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_aggregationType)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSGroupByQueryIntervalReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "sessionId";
+      field.Type = TType.I64;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(SessionId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "statementId";
+      field.Type = TType.I64;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(StatementId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Device != null))
+      {
+        field.Name = "device";
+        field.Type = TType.String;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Device, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Measurement != null))
+      {
+        field.Name = "measurement";
+        field.Type = TType.String;
+        field.ID = 4;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Measurement, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      field.Name = "dataType";
+      field.Type = TType.I32;
+      field.ID = 5;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI32Async(DataType, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "aggregationType";
+      field.Type = TType.I32;
+      field.ID = 6;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI32Async((int)AggregationType, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Database != null) && __isset.database)
+      {
+        field.Name = "database";
+        field.Type = TType.String;
+        field.ID = 7;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Database, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.startTime)
+      {
+        field.Name = "startTime";
+        field.Type = TType.I64;
+        field.ID = 8;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(StartTime, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.endTime)
+      {
+        field.Name = "endTime";
+        field.Type = TType.I64;
+        field.ID = 9;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(EndTime, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.interval)
+      {
+        field.Name = "interval";
+        field.Type = TType.I64;
+        field.ID = 10;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(Interval, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.fetchSize)
+      {
+        field.Name = "fetchSize";
+        field.Type = TType.I32;
+        field.ID = 11;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI32Async(FetchSize, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.timeout)
+      {
+        field.Name = "timeout";
+        field.Type = TType.I64;
+        field.ID = 12;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(Timeout, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSGroupByQueryIntervalReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(SessionId, other.SessionId)
+      && System.Object.Equals(StatementId, other.StatementId)
+      && System.Object.Equals(Device, other.Device)
+      && System.Object.Equals(Measurement, other.Measurement)
+      && System.Object.Equals(DataType, other.DataType)
+      && System.Object.Equals(AggregationType, other.AggregationType)
+      && ((__isset.database == other.__isset.database) && ((!__isset.database) || (System.Object.Equals(Database, other.Database))))
+      && ((__isset.startTime == other.__isset.startTime) && ((!__isset.startTime) || (System.Object.Equals(StartTime, other.StartTime))))
+      && ((__isset.endTime == other.__isset.endTime) && ((!__isset.endTime) || (System.Object.Equals(EndTime, other.EndTime))))
+      && ((__isset.interval == other.__isset.interval) && ((!__isset.interval) || (System.Object.Equals(Interval, other.Interval))))
+      && ((__isset.fetchSize == other.__isset.fetchSize) && ((!__isset.fetchSize) || (System.Object.Equals(FetchSize, other.FetchSize))))
+      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + SessionId.GetHashCode();
+      hashcode = (hashcode * 397) + StatementId.GetHashCode();
+      if((Device != null))
+      {
+        hashcode = (hashcode * 397) + Device.GetHashCode();
+      }
+      if((Measurement != null))
+      {
+        hashcode = (hashcode * 397) + Measurement.GetHashCode();
+      }
+      hashcode = (hashcode * 397) + DataType.GetHashCode();
+      hashcode = (hashcode * 397) + AggregationType.GetHashCode();
+      if((Database != null) && __isset.database)
+      {
+        hashcode = (hashcode * 397) + Database.GetHashCode();
+      }
+      if(__isset.startTime)
+      {
+        hashcode = (hashcode * 397) + StartTime.GetHashCode();
+      }
+      if(__isset.endTime)
+      {
+        hashcode = (hashcode * 397) + EndTime.GetHashCode();
+      }
+      if(__isset.interval)
+      {
+        hashcode = (hashcode * 397) + Interval.GetHashCode();
+      }
+      if(__isset.fetchSize)
+      {
+        hashcode = (hashcode * 397) + FetchSize.GetHashCode();
+      }
+      if(__isset.timeout)
+      {
+        hashcode = (hashcode * 397) + Timeout.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSGroupByQueryIntervalReq(");
+    sb.Append(", SessionId: ");
+    SessionId.ToString(sb);
+    sb.Append(", StatementId: ");
+    StatementId.ToString(sb);
+    if((Device != null))
+    {
+      sb.Append(", Device: ");
+      Device.ToString(sb);
+    }
+    if((Measurement != null))
+    {
+      sb.Append(", Measurement: ");
+      Measurement.ToString(sb);
+    }
+    sb.Append(", DataType: ");
+    DataType.ToString(sb);
+    sb.Append(", AggregationType: ");
+    AggregationType.ToString(sb);
+    if((Database != null) && __isset.database)
+    {
+      sb.Append(", Database: ");
+      Database.ToString(sb);
+    }
+    if(__isset.startTime)
+    {
+      sb.Append(", StartTime: ");
+      StartTime.ToString(sb);
+    }
+    if(__isset.endTime)
+    {
+      sb.Append(", EndTime: ");
+      EndTime.ToString(sb);
+    }
+    if(__isset.interval)
+    {
+      sb.Append(", Interval: ");
+      Interval.ToString(sb);
+    }
+    if(__isset.fetchSize)
+    {
+      sb.Append(", FetchSize: ");
+      FetchSize.ToString(sb);
+    }
+    if(__isset.timeout)
+    {
+      sb.Append(", Timeout: ");
+      Timeout.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordReq.cs
index ebd4a21..8a8c5db 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -76,31 +76,6 @@
     this.Timestamp = timestamp;
   }
 
-  public TSInsertRecordReq DeepCopy()
-  {
-    var tmp107 = new TSInsertRecordReq();
-    tmp107.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp107.PrefixPath = this.PrefixPath;
-    }
-    if((Measurements != null))
-    {
-      tmp107.Measurements = this.Measurements.DeepCopy();
-    }
-    if((Values != null))
-    {
-      tmp107.Values = this.Values.ToArray();
-    }
-    tmp107.Timestamp = this.Timestamp;
-    if(__isset.isAligned)
-    {
-      tmp107.IsAligned = this.IsAligned;
-    }
-    tmp107.__isset.isAligned = this.__isset.isAligned;
-    return tmp107;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -149,13 +124,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list108 = await iprot.ReadListBeginAsync(cancellationToken);
-                Measurements = new List<string>(_list108.Count);
-                for(int _i109 = 0; _i109 < _list108.Count; ++_i109)
+                TList _list89 = await iprot.ReadListBeginAsync(cancellationToken);
+                Measurements = new List<string>(_list89.Count);
+                for(int _i90 = 0; _i90 < _list89.Count; ++_i90)
                 {
-                  string _elem110;
-                  _elem110 = await iprot.ReadStringAsync(cancellationToken);
-                  Measurements.Add(_elem110);
+                  string _elem91;
+                  _elem91 = await iprot.ReadStringAsync(cancellationToken);
+                  Measurements.Add(_elem91);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -265,9 +240,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Measurements.Count), cancellationToken);
-          foreach (string _iter111 in Measurements)
+          foreach (string _iter92 in Measurements)
           {
-            await oprot.WriteStringAsync(_iter111, cancellationToken);
+            await oprot.WriteStringAsync(_iter92, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsOfOneDeviceReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsOfOneDeviceReq.cs
index 5117ce8..4de5f13 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsOfOneDeviceReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsOfOneDeviceReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -76,34 +76,6 @@
     this.Timestamps = timestamps;
   }
 
-  public TSInsertRecordsOfOneDeviceReq DeepCopy()
-  {
-    var tmp189 = new TSInsertRecordsOfOneDeviceReq();
-    tmp189.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp189.PrefixPath = this.PrefixPath;
-    }
-    if((MeasurementsList != null))
-    {
-      tmp189.MeasurementsList = this.MeasurementsList.DeepCopy();
-    }
-    if((ValuesList != null))
-    {
-      tmp189.ValuesList = this.ValuesList.DeepCopy();
-    }
-    if((Timestamps != null))
-    {
-      tmp189.Timestamps = this.Timestamps.DeepCopy();
-    }
-    if(__isset.isAligned)
-    {
-      tmp189.IsAligned = this.IsAligned;
-    }
-    tmp189.__isset.isAligned = this.__isset.isAligned;
-    return tmp189;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -152,23 +124,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list190 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementsList = new List<List<string>>(_list190.Count);
-                for(int _i191 = 0; _i191 < _list190.Count; ++_i191)
+                TList _list166 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementsList = new List<List<string>>(_list166.Count);
+                for(int _i167 = 0; _i167 < _list166.Count; ++_i167)
                 {
-                  List<string> _elem192;
+                  List<string> _elem168;
                   {
-                    TList _list193 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem192 = new List<string>(_list193.Count);
-                    for(int _i194 = 0; _i194 < _list193.Count; ++_i194)
+                    TList _list169 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem168 = new List<string>(_list169.Count);
+                    for(int _i170 = 0; _i170 < _list169.Count; ++_i170)
                     {
-                      string _elem195;
-                      _elem195 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem192.Add(_elem195);
+                      string _elem171;
+                      _elem171 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem168.Add(_elem171);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  MeasurementsList.Add(_elem192);
+                  MeasurementsList.Add(_elem168);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -183,13 +155,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list196 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValuesList = new List<byte[]>(_list196.Count);
-                for(int _i197 = 0; _i197 < _list196.Count; ++_i197)
+                TList _list172 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValuesList = new List<byte[]>(_list172.Count);
+                for(int _i173 = 0; _i173 < _list172.Count; ++_i173)
                 {
-                  byte[] _elem198;
-                  _elem198 = await iprot.ReadBinaryAsync(cancellationToken);
-                  ValuesList.Add(_elem198);
+                  byte[] _elem174;
+                  _elem174 = await iprot.ReadBinaryAsync(cancellationToken);
+                  ValuesList.Add(_elem174);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -204,13 +176,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list199 = await iprot.ReadListBeginAsync(cancellationToken);
-                Timestamps = new List<long>(_list199.Count);
-                for(int _i200 = 0; _i200 < _list199.Count; ++_i200)
+                TList _list175 = await iprot.ReadListBeginAsync(cancellationToken);
+                Timestamps = new List<long>(_list175.Count);
+                for(int _i176 = 0; _i176 < _list175.Count; ++_i176)
                 {
-                  long _elem201;
-                  _elem201 = await iprot.ReadI64Async(cancellationToken);
-                  Timestamps.Add(_elem201);
+                  long _elem177;
+                  _elem177 = await iprot.ReadI64Async(cancellationToken);
+                  Timestamps.Add(_elem177);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -298,13 +270,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, MeasurementsList.Count), cancellationToken);
-          foreach (List<string> _iter202 in MeasurementsList)
+          foreach (List<string> _iter178 in MeasurementsList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter202.Count), cancellationToken);
-              foreach (string _iter203 in _iter202)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter178.Count), cancellationToken);
+              foreach (string _iter179 in _iter178)
               {
-                await oprot.WriteStringAsync(_iter203, cancellationToken);
+                await oprot.WriteStringAsync(_iter179, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -321,9 +293,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ValuesList.Count), cancellationToken);
-          foreach (byte[] _iter204 in ValuesList)
+          foreach (byte[] _iter180 in ValuesList)
           {
-            await oprot.WriteBinaryAsync(_iter204, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter180, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -337,9 +309,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I64, Timestamps.Count), cancellationToken);
-          foreach (long _iter205 in Timestamps)
+          foreach (long _iter181 in Timestamps)
           {
-            await oprot.WriteI64Async(_iter205, cancellationToken);
+            await oprot.WriteI64Async(_iter181, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsReq.cs
index 6d1fc41..524756c 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertRecordsReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -76,34 +76,6 @@
     this.Timestamps = timestamps;
   }
 
-  public TSInsertRecordsReq DeepCopy()
-  {
-    var tmp167 = new TSInsertRecordsReq();
-    tmp167.SessionId = this.SessionId;
-    if((PrefixPaths != null))
-    {
-      tmp167.PrefixPaths = this.PrefixPaths.DeepCopy();
-    }
-    if((MeasurementsList != null))
-    {
-      tmp167.MeasurementsList = this.MeasurementsList.DeepCopy();
-    }
-    if((ValuesList != null))
-    {
-      tmp167.ValuesList = this.ValuesList.DeepCopy();
-    }
-    if((Timestamps != null))
-    {
-      tmp167.Timestamps = this.Timestamps.DeepCopy();
-    }
-    if(__isset.isAligned)
-    {
-      tmp167.IsAligned = this.IsAligned;
-    }
-    tmp167.__isset.isAligned = this.__isset.isAligned;
-    return tmp167;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -141,13 +113,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list168 = await iprot.ReadListBeginAsync(cancellationToken);
-                PrefixPaths = new List<string>(_list168.Count);
-                for(int _i169 = 0; _i169 < _list168.Count; ++_i169)
+                TList _list145 = await iprot.ReadListBeginAsync(cancellationToken);
+                PrefixPaths = new List<string>(_list145.Count);
+                for(int _i146 = 0; _i146 < _list145.Count; ++_i146)
                 {
-                  string _elem170;
-                  _elem170 = await iprot.ReadStringAsync(cancellationToken);
-                  PrefixPaths.Add(_elem170);
+                  string _elem147;
+                  _elem147 = await iprot.ReadStringAsync(cancellationToken);
+                  PrefixPaths.Add(_elem147);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -162,23 +134,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list171 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementsList = new List<List<string>>(_list171.Count);
-                for(int _i172 = 0; _i172 < _list171.Count; ++_i172)
+                TList _list148 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementsList = new List<List<string>>(_list148.Count);
+                for(int _i149 = 0; _i149 < _list148.Count; ++_i149)
                 {
-                  List<string> _elem173;
+                  List<string> _elem150;
                   {
-                    TList _list174 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem173 = new List<string>(_list174.Count);
-                    for(int _i175 = 0; _i175 < _list174.Count; ++_i175)
+                    TList _list151 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem150 = new List<string>(_list151.Count);
+                    for(int _i152 = 0; _i152 < _list151.Count; ++_i152)
                     {
-                      string _elem176;
-                      _elem176 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem173.Add(_elem176);
+                      string _elem153;
+                      _elem153 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem150.Add(_elem153);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  MeasurementsList.Add(_elem173);
+                  MeasurementsList.Add(_elem150);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -193,13 +165,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list177 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValuesList = new List<byte[]>(_list177.Count);
-                for(int _i178 = 0; _i178 < _list177.Count; ++_i178)
+                TList _list154 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValuesList = new List<byte[]>(_list154.Count);
+                for(int _i155 = 0; _i155 < _list154.Count; ++_i155)
                 {
-                  byte[] _elem179;
-                  _elem179 = await iprot.ReadBinaryAsync(cancellationToken);
-                  ValuesList.Add(_elem179);
+                  byte[] _elem156;
+                  _elem156 = await iprot.ReadBinaryAsync(cancellationToken);
+                  ValuesList.Add(_elem156);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -214,13 +186,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list180 = await iprot.ReadListBeginAsync(cancellationToken);
-                Timestamps = new List<long>(_list180.Count);
-                for(int _i181 = 0; _i181 < _list180.Count; ++_i181)
+                TList _list157 = await iprot.ReadListBeginAsync(cancellationToken);
+                Timestamps = new List<long>(_list157.Count);
+                for(int _i158 = 0; _i158 < _list157.Count; ++_i158)
                 {
-                  long _elem182;
-                  _elem182 = await iprot.ReadI64Async(cancellationToken);
-                  Timestamps.Add(_elem182);
+                  long _elem159;
+                  _elem159 = await iprot.ReadI64Async(cancellationToken);
+                  Timestamps.Add(_elem159);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -299,9 +271,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, PrefixPaths.Count), cancellationToken);
-          foreach (string _iter183 in PrefixPaths)
+          foreach (string _iter160 in PrefixPaths)
           {
-            await oprot.WriteStringAsync(_iter183, cancellationToken);
+            await oprot.WriteStringAsync(_iter160, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -315,13 +287,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, MeasurementsList.Count), cancellationToken);
-          foreach (List<string> _iter184 in MeasurementsList)
+          foreach (List<string> _iter161 in MeasurementsList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter184.Count), cancellationToken);
-              foreach (string _iter185 in _iter184)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter161.Count), cancellationToken);
+              foreach (string _iter162 in _iter161)
               {
-                await oprot.WriteStringAsync(_iter185, cancellationToken);
+                await oprot.WriteStringAsync(_iter162, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -338,9 +310,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ValuesList.Count), cancellationToken);
-          foreach (byte[] _iter186 in ValuesList)
+          foreach (byte[] _iter163 in ValuesList)
           {
-            await oprot.WriteBinaryAsync(_iter186, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter163, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -354,9 +326,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I64, Timestamps.Count), cancellationToken);
-          foreach (long _iter187 in Timestamps)
+          foreach (long _iter164 in Timestamps)
           {
-            await oprot.WriteI64Async(_iter187, cancellationToken);
+            await oprot.WriteI64Async(_iter164, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordReq.cs
index 1b28e55..8d4f58a 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -91,36 +91,6 @@
     this.Timestamp = timestamp;
   }
 
-  public TSInsertStringRecordReq DeepCopy()
-  {
-    var tmp113 = new TSInsertStringRecordReq();
-    tmp113.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp113.PrefixPath = this.PrefixPath;
-    }
-    if((Measurements != null))
-    {
-      tmp113.Measurements = this.Measurements.DeepCopy();
-    }
-    if((Values != null))
-    {
-      tmp113.Values = this.Values.DeepCopy();
-    }
-    tmp113.Timestamp = this.Timestamp;
-    if(__isset.isAligned)
-    {
-      tmp113.IsAligned = this.IsAligned;
-    }
-    tmp113.__isset.isAligned = this.__isset.isAligned;
-    if(__isset.timeout)
-    {
-      tmp113.Timeout = this.Timeout;
-    }
-    tmp113.__isset.timeout = this.__isset.timeout;
-    return tmp113;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -169,13 +139,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list114 = await iprot.ReadListBeginAsync(cancellationToken);
-                Measurements = new List<string>(_list114.Count);
-                for(int _i115 = 0; _i115 < _list114.Count; ++_i115)
+                TList _list94 = await iprot.ReadListBeginAsync(cancellationToken);
+                Measurements = new List<string>(_list94.Count);
+                for(int _i95 = 0; _i95 < _list94.Count; ++_i95)
                 {
-                  string _elem116;
-                  _elem116 = await iprot.ReadStringAsync(cancellationToken);
-                  Measurements.Add(_elem116);
+                  string _elem96;
+                  _elem96 = await iprot.ReadStringAsync(cancellationToken);
+                  Measurements.Add(_elem96);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -190,13 +160,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list117 = await iprot.ReadListBeginAsync(cancellationToken);
-                Values = new List<string>(_list117.Count);
-                for(int _i118 = 0; _i118 < _list117.Count; ++_i118)
+                TList _list97 = await iprot.ReadListBeginAsync(cancellationToken);
+                Values = new List<string>(_list97.Count);
+                for(int _i98 = 0; _i98 < _list97.Count; ++_i98)
                 {
-                  string _elem119;
-                  _elem119 = await iprot.ReadStringAsync(cancellationToken);
-                  Values.Add(_elem119);
+                  string _elem99;
+                  _elem99 = await iprot.ReadStringAsync(cancellationToken);
+                  Values.Add(_elem99);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -305,9 +275,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Measurements.Count), cancellationToken);
-          foreach (string _iter120 in Measurements)
+          foreach (string _iter100 in Measurements)
           {
-            await oprot.WriteStringAsync(_iter120, cancellationToken);
+            await oprot.WriteStringAsync(_iter100, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -321,9 +291,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Values.Count), cancellationToken);
-          foreach (string _iter121 in Values)
+          foreach (string _iter101 in Values)
           {
-            await oprot.WriteStringAsync(_iter121, cancellationToken);
+            await oprot.WriteStringAsync(_iter101, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsOfOneDeviceReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsOfOneDeviceReq.cs
index 6e5fefb..3d47126 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsOfOneDeviceReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsOfOneDeviceReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -76,34 +76,6 @@
     this.Timestamps = timestamps;
   }
 
-  public TSInsertStringRecordsOfOneDeviceReq DeepCopy()
-  {
-    var tmp207 = new TSInsertStringRecordsOfOneDeviceReq();
-    tmp207.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp207.PrefixPath = this.PrefixPath;
-    }
-    if((MeasurementsList != null))
-    {
-      tmp207.MeasurementsList = this.MeasurementsList.DeepCopy();
-    }
-    if((ValuesList != null))
-    {
-      tmp207.ValuesList = this.ValuesList.DeepCopy();
-    }
-    if((Timestamps != null))
-    {
-      tmp207.Timestamps = this.Timestamps.DeepCopy();
-    }
-    if(__isset.isAligned)
-    {
-      tmp207.IsAligned = this.IsAligned;
-    }
-    tmp207.__isset.isAligned = this.__isset.isAligned;
-    return tmp207;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -152,23 +124,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list208 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementsList = new List<List<string>>(_list208.Count);
-                for(int _i209 = 0; _i209 < _list208.Count; ++_i209)
+                TList _list183 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementsList = new List<List<string>>(_list183.Count);
+                for(int _i184 = 0; _i184 < _list183.Count; ++_i184)
                 {
-                  List<string> _elem210;
+                  List<string> _elem185;
                   {
-                    TList _list211 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem210 = new List<string>(_list211.Count);
-                    for(int _i212 = 0; _i212 < _list211.Count; ++_i212)
+                    TList _list186 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem185 = new List<string>(_list186.Count);
+                    for(int _i187 = 0; _i187 < _list186.Count; ++_i187)
                     {
-                      string _elem213;
-                      _elem213 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem210.Add(_elem213);
+                      string _elem188;
+                      _elem188 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem185.Add(_elem188);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  MeasurementsList.Add(_elem210);
+                  MeasurementsList.Add(_elem185);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -183,23 +155,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list214 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValuesList = new List<List<string>>(_list214.Count);
-                for(int _i215 = 0; _i215 < _list214.Count; ++_i215)
+                TList _list189 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValuesList = new List<List<string>>(_list189.Count);
+                for(int _i190 = 0; _i190 < _list189.Count; ++_i190)
                 {
-                  List<string> _elem216;
+                  List<string> _elem191;
                   {
-                    TList _list217 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem216 = new List<string>(_list217.Count);
-                    for(int _i218 = 0; _i218 < _list217.Count; ++_i218)
+                    TList _list192 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem191 = new List<string>(_list192.Count);
+                    for(int _i193 = 0; _i193 < _list192.Count; ++_i193)
                     {
-                      string _elem219;
-                      _elem219 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem216.Add(_elem219);
+                      string _elem194;
+                      _elem194 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem191.Add(_elem194);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  ValuesList.Add(_elem216);
+                  ValuesList.Add(_elem191);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -214,13 +186,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list220 = await iprot.ReadListBeginAsync(cancellationToken);
-                Timestamps = new List<long>(_list220.Count);
-                for(int _i221 = 0; _i221 < _list220.Count; ++_i221)
+                TList _list195 = await iprot.ReadListBeginAsync(cancellationToken);
+                Timestamps = new List<long>(_list195.Count);
+                for(int _i196 = 0; _i196 < _list195.Count; ++_i196)
                 {
-                  long _elem222;
-                  _elem222 = await iprot.ReadI64Async(cancellationToken);
-                  Timestamps.Add(_elem222);
+                  long _elem197;
+                  _elem197 = await iprot.ReadI64Async(cancellationToken);
+                  Timestamps.Add(_elem197);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -308,13 +280,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, MeasurementsList.Count), cancellationToken);
-          foreach (List<string> _iter223 in MeasurementsList)
+          foreach (List<string> _iter198 in MeasurementsList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter223.Count), cancellationToken);
-              foreach (string _iter224 in _iter223)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter198.Count), cancellationToken);
+              foreach (string _iter199 in _iter198)
               {
-                await oprot.WriteStringAsync(_iter224, cancellationToken);
+                await oprot.WriteStringAsync(_iter199, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -331,13 +303,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, ValuesList.Count), cancellationToken);
-          foreach (List<string> _iter225 in ValuesList)
+          foreach (List<string> _iter200 in ValuesList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter225.Count), cancellationToken);
-              foreach (string _iter226 in _iter225)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter200.Count), cancellationToken);
+              foreach (string _iter201 in _iter200)
               {
-                await oprot.WriteStringAsync(_iter226, cancellationToken);
+                await oprot.WriteStringAsync(_iter201, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -354,9 +326,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I64, Timestamps.Count), cancellationToken);
-          foreach (long _iter227 in Timestamps)
+          foreach (long _iter202 in Timestamps)
           {
-            await oprot.WriteI64Async(_iter227, cancellationToken);
+            await oprot.WriteI64Async(_iter202, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsReq.cs
index 82dc577..c743d12 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertStringRecordsReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -76,34 +76,6 @@
     this.Timestamps = timestamps;
   }
 
-  public TSInsertStringRecordsReq DeepCopy()
-  {
-    var tmp229 = new TSInsertStringRecordsReq();
-    tmp229.SessionId = this.SessionId;
-    if((PrefixPaths != null))
-    {
-      tmp229.PrefixPaths = this.PrefixPaths.DeepCopy();
-    }
-    if((MeasurementsList != null))
-    {
-      tmp229.MeasurementsList = this.MeasurementsList.DeepCopy();
-    }
-    if((ValuesList != null))
-    {
-      tmp229.ValuesList = this.ValuesList.DeepCopy();
-    }
-    if((Timestamps != null))
-    {
-      tmp229.Timestamps = this.Timestamps.DeepCopy();
-    }
-    if(__isset.isAligned)
-    {
-      tmp229.IsAligned = this.IsAligned;
-    }
-    tmp229.__isset.isAligned = this.__isset.isAligned;
-    return tmp229;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -141,13 +113,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list230 = await iprot.ReadListBeginAsync(cancellationToken);
-                PrefixPaths = new List<string>(_list230.Count);
-                for(int _i231 = 0; _i231 < _list230.Count; ++_i231)
+                TList _list204 = await iprot.ReadListBeginAsync(cancellationToken);
+                PrefixPaths = new List<string>(_list204.Count);
+                for(int _i205 = 0; _i205 < _list204.Count; ++_i205)
                 {
-                  string _elem232;
-                  _elem232 = await iprot.ReadStringAsync(cancellationToken);
-                  PrefixPaths.Add(_elem232);
+                  string _elem206;
+                  _elem206 = await iprot.ReadStringAsync(cancellationToken);
+                  PrefixPaths.Add(_elem206);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -162,23 +134,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list233 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementsList = new List<List<string>>(_list233.Count);
-                for(int _i234 = 0; _i234 < _list233.Count; ++_i234)
+                TList _list207 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementsList = new List<List<string>>(_list207.Count);
+                for(int _i208 = 0; _i208 < _list207.Count; ++_i208)
                 {
-                  List<string> _elem235;
+                  List<string> _elem209;
                   {
-                    TList _list236 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem235 = new List<string>(_list236.Count);
-                    for(int _i237 = 0; _i237 < _list236.Count; ++_i237)
+                    TList _list210 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem209 = new List<string>(_list210.Count);
+                    for(int _i211 = 0; _i211 < _list210.Count; ++_i211)
                     {
-                      string _elem238;
-                      _elem238 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem235.Add(_elem238);
+                      string _elem212;
+                      _elem212 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem209.Add(_elem212);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  MeasurementsList.Add(_elem235);
+                  MeasurementsList.Add(_elem209);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -193,23 +165,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list239 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValuesList = new List<List<string>>(_list239.Count);
-                for(int _i240 = 0; _i240 < _list239.Count; ++_i240)
+                TList _list213 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValuesList = new List<List<string>>(_list213.Count);
+                for(int _i214 = 0; _i214 < _list213.Count; ++_i214)
                 {
-                  List<string> _elem241;
+                  List<string> _elem215;
                   {
-                    TList _list242 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem241 = new List<string>(_list242.Count);
-                    for(int _i243 = 0; _i243 < _list242.Count; ++_i243)
+                    TList _list216 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem215 = new List<string>(_list216.Count);
+                    for(int _i217 = 0; _i217 < _list216.Count; ++_i217)
                     {
-                      string _elem244;
-                      _elem244 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem241.Add(_elem244);
+                      string _elem218;
+                      _elem218 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem215.Add(_elem218);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  ValuesList.Add(_elem241);
+                  ValuesList.Add(_elem215);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -224,13 +196,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list245 = await iprot.ReadListBeginAsync(cancellationToken);
-                Timestamps = new List<long>(_list245.Count);
-                for(int _i246 = 0; _i246 < _list245.Count; ++_i246)
+                TList _list219 = await iprot.ReadListBeginAsync(cancellationToken);
+                Timestamps = new List<long>(_list219.Count);
+                for(int _i220 = 0; _i220 < _list219.Count; ++_i220)
                 {
-                  long _elem247;
-                  _elem247 = await iprot.ReadI64Async(cancellationToken);
-                  Timestamps.Add(_elem247);
+                  long _elem221;
+                  _elem221 = await iprot.ReadI64Async(cancellationToken);
+                  Timestamps.Add(_elem221);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -309,9 +281,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, PrefixPaths.Count), cancellationToken);
-          foreach (string _iter248 in PrefixPaths)
+          foreach (string _iter222 in PrefixPaths)
           {
-            await oprot.WriteStringAsync(_iter248, cancellationToken);
+            await oprot.WriteStringAsync(_iter222, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -325,13 +297,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, MeasurementsList.Count), cancellationToken);
-          foreach (List<string> _iter249 in MeasurementsList)
+          foreach (List<string> _iter223 in MeasurementsList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter249.Count), cancellationToken);
-              foreach (string _iter250 in _iter249)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter223.Count), cancellationToken);
+              foreach (string _iter224 in _iter223)
               {
-                await oprot.WriteStringAsync(_iter250, cancellationToken);
+                await oprot.WriteStringAsync(_iter224, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -348,13 +320,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, ValuesList.Count), cancellationToken);
-          foreach (List<string> _iter251 in ValuesList)
+          foreach (List<string> _iter225 in ValuesList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter251.Count), cancellationToken);
-              foreach (string _iter252 in _iter251)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter225.Count), cancellationToken);
+              foreach (string _iter226 in _iter225)
               {
-                await oprot.WriteStringAsync(_iter252, cancellationToken);
+                await oprot.WriteStringAsync(_iter226, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -371,9 +343,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I64, Timestamps.Count), cancellationToken);
-          foreach (long _iter253 in Timestamps)
+          foreach (long _iter227 in Timestamps)
           {
-            await oprot.WriteI64Async(_iter253, cancellationToken);
+            await oprot.WriteI64Async(_iter227, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletReq.cs
index b57ef0c..31492b8 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -82,39 +82,6 @@
     this.Size = size;
   }
 
-  public TSInsertTabletReq DeepCopy()
-  {
-    var tmp123 = new TSInsertTabletReq();
-    tmp123.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp123.PrefixPath = this.PrefixPath;
-    }
-    if((Measurements != null))
-    {
-      tmp123.Measurements = this.Measurements.DeepCopy();
-    }
-    if((Values != null))
-    {
-      tmp123.Values = this.Values.ToArray();
-    }
-    if((Timestamps != null))
-    {
-      tmp123.Timestamps = this.Timestamps.ToArray();
-    }
-    if((Types != null))
-    {
-      tmp123.Types = this.Types.DeepCopy();
-    }
-    tmp123.Size = this.Size;
-    if(__isset.isAligned)
-    {
-      tmp123.IsAligned = this.IsAligned;
-    }
-    tmp123.__isset.isAligned = this.__isset.isAligned;
-    return tmp123;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -165,13 +132,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list124 = await iprot.ReadListBeginAsync(cancellationToken);
-                Measurements = new List<string>(_list124.Count);
-                for(int _i125 = 0; _i125 < _list124.Count; ++_i125)
+                TList _list103 = await iprot.ReadListBeginAsync(cancellationToken);
+                Measurements = new List<string>(_list103.Count);
+                for(int _i104 = 0; _i104 < _list103.Count; ++_i104)
                 {
-                  string _elem126;
-                  _elem126 = await iprot.ReadStringAsync(cancellationToken);
-                  Measurements.Add(_elem126);
+                  string _elem105;
+                  _elem105 = await iprot.ReadStringAsync(cancellationToken);
+                  Measurements.Add(_elem105);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -208,13 +175,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list127 = await iprot.ReadListBeginAsync(cancellationToken);
-                Types = new List<int>(_list127.Count);
-                for(int _i128 = 0; _i128 < _list127.Count; ++_i128)
+                TList _list106 = await iprot.ReadListBeginAsync(cancellationToken);
+                Types = new List<int>(_list106.Count);
+                for(int _i107 = 0; _i107 < _list106.Count; ++_i107)
                 {
-                  int _elem129;
-                  _elem129 = await iprot.ReadI32Async(cancellationToken);
-                  Types.Add(_elem129);
+                  int _elem108;
+                  _elem108 = await iprot.ReadI32Async(cancellationToken);
+                  Types.Add(_elem108);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -321,9 +288,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Measurements.Count), cancellationToken);
-          foreach (string _iter130 in Measurements)
+          foreach (string _iter109 in Measurements)
           {
-            await oprot.WriteStringAsync(_iter130, cancellationToken);
+            await oprot.WriteStringAsync(_iter109, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -355,9 +322,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, Types.Count), cancellationToken);
-          foreach (int _iter131 in Types)
+          foreach (int _iter110 in Types)
           {
-            await oprot.WriteI32Async(_iter131, cancellationToken);
+            await oprot.WriteI32Async(_iter110, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletsReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletsReq.cs
index b33fd9c..349631a 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletsReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSInsertTabletsReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -82,42 +82,6 @@
     this.SizeList = sizeList;
   }
 
-  public TSInsertTabletsReq DeepCopy()
-  {
-    var tmp133 = new TSInsertTabletsReq();
-    tmp133.SessionId = this.SessionId;
-    if((PrefixPaths != null))
-    {
-      tmp133.PrefixPaths = this.PrefixPaths.DeepCopy();
-    }
-    if((MeasurementsList != null))
-    {
-      tmp133.MeasurementsList = this.MeasurementsList.DeepCopy();
-    }
-    if((ValuesList != null))
-    {
-      tmp133.ValuesList = this.ValuesList.DeepCopy();
-    }
-    if((TimestampsList != null))
-    {
-      tmp133.TimestampsList = this.TimestampsList.DeepCopy();
-    }
-    if((TypesList != null))
-    {
-      tmp133.TypesList = this.TypesList.DeepCopy();
-    }
-    if((SizeList != null))
-    {
-      tmp133.SizeList = this.SizeList.DeepCopy();
-    }
-    if(__isset.isAligned)
-    {
-      tmp133.IsAligned = this.IsAligned;
-    }
-    tmp133.__isset.isAligned = this.__isset.isAligned;
-    return tmp133;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -157,13 +121,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list134 = await iprot.ReadListBeginAsync(cancellationToken);
-                PrefixPaths = new List<string>(_list134.Count);
-                for(int _i135 = 0; _i135 < _list134.Count; ++_i135)
+                TList _list112 = await iprot.ReadListBeginAsync(cancellationToken);
+                PrefixPaths = new List<string>(_list112.Count);
+                for(int _i113 = 0; _i113 < _list112.Count; ++_i113)
                 {
-                  string _elem136;
-                  _elem136 = await iprot.ReadStringAsync(cancellationToken);
-                  PrefixPaths.Add(_elem136);
+                  string _elem114;
+                  _elem114 = await iprot.ReadStringAsync(cancellationToken);
+                  PrefixPaths.Add(_elem114);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -178,23 +142,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list137 = await iprot.ReadListBeginAsync(cancellationToken);
-                MeasurementsList = new List<List<string>>(_list137.Count);
-                for(int _i138 = 0; _i138 < _list137.Count; ++_i138)
+                TList _list115 = await iprot.ReadListBeginAsync(cancellationToken);
+                MeasurementsList = new List<List<string>>(_list115.Count);
+                for(int _i116 = 0; _i116 < _list115.Count; ++_i116)
                 {
-                  List<string> _elem139;
+                  List<string> _elem117;
                   {
-                    TList _list140 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem139 = new List<string>(_list140.Count);
-                    for(int _i141 = 0; _i141 < _list140.Count; ++_i141)
+                    TList _list118 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem117 = new List<string>(_list118.Count);
+                    for(int _i119 = 0; _i119 < _list118.Count; ++_i119)
                     {
-                      string _elem142;
-                      _elem142 = await iprot.ReadStringAsync(cancellationToken);
-                      _elem139.Add(_elem142);
+                      string _elem120;
+                      _elem120 = await iprot.ReadStringAsync(cancellationToken);
+                      _elem117.Add(_elem120);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  MeasurementsList.Add(_elem139);
+                  MeasurementsList.Add(_elem117);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -209,13 +173,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list143 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValuesList = new List<byte[]>(_list143.Count);
-                for(int _i144 = 0; _i144 < _list143.Count; ++_i144)
+                TList _list121 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValuesList = new List<byte[]>(_list121.Count);
+                for(int _i122 = 0; _i122 < _list121.Count; ++_i122)
                 {
-                  byte[] _elem145;
-                  _elem145 = await iprot.ReadBinaryAsync(cancellationToken);
-                  ValuesList.Add(_elem145);
+                  byte[] _elem123;
+                  _elem123 = await iprot.ReadBinaryAsync(cancellationToken);
+                  ValuesList.Add(_elem123);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -230,13 +194,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list146 = await iprot.ReadListBeginAsync(cancellationToken);
-                TimestampsList = new List<byte[]>(_list146.Count);
-                for(int _i147 = 0; _i147 < _list146.Count; ++_i147)
+                TList _list124 = await iprot.ReadListBeginAsync(cancellationToken);
+                TimestampsList = new List<byte[]>(_list124.Count);
+                for(int _i125 = 0; _i125 < _list124.Count; ++_i125)
                 {
-                  byte[] _elem148;
-                  _elem148 = await iprot.ReadBinaryAsync(cancellationToken);
-                  TimestampsList.Add(_elem148);
+                  byte[] _elem126;
+                  _elem126 = await iprot.ReadBinaryAsync(cancellationToken);
+                  TimestampsList.Add(_elem126);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -251,23 +215,23 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list149 = await iprot.ReadListBeginAsync(cancellationToken);
-                TypesList = new List<List<int>>(_list149.Count);
-                for(int _i150 = 0; _i150 < _list149.Count; ++_i150)
+                TList _list127 = await iprot.ReadListBeginAsync(cancellationToken);
+                TypesList = new List<List<int>>(_list127.Count);
+                for(int _i128 = 0; _i128 < _list127.Count; ++_i128)
                 {
-                  List<int> _elem151;
+                  List<int> _elem129;
                   {
-                    TList _list152 = await iprot.ReadListBeginAsync(cancellationToken);
-                    _elem151 = new List<int>(_list152.Count);
-                    for(int _i153 = 0; _i153 < _list152.Count; ++_i153)
+                    TList _list130 = await iprot.ReadListBeginAsync(cancellationToken);
+                    _elem129 = new List<int>(_list130.Count);
+                    for(int _i131 = 0; _i131 < _list130.Count; ++_i131)
                     {
-                      int _elem154;
-                      _elem154 = await iprot.ReadI32Async(cancellationToken);
-                      _elem151.Add(_elem154);
+                      int _elem132;
+                      _elem132 = await iprot.ReadI32Async(cancellationToken);
+                      _elem129.Add(_elem132);
                     }
                     await iprot.ReadListEndAsync(cancellationToken);
                   }
-                  TypesList.Add(_elem151);
+                  TypesList.Add(_elem129);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -282,13 +246,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list155 = await iprot.ReadListBeginAsync(cancellationToken);
-                SizeList = new List<int>(_list155.Count);
-                for(int _i156 = 0; _i156 < _list155.Count; ++_i156)
+                TList _list133 = await iprot.ReadListBeginAsync(cancellationToken);
+                SizeList = new List<int>(_list133.Count);
+                for(int _i134 = 0; _i134 < _list133.Count; ++_i134)
                 {
-                  int _elem157;
-                  _elem157 = await iprot.ReadI32Async(cancellationToken);
-                  SizeList.Add(_elem157);
+                  int _elem135;
+                  _elem135 = await iprot.ReadI32Async(cancellationToken);
+                  SizeList.Add(_elem135);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -375,9 +339,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, PrefixPaths.Count), cancellationToken);
-          foreach (string _iter158 in PrefixPaths)
+          foreach (string _iter136 in PrefixPaths)
           {
-            await oprot.WriteStringAsync(_iter158, cancellationToken);
+            await oprot.WriteStringAsync(_iter136, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -391,13 +355,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, MeasurementsList.Count), cancellationToken);
-          foreach (List<string> _iter159 in MeasurementsList)
+          foreach (List<string> _iter137 in MeasurementsList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.String, _iter159.Count), cancellationToken);
-              foreach (string _iter160 in _iter159)
+              await oprot.WriteListBeginAsync(new TList(TType.String, _iter137.Count), cancellationToken);
+              foreach (string _iter138 in _iter137)
               {
-                await oprot.WriteStringAsync(_iter160, cancellationToken);
+                await oprot.WriteStringAsync(_iter138, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -414,9 +378,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ValuesList.Count), cancellationToken);
-          foreach (byte[] _iter161 in ValuesList)
+          foreach (byte[] _iter139 in ValuesList)
           {
-            await oprot.WriteBinaryAsync(_iter161, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter139, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -430,9 +394,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, TimestampsList.Count), cancellationToken);
-          foreach (byte[] _iter162 in TimestampsList)
+          foreach (byte[] _iter140 in TimestampsList)
           {
-            await oprot.WriteBinaryAsync(_iter162, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter140, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -446,13 +410,13 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.List, TypesList.Count), cancellationToken);
-          foreach (List<int> _iter163 in TypesList)
+          foreach (List<int> _iter141 in TypesList)
           {
             {
-              await oprot.WriteListBeginAsync(new TList(TType.I32, _iter163.Count), cancellationToken);
-              foreach (int _iter164 in _iter163)
+              await oprot.WriteListBeginAsync(new TList(TType.I32, _iter141.Count), cancellationToken);
+              foreach (int _iter142 in _iter141)
               {
-                await oprot.WriteI32Async(_iter164, cancellationToken);
+                await oprot.WriteI32Async(_iter142, cancellationToken);
               }
               await oprot.WriteListEndAsync(cancellationToken);
             }
@@ -469,9 +433,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I32, SizeList.Count), cancellationToken);
-          foreach (int _iter165 in SizeList)
+          foreach (int _iter143 in SizeList)
           {
-            await oprot.WriteI32Async(_iter165, cancellationToken);
+            await oprot.WriteI32Async(_iter143, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSLastDataQueryReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSLastDataQueryReq.cs
index cac7862..c125b27 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSLastDataQueryReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSLastDataQueryReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -35,6 +35,7 @@
   private bool _enableRedirectQuery;
   private bool _jdbcQuery;
   private long _timeout;
+  private bool _legalPathNodes;
 
   public long SessionId { get; set; }
 
@@ -96,6 +97,19 @@
     }
   }
 
+  public bool LegalPathNodes
+  {
+    get
+    {
+      return _legalPathNodes;
+    }
+    set
+    {
+      __isset.legalPathNodes = true;
+      this._legalPathNodes = value;
+    }
+  }
+
 
   public Isset __isset;
   public struct Isset
@@ -104,6 +118,7 @@
     public bool enableRedirectQuery;
     public bool jdbcQuery;
     public bool timeout;
+    public bool legalPathNodes;
   }
 
   public TSLastDataQueryReq()
@@ -118,39 +133,6 @@
     this.StatementId = statementId;
   }
 
-  public TSLastDataQueryReq DeepCopy()
-  {
-    var tmp324 = new TSLastDataQueryReq();
-    tmp324.SessionId = this.SessionId;
-    if((Paths != null))
-    {
-      tmp324.Paths = this.Paths.DeepCopy();
-    }
-    if(__isset.fetchSize)
-    {
-      tmp324.FetchSize = this.FetchSize;
-    }
-    tmp324.__isset.fetchSize = this.__isset.fetchSize;
-    tmp324.Time = this.Time;
-    tmp324.StatementId = this.StatementId;
-    if(__isset.enableRedirectQuery)
-    {
-      tmp324.EnableRedirectQuery = this.EnableRedirectQuery;
-    }
-    tmp324.__isset.enableRedirectQuery = this.__isset.enableRedirectQuery;
-    if(__isset.jdbcQuery)
-    {
-      tmp324.JdbcQuery = this.JdbcQuery;
-    }
-    tmp324.__isset.jdbcQuery = this.__isset.jdbcQuery;
-    if(__isset.timeout)
-    {
-      tmp324.Timeout = this.Timeout;
-    }
-    tmp324.__isset.timeout = this.__isset.timeout;
-    return tmp324;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -187,13 +169,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list325 = await iprot.ReadListBeginAsync(cancellationToken);
-                Paths = new List<string>(_list325.Count);
-                for(int _i326 = 0; _i326 < _list325.Count; ++_i326)
+                TList _list294 = await iprot.ReadListBeginAsync(cancellationToken);
+                Paths = new List<string>(_list294.Count);
+                for(int _i295 = 0; _i295 < _list294.Count; ++_i295)
                 {
-                  string _elem327;
-                  _elem327 = await iprot.ReadStringAsync(cancellationToken);
-                  Paths.Add(_elem327);
+                  string _elem296;
+                  _elem296 = await iprot.ReadStringAsync(cancellationToken);
+                  Paths.Add(_elem296);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -266,6 +248,16 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
+          case 9:
+            if (field.Type == TType.Bool)
+            {
+              LegalPathNodes = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
           default: 
             await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             break;
@@ -320,9 +312,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Paths.Count), cancellationToken);
-          foreach (string _iter328 in Paths)
+          foreach (string _iter297 in Paths)
           {
-            await oprot.WriteStringAsync(_iter328, cancellationToken);
+            await oprot.WriteStringAsync(_iter297, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -376,6 +368,15 @@
         await oprot.WriteI64Async(Timeout, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
       }
+      if(__isset.legalPathNodes)
+      {
+        field.Name = "legalPathNodes";
+        field.Type = TType.Bool;
+        field.ID = 9;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(LegalPathNodes, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
       await oprot.WriteFieldStopAsync(cancellationToken);
       await oprot.WriteStructEndAsync(cancellationToken);
     }
@@ -396,7 +397,8 @@
       && System.Object.Equals(StatementId, other.StatementId)
       && ((__isset.enableRedirectQuery == other.__isset.enableRedirectQuery) && ((!__isset.enableRedirectQuery) || (System.Object.Equals(EnableRedirectQuery, other.EnableRedirectQuery))))
       && ((__isset.jdbcQuery == other.__isset.jdbcQuery) && ((!__isset.jdbcQuery) || (System.Object.Equals(JdbcQuery, other.JdbcQuery))))
-      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))));
+      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))))
+      && ((__isset.legalPathNodes == other.__isset.legalPathNodes) && ((!__isset.legalPathNodes) || (System.Object.Equals(LegalPathNodes, other.LegalPathNodes))));
   }
 
   public override int GetHashCode() {
@@ -425,6 +427,10 @@
       {
         hashcode = (hashcode * 397) + Timeout.GetHashCode();
       }
+      if(__isset.legalPathNodes)
+      {
+        hashcode = (hashcode * 397) + LegalPathNodes.GetHashCode();
+      }
     }
     return hashcode;
   }
@@ -463,6 +469,11 @@
       sb.Append(", Timeout: ");
       Timeout.ToString(sb);
     }
+    if(__isset.legalPathNodes)
+    {
+      sb.Append(", LegalPathNodes: ");
+      LegalPathNodes.ToString(sb);
+    }
     sb.Append(')');
     return sb.ToString();
   }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionReq.cs
index f4d6916..ba022ff 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -90,31 +90,6 @@
     this.Username = username;
   }
 
-  public TSOpenSessionReq DeepCopy()
-  {
-    var tmp64 = new TSOpenSessionReq();
-    tmp64.Client_protocol = this.Client_protocol;
-    if((ZoneId != null))
-    {
-      tmp64.ZoneId = this.ZoneId;
-    }
-    if((Username != null))
-    {
-      tmp64.Username = this.Username;
-    }
-    if((Password != null) && __isset.password)
-    {
-      tmp64.Password = this.Password;
-    }
-    tmp64.__isset.password = this.__isset.password;
-    if((Configuration != null) && __isset.configuration)
-    {
-      tmp64.Configuration = this.Configuration.DeepCopy();
-    }
-    tmp64.__isset.configuration = this.__isset.configuration;
-    return tmp64;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -182,15 +157,15 @@
             if (field.Type == TType.Map)
             {
               {
-                TMap _map65 = await iprot.ReadMapBeginAsync(cancellationToken);
-                Configuration = new Dictionary<string, string>(_map65.Count);
-                for(int _i66 = 0; _i66 < _map65.Count; ++_i66)
+                TMap _map59 = await iprot.ReadMapBeginAsync(cancellationToken);
+                Configuration = new Dictionary<string, string>(_map59.Count);
+                for(int _i60 = 0; _i60 < _map59.Count; ++_i60)
                 {
-                  string _key67;
-                  string _val68;
-                  _key67 = await iprot.ReadStringAsync(cancellationToken);
-                  _val68 = await iprot.ReadStringAsync(cancellationToken);
-                  Configuration[_key67] = _val68;
+                  string _key61;
+                  string _val62;
+                  _key61 = await iprot.ReadStringAsync(cancellationToken);
+                  _val62 = await iprot.ReadStringAsync(cancellationToken);
+                  Configuration[_key61] = _val62;
                 }
                 await iprot.ReadMapEndAsync(cancellationToken);
               }
@@ -277,10 +252,10 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, Configuration.Count), cancellationToken);
-          foreach (string _iter69 in Configuration.Keys)
+          foreach (string _iter63 in Configuration.Keys)
           {
-            await oprot.WriteStringAsync(_iter69, cancellationToken);
-            await oprot.WriteStringAsync(Configuration[_iter69], cancellationToken);
+            await oprot.WriteStringAsync(_iter63, cancellationToken);
+            await oprot.WriteStringAsync(Configuration[_iter63], cancellationToken);
           }
           await oprot.WriteMapEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionResp.cs
index 78237df..23db995 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSOpenSessionResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -87,27 +87,6 @@
     this.ServerProtocolVersion = serverProtocolVersion;
   }
 
-  public TSOpenSessionResp DeepCopy()
-  {
-    var tmp57 = new TSOpenSessionResp();
-    if((Status != null))
-    {
-      tmp57.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    tmp57.ServerProtocolVersion = this.ServerProtocolVersion;
-    if(__isset.sessionId)
-    {
-      tmp57.SessionId = this.SessionId;
-    }
-    tmp57.__isset.sessionId = this.__isset.sessionId;
-    if((Configuration != null) && __isset.configuration)
-    {
-      tmp57.Configuration = this.Configuration.DeepCopy();
-    }
-    tmp57.__isset.configuration = this.__isset.configuration;
-    return tmp57;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -164,15 +143,15 @@
             if (field.Type == TType.Map)
             {
               {
-                TMap _map58 = await iprot.ReadMapBeginAsync(cancellationToken);
-                Configuration = new Dictionary<string, string>(_map58.Count);
-                for(int _i59 = 0; _i59 < _map58.Count; ++_i59)
+                TMap _map53 = await iprot.ReadMapBeginAsync(cancellationToken);
+                Configuration = new Dictionary<string, string>(_map53.Count);
+                for(int _i54 = 0; _i54 < _map53.Count; ++_i54)
                 {
-                  string _key60;
-                  string _val61;
-                  _key60 = await iprot.ReadStringAsync(cancellationToken);
-                  _val61 = await iprot.ReadStringAsync(cancellationToken);
-                  Configuration[_key60] = _val61;
+                  string _key55;
+                  string _val56;
+                  _key55 = await iprot.ReadStringAsync(cancellationToken);
+                  _val56 = await iprot.ReadStringAsync(cancellationToken);
+                  Configuration[_key55] = _val56;
                 }
                 await iprot.ReadMapEndAsync(cancellationToken);
               }
@@ -246,10 +225,10 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, Configuration.Count), cancellationToken);
-          foreach (string _iter62 in Configuration.Keys)
+          foreach (string _iter57 in Configuration.Keys)
           {
-            await oprot.WriteStringAsync(_iter62, cancellationToken);
-            await oprot.WriteStringAsync(Configuration[_iter62], cancellationToken);
+            await oprot.WriteStringAsync(_iter57, cancellationToken);
+            await oprot.WriteStringAsync(Configuration[_iter57], cancellationToken);
           }
           await oprot.WriteMapEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSProtocolVersion.cs b/src/Apache.IoTDB/Rpc/Generated/TSProtocolVersion.cs
index 02f3cba..c243719 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSProtocolVersion.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSProtocolVersion.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSPruneSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSPruneSchemaTemplateReq.cs
index 00123f8..d377c88 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSPruneSchemaTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSPruneSchemaTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -49,21 +49,6 @@
     this.Path = path;
   }
 
-  public TSPruneSchemaTemplateReq DeepCopy()
-  {
-    var tmp407 = new TSPruneSchemaTemplateReq();
-    tmp407.SessionId = this.SessionId;
-    if((Name != null))
-    {
-      tmp407.Name = this.Name;
-    }
-    if((Path != null))
-    {
-      tmp407.Path = this.Path;
-    }
-    return tmp407;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSQueryDataSet.cs b/src/Apache.IoTDB/Rpc/Generated/TSQueryDataSet.cs
index ea3c3f7..4927f17 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSQueryDataSet.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSQueryDataSet.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -49,24 +49,6 @@
     this.BitmapList = bitmapList;
   }
 
-  public TSQueryDataSet DeepCopy()
-  {
-    var tmp0 = new TSQueryDataSet();
-    if((Time != null))
-    {
-      tmp0.Time = this.Time.ToArray();
-    }
-    if((ValueList != null))
-    {
-      tmp0.ValueList = this.ValueList.DeepCopy();
-    }
-    if((BitmapList != null))
-    {
-      tmp0.BitmapList = this.BitmapList.DeepCopy();
-    }
-    return tmp0;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -102,13 +84,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list1 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValueList = new List<byte[]>(_list1.Count);
-                for(int _i2 = 0; _i2 < _list1.Count; ++_i2)
+                TList _list0 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValueList = new List<byte[]>(_list0.Count);
+                for(int _i1 = 0; _i1 < _list0.Count; ++_i1)
                 {
-                  byte[] _elem3;
-                  _elem3 = await iprot.ReadBinaryAsync(cancellationToken);
-                  ValueList.Add(_elem3);
+                  byte[] _elem2;
+                  _elem2 = await iprot.ReadBinaryAsync(cancellationToken);
+                  ValueList.Add(_elem2);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -123,13 +105,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list4 = await iprot.ReadListBeginAsync(cancellationToken);
-                BitmapList = new List<byte[]>(_list4.Count);
-                for(int _i5 = 0; _i5 < _list4.Count; ++_i5)
+                TList _list3 = await iprot.ReadListBeginAsync(cancellationToken);
+                BitmapList = new List<byte[]>(_list3.Count);
+                for(int _i4 = 0; _i4 < _list3.Count; ++_i4)
                 {
-                  byte[] _elem6;
-                  _elem6 = await iprot.ReadBinaryAsync(cancellationToken);
-                  BitmapList.Add(_elem6);
+                  byte[] _elem5;
+                  _elem5 = await iprot.ReadBinaryAsync(cancellationToken);
+                  BitmapList.Add(_elem5);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -193,9 +175,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ValueList.Count), cancellationToken);
-          foreach (byte[] _iter7 in ValueList)
+          foreach (byte[] _iter6 in ValueList)
           {
-            await oprot.WriteBinaryAsync(_iter7, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter6, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -209,9 +191,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, BitmapList.Count), cancellationToken);
-          foreach (byte[] _iter8 in BitmapList)
+          foreach (byte[] _iter7 in BitmapList)
           {
-            await oprot.WriteBinaryAsync(_iter8, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter7, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSQueryNonAlignDataSet.cs b/src/Apache.IoTDB/Rpc/Generated/TSQueryNonAlignDataSet.cs
index 0b87ab1..73fac7c 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSQueryNonAlignDataSet.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSQueryNonAlignDataSet.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,20 +46,6 @@
     this.ValueList = valueList;
   }
 
-  public TSQueryNonAlignDataSet DeepCopy()
-  {
-    var tmp10 = new TSQueryNonAlignDataSet();
-    if((TimeList != null))
-    {
-      tmp10.TimeList = this.TimeList.DeepCopy();
-    }
-    if((ValueList != null))
-    {
-      tmp10.ValueList = this.ValueList.DeepCopy();
-    }
-    return tmp10;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -83,13 +69,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list11 = await iprot.ReadListBeginAsync(cancellationToken);
-                TimeList = new List<byte[]>(_list11.Count);
-                for(int _i12 = 0; _i12 < _list11.Count; ++_i12)
+                TList _list9 = await iprot.ReadListBeginAsync(cancellationToken);
+                TimeList = new List<byte[]>(_list9.Count);
+                for(int _i10 = 0; _i10 < _list9.Count; ++_i10)
                 {
-                  byte[] _elem13;
-                  _elem13 = await iprot.ReadBinaryAsync(cancellationToken);
-                  TimeList.Add(_elem13);
+                  byte[] _elem11;
+                  _elem11 = await iprot.ReadBinaryAsync(cancellationToken);
+                  TimeList.Add(_elem11);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -104,13 +90,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list14 = await iprot.ReadListBeginAsync(cancellationToken);
-                ValueList = new List<byte[]>(_list14.Count);
-                for(int _i15 = 0; _i15 < _list14.Count; ++_i15)
+                TList _list12 = await iprot.ReadListBeginAsync(cancellationToken);
+                ValueList = new List<byte[]>(_list12.Count);
+                for(int _i13 = 0; _i13 < _list12.Count; ++_i13)
                 {
-                  byte[] _elem16;
-                  _elem16 = await iprot.ReadBinaryAsync(cancellationToken);
-                  ValueList.Add(_elem16);
+                  byte[] _elem14;
+                  _elem14 = await iprot.ReadBinaryAsync(cancellationToken);
+                  ValueList.Add(_elem14);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -161,9 +147,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, TimeList.Count), cancellationToken);
-          foreach (byte[] _iter17 in TimeList)
+          foreach (byte[] _iter15 in TimeList)
           {
-            await oprot.WriteBinaryAsync(_iter17, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter15, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -177,9 +163,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ValueList.Count), cancellationToken);
-          foreach (byte[] _iter18 in ValueList)
+          foreach (byte[] _iter16 in ValueList)
           {
-            await oprot.WriteBinaryAsync(_iter18, cancellationToken);
+            await oprot.WriteBinaryAsync(_iter16, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateReq.cs
index e3680ff..5073c0e 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -70,23 +70,6 @@
     this.QueryType = queryType;
   }
 
-  public TSQueryTemplateReq DeepCopy()
-  {
-    var tmp409 = new TSQueryTemplateReq();
-    tmp409.SessionId = this.SessionId;
-    if((Name != null))
-    {
-      tmp409.Name = this.Name;
-    }
-    tmp409.QueryType = this.QueryType;
-    if((Measurement != null) && __isset.measurement)
-    {
-      tmp409.Measurement = this.Measurement;
-    }
-    tmp409.__isset.measurement = this.__isset.measurement;
-    return tmp409;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateResp.cs b/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateResp.cs
index 3b4bc97..e289bc7 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateResp.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSQueryTemplateResp.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -97,32 +97,6 @@
     this.QueryType = queryType;
   }
 
-  public TSQueryTemplateResp DeepCopy()
-  {
-    var tmp411 = new TSQueryTemplateResp();
-    if((Status != null))
-    {
-      tmp411.Status = (TSStatus)this.Status.DeepCopy();
-    }
-    tmp411.QueryType = this.QueryType;
-    if(__isset.result)
-    {
-      tmp411.Result = this.Result;
-    }
-    tmp411.__isset.result = this.__isset.result;
-    if(__isset.count)
-    {
-      tmp411.Count = this.Count;
-    }
-    tmp411.__isset.count = this.__isset.count;
-    if((Measurements != null) && __isset.measurements)
-    {
-      tmp411.Measurements = this.Measurements.DeepCopy();
-    }
-    tmp411.__isset.measurements = this.__isset.measurements;
-    return tmp411;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -189,13 +163,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list412 = await iprot.ReadListBeginAsync(cancellationToken);
-                Measurements = new List<string>(_list412.Count);
-                for(int _i413 = 0; _i413 < _list412.Count; ++_i413)
+                TList _list388 = await iprot.ReadListBeginAsync(cancellationToken);
+                Measurements = new List<string>(_list388.Count);
+                for(int _i389 = 0; _i389 < _list388.Count; ++_i389)
                 {
-                  string _elem414;
-                  _elem414 = await iprot.ReadStringAsync(cancellationToken);
-                  Measurements.Add(_elem414);
+                  string _elem390;
+                  _elem390 = await iprot.ReadStringAsync(cancellationToken);
+                  Measurements.Add(_elem390);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -278,9 +252,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Measurements.Count), cancellationToken);
-          foreach (string _iter415 in Measurements)
+          foreach (string _iter391 in Measurements)
           {
-            await oprot.WriteStringAsync(_iter415, cancellationToken);
+            await oprot.WriteStringAsync(_iter391, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSRawDataQueryReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSRawDataQueryReq.cs
index 6663416..85dc4ae 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSRawDataQueryReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSRawDataQueryReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -35,6 +35,7 @@
   private bool _enableRedirectQuery;
   private bool _jdbcQuery;
   private long _timeout;
+  private bool _legalPathNodes;
 
   public long SessionId { get; set; }
 
@@ -98,6 +99,19 @@
     }
   }
 
+  public bool LegalPathNodes
+  {
+    get
+    {
+      return _legalPathNodes;
+    }
+    set
+    {
+      __isset.legalPathNodes = true;
+      this._legalPathNodes = value;
+    }
+  }
+
 
   public Isset __isset;
   public struct Isset
@@ -106,6 +120,7 @@
     public bool enableRedirectQuery;
     public bool jdbcQuery;
     public bool timeout;
+    public bool legalPathNodes;
   }
 
   public TSRawDataQueryReq()
@@ -121,40 +136,6 @@
     this.StatementId = statementId;
   }
 
-  public TSRawDataQueryReq DeepCopy()
-  {
-    var tmp318 = new TSRawDataQueryReq();
-    tmp318.SessionId = this.SessionId;
-    if((Paths != null))
-    {
-      tmp318.Paths = this.Paths.DeepCopy();
-    }
-    if(__isset.fetchSize)
-    {
-      tmp318.FetchSize = this.FetchSize;
-    }
-    tmp318.__isset.fetchSize = this.__isset.fetchSize;
-    tmp318.StartTime = this.StartTime;
-    tmp318.EndTime = this.EndTime;
-    tmp318.StatementId = this.StatementId;
-    if(__isset.enableRedirectQuery)
-    {
-      tmp318.EnableRedirectQuery = this.EnableRedirectQuery;
-    }
-    tmp318.__isset.enableRedirectQuery = this.__isset.enableRedirectQuery;
-    if(__isset.jdbcQuery)
-    {
-      tmp318.JdbcQuery = this.JdbcQuery;
-    }
-    tmp318.__isset.jdbcQuery = this.__isset.jdbcQuery;
-    if(__isset.timeout)
-    {
-      tmp318.Timeout = this.Timeout;
-    }
-    tmp318.__isset.timeout = this.__isset.timeout;
-    return tmp318;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -192,13 +173,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list319 = await iprot.ReadListBeginAsync(cancellationToken);
-                Paths = new List<string>(_list319.Count);
-                for(int _i320 = 0; _i320 < _list319.Count; ++_i320)
+                TList _list289 = await iprot.ReadListBeginAsync(cancellationToken);
+                Paths = new List<string>(_list289.Count);
+                for(int _i290 = 0; _i290 < _list289.Count; ++_i290)
                 {
-                  string _elem321;
-                  _elem321 = await iprot.ReadStringAsync(cancellationToken);
-                  Paths.Add(_elem321);
+                  string _elem291;
+                  _elem291 = await iprot.ReadStringAsync(cancellationToken);
+                  Paths.Add(_elem291);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -282,6 +263,16 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
+          case 10:
+            if (field.Type == TType.Bool)
+            {
+              LegalPathNodes = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
           default: 
             await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             break;
@@ -340,9 +331,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, Paths.Count), cancellationToken);
-          foreach (string _iter322 in Paths)
+          foreach (string _iter292 in Paths)
           {
-            await oprot.WriteStringAsync(_iter322, cancellationToken);
+            await oprot.WriteStringAsync(_iter292, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -402,6 +393,15 @@
         await oprot.WriteI64Async(Timeout, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
       }
+      if(__isset.legalPathNodes)
+      {
+        field.Name = "legalPathNodes";
+        field.Type = TType.Bool;
+        field.ID = 10;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(LegalPathNodes, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
       await oprot.WriteFieldStopAsync(cancellationToken);
       await oprot.WriteStructEndAsync(cancellationToken);
     }
@@ -423,7 +423,8 @@
       && System.Object.Equals(StatementId, other.StatementId)
       && ((__isset.enableRedirectQuery == other.__isset.enableRedirectQuery) && ((!__isset.enableRedirectQuery) || (System.Object.Equals(EnableRedirectQuery, other.EnableRedirectQuery))))
       && ((__isset.jdbcQuery == other.__isset.jdbcQuery) && ((!__isset.jdbcQuery) || (System.Object.Equals(JdbcQuery, other.JdbcQuery))))
-      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))));
+      && ((__isset.timeout == other.__isset.timeout) && ((!__isset.timeout) || (System.Object.Equals(Timeout, other.Timeout))))
+      && ((__isset.legalPathNodes == other.__isset.legalPathNodes) && ((!__isset.legalPathNodes) || (System.Object.Equals(LegalPathNodes, other.LegalPathNodes))));
   }
 
   public override int GetHashCode() {
@@ -453,6 +454,10 @@
       {
         hashcode = (hashcode * 397) + Timeout.GetHashCode();
       }
+      if(__isset.legalPathNodes)
+      {
+        hashcode = (hashcode * 397) + LegalPathNodes.GetHashCode();
+      }
     }
     return hashcode;
   }
@@ -493,6 +498,11 @@
       sb.Append(", Timeout: ");
       Timeout.ToString(sb);
     }
+    if(__isset.legalPathNodes)
+    {
+      sb.Append(", LegalPathNodes: ");
+      LegalPathNodes.ToString(sb);
+    }
     sb.Append(')');
     return sb.ToString();
   }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSSetSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSSetSchemaTemplateReq.cs
index 4078cc6..7d7e213 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSSetSchemaTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSSetSchemaTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -49,21 +49,6 @@
     this.PrefixPath = prefixPath;
   }
 
-  public TSSetSchemaTemplateReq DeepCopy()
-  {
-    var tmp385 = new TSSetSchemaTemplateReq();
-    tmp385.SessionId = this.SessionId;
-    if((TemplateName != null))
-    {
-      tmp385.TemplateName = this.TemplateName;
-    }
-    if((PrefixPath != null))
-    {
-      tmp385.PrefixPath = this.PrefixPath;
-    }
-    return tmp385;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSSetTimeZoneReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSSetTimeZoneReq.cs
index 7d36632..f9f2d84 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSSetTimeZoneReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSSetTimeZoneReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,17 +46,6 @@
     this.TimeZone = timeZone;
   }
 
-  public TSSetTimeZoneReq DeepCopy()
-  {
-    var tmp105 = new TSSetTimeZoneReq();
-    tmp105.SessionId = this.SessionId;
-    if((TimeZone != null))
-    {
-      tmp105.TimeZone = this.TimeZone;
-    }
-    return tmp105;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSStatus.cs b/src/Apache.IoTDB/Rpc/Generated/TSStatus.cs
index fa36296..3575330 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSStatus.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSStatus.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -34,6 +34,7 @@
   private string _message;
   private List<TSStatus> _subStatus;
   private TEndPoint _redirectNode;
+  private bool _needRetry;
 
   public int Code { get; set; }
 
@@ -76,6 +77,19 @@
     }
   }
 
+  public bool NeedRetry
+  {
+    get
+    {
+      return _needRetry;
+    }
+    set
+    {
+      __isset.needRetry = true;
+      this._needRetry = value;
+    }
+  }
+
 
   public Isset __isset;
   public struct Isset
@@ -83,6 +97,7 @@
     public bool message;
     public bool subStatus;
     public bool redirectNode;
+    public bool needRetry;
   }
 
   public TSStatus()
@@ -94,28 +109,6 @@
     this.Code = code;
   }
 
-  public TSStatus DeepCopy()
-  {
-    var tmp2 = new TSStatus();
-    tmp2.Code = this.Code;
-    if((Message != null) && __isset.message)
-    {
-      tmp2.Message = this.Message;
-    }
-    tmp2.__isset.message = this.__isset.message;
-    if((SubStatus != null) && __isset.subStatus)
-    {
-      tmp2.SubStatus = this.SubStatus.DeepCopy();
-    }
-    tmp2.__isset.subStatus = this.__isset.subStatus;
-    if((RedirectNode != null) && __isset.redirectNode)
-    {
-      tmp2.RedirectNode = (TEndPoint)this.RedirectNode.DeepCopy();
-    }
-    tmp2.__isset.redirectNode = this.__isset.redirectNode;
-    return tmp2;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -159,14 +152,14 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list3 = await iprot.ReadListBeginAsync(cancellationToken);
-                SubStatus = new List<TSStatus>(_list3.Count);
-                for(int _i4 = 0; _i4 < _list3.Count; ++_i4)
+                TList _list1 = await iprot.ReadListBeginAsync(cancellationToken);
+                SubStatus = new List<TSStatus>(_list1.Count);
+                for(int _i2 = 0; _i2 < _list1.Count; ++_i2)
                 {
-                  TSStatus _elem5;
-                  _elem5 = new TSStatus();
-                  await _elem5.ReadAsync(iprot, cancellationToken);
-                  SubStatus.Add(_elem5);
+                  TSStatus _elem3;
+                  _elem3 = new TSStatus();
+                  await _elem3.ReadAsync(iprot, cancellationToken);
+                  SubStatus.Add(_elem3);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -187,6 +180,16 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
+          case 5:
+            if (field.Type == TType.Bool)
+            {
+              NeedRetry = await iprot.ReadBoolAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
           default: 
             await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             break;
@@ -238,9 +241,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.Struct, SubStatus.Count), cancellationToken);
-          foreach (TSStatus _iter6 in SubStatus)
+          foreach (TSStatus _iter4 in SubStatus)
           {
-            await _iter6.WriteAsync(oprot, cancellationToken);
+            await _iter4.WriteAsync(oprot, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -255,6 +258,15 @@
         await RedirectNode.WriteAsync(oprot, cancellationToken);
         await oprot.WriteFieldEndAsync(cancellationToken);
       }
+      if(__isset.needRetry)
+      {
+        field.Name = "needRetry";
+        field.Type = TType.Bool;
+        field.ID = 5;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteBoolAsync(NeedRetry, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
       await oprot.WriteFieldStopAsync(cancellationToken);
       await oprot.WriteStructEndAsync(cancellationToken);
     }
@@ -271,7 +283,8 @@
     return System.Object.Equals(Code, other.Code)
       && ((__isset.message == other.__isset.message) && ((!__isset.message) || (System.Object.Equals(Message, other.Message))))
       && ((__isset.subStatus == other.__isset.subStatus) && ((!__isset.subStatus) || (TCollections.Equals(SubStatus, other.SubStatus))))
-      && ((__isset.redirectNode == other.__isset.redirectNode) && ((!__isset.redirectNode) || (System.Object.Equals(RedirectNode, other.RedirectNode))));
+      && ((__isset.redirectNode == other.__isset.redirectNode) && ((!__isset.redirectNode) || (System.Object.Equals(RedirectNode, other.RedirectNode))))
+      && ((__isset.needRetry == other.__isset.needRetry) && ((!__isset.needRetry) || (System.Object.Equals(NeedRetry, other.NeedRetry))));
   }
 
   public override int GetHashCode() {
@@ -290,6 +303,10 @@
       {
         hashcode = (hashcode * 397) + RedirectNode.GetHashCode();
       }
+      if(__isset.needRetry)
+      {
+        hashcode = (hashcode * 397) + NeedRetry.GetHashCode();
+      }
     }
     return hashcode;
   }
@@ -314,6 +331,11 @@
       sb.Append(", RedirectNode: ");
       RedirectNode.ToString(sb);
     }
+    if(__isset.needRetry)
+    {
+      sb.Append(", NeedRetry: ");
+      NeedRetry.ToString(sb);
+    }
     sb.Append(')');
     return sb.ToString();
   }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSTracingInfo.cs b/src/Apache.IoTDB/Rpc/Generated/TSTracingInfo.cs
index af09a6f..a5029a9 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSTracingInfo.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSTracingInfo.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -187,65 +187,6 @@
     this.ElapsedTimeList = elapsedTimeList;
   }
 
-  public TSTracingInfo DeepCopy()
-  {
-    var tmp20 = new TSTracingInfo();
-    if((ActivityList != null))
-    {
-      tmp20.ActivityList = this.ActivityList.DeepCopy();
-    }
-    if((ElapsedTimeList != null))
-    {
-      tmp20.ElapsedTimeList = this.ElapsedTimeList.DeepCopy();
-    }
-    if(__isset.seriesPathNum)
-    {
-      tmp20.SeriesPathNum = this.SeriesPathNum;
-    }
-    tmp20.__isset.seriesPathNum = this.__isset.seriesPathNum;
-    if(__isset.seqFileNum)
-    {
-      tmp20.SeqFileNum = this.SeqFileNum;
-    }
-    tmp20.__isset.seqFileNum = this.__isset.seqFileNum;
-    if(__isset.unSeqFileNum)
-    {
-      tmp20.UnSeqFileNum = this.UnSeqFileNum;
-    }
-    tmp20.__isset.unSeqFileNum = this.__isset.unSeqFileNum;
-    if(__isset.sequenceChunkNum)
-    {
-      tmp20.SequenceChunkNum = this.SequenceChunkNum;
-    }
-    tmp20.__isset.sequenceChunkNum = this.__isset.sequenceChunkNum;
-    if(__isset.sequenceChunkPointNum)
-    {
-      tmp20.SequenceChunkPointNum = this.SequenceChunkPointNum;
-    }
-    tmp20.__isset.sequenceChunkPointNum = this.__isset.sequenceChunkPointNum;
-    if(__isset.unsequenceChunkNum)
-    {
-      tmp20.UnsequenceChunkNum = this.UnsequenceChunkNum;
-    }
-    tmp20.__isset.unsequenceChunkNum = this.__isset.unsequenceChunkNum;
-    if(__isset.unsequenceChunkPointNum)
-    {
-      tmp20.UnsequenceChunkPointNum = this.UnsequenceChunkPointNum;
-    }
-    tmp20.__isset.unsequenceChunkPointNum = this.__isset.unsequenceChunkPointNum;
-    if(__isset.totalPageNum)
-    {
-      tmp20.TotalPageNum = this.TotalPageNum;
-    }
-    tmp20.__isset.totalPageNum = this.__isset.totalPageNum;
-    if(__isset.overlappedPageNum)
-    {
-      tmp20.OverlappedPageNum = this.OverlappedPageNum;
-    }
-    tmp20.__isset.overlappedPageNum = this.__isset.overlappedPageNum;
-    return tmp20;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
@@ -269,13 +210,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list21 = await iprot.ReadListBeginAsync(cancellationToken);
-                ActivityList = new List<string>(_list21.Count);
-                for(int _i22 = 0; _i22 < _list21.Count; ++_i22)
+                TList _list18 = await iprot.ReadListBeginAsync(cancellationToken);
+                ActivityList = new List<string>(_list18.Count);
+                for(int _i19 = 0; _i19 < _list18.Count; ++_i19)
                 {
-                  string _elem23;
-                  _elem23 = await iprot.ReadStringAsync(cancellationToken);
-                  ActivityList.Add(_elem23);
+                  string _elem20;
+                  _elem20 = await iprot.ReadStringAsync(cancellationToken);
+                  ActivityList.Add(_elem20);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -290,13 +231,13 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list24 = await iprot.ReadListBeginAsync(cancellationToken);
-                ElapsedTimeList = new List<long>(_list24.Count);
-                for(int _i25 = 0; _i25 < _list24.Count; ++_i25)
+                TList _list21 = await iprot.ReadListBeginAsync(cancellationToken);
+                ElapsedTimeList = new List<long>(_list21.Count);
+                for(int _i22 = 0; _i22 < _list21.Count; ++_i22)
                 {
-                  long _elem26;
-                  _elem26 = await iprot.ReadI64Async(cancellationToken);
-                  ElapsedTimeList.Add(_elem26);
+                  long _elem23;
+                  _elem23 = await iprot.ReadI64Async(cancellationToken);
+                  ElapsedTimeList.Add(_elem23);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
@@ -437,9 +378,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.String, ActivityList.Count), cancellationToken);
-          foreach (string _iter27 in ActivityList)
+          foreach (string _iter24 in ActivityList)
           {
-            await oprot.WriteStringAsync(_iter27, cancellationToken);
+            await oprot.WriteStringAsync(_iter24, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -453,9 +394,9 @@
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
           await oprot.WriteListBeginAsync(new TList(TType.I64, ElapsedTimeList.Count), cancellationToken);
-          foreach (long _iter28 in ElapsedTimeList)
+          foreach (long _iter25 in ElapsedTimeList)
           {
-            await oprot.WriteI64Async(_iter28, cancellationToken);
+            await oprot.WriteI64Async(_iter25, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSUnsetSchemaTemplateReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSUnsetSchemaTemplateReq.cs
index 1d99924..7aa04f4 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSUnsetSchemaTemplateReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSUnsetSchemaTemplateReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -49,21 +49,6 @@
     this.TemplateName = templateName;
   }
 
-  public TSUnsetSchemaTemplateReq DeepCopy()
-  {
-    var tmp417 = new TSUnsetSchemaTemplateReq();
-    tmp417.SessionId = this.SessionId;
-    if((PrefixPath != null))
-    {
-      tmp417.PrefixPath = this.PrefixPath;
-    }
-    if((TemplateName != null))
-    {
-      tmp417.TemplateName = this.TemplateName;
-    }
-    return tmp417;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSchemaNode.cs b/src/Apache.IoTDB/Rpc/Generated/TSchemaNode.cs
index 0ddd5f6..1cc55f7 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSchemaNode.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSchemaNode.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,17 +46,6 @@
     this.NodeType = nodeType;
   }
 
-  public TSchemaNode DeepCopy()
-  {
-    var tmp34 = new TSchemaNode();
-    if((NodeName != null))
-    {
-      tmp34.NodeName = this.NodeName;
-    }
-    tmp34.NodeType = this.NodeType;
-    return tmp34;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSender.cs b/src/Apache.IoTDB/Rpc/Generated/TSender.cs
new file mode 100644
index 0000000..9cadb9b
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSender.cs
@@ -0,0 +1,208 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSender : TBase
+{
+  private TDataNodeLocation _dataNodeLocation;
+  private TConfigNodeLocation _configNodeLocation;
+
+  public TDataNodeLocation DataNodeLocation
+  {
+    get
+    {
+      return _dataNodeLocation;
+    }
+    set
+    {
+      __isset.dataNodeLocation = true;
+      this._dataNodeLocation = value;
+    }
+  }
+
+  public TConfigNodeLocation ConfigNodeLocation
+  {
+    get
+    {
+      return _configNodeLocation;
+    }
+    set
+    {
+      __isset.configNodeLocation = true;
+      this._configNodeLocation = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool dataNodeLocation;
+    public bool configNodeLocation;
+  }
+
+  public TSender()
+  {
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              DataNodeLocation = new TDataNodeLocation();
+              await DataNodeLocation.ReadAsync(iprot, cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.Struct)
+            {
+              ConfigNodeLocation = new TConfigNodeLocation();
+              await ConfigNodeLocation.ReadAsync(iprot, cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSender");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((DataNodeLocation != null) && __isset.dataNodeLocation)
+      {
+        field.Name = "dataNodeLocation";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await DataNodeLocation.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((ConfigNodeLocation != null) && __isset.configNodeLocation)
+      {
+        field.Name = "configNodeLocation";
+        field.Type = TType.Struct;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await ConfigNodeLocation.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSender other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return ((__isset.dataNodeLocation == other.__isset.dataNodeLocation) && ((!__isset.dataNodeLocation) || (System.Object.Equals(DataNodeLocation, other.DataNodeLocation))))
+      && ((__isset.configNodeLocation == other.__isset.configNodeLocation) && ((!__isset.configNodeLocation) || (System.Object.Equals(ConfigNodeLocation, other.ConfigNodeLocation))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((DataNodeLocation != null) && __isset.dataNodeLocation)
+      {
+        hashcode = (hashcode * 397) + DataNodeLocation.GetHashCode();
+      }
+      if((ConfigNodeLocation != null) && __isset.configNodeLocation)
+      {
+        hashcode = (hashcode * 397) + ConfigNodeLocation.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSender(");
+    int tmp67 = 0;
+    if((DataNodeLocation != null) && __isset.dataNodeLocation)
+    {
+      if(0 < tmp67++) { sb.Append(", "); }
+      sb.Append("DataNodeLocation: ");
+      DataNodeLocation.ToString(sb);
+    }
+    if((ConfigNodeLocation != null) && __isset.configNodeLocation)
+    {
+      if(0 < tmp67++) { sb.Append(", "); }
+      sb.Append("ConfigNodeLocation: ");
+      ConfigNodeLocation.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSeriesPartitionSlot.cs b/src/Apache.IoTDB/Rpc/Generated/TSeriesPartitionSlot.cs
index 744cdf1..3f14d2b 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSeriesPartitionSlot.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSeriesPartitionSlot.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -43,13 +43,6 @@
     this.SlotId = slotId;
   }
 
-  public TSeriesPartitionSlot DeepCopy()
-  {
-    var tmp10 = new TSeriesPartitionSlot();
-    tmp10.SlotId = this.SlotId;
-    return tmp10;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TServiceProvider.cs b/src/Apache.IoTDB/Rpc/Generated/TServiceProvider.cs
new file mode 100644
index 0000000..3480593
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TServiceProvider.cs
@@ -0,0 +1,185 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TServiceProvider : TBase
+{
+
+  public TEndPoint EndPoint { get; set; }
+
+  /// <summary>
+  /// 
+  /// <seealso cref="global::.TServiceType"/>
+  /// </summary>
+  public TServiceType ServiceType { get; set; }
+
+  public TServiceProvider()
+  {
+  }
+
+  public TServiceProvider(TEndPoint endPoint, TServiceType serviceType) : this()
+  {
+    this.EndPoint = endPoint;
+    this.ServiceType = serviceType;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_endPoint = false;
+      bool isset_serviceType = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              EndPoint = new TEndPoint();
+              await EndPoint.ReadAsync(iprot, cancellationToken);
+              isset_endPoint = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I32)
+            {
+              ServiceType = (TServiceType)await iprot.ReadI32Async(cancellationToken);
+              isset_serviceType = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_endPoint)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_serviceType)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TServiceProvider");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((EndPoint != null))
+      {
+        field.Name = "endPoint";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await EndPoint.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      field.Name = "serviceType";
+      field.Type = TType.I32;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI32Async((int)ServiceType, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TServiceProvider other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(EndPoint, other.EndPoint)
+      && System.Object.Equals(ServiceType, other.ServiceType);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((EndPoint != null))
+      {
+        hashcode = (hashcode * 397) + EndPoint.GetHashCode();
+      }
+      hashcode = (hashcode * 397) + ServiceType.GetHashCode();
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TServiceProvider(");
+    if((EndPoint != null))
+    {
+      sb.Append(", EndPoint: ");
+      EndPoint.ToString(sb);
+    }
+    sb.Append(", ServiceType: ");
+    ServiceType.ToString(sb);
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TServiceType.cs b/src/Apache.IoTDB/Rpc/Generated/TServiceType.cs
new file mode 100644
index 0000000..757c67a
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TServiceType.cs
@@ -0,0 +1,17 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+public enum TServiceType
+{
+  ConfigNodeInternalService = 0,
+  DataNodeInternalService = 1,
+  DataNodeMPPService = 2,
+  DataNodeExternalService = 3,
+}
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSetConfigurationReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSetConfigurationReq.cs
new file mode 100644
index 0000000..b2d316a
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSetConfigurationReq.cs
@@ -0,0 +1,200 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSetConfigurationReq : TBase
+{
+
+  public Dictionary<string, string> Configs { get; set; }
+
+  public int NodeId { get; set; }
+
+  public TSetConfigurationReq()
+  {
+  }
+
+  public TSetConfigurationReq(Dictionary<string, string> configs, int nodeId) : this()
+  {
+    this.Configs = configs;
+    this.NodeId = nodeId;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_configs = false;
+      bool isset_nodeId = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Map)
+            {
+              {
+                TMap _map29 = await iprot.ReadMapBeginAsync(cancellationToken);
+                Configs = new Dictionary<string, string>(_map29.Count);
+                for(int _i30 = 0; _i30 < _map29.Count; ++_i30)
+                {
+                  string _key31;
+                  string _val32;
+                  _key31 = await iprot.ReadStringAsync(cancellationToken);
+                  _val32 = await iprot.ReadStringAsync(cancellationToken);
+                  Configs[_key31] = _val32;
+                }
+                await iprot.ReadMapEndAsync(cancellationToken);
+              }
+              isset_configs = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I32)
+            {
+              NodeId = await iprot.ReadI32Async(cancellationToken);
+              isset_nodeId = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_configs)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_nodeId)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSetConfigurationReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Configs != null))
+      {
+        field.Name = "configs";
+        field.Type = TType.Map;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteMapBeginAsync(new TMap(TType.String, TType.String, Configs.Count), cancellationToken);
+          foreach (string _iter33 in Configs.Keys)
+          {
+            await oprot.WriteStringAsync(_iter33, cancellationToken);
+            await oprot.WriteStringAsync(Configs[_iter33], cancellationToken);
+          }
+          await oprot.WriteMapEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      field.Name = "nodeId";
+      field.Type = TType.I32;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI32Async(NodeId, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSetConfigurationReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return TCollections.Equals(Configs, other.Configs)
+      && System.Object.Equals(NodeId, other.NodeId);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Configs != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Configs);
+      }
+      hashcode = (hashcode * 397) + NodeId.GetHashCode();
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSetConfigurationReq(");
+    if((Configs != null))
+    {
+      sb.Append(", Configs: ");
+      Configs.ToString(sb);
+    }
+    sb.Append(", NodeId: ");
+    NodeId.ToString(sb);
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSetSpaceQuotaReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSetSpaceQuotaReq.cs
new file mode 100644
index 0000000..7bc7f83
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSetSpaceQuotaReq.cs
@@ -0,0 +1,207 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSetSpaceQuotaReq : TBase
+{
+
+  public List<string> Database { get; set; }
+
+  public TSpaceQuota SpaceLimit { get; set; }
+
+  public TSetSpaceQuotaReq()
+  {
+  }
+
+  public TSetSpaceQuotaReq(List<string> database, TSpaceQuota spaceLimit) : this()
+  {
+    this.Database = database;
+    this.SpaceLimit = spaceLimit;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_database = false;
+      bool isset_spaceLimit = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list59 = await iprot.ReadListBeginAsync(cancellationToken);
+                Database = new List<string>(_list59.Count);
+                for(int _i60 = 0; _i60 < _list59.Count; ++_i60)
+                {
+                  string _elem61;
+                  _elem61 = await iprot.ReadStringAsync(cancellationToken);
+                  Database.Add(_elem61);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_database = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.Struct)
+            {
+              SpaceLimit = new TSpaceQuota();
+              await SpaceLimit.ReadAsync(iprot, cancellationToken);
+              isset_spaceLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_database)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_spaceLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSetSpaceQuotaReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Database != null))
+      {
+        field.Name = "database";
+        field.Type = TType.List;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, Database.Count), cancellationToken);
+          foreach (string _iter62 in Database)
+          {
+            await oprot.WriteStringAsync(_iter62, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((SpaceLimit != null))
+      {
+        field.Name = "spaceLimit";
+        field.Type = TType.Struct;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await SpaceLimit.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSetSpaceQuotaReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return TCollections.Equals(Database, other.Database)
+      && System.Object.Equals(SpaceLimit, other.SpaceLimit);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Database != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Database);
+      }
+      if((SpaceLimit != null))
+      {
+        hashcode = (hashcode * 397) + SpaceLimit.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSetSpaceQuotaReq(");
+    if((Database != null))
+    {
+      sb.Append(", Database: ");
+      Database.ToString(sb);
+    }
+    if((SpaceLimit != null))
+    {
+      sb.Append(", SpaceLimit: ");
+      SpaceLimit.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSetTTLReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSetTTLReq.cs
index 1d374a9..c256828 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSetTTLReq.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSetTTLReq.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -32,29 +32,21 @@
 public partial class TSetTTLReq : TBase
 {
 
-  public List<string> StorageGroupPathPattern { get; set; }
+  public List<string> PathPattern { get; set; }
 
   public long TTL { get; set; }
 
+  public bool IsDataBase { get; set; }
+
   public TSetTTLReq()
   {
   }
 
-  public TSetTTLReq(List<string> storageGroupPathPattern, long TTL) : this()
+  public TSetTTLReq(List<string> pathPattern, long TTL, bool isDataBase) : this()
   {
-    this.StorageGroupPathPattern = storageGroupPathPattern;
+    this.PathPattern = pathPattern;
     this.TTL = TTL;
-  }
-
-  public TSetTTLReq DeepCopy()
-  {
-    var tmp36 = new TSetTTLReq();
-    if((StorageGroupPathPattern != null))
-    {
-      tmp36.StorageGroupPathPattern = this.StorageGroupPathPattern.DeepCopy();
-    }
-    tmp36.TTL = this.TTL;
-    return tmp36;
+    this.IsDataBase = isDataBase;
   }
 
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
@@ -62,8 +54,9 @@
     iprot.IncrementRecursionDepth();
     try
     {
-      bool isset_storageGroupPathPattern = false;
+      bool isset_pathPattern = false;
       bool isset_TTL = false;
+      bool isset_isDataBase = false;
       TField field;
       await iprot.ReadStructBeginAsync(cancellationToken);
       while (true)
@@ -80,17 +73,17 @@
             if (field.Type == TType.List)
             {
               {
-                TList _list37 = await iprot.ReadListBeginAsync(cancellationToken);
-                StorageGroupPathPattern = new List<string>(_list37.Count);
-                for(int _i38 = 0; _i38 < _list37.Count; ++_i38)
+                TList _list35 = await iprot.ReadListBeginAsync(cancellationToken);
+                PathPattern = new List<string>(_list35.Count);
+                for(int _i36 = 0; _i36 < _list35.Count; ++_i36)
                 {
-                  string _elem39;
-                  _elem39 = await iprot.ReadStringAsync(cancellationToken);
-                  StorageGroupPathPattern.Add(_elem39);
+                  string _elem37;
+                  _elem37 = await iprot.ReadStringAsync(cancellationToken);
+                  PathPattern.Add(_elem37);
                 }
                 await iprot.ReadListEndAsync(cancellationToken);
               }
-              isset_storageGroupPathPattern = true;
+              isset_pathPattern = true;
             }
             else
             {
@@ -108,6 +101,17 @@
               await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             }
             break;
+          case 3:
+            if (field.Type == TType.Bool)
+            {
+              IsDataBase = await iprot.ReadBoolAsync(cancellationToken);
+              isset_isDataBase = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
           default: 
             await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
             break;
@@ -117,7 +121,7 @@
       }
 
       await iprot.ReadStructEndAsync(cancellationToken);
-      if (!isset_storageGroupPathPattern)
+      if (!isset_pathPattern)
       {
         throw new TProtocolException(TProtocolException.INVALID_DATA);
       }
@@ -125,6 +129,10 @@
       {
         throw new TProtocolException(TProtocolException.INVALID_DATA);
       }
+      if (!isset_isDataBase)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
     }
     finally
     {
@@ -140,17 +148,17 @@
       var struc = new TStruct("TSetTTLReq");
       await oprot.WriteStructBeginAsync(struc, cancellationToken);
       var field = new TField();
-      if((StorageGroupPathPattern != null))
+      if((PathPattern != null))
       {
-        field.Name = "storageGroupPathPattern";
+        field.Name = "pathPattern";
         field.Type = TType.List;
         field.ID = 1;
         await oprot.WriteFieldBeginAsync(field, cancellationToken);
         {
-          await oprot.WriteListBeginAsync(new TList(TType.String, StorageGroupPathPattern.Count), cancellationToken);
-          foreach (string _iter40 in StorageGroupPathPattern)
+          await oprot.WriteListBeginAsync(new TList(TType.String, PathPattern.Count), cancellationToken);
+          foreach (string _iter38 in PathPattern)
           {
-            await oprot.WriteStringAsync(_iter40, cancellationToken);
+            await oprot.WriteStringAsync(_iter38, cancellationToken);
           }
           await oprot.WriteListEndAsync(cancellationToken);
         }
@@ -162,6 +170,12 @@
       await oprot.WriteFieldBeginAsync(field, cancellationToken);
       await oprot.WriteI64Async(TTL, cancellationToken);
       await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "isDataBase";
+      field.Type = TType.Bool;
+      field.ID = 3;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteBoolAsync(IsDataBase, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
       await oprot.WriteFieldStopAsync(cancellationToken);
       await oprot.WriteStructEndAsync(cancellationToken);
     }
@@ -175,18 +189,20 @@
   {
     if (!(that is TSetTTLReq other)) return false;
     if (ReferenceEquals(this, other)) return true;
-    return TCollections.Equals(StorageGroupPathPattern, other.StorageGroupPathPattern)
-      && System.Object.Equals(TTL, other.TTL);
+    return TCollections.Equals(PathPattern, other.PathPattern)
+      && System.Object.Equals(TTL, other.TTL)
+      && System.Object.Equals(IsDataBase, other.IsDataBase);
   }
 
   public override int GetHashCode() {
     int hashcode = 157;
     unchecked {
-      if((StorageGroupPathPattern != null))
+      if((PathPattern != null))
       {
-        hashcode = (hashcode * 397) + TCollections.GetHashCode(StorageGroupPathPattern);
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(PathPattern);
       }
       hashcode = (hashcode * 397) + TTL.GetHashCode();
+      hashcode = (hashcode * 397) + IsDataBase.GetHashCode();
     }
     return hashcode;
   }
@@ -194,13 +210,15 @@
   public override string ToString()
   {
     var sb = new StringBuilder("TSetTTLReq(");
-    if((StorageGroupPathPattern != null))
+    if((PathPattern != null))
     {
-      sb.Append(", StorageGroupPathPattern: ");
-      StorageGroupPathPattern.ToString(sb);
+      sb.Append(", PathPattern: ");
+      PathPattern.ToString(sb);
     }
     sb.Append(", TTL: ");
     TTL.ToString(sb);
+    sb.Append(", IsDataBase: ");
+    IsDataBase.ToString(sb);
     sb.Append(')');
     return sb.ToString();
   }
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSetThrottleQuotaReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSetThrottleQuotaReq.cs
new file mode 100644
index 0000000..651db17
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSetThrottleQuotaReq.cs
@@ -0,0 +1,190 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSetThrottleQuotaReq : TBase
+{
+
+  public string UserName { get; set; }
+
+  public TThrottleQuota ThrottleQuota { get; set; }
+
+  public TSetThrottleQuotaReq()
+  {
+  }
+
+  public TSetThrottleQuotaReq(string userName, TThrottleQuota throttleQuota) : this()
+  {
+    this.UserName = userName;
+    this.ThrottleQuota = throttleQuota;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_userName = false;
+      bool isset_throttleQuota = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.String)
+            {
+              UserName = await iprot.ReadStringAsync(cancellationToken);
+              isset_userName = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.Struct)
+            {
+              ThrottleQuota = new TThrottleQuota();
+              await ThrottleQuota.ReadAsync(iprot, cancellationToken);
+              isset_throttleQuota = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_userName)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_throttleQuota)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSetThrottleQuotaReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((UserName != null))
+      {
+        field.Name = "userName";
+        field.Type = TType.String;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(UserName, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((ThrottleQuota != null))
+      {
+        field.Name = "throttleQuota";
+        field.Type = TType.Struct;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await ThrottleQuota.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSetThrottleQuotaReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(UserName, other.UserName)
+      && System.Object.Equals(ThrottleQuota, other.ThrottleQuota);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((UserName != null))
+      {
+        hashcode = (hashcode * 397) + UserName.GetHashCode();
+      }
+      if((ThrottleQuota != null))
+      {
+        hashcode = (hashcode * 397) + ThrottleQuota.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSetThrottleQuotaReq(");
+    if((UserName != null))
+    {
+      sb.Append(", UserName: ");
+      UserName.ToString(sb);
+    }
+    if((ThrottleQuota != null))
+    {
+      sb.Append(", ThrottleQuota: ");
+      ThrottleQuota.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSettleReq.cs b/src/Apache.IoTDB/Rpc/Generated/TSettleReq.cs
new file mode 100644
index 0000000..786daf1
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSettleReq.cs
@@ -0,0 +1,168 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSettleReq : TBase
+{
+
+  public List<string> Paths { get; set; }
+
+  public TSettleReq()
+  {
+  }
+
+  public TSettleReq(List<string> paths) : this()
+  {
+    this.Paths = paths;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_paths = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list23 = await iprot.ReadListBeginAsync(cancellationToken);
+                Paths = new List<string>(_list23.Count);
+                for(int _i24 = 0; _i24 < _list23.Count; ++_i24)
+                {
+                  string _elem25;
+                  _elem25 = await iprot.ReadStringAsync(cancellationToken);
+                  Paths.Add(_elem25);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_paths = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_paths)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSettleReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Paths != null))
+      {
+        field.Name = "paths";
+        field.Type = TType.List;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, Paths.Count), cancellationToken);
+          foreach (string _iter26 in Paths)
+          {
+            await oprot.WriteStringAsync(_iter26, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSettleReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return TCollections.Equals(Paths, other.Paths);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Paths != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(Paths);
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSettleReq(");
+    if((Paths != null))
+    {
+      sb.Append(", Paths: ");
+      Paths.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TShowConfigurationResp.cs b/src/Apache.IoTDB/Rpc/Generated/TShowConfigurationResp.cs
new file mode 100644
index 0000000..0fa4bb9
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TShowConfigurationResp.cs
@@ -0,0 +1,190 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TShowConfigurationResp : TBase
+{
+
+  public TSStatus Status { get; set; }
+
+  public string Content { get; set; }
+
+  public TShowConfigurationResp()
+  {
+  }
+
+  public TShowConfigurationResp(TSStatus status, string content) : this()
+  {
+    this.Status = status;
+    this.Content = content;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_status = false;
+      bool isset_content = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              Status = new TSStatus();
+              await Status.ReadAsync(iprot, cancellationToken);
+              isset_status = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.String)
+            {
+              Content = await iprot.ReadStringAsync(cancellationToken);
+              isset_content = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_status)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_content)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TShowConfigurationResp");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Status != null))
+      {
+        field.Name = "status";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await Status.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Content != null))
+      {
+        field.Name = "content";
+        field.Type = TType.String;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Content, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TShowConfigurationResp other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Status, other.Status)
+      && System.Object.Equals(Content, other.Content);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Status != null))
+      {
+        hashcode = (hashcode * 397) + Status.GetHashCode();
+      }
+      if((Content != null))
+      {
+        hashcode = (hashcode * 397) + Content.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TShowConfigurationResp(");
+    if((Status != null))
+    {
+      sb.Append(", Status: ");
+      Status.ToString(sb);
+    }
+    if((Content != null))
+    {
+      sb.Append(", Content: ");
+      Content.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TShowConfigurationTemplateResp.cs b/src/Apache.IoTDB/Rpc/Generated/TShowConfigurationTemplateResp.cs
new file mode 100644
index 0000000..79ab277
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TShowConfigurationTemplateResp.cs
@@ -0,0 +1,190 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TShowConfigurationTemplateResp : TBase
+{
+
+  public TSStatus Status { get; set; }
+
+  public string Content { get; set; }
+
+  public TShowConfigurationTemplateResp()
+  {
+  }
+
+  public TShowConfigurationTemplateResp(TSStatus status, string content) : this()
+  {
+    this.Status = status;
+    this.Content = content;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_status = false;
+      bool isset_content = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              Status = new TSStatus();
+              await Status.ReadAsync(iprot, cancellationToken);
+              isset_status = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.String)
+            {
+              Content = await iprot.ReadStringAsync(cancellationToken);
+              isset_content = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_status)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_content)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TShowConfigurationTemplateResp");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Status != null))
+      {
+        field.Name = "status";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await Status.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Content != null))
+      {
+        field.Name = "content";
+        field.Type = TType.String;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Content, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TShowConfigurationTemplateResp other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Status, other.Status)
+      && System.Object.Equals(Content, other.Content);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Status != null))
+      {
+        hashcode = (hashcode * 397) + Status.GetHashCode();
+      }
+      if((Content != null))
+      {
+        hashcode = (hashcode * 397) + Content.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TShowConfigurationTemplateResp(");
+    if((Status != null))
+    {
+      sb.Append(", Status: ");
+      Status.ToString(sb);
+    }
+    if((Content != null))
+    {
+      sb.Append(", Content: ");
+      Content.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TShowTTLReq.cs b/src/Apache.IoTDB/Rpc/Generated/TShowTTLReq.cs
new file mode 100644
index 0000000..eacfb85
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TShowTTLReq.cs
@@ -0,0 +1,168 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TShowTTLReq : TBase
+{
+
+  public List<string> PathPattern { get; set; }
+
+  public TShowTTLReq()
+  {
+  }
+
+  public TShowTTLReq(List<string> pathPattern) : this()
+  {
+    this.PathPattern = pathPattern;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_pathPattern = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list40 = await iprot.ReadListBeginAsync(cancellationToken);
+                PathPattern = new List<string>(_list40.Count);
+                for(int _i41 = 0; _i41 < _list40.Count; ++_i41)
+                {
+                  string _elem42;
+                  _elem42 = await iprot.ReadStringAsync(cancellationToken);
+                  PathPattern.Add(_elem42);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_pathPattern = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_pathPattern)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TShowTTLReq");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((PathPattern != null))
+      {
+        field.Name = "pathPattern";
+        field.Type = TType.List;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.String, PathPattern.Count), cancellationToken);
+          foreach (string _iter43 in PathPattern)
+          {
+            await oprot.WriteStringAsync(_iter43, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TShowTTLReq other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return TCollections.Equals(PathPattern, other.PathPattern);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((PathPattern != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(PathPattern);
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TShowTTLReq(");
+    if((PathPattern != null))
+    {
+      sb.Append(", PathPattern: ");
+      PathPattern.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSpaceQuota.cs b/src/Apache.IoTDB/Rpc/Generated/TSpaceQuota.cs
new file mode 100644
index 0000000..14ca513
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TSpaceQuota.cs
@@ -0,0 +1,251 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TSpaceQuota : TBase
+{
+  private long _diskSize;
+  private long _deviceNum;
+  private long _timeserieNum;
+
+  public long DiskSize
+  {
+    get
+    {
+      return _diskSize;
+    }
+    set
+    {
+      __isset.diskSize = true;
+      this._diskSize = value;
+    }
+  }
+
+  public long DeviceNum
+  {
+    get
+    {
+      return _deviceNum;
+    }
+    set
+    {
+      __isset.deviceNum = true;
+      this._deviceNum = value;
+    }
+  }
+
+  public long TimeserieNum
+  {
+    get
+    {
+      return _timeserieNum;
+    }
+    set
+    {
+      __isset.timeserieNum = true;
+      this._timeserieNum = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool diskSize;
+    public bool deviceNum;
+    public bool timeserieNum;
+  }
+
+  public TSpaceQuota()
+  {
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              DiskSize = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I64)
+            {
+              DeviceNum = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.I64)
+            {
+              TimeserieNum = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TSpaceQuota");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if(__isset.diskSize)
+      {
+        field.Name = "diskSize";
+        field.Type = TType.I64;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(DiskSize, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.deviceNum)
+      {
+        field.Name = "deviceNum";
+        field.Type = TType.I64;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(DeviceNum, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.timeserieNum)
+      {
+        field.Name = "timeserieNum";
+        field.Type = TType.I64;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(TimeserieNum, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TSpaceQuota other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return ((__isset.diskSize == other.__isset.diskSize) && ((!__isset.diskSize) || (System.Object.Equals(DiskSize, other.DiskSize))))
+      && ((__isset.deviceNum == other.__isset.deviceNum) && ((!__isset.deviceNum) || (System.Object.Equals(DeviceNum, other.DeviceNum))))
+      && ((__isset.timeserieNum == other.__isset.timeserieNum) && ((!__isset.timeserieNum) || (System.Object.Equals(TimeserieNum, other.TimeserieNum))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if(__isset.diskSize)
+      {
+        hashcode = (hashcode * 397) + DiskSize.GetHashCode();
+      }
+      if(__isset.deviceNum)
+      {
+        hashcode = (hashcode * 397) + DeviceNum.GetHashCode();
+      }
+      if(__isset.timeserieNum)
+      {
+        hashcode = (hashcode * 397) + TimeserieNum.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TSpaceQuota(");
+    int tmp51 = 0;
+    if(__isset.diskSize)
+    {
+      if(0 < tmp51++) { sb.Append(", "); }
+      sb.Append("DiskSize: ");
+      DiskSize.ToString(sb);
+    }
+    if(__isset.deviceNum)
+    {
+      if(0 < tmp51++) { sb.Append(", "); }
+      sb.Append("DeviceNum: ");
+      DeviceNum.ToString(sb);
+    }
+    if(__isset.timeserieNum)
+    {
+      if(0 < tmp51++) { sb.Append(", "); }
+      sb.Append("TimeserieNum: ");
+      TimeserieNum.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSyncIdentityInfo.cs b/src/Apache.IoTDB/Rpc/Generated/TSyncIdentityInfo.cs
index a792a94..ccf7bc5 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSyncIdentityInfo.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSyncIdentityInfo.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -52,25 +52,6 @@
     this.Database = database;
   }
 
-  public TSyncIdentityInfo DeepCopy()
-  {
-    var tmp421 = new TSyncIdentityInfo();
-    if((PipeName != null))
-    {
-      tmp421.PipeName = this.PipeName;
-    }
-    tmp421.CreateTime = this.CreateTime;
-    if((Version != null))
-    {
-      tmp421.Version = this.Version;
-    }
-    if((Database != null))
-    {
-      tmp421.Database = this.Database;
-    }
-    return tmp421;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TSyncTransportMetaInfo.cs b/src/Apache.IoTDB/Rpc/Generated/TSyncTransportMetaInfo.cs
index 4d04dbf..ef840cc 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TSyncTransportMetaInfo.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TSyncTransportMetaInfo.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -46,17 +46,6 @@
     this.StartIndex = startIndex;
   }
 
-  public TSyncTransportMetaInfo DeepCopy()
-  {
-    var tmp423 = new TSyncTransportMetaInfo();
-    if((FileName != null))
-    {
-      tmp423.FileName = this.FileName;
-    }
-    tmp423.StartIndex = this.StartIndex;
-    return tmp423;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TTestConnectionResp.cs b/src/Apache.IoTDB/Rpc/Generated/TTestConnectionResp.cs
new file mode 100644
index 0000000..836a6a7
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TTestConnectionResp.cs
@@ -0,0 +1,208 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TTestConnectionResp : TBase
+{
+
+  public TSStatus Status { get; set; }
+
+  public List<TTestConnectionResult> ResultList { get; set; }
+
+  public TTestConnectionResp()
+  {
+  }
+
+  public TTestConnectionResp(TSStatus status, List<TTestConnectionResult> resultList) : this()
+  {
+    this.Status = status;
+    this.ResultList = resultList;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_status = false;
+      bool isset_resultList = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              Status = new TSStatus();
+              await Status.ReadAsync(iprot, cancellationToken);
+              isset_status = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.List)
+            {
+              {
+                TList _list69 = await iprot.ReadListBeginAsync(cancellationToken);
+                ResultList = new List<TTestConnectionResult>(_list69.Count);
+                for(int _i70 = 0; _i70 < _list69.Count; ++_i70)
+                {
+                  TTestConnectionResult _elem71;
+                  _elem71 = new TTestConnectionResult();
+                  await _elem71.ReadAsync(iprot, cancellationToken);
+                  ResultList.Add(_elem71);
+                }
+                await iprot.ReadListEndAsync(cancellationToken);
+              }
+              isset_resultList = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_status)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_resultList)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TTestConnectionResp");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((Status != null))
+      {
+        field.Name = "status";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await Status.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((ResultList != null))
+      {
+        field.Name = "resultList";
+        field.Type = TType.List;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteListBeginAsync(new TList(TType.Struct, ResultList.Count), cancellationToken);
+          foreach (TTestConnectionResult _iter72 in ResultList)
+          {
+            await _iter72.WriteAsync(oprot, cancellationToken);
+          }
+          await oprot.WriteListEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TTestConnectionResp other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(Status, other.Status)
+      && TCollections.Equals(ResultList, other.ResultList);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((Status != null))
+      {
+        hashcode = (hashcode * 397) + Status.GetHashCode();
+      }
+      if((ResultList != null))
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(ResultList);
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TTestConnectionResp(");
+    if((Status != null))
+    {
+      sb.Append(", Status: ");
+      Status.ToString(sb);
+    }
+    if((ResultList != null))
+    {
+      sb.Append(", ResultList: ");
+      ResultList.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TTestConnectionResult.cs b/src/Apache.IoTDB/Rpc/Generated/TTestConnectionResult.cs
new file mode 100644
index 0000000..b4117b9
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TTestConnectionResult.cs
@@ -0,0 +1,270 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TTestConnectionResult : TBase
+{
+  private string _reason;
+
+  public TServiceProvider ServiceProvider { get; set; }
+
+  public TSender Sender { get; set; }
+
+  public bool Success { get; set; }
+
+  public string Reason
+  {
+    get
+    {
+      return _reason;
+    }
+    set
+    {
+      __isset.reason = true;
+      this._reason = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool reason;
+  }
+
+  public TTestConnectionResult()
+  {
+  }
+
+  public TTestConnectionResult(TServiceProvider serviceProvider, TSender sender, bool success) : this()
+  {
+    this.ServiceProvider = serviceProvider;
+    this.Sender = sender;
+    this.Success = success;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_serviceProvider = false;
+      bool isset_sender = false;
+      bool isset_success = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Struct)
+            {
+              ServiceProvider = new TServiceProvider();
+              await ServiceProvider.ReadAsync(iprot, cancellationToken);
+              isset_serviceProvider = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.Struct)
+            {
+              Sender = new TSender();
+              await Sender.ReadAsync(iprot, cancellationToken);
+              isset_sender = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.Bool)
+            {
+              Success = await iprot.ReadBoolAsync(cancellationToken);
+              isset_success = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 4:
+            if (field.Type == TType.String)
+            {
+              Reason = await iprot.ReadStringAsync(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_serviceProvider)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_sender)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_success)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TTestConnectionResult");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((ServiceProvider != null))
+      {
+        field.Name = "serviceProvider";
+        field.Type = TType.Struct;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await ServiceProvider.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if((Sender != null))
+      {
+        field.Name = "sender";
+        field.Type = TType.Struct;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await Sender.WriteAsync(oprot, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      field.Name = "success";
+      field.Type = TType.Bool;
+      field.ID = 3;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteBoolAsync(Success, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      if((Reason != null) && __isset.reason)
+      {
+        field.Name = "reason";
+        field.Type = TType.String;
+        field.ID = 4;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteStringAsync(Reason, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TTestConnectionResult other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(ServiceProvider, other.ServiceProvider)
+      && System.Object.Equals(Sender, other.Sender)
+      && System.Object.Equals(Success, other.Success)
+      && ((__isset.reason == other.__isset.reason) && ((!__isset.reason) || (System.Object.Equals(Reason, other.Reason))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((ServiceProvider != null))
+      {
+        hashcode = (hashcode * 397) + ServiceProvider.GetHashCode();
+      }
+      if((Sender != null))
+      {
+        hashcode = (hashcode * 397) + Sender.GetHashCode();
+      }
+      hashcode = (hashcode * 397) + Success.GetHashCode();
+      if((Reason != null) && __isset.reason)
+      {
+        hashcode = (hashcode * 397) + Reason.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TTestConnectionResult(");
+    if((ServiceProvider != null))
+    {
+      sb.Append(", ServiceProvider: ");
+      ServiceProvider.ToString(sb);
+    }
+    if((Sender != null))
+    {
+      sb.Append(", Sender: ");
+      Sender.ToString(sb);
+    }
+    sb.Append(", Success: ");
+    Success.ToString(sb);
+    if((Reason != null) && __isset.reason)
+    {
+      sb.Append(", Reason: ");
+      Reason.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TThrottleQuota.cs b/src/Apache.IoTDB/Rpc/Generated/TThrottleQuota.cs
new file mode 100644
index 0000000..25794ec
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TThrottleQuota.cs
@@ -0,0 +1,272 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TThrottleQuota : TBase
+{
+  private Dictionary<ThrottleType, TTimedQuota> _throttleLimit;
+  private long _memLimit;
+  private int _cpuLimit;
+
+  public Dictionary<ThrottleType, TTimedQuota> ThrottleLimit
+  {
+    get
+    {
+      return _throttleLimit;
+    }
+    set
+    {
+      __isset.throttleLimit = true;
+      this._throttleLimit = value;
+    }
+  }
+
+  public long MemLimit
+  {
+    get
+    {
+      return _memLimit;
+    }
+    set
+    {
+      __isset.memLimit = true;
+      this._memLimit = value;
+    }
+  }
+
+  public int CpuLimit
+  {
+    get
+    {
+      return _cpuLimit;
+    }
+    set
+    {
+      __isset.cpuLimit = true;
+      this._cpuLimit = value;
+    }
+  }
+
+
+  public Isset __isset;
+  public struct Isset
+  {
+    public bool throttleLimit;
+    public bool memLimit;
+    public bool cpuLimit;
+  }
+
+  public TThrottleQuota()
+  {
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.Map)
+            {
+              {
+                TMap _map53 = await iprot.ReadMapBeginAsync(cancellationToken);
+                ThrottleLimit = new Dictionary<ThrottleType, TTimedQuota>(_map53.Count);
+                for(int _i54 = 0; _i54 < _map53.Count; ++_i54)
+                {
+                  ThrottleType _key55;
+                  TTimedQuota _val56;
+                  _key55 = (ThrottleType)await iprot.ReadI32Async(cancellationToken);
+                  _val56 = new TTimedQuota();
+                  await _val56.ReadAsync(iprot, cancellationToken);
+                  ThrottleLimit[_key55] = _val56;
+                }
+                await iprot.ReadMapEndAsync(cancellationToken);
+              }
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I64)
+            {
+              MemLimit = await iprot.ReadI64Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 3:
+            if (field.Type == TType.I32)
+            {
+              CpuLimit = await iprot.ReadI32Async(cancellationToken);
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TThrottleQuota");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      if((ThrottleLimit != null) && __isset.throttleLimit)
+      {
+        field.Name = "throttleLimit";
+        field.Type = TType.Map;
+        field.ID = 1;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        {
+          await oprot.WriteMapBeginAsync(new TMap(TType.I32, TType.Struct, ThrottleLimit.Count), cancellationToken);
+          foreach (ThrottleType _iter57 in ThrottleLimit.Keys)
+          {
+            await oprot.WriteI32Async((int)_iter57, cancellationToken);
+            await ThrottleLimit[_iter57].WriteAsync(oprot, cancellationToken);
+          }
+          await oprot.WriteMapEndAsync(cancellationToken);
+        }
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.memLimit)
+      {
+        field.Name = "memLimit";
+        field.Type = TType.I64;
+        field.ID = 2;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI64Async(MemLimit, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      if(__isset.cpuLimit)
+      {
+        field.Name = "cpuLimit";
+        field.Type = TType.I32;
+        field.ID = 3;
+        await oprot.WriteFieldBeginAsync(field, cancellationToken);
+        await oprot.WriteI32Async(CpuLimit, cancellationToken);
+        await oprot.WriteFieldEndAsync(cancellationToken);
+      }
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TThrottleQuota other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return ((__isset.throttleLimit == other.__isset.throttleLimit) && ((!__isset.throttleLimit) || (TCollections.Equals(ThrottleLimit, other.ThrottleLimit))))
+      && ((__isset.memLimit == other.__isset.memLimit) && ((!__isset.memLimit) || (System.Object.Equals(MemLimit, other.MemLimit))))
+      && ((__isset.cpuLimit == other.__isset.cpuLimit) && ((!__isset.cpuLimit) || (System.Object.Equals(CpuLimit, other.CpuLimit))));
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      if((ThrottleLimit != null) && __isset.throttleLimit)
+      {
+        hashcode = (hashcode * 397) + TCollections.GetHashCode(ThrottleLimit);
+      }
+      if(__isset.memLimit)
+      {
+        hashcode = (hashcode * 397) + MemLimit.GetHashCode();
+      }
+      if(__isset.cpuLimit)
+      {
+        hashcode = (hashcode * 397) + CpuLimit.GetHashCode();
+      }
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TThrottleQuota(");
+    int tmp58 = 0;
+    if((ThrottleLimit != null) && __isset.throttleLimit)
+    {
+      if(0 < tmp58++) { sb.Append(", "); }
+      sb.Append("ThrottleLimit: ");
+      ThrottleLimit.ToString(sb);
+    }
+    if(__isset.memLimit)
+    {
+      if(0 < tmp58++) { sb.Append(", "); }
+      sb.Append("MemLimit: ");
+      MemLimit.ToString(sb);
+    }
+    if(__isset.cpuLimit)
+    {
+      if(0 < tmp58++) { sb.Append(", "); }
+      sb.Append("CpuLimit: ");
+      CpuLimit.ToString(sb);
+    }
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/TTimePartitionSlot.cs b/src/Apache.IoTDB/Rpc/Generated/TTimePartitionSlot.cs
index 1adf4fa..abf1d79 100644
--- a/src/Apache.IoTDB/Rpc/Generated/TTimePartitionSlot.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/TTimePartitionSlot.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -43,13 +43,6 @@
     this.StartTime = startTime;
   }
 
-  public TTimePartitionSlot DeepCopy()
-  {
-    var tmp12 = new TTimePartitionSlot();
-    tmp12.StartTime = this.StartTime;
-    return tmp12;
-  }
-
   public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
   {
     iprot.IncrementRecursionDepth();
diff --git a/src/Apache.IoTDB/Rpc/Generated/TTimedQuota.cs b/src/Apache.IoTDB/Rpc/Generated/TTimedQuota.cs
new file mode 100644
index 0000000..282ac91
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/TTimedQuota.cs
@@ -0,0 +1,171 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Thrift;
+using Thrift.Collections;
+
+using Thrift.Protocol;
+using Thrift.Protocol.Entities;
+using Thrift.Protocol.Utilities;
+using Thrift.Transport;
+using Thrift.Transport.Client;
+using Thrift.Transport.Server;
+using Thrift.Processor;
+
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+
+public partial class TTimedQuota : TBase
+{
+
+  public long TimeUnit { get; set; }
+
+  public long SoftLimit { get; set; }
+
+  public TTimedQuota()
+  {
+  }
+
+  public TTimedQuota(long timeUnit, long softLimit) : this()
+  {
+    this.TimeUnit = timeUnit;
+    this.SoftLimit = softLimit;
+  }
+
+  public async global::System.Threading.Tasks.Task ReadAsync(TProtocol iprot, CancellationToken cancellationToken)
+  {
+    iprot.IncrementRecursionDepth();
+    try
+    {
+      bool isset_timeUnit = false;
+      bool isset_softLimit = false;
+      TField field;
+      await iprot.ReadStructBeginAsync(cancellationToken);
+      while (true)
+      {
+        field = await iprot.ReadFieldBeginAsync(cancellationToken);
+        if (field.Type == TType.Stop)
+        {
+          break;
+        }
+
+        switch (field.ID)
+        {
+          case 1:
+            if (field.Type == TType.I64)
+            {
+              TimeUnit = await iprot.ReadI64Async(cancellationToken);
+              isset_timeUnit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          case 2:
+            if (field.Type == TType.I64)
+            {
+              SoftLimit = await iprot.ReadI64Async(cancellationToken);
+              isset_softLimit = true;
+            }
+            else
+            {
+              await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            }
+            break;
+          default: 
+            await TProtocolUtil.SkipAsync(iprot, field.Type, cancellationToken);
+            break;
+        }
+
+        await iprot.ReadFieldEndAsync(cancellationToken);
+      }
+
+      await iprot.ReadStructEndAsync(cancellationToken);
+      if (!isset_timeUnit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+      if (!isset_softLimit)
+      {
+        throw new TProtocolException(TProtocolException.INVALID_DATA);
+      }
+    }
+    finally
+    {
+      iprot.DecrementRecursionDepth();
+    }
+  }
+
+  public async global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)
+  {
+    oprot.IncrementRecursionDepth();
+    try
+    {
+      var struc = new TStruct("TTimedQuota");
+      await oprot.WriteStructBeginAsync(struc, cancellationToken);
+      var field = new TField();
+      field.Name = "timeUnit";
+      field.Type = TType.I64;
+      field.ID = 1;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(TimeUnit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      field.Name = "softLimit";
+      field.Type = TType.I64;
+      field.ID = 2;
+      await oprot.WriteFieldBeginAsync(field, cancellationToken);
+      await oprot.WriteI64Async(SoftLimit, cancellationToken);
+      await oprot.WriteFieldEndAsync(cancellationToken);
+      await oprot.WriteFieldStopAsync(cancellationToken);
+      await oprot.WriteStructEndAsync(cancellationToken);
+    }
+    finally
+    {
+      oprot.DecrementRecursionDepth();
+    }
+  }
+
+  public override bool Equals(object that)
+  {
+    if (!(that is TTimedQuota other)) return false;
+    if (ReferenceEquals(this, other)) return true;
+    return System.Object.Equals(TimeUnit, other.TimeUnit)
+      && System.Object.Equals(SoftLimit, other.SoftLimit);
+  }
+
+  public override int GetHashCode() {
+    int hashcode = 157;
+    unchecked {
+      hashcode = (hashcode * 397) + TimeUnit.GetHashCode();
+      hashcode = (hashcode * 397) + SoftLimit.GetHashCode();
+    }
+    return hashcode;
+  }
+
+  public override string ToString()
+  {
+    var sb = new StringBuilder("TTimedQuota(");
+    sb.Append(", TimeUnit: ");
+    TimeUnit.ToString(sb);
+    sb.Append(", SoftLimit: ");
+    SoftLimit.ToString(sb);
+    sb.Append(')');
+    return sb.ToString();
+  }
+}
+
diff --git a/src/Apache.IoTDB/Rpc/Generated/ThrottleType.cs b/src/Apache.IoTDB/Rpc/Generated/ThrottleType.cs
new file mode 100644
index 0000000..425a016
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/Generated/ThrottleType.cs
@@ -0,0 +1,19 @@
+/**
+ * Autogenerated by Thrift Compiler (0.14.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+
+#pragma warning disable IDE0079  // remove unnecessary pragmas
+#pragma warning disable IDE1006  // parts of the code use IDL spelling
+
+public enum ThrottleType
+{
+  REQUEST_NUMBER = 0,
+  REQUEST_SIZE = 1,
+  WRITE_NUMBER = 2,
+  WRITE_SIZE = 3,
+  READ_NUMBER = 4,
+  READ_SIZE = 5,
+}
diff --git a/src/Apache.IoTDB/Rpc/Generated/client.Extensions.cs b/src/Apache.IoTDB/Rpc/Generated/client.Extensions.cs
index a9abfa8..49c8a7e 100644
--- a/src/Apache.IoTDB/Rpc/Generated/client.Extensions.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/client.Extensions.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -37,18 +37,6 @@
   }
 
 
-  public static Dictionary<string, int> DeepCopy(this Dictionary<string, int> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp667 = new Dictionary<string, int>(source.Count);
-    foreach (var pair in source)
-      tmp667.Add((pair.Key != null) ? pair.Key : null, pair.Value);
-    return tmp667;
-  }
-
-
   public static bool Equals(this Dictionary<string, string> instance, object that)
   {
     if (!(that is Dictionary<string, string> other)) return false;
@@ -64,18 +52,6 @@
   }
 
 
-  public static Dictionary<string, string> DeepCopy(this Dictionary<string, string> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp668 = new Dictionary<string, string>(source.Count);
-    foreach (var pair in source)
-      tmp668.Add((pair.Key != null) ? pair.Key : null, (pair.Value != null) ? pair.Value : null);
-    return tmp668;
-  }
-
-
   public static bool Equals(this List<Dictionary<string, string>> instance, object that)
   {
     if (!(that is List<Dictionary<string, string>> other)) return false;
@@ -91,18 +67,6 @@
   }
 
 
-  public static List<Dictionary<string, string>> DeepCopy(this List<Dictionary<string, string>> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp669 = new List<Dictionary<string, string>>(source.Count);
-    foreach (var elem in source)
-      tmp669.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp669;
-  }
-
-
   public static bool Equals(this List<List<int>> instance, object that)
   {
     if (!(that is List<List<int>> other)) return false;
@@ -118,18 +82,6 @@
   }
 
 
-  public static List<List<int>> DeepCopy(this List<List<int>> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp670 = new List<List<int>>(source.Count);
-    foreach (var elem in source)
-      tmp670.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp670;
-  }
-
-
   public static bool Equals(this List<List<string>> instance, object that)
   {
     if (!(that is List<List<string>> other)) return false;
@@ -145,15 +97,18 @@
   }
 
 
-  public static List<List<string>> DeepCopy(this List<List<string>> source)
+  public static bool Equals(this List<TAggregationType> instance, object that)
   {
-    if (source == null)
-      return null;
+    if (!(that is List<TAggregationType> other)) return false;
+    if (ReferenceEquals(instance, other)) return true;
 
-    var tmp671 = new List<List<string>>(source.Count);
-    foreach (var elem in source)
-      tmp671.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp671;
+    return TCollections.Equals(instance, other);
+  }
+
+
+  public static int GetHashCode(this List<TAggregationType> instance)
+  {
+    return TCollections.GetHashCode(instance);
   }
 
 
@@ -172,18 +127,6 @@
   }
 
 
-  public static List<TSConnectionInfo> DeepCopy(this List<TSConnectionInfo> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp672 = new List<TSConnectionInfo>(source.Count);
-    foreach (var elem in source)
-      tmp672.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp672;
-  }
-
-
   public static bool Equals(this List<TSStatus> instance, object that)
   {
     if (!(that is List<TSStatus> other)) return false;
@@ -199,18 +142,6 @@
   }
 
 
-  // public static List<TSStatus> DeepCopy(this List<TSStatus> source)
-  // {
-  //   if (source == null)
-  //     return null;
-
-  //   var tmp673 = new List<TSStatus>(source.Count);
-  //   foreach (var elem in source)
-  //     tmp673.Add((elem != null) ? elem.DeepCopy() : null);
-  //   return tmp673;
-  // }
-
-
   public static bool Equals(this List<byte[]> instance, object that)
   {
     if (!(that is List<byte[]> other)) return false;
@@ -226,18 +157,6 @@
   }
 
 
-  public static List<byte[]> DeepCopy(this List<byte[]> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp674 = new List<byte[]>(source.Count);
-    foreach (var elem in source)
-      tmp674.Add((elem != null) ? elem.ToArray() : null);
-    return tmp674;
-  }
-
-
   public static bool Equals(this List<int> instance, object that)
   {
     if (!(that is List<int> other)) return false;
@@ -253,18 +172,6 @@
   }
 
 
-  public static List<int> DeepCopy(this List<int> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp675 = new List<int>(source.Count);
-    foreach (var elem in source)
-      tmp675.Add(elem);
-    return tmp675;
-  }
-
-
   public static bool Equals(this List<long> instance, object that)
   {
     if (!(that is List<long> other)) return false;
@@ -280,18 +187,6 @@
   }
 
 
-  public static List<long> DeepCopy(this List<long> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp676 = new List<long>(source.Count);
-    foreach (var elem in source)
-      tmp676.Add(elem);
-    return tmp676;
-  }
-
-
   public static bool Equals(this List<sbyte> instance, object that)
   {
     if (!(that is List<sbyte> other)) return false;
@@ -307,18 +202,6 @@
   }
 
 
-  public static List<sbyte> DeepCopy(this List<sbyte> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp677 = new List<sbyte>(source.Count);
-    foreach (var elem in source)
-      tmp677.Add(elem);
-    return tmp677;
-  }
-
-
   public static bool Equals(this List<string> instance, object that)
   {
     if (!(that is List<string> other)) return false;
@@ -334,16 +217,4 @@
   }
 
 
-  // public static List<string> DeepCopy(this List<string> source)
-  // {
-  //   if (source == null)
-  //     return null;
-
-  //   var tmp678 = new List<string>(source.Count);
-  //   foreach (var elem in source)
-  //     tmp678.Add((elem != null) ? elem : null);
-  //   return tmp678;
-  // }
-
-
 }
diff --git a/src/Apache.IoTDB/Rpc/Generated/common.Extensions.cs b/src/Apache.IoTDB/Rpc/Generated/common.Extensions.cs
index 84a370c..4fd2bad 100644
--- a/src/Apache.IoTDB/Rpc/Generated/common.Extensions.cs
+++ b/src/Apache.IoTDB/Rpc/Generated/common.Extensions.cs
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.14.2)
+ * Autogenerated by Thrift Compiler (0.14.1)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -22,6 +22,51 @@
 
 public static class commonExtensions
 {
+  public static bool Equals(this Dictionary<ThrottleType, TTimedQuota> instance, object that)
+  {
+    if (!(that is Dictionary<ThrottleType, TTimedQuota> other)) return false;
+    if (ReferenceEquals(instance, other)) return true;
+
+    return TCollections.Equals(instance, other);
+  }
+
+
+  public static int GetHashCode(this Dictionary<ThrottleType, TTimedQuota> instance)
+  {
+    return TCollections.GetHashCode(instance);
+  }
+
+
+  public static bool Equals(this Dictionary<string, string> instance, object that)
+  {
+    if (!(that is Dictionary<string, string> other)) return false;
+    if (ReferenceEquals(instance, other)) return true;
+
+    return TCollections.Equals(instance, other);
+  }
+
+
+  public static int GetHashCode(this Dictionary<string, string> instance)
+  {
+    return TCollections.GetHashCode(instance);
+  }
+
+
+  public static bool Equals(this List<TConfigNodeLocation> instance, object that)
+  {
+    if (!(that is List<TConfigNodeLocation> other)) return false;
+    if (ReferenceEquals(instance, other)) return true;
+
+    return TCollections.Equals(instance, other);
+  }
+
+
+  public static int GetHashCode(this List<TConfigNodeLocation> instance)
+  {
+    return TCollections.GetHashCode(instance);
+  }
+
+
   public static bool Equals(this List<TDataNodeLocation> instance, object that)
   {
     if (!(that is List<TDataNodeLocation> other)) return false;
@@ -37,18 +82,6 @@
   }
 
 
-  public static List<TDataNodeLocation> DeepCopy(this List<TDataNodeLocation> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp50 = new List<TDataNodeLocation>(source.Count);
-    foreach (var elem in source)
-      tmp50.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp50;
-  }
-
-
   public static bool Equals(this List<TFile> instance, object that)
   {
     if (!(that is List<TFile> other)) return false;
@@ -64,18 +97,6 @@
   }
 
 
-  public static List<TFile> DeepCopy(this List<TFile> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp51 = new List<TFile>(source.Count);
-    foreach (var elem in source)
-      tmp51.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp51;
-  }
-
-
   public static bool Equals(this List<TSStatus> instance, object that)
   {
     if (!(that is List<TSStatus> other)) return false;
@@ -91,15 +112,18 @@
   }
 
 
-  public static List<TSStatus> DeepCopy(this List<TSStatus> source)
+  public static bool Equals(this List<TTestConnectionResult> instance, object that)
   {
-    if (source == null)
-      return null;
+    if (!(that is List<TTestConnectionResult> other)) return false;
+    if (ReferenceEquals(instance, other)) return true;
 
-    var tmp52 = new List<TSStatus>(source.Count);
-    foreach (var elem in source)
-      tmp52.Add((elem != null) ? elem.DeepCopy() : null);
-    return tmp52;
+    return TCollections.Equals(instance, other);
+  }
+
+
+  public static int GetHashCode(this List<TTestConnectionResult> instance)
+  {
+    return TCollections.GetHashCode(instance);
   }
 
 
@@ -118,16 +142,4 @@
   }
 
 
-  public static List<string> DeepCopy(this List<string> source)
-  {
-    if (source == null)
-      return null;
-
-    var tmp53 = new List<string>(source.Count);
-    foreach (var elem in source)
-      tmp53.Add((elem != null) ? elem : null);
-    return tmp53;
-  }
-
-
 }
diff --git a/src/Apache.IoTDB/Rpc/TSStatusCode.cs b/src/Apache.IoTDB/Rpc/TSStatusCode.cs
new file mode 100644
index 0000000..6673d24
--- /dev/null
+++ b/src/Apache.IoTDB/Rpc/TSStatusCode.cs
@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+
+namespace Apache.IoTDB
+{
+    public enum TSStatusCode
+    {
+        SUCCESS_STATUS = 200,
+
+        // System level
+        INCOMPATIBLE_VERSION = 201,
+        CONFIGURATION_ERROR = 202,
+        START_UP_ERROR = 203,
+        SHUT_DOWN_ERROR = 204,
+
+        // General Error
+        UNSUPPORTED_OPERATION = 300,
+        EXECUTE_STATEMENT_ERROR = 301,
+        MULTIPLE_ERROR = 302,
+        ILLEGAL_PARAMETER = 303,
+        OVERLAP_WITH_EXISTING_TASK = 304,
+        INTERNAL_SERVER_ERROR = 305,
+        DISPATCH_ERROR = 306,
+        LICENSE_ERROR = 307,
+
+        // Client
+        REDIRECTION_RECOMMEND = 400,
+
+        // Schema Engine
+        DATABASE_NOT_EXIST = 500,
+        DATABASE_ALREADY_EXISTS = 501,
+        SERIES_OVERFLOW = 502,
+        TIMESERIES_ALREADY_EXIST = 503,
+        TIMESERIES_IN_BLACK_LIST = 504,
+        ALIAS_ALREADY_EXIST = 505,
+        PATH_ALREADY_EXIST = 506,
+        METADATA_ERROR = 507,
+        PATH_NOT_EXIST = 508,
+        ILLEGAL_PATH = 509,
+        CREATE_TEMPLATE_ERROR = 510,
+        DUPLICATED_TEMPLATE = 511,
+        UNDEFINED_TEMPLATE = 512,
+        TEMPLATE_NOT_SET = 513,
+        DIFFERENT_TEMPLATE = 514,
+        TEMPLATE_IS_IN_USE = 515,
+        TEMPLATE_INCOMPATIBLE = 516,
+        SEGMENT_NOT_FOUND = 517,
+        PAGE_OUT_OF_SPACE = 518,
+        RECORD_DUPLICATED = 519,
+        SEGMENT_OUT_OF_SPACE = 520,
+        PBTREE_FILE_NOT_EXISTS = 521,
+        OVERSIZE_RECORD = 522,
+        PBTREE_FILE_REDO_LOG_BROKEN = 523,
+        TEMPLATE_NOT_ACTIVATED = 524,
+        DATABASE_CONFIG_ERROR = 525,
+        SCHEMA_QUOTA_EXCEEDED = 526,
+        MEASUREMENT_ALREADY_EXISTS_IN_TEMPLATE = 527,
+
+        // Storage Engine
+        SYSTEM_READ_ONLY = 600,
+        STORAGE_ENGINE_ERROR = 601,
+        STORAGE_ENGINE_NOT_READY = 602,
+        DATAREGION_PROCESS_ERROR = 603,
+        TSFILE_PROCESSOR_ERROR = 604,
+        WRITE_PROCESS_ERROR = 605,
+        WRITE_PROCESS_REJECT = 606,
+        OUT_OF_TTL = 607,
+        COMPACTION_ERROR = 608,
+        ALIGNED_TIMESERIES_ERROR = 609,
+        WAL_ERROR = 610,
+        DISK_SPACE_INSUFFICIENT = 611,
+        OVERSIZE_TTL = 612,
+        TTL_CONFIG_ERROR = 613,
+
+        // Query Engine
+        SQL_PARSE_ERROR = 700,
+        SEMANTIC_ERROR = 701,
+        GENERATE_TIME_ZONE_ERROR = 702,
+        SET_TIME_ZONE_ERROR = 703,
+        QUERY_NOT_ALLOWED = 704,
+        LOGICAL_OPERATOR_ERROR = 705,
+        LOGICAL_OPTIMIZE_ERROR = 706,
+        UNSUPPORTED_FILL_TYPE = 707,
+        QUERY_PROCESS_ERROR = 708,
+        MPP_MEMORY_NOT_ENOUGH = 709,
+        CLOSE_OPERATION_ERROR = 710,
+        TSBLOCK_SERIALIZE_ERROR = 711,
+        INTERNAL_REQUEST_TIME_OUT = 712,
+        INTERNAL_REQUEST_RETRY_ERROR = 713,
+        NO_SUCH_QUERY = 714,
+        QUERY_WAS_KILLED = 715,
+        EXPLAIN_ANALYZE_FETCH_ERROR = 716,
+
+        // Authentication
+        INIT_AUTH_ERROR = 800,
+        WRONG_LOGIN_PASSWORD = 801,
+        NOT_LOGIN = 802,
+        NO_PERMISSION = 803,
+        USER_NOT_EXIST = 804,
+        USER_ALREADY_EXIST = 805,
+        USER_ALREADY_HAS_ROLE = 806,
+        USER_NOT_HAS_ROLE = 807,
+        ROLE_NOT_EXIST = 808,
+        ROLE_ALREADY_EXIST = 809,
+        NOT_HAS_PRIVILEGE = 811,
+        CLEAR_PERMISSION_CACHE_ERROR = 812,
+        UNKNOWN_AUTH_PRIVILEGE = 813,
+        UNSUPPORTED_AUTH_OPERATION = 814,
+        AUTH_IO_EXCEPTION = 815,
+        ILLEGAL_PRIVILEGE = 816,
+        NOT_HAS_PRIVILEGE_GRANTOPT = 817,
+        AUTH_OPERATE_EXCEPTION = 818,
+
+        // Partition Error
+        MIGRATE_REGION_ERROR = 900,
+        CREATE_REGION_ERROR = 901,
+        DELETE_REGION_ERROR = 902,
+        PARTITION_CACHE_UPDATE_ERROR = 903,
+        CONSENSUS_NOT_INITIALIZED = 904,
+        REGION_LEADER_CHANGE_ERROR = 905,
+        NO_AVAILABLE_REGION_GROUP = 906,
+        LACK_PARTITION_ALLOCATION = 907,
+
+        // Cluster Manager
+        ADD_CONFIGNODE_ERROR = 1000,
+        REMOVE_CONFIGNODE_ERROR = 1001,
+        REJECT_NODE_START = 1002,
+        NO_ENOUGH_DATANODE = 1003,
+        DATANODE_NOT_EXIST = 1004,
+        DATANODE_STOP_ERROR = 1005,
+        REMOVE_DATANODE_ERROR = 1006,
+        CAN_NOT_CONNECT_DATANODE = 1007,
+        TRANSFER_LEADER_ERROR = 1008,
+        GET_CLUSTER_ID_ERROR = 1009,
+        CAN_NOT_CONNECT_CONFIGNODE = 1010,
+
+        // Sync, Load TsFile
+        LOAD_FILE_ERROR = 1100,
+        LOAD_PIECE_OF_TSFILE_ERROR = 1101,
+        DESERIALIZE_PIECE_OF_TSFILE_ERROR = 1102,
+        SYNC_CONNECTION_ERROR = 1103,
+        SYNC_FILE_REDIRECTION_ERROR = 1104,
+        SYNC_FILE_ERROR = 1105,
+        CREATE_PIPE_SINK_ERROR = 1106,
+        PIPE_ERROR = 1107,
+        PIPESERVER_ERROR = 1108,
+        VERIFY_METADATA_ERROR = 1109,
+
+        // UDF
+        UDF_LOAD_CLASS_ERROR = 1200,
+        UDF_DOWNLOAD_ERROR = 1201,
+        CREATE_UDF_ON_DATANODE_ERROR = 1202,
+        DROP_UDF_ON_DATANODE_ERROR = 1203,
+
+        // Trigger
+        CREATE_TRIGGER_ERROR = 1300,
+        DROP_TRIGGER_ERROR = 1301,
+        TRIGGER_FIRE_ERROR = 1302,
+        TRIGGER_LOAD_CLASS_ERROR = 1303,
+        TRIGGER_DOWNLOAD_ERROR = 1304,
+        CREATE_TRIGGER_INSTANCE_ERROR = 1305,
+        ACTIVE_TRIGGER_INSTANCE_ERROR = 1306,
+        DROP_TRIGGER_INSTANCE_ERROR = 1307,
+        UPDATE_TRIGGER_LOCATION_ERROR = 1308,
+
+        // Continuous Query
+        NO_SUCH_CQ = 1400,
+        CQ_ALREADY_ACTIVE = 1401,
+        CQ_ALREADY_EXIST = 1402,
+        CQ_UPDATE_LAST_EXEC_TIME_ERROR = 1403,
+
+        // code 1500-1599 are used by IoTDB-ML
+
+        // Pipe Plugin
+        CREATE_PIPE_PLUGIN_ERROR = 1600,
+        DROP_PIPE_PLUGIN_ERROR = 1601,
+        PIPE_PLUGIN_LOAD_CLASS_ERROR = 1602,
+        PIPE_PLUGIN_DOWNLOAD_ERROR = 1603,
+        CREATE_PIPE_PLUGIN_ON_DATANODE_ERROR = 1604,
+        DROP_PIPE_PLUGIN_ON_DATANODE_ERROR = 1605,
+
+        // Quota
+        SPACE_QUOTA_EXCEEDED = 1700,
+        NUM_REQUESTS_EXCEEDED = 1701,
+        REQUEST_SIZE_EXCEEDED = 1702,
+        NUM_READ_REQUESTS_EXCEEDED = 1703,
+        NUM_WRITE_REQUESTS_EXCEEDED = 1704,
+        WRITE_SIZE_EXCEEDED = 1705,
+        READ_SIZE_EXCEEDED = 1706,
+        QUOTA_MEM_QUERY_NOT_ENOUGH = 1707,
+        QUERY_CPU_QUERY_NOT_ENOUGH = 1708,
+
+        // Pipe
+        PIPE_VERSION_ERROR = 1800,
+        PIPE_TYPE_ERROR = 1801,
+        PIPE_HANDSHAKE_ERROR = 1802,
+        PIPE_TRANSFER_FILE_OFFSET_RESET = 1803,
+        PIPE_TRANSFER_FILE_ERROR = 1804,
+        PIPE_TRANSFER_EXECUTE_STATEMENT_ERROR = 1805,
+        PIPE_NOT_EXIST_ERROR = 1806,
+        PIPE_PUSH_META_ERROR = 1807,
+        PIPE_RECEIVER_TEMPORARY_UNAVAILABLE_EXCEPTION = 1808,
+        PIPE_RECEIVER_IDEMPOTENT_CONFLICT_EXCEPTION = 1809,
+        PIPE_RECEIVER_USER_CONFLICT_EXCEPTION = 1810,
+        PIPE_CONFIG_RECEIVER_HANDSHAKE_NEEDED = 1811,
+
+        // Subscription
+        SUBSCRIPTION_VERSION_ERROR = 1900,
+        SUBSCRIPTION_TYPE_ERROR = 1901,
+        SUBSCRIPTION_HANDSHAKE_ERROR = 1902,
+        SUBSCRIPTION_HEARTBEAT_ERROR = 1903,
+        SUBSCRIPTION_POLL_ERROR = 1904,
+        SUBSCRIPTION_COMMIT_ERROR = 1905,
+        SUBSCRIPTION_CLOSE_ERROR = 1906,
+        SUBSCRIPTION_SUBSCRIBE_ERROR = 1907,
+        SUBSCRIPTION_UNSUBSCRIBE_ERROR = 1908,
+        SUBSCRIPTION_MISSING_CUSTOMER = 1909,
+        SHOW_SUBSCRIPTION_ERROR = 1910,
+
+        // Topic
+        CREATE_TOPIC_ERROR = 2000,
+        DROP_TOPIC_ERROR = 2001,
+        ALTER_TOPIC_ERROR = 2002,
+        SHOW_TOPIC_ERROR = 2003,
+        TOPIC_PUSH_META_ERROR = 2004,
+
+        // Consumer
+        CREATE_CONSUMER_ERROR = 2100,
+        DROP_CONSUMER_ERROR = 2101,
+        ALTER_CONSUMER_ERROR = 2102,
+        CONSUMER_PUSH_META_ERROR = 2103,
+
+        // Pipe Consensus
+        PIPE_CONSENSUS_CONNECTOR_RESTART_ERROR = 2200,
+        PIPE_CONSENSUS_VERSION_ERROR = 2201,
+        PIPE_CONSENSUS_DEPRECATED_REQUEST = 2202,
+        PIPE_CONSENSUS_TRANSFER_FILE_OFFSET_RESET = 2203,
+        PIPE_CONSENSUS_TRANSFER_FILE_ERROR = 2204,
+        PIPE_CONSENSUS_TYPE_ERROR = 2205
+    }
+
+    public static class TSStatusExtensions
+    {
+        private static readonly Dictionary<int, TSStatusCode> codeMap = new Dictionary<int, TSStatusCode>();
+
+        static TSStatusExtensions()
+        {
+            foreach (TSStatusCode statusCode in Enum.GetValues(typeof(TSStatusCode)))
+            {
+                codeMap[statusCode.GetHashCode()] = statusCode;
+            }
+        }
+
+        public static TSStatusCode RepresentOf(int statusCode)
+        {
+            if (codeMap.TryGetValue(statusCode, out TSStatusCode value))
+            {
+                return value;
+            }
+            throw new ArgumentOutOfRangeException(nameof(statusCode), "Unknown status code.");
+        }
+
+        public static string ToString(TSStatusCode statusCode)
+        {
+            return $"{statusCode}({(int)statusCode})";
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/Apache.IoTDB/SessionPool.cs b/src/Apache.IoTDB/SessionPool.cs
index 5621836..7b9a09b 100644
--- a/src/Apache.IoTDB/SessionPool.cs
+++ b/src/Apache.IoTDB/SessionPool.cs
@@ -18,24 +18,27 @@
 
     public class SessionPool : IDisposable
     {
-        private static int SuccessCode => 200;
-        private static int RedirectRecommendCode => 400;
         private static readonly TSProtocolVersion ProtocolVersion = TSProtocolVersion.IOTDB_SERVICE_PROTOCOL_V3;
 
         private readonly string _username;
         private readonly string _password;
         private bool _enableRpcCompression;
         private string _zoneId;
+        private readonly List<string> _nodeUrls = new();
+        private readonly List<TEndPoint> _endPoints = new();
         private readonly string _host;
         private readonly int _port;
         private readonly int _fetchSize;
         private readonly int _timeout;
         private readonly int _poolSize = 4;
-        private readonly Utils _utilFunctions = new Utils();
+        private readonly Utils _utilFunctions = new();
+        private const int RetryNum = 3;
         private bool _debugMode;
         private bool _isClose = true;
         private ConcurrentClientQueue _clients;
         private ILogger _logger;
+        public delegate Task<TResult> AsyncOperation<TResult>(Client client);
+
 
         public SessionPool(string host, int port, int poolSize)
                         : this(host, port, "root", "root", 1024, "UTC+08:00", poolSize, true, 60)
@@ -69,7 +72,77 @@
             _enableRpcCompression = enableRpcCompression;
             _timeout = timeout;
         }
-
+        /// <summary>
+        ///  Initializes a new instance of the <see cref="SessionPool"/> class.
+        ///  </summary>
+        ///  <param name="nodeUrls">The list of node URLs to connect to, multiple ip:rpcPort eg.127.0.0.1:9001</param>
+        ///  <param name="poolSize">The size of the session pool.</param>
+        public SessionPool(List<string> nodeUrls, int poolSize)
+                        : this(nodeUrls, "root", "root", 1024, "UTC+08:00", poolSize, true, 60)
+        {
+        }
+        public SessionPool(List<string> nodeUrls, string username, string password)
+                        : this(nodeUrls, username, password, 1024, "UTC+08:00", 8, true, 60)
+        {
+        }
+        public SessionPool(List<string> nodeUrls, string username, string password, int fetchSize)
+                        : this(nodeUrls, username, password, fetchSize, "UTC+08:00", 8, true, 60)
+        {
+        }
+        public SessionPool(List<string> nodeUrls, string username, string password, int fetchSize, string zoneId)
+                        : this(nodeUrls, username, password, fetchSize, zoneId, 8, true, 60)
+        {
+        }
+        public SessionPool(List<string> nodeUrls, string username, string password, int fetchSize, string zoneId, int poolSize, bool enableRpcCompression, int timeout)
+        {
+            if (nodeUrls.Count == 0)
+            {
+                throw new ArgumentException("nodeUrls shouldn't be empty.");
+            }
+            _nodeUrls = nodeUrls;
+            _endPoints = _utilFunctions.ParseSeedNodeUrls(nodeUrls);
+            _username = username;
+            _password = password;
+            _zoneId = zoneId;
+            _fetchSize = fetchSize;
+            _debugMode = false;
+            _poolSize = poolSize;
+            _enableRpcCompression = enableRpcCompression;
+            _timeout = timeout;
+        }
+        public async Task<TResult> ExecuteClientOperationAsync<TResult>(AsyncOperation<TResult> operation, string errMsg, bool retryOnFailure = true)
+        {
+            Client client = _clients.Take();
+            try
+            {
+                var resp = await operation(client);
+                return resp;
+            }
+            catch (TException ex)
+            {
+                if (retryOnFailure)
+                {
+                    client = await Reconnect(client);
+                    try
+                    {
+                        var resp = await operation(client);
+                        return resp;
+                    }
+                    catch (TException retryEx)
+                    {
+                        throw new TException(errMsg, retryEx);
+                    }
+                }
+                else
+                {
+                    throw new TException(errMsg, ex);
+                }
+            }
+            finally
+            {
+                _clients.Add(client);
+            }
+        }
         /// <summary>
         ///   Gets or sets the amount of time a Session will wait for  a send operation to complete successfully.
         /// </summary>
@@ -101,12 +174,94 @@
         {
             _clients = new ConcurrentClientQueue();
             _clients.Timeout = _timeout * 5;
-            for (var index = 0; index < _poolSize; index++)
+
+            if (_nodeUrls.Count == 0)
             {
-                _clients.Add(await CreateAndOpen(_enableRpcCompression, _timeout, cancellationToken));
+                for (var index = 0; index < _poolSize; index++)
+                {
+                    _clients.Add(await CreateAndOpen(_host, _port, _enableRpcCompression, _timeout, cancellationToken));
+                }
             }
+            else
+            {
+                int startIndex = 0;
+                for (var index = 0; index < _poolSize; index++)
+                {
+                    bool isConnected = false;
+                    for (int i = 0; i < _endPoints.Count; i++)
+                    {
+                        var endPointIndex = (startIndex + i) % _endPoints.Count;
+                        var endPoint = _endPoints[endPointIndex];
+                        try
+                        {
+                            var client = await CreateAndOpen(endPoint.Ip, endPoint.Port, _enableRpcCompression, _timeout, cancellationToken);
+                            _clients.Add(client);
+                            isConnected = true;
+                            startIndex = (endPointIndex + 1) % _endPoints.Count;
+                            break;
+                        }
+                        catch (Exception e)
+                        {
+                            if (_debugMode)
+                            {
+                                _logger.LogWarning(e, "Currently connecting to {0}:{1} failed", endPoint.Ip, endPoint.Port);
+                            }
+                        }
+                    }
+                    if (!isConnected) // current client could not connect to any endpoint
+                    {
+                        throw new TException("Error occurs when opening session pool. Could not connect to any server", null);
+                    }
+                }
+            }
+
+            if (_clients.ClientQueue.Count != _poolSize)
+            {
+                throw new TException(string.Format("Error occurs when opening session pool. Client pool size is not equal to the expected size. Client pool size: {0}, expected size: {1}", _clients.ClientQueue.Count, _poolSize), null);
+            }
+            _isClose = false;
         }
 
+
+        public async Task<Client> Reconnect(Client originalClient = null, CancellationToken cancellationToken = default)
+        {
+            if (_nodeUrls.Count == 0)
+            {
+                await Open(_enableRpcCompression);
+                return _clients.Take();
+            }
+
+            originalClient.Transport.Close();
+
+            int startIndex = _endPoints.FindIndex(x => x.Ip == originalClient.EndPoint.Ip && x.Port == originalClient.EndPoint.Port);
+            if (startIndex == -1)
+            {
+                throw new ArgumentException($"The original client is not in the list of endpoints. Original client: {originalClient.EndPoint.Ip}:{originalClient.EndPoint.Port}");
+            }
+
+            for (int attempt = 1; attempt <= RetryNum; attempt++)
+            {
+                for (int i = 0; i < _endPoints.Count; i++)
+                {
+                    int j = (startIndex + i) % _endPoints.Count;
+                    try
+                    {
+                        var client = await CreateAndOpen(_endPoints[j].Ip, _endPoints[j].Port, _enableRpcCompression, _timeout, cancellationToken);
+                        return client;
+                    }
+                    catch (Exception e)
+                    {
+                        if (_debugMode)
+                        {
+                            _logger.LogWarning(e, "Attempt connecting to {0}:{1} failed", _endPoints[j].Ip, _endPoints[j].Port);
+                        }
+                    }
+                }
+            }
+            throw new TException("Error occurs when reconnecting session pool. Could not connect to any server", null);
+        }
+
+
         public bool IsOpen() => !_isClose;
 
         public async Task Close()
@@ -183,9 +338,9 @@
             }
         }
 
-        private async Task<Client> CreateAndOpen(bool enableRpcCompression, int timeout, CancellationToken cancellationToken = default)
+        private async Task<Client> CreateAndOpen(string host, int port, bool enableRpcCompression, int timeout, CancellationToken cancellationToken = default)
         {
-            var tcpClient = new TcpClient(_host, _port);
+            var tcpClient = new TcpClient(host, port);
             tcpClient.SendTimeout = timeout;
             tcpClient.ReceiveTimeout = timeout;
             var transport = new TFramedTransport(new TSocketTransport(tcpClient, null));
@@ -221,13 +376,14 @@
                 var sessionId = openResp.SessionId;
                 var statementId = await client.requestStatementIdAsync(sessionId, cancellationToken);
 
-                _isClose = false;
+                var endpoint = new TEndPoint(host, port);
 
                 var returnClient = new Client(
                     client,
                     sessionId,
                     statementId,
-                    transport);
+                    transport,
+                    endpoint);
 
                 return returnClient;
             }
@@ -238,99 +394,49 @@
                 throw;
             }
         }
-
         public async Task<int> SetStorageGroup(string groupName)
         {
-            var client = _clients.Take();
-
-            try
-            {
-                var status = await client.ServiceClient.setStorageGroupAsync(client.SessionId, groupName);
-
-                if (_debugMode)
-                {
-                    _logger.LogInformation("set storage group {0} successfully, server message is {1}", groupName, status.Message);
-                }
-
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-            }
-            catch (TException e)
-            {
-                // try to reconnect
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                try
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
                     var status = await client.ServiceClient.setStorageGroupAsync(client.SessionId, groupName);
                     if (_debugMode)
                     {
                         _logger.LogInformation("set storage group {0} successfully, server message is {1}", groupName, status.Message);
                     }
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when setting storage group", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when setting storage group"
+            );
         }
-
         public async Task<int> CreateTimeSeries(
             string tsPath,
             TSDataType dataType,
             TSEncoding encoding,
             Compressor compressor)
         {
-            var client = _clients.Take();
-            var req = new TSCreateTimeseriesReq(
-                client.SessionId,
-                tsPath,
-                (int)dataType,
-                (int)encoding,
-                (int)compressor);
-            try
-            {
-                var status = await client.ServiceClient.createTimeseriesAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("creating time series {0} successfully, server message is {1}", tsPath, status.Message);
-                }
+                    var req = new TSCreateTimeseriesReq(
+                        client.SessionId,
+                        tsPath,
+                        (int)dataType,
+                        (int)encoding,
+                        (int)compressor);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.createTimeseriesAsync(req);
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("creating time series {0} successfully, server message is {1}", tsPath, status.Message);
                     }
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
 
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when creating time series", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
-
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when creating time series"
+            );
         }
-
         public async Task<int> CreateAlignedTimeseriesAsync(
             string prefixPath,
             List<string> measurements,
@@ -338,223 +444,98 @@
             List<TSEncoding> encodingLst,
             List<Compressor> compressorLst)
         {
-            var client = _clients.Take();
-            var dataTypes = dataTypeLst.ConvertAll(x => (int)x);
-            var encodings = encodingLst.ConvertAll(x => (int)x);
-            var compressors = compressorLst.ConvertAll(x => (int)x);
-
-            var req = new TSCreateAlignedTimeseriesReq(
-                client.SessionId,
-                prefixPath,
-                measurements,
-                dataTypes,
-                encodings,
-                compressors);
-            try
-            {
-                var status = await client.ServiceClient.createAlignedTimeseriesAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("creating aligned time series {0} successfully, server message is {1}", prefixPath, status.Message);
-                }
+                    var dataTypes = dataTypeLst.ConvertAll(x => (int)x);
+                    var encodings = encodingLst.ConvertAll(x => (int)x);
+                    var compressors = compressorLst.ConvertAll(x => (int)x);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    var req = new TSCreateAlignedTimeseriesReq(
+                        client.SessionId,
+                        prefixPath,
+                        measurements,
+                        dataTypes,
+                        encodings,
+                        compressors);
 
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.createAlignedTimeseriesAsync(req);
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("creating aligned time series {0} successfully, server message is {1}", prefixPath, status.Message);
                     }
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
 
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when creating aligned time series", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when creating aligned time series"
+            );
         }
-
         public async Task<int> DeleteStorageGroupAsync(string groupName)
         {
-            var client = _clients.Take();
-            try
-            {
-                var status = await client.ServiceClient.deleteStorageGroupsAsync(
-                    client.SessionId,
-                    new List<string> { groupName });
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation($"delete storage group {groupName} successfully, server message is {status?.Message}");
-                }
-
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                try
-                {
-                    var status = await client.ServiceClient.deleteStorageGroupsAsync(
-                        client.SessionId,
-                        new List<string> { groupName });
+                    var status = await client.ServiceClient.deleteStorageGroupsAsync(client.SessionId, new List<string> { groupName });
 
                     if (_debugMode)
                     {
-                        _logger.LogInformation($"delete storage group {groupName} successfully, server message is {status?.Message}");
+                        _logger.LogInformation("delete storage group {0} successfully, server message is {1}", groupName, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when deleting storage group", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when deleting storage group"
+            );
         }
-
         public async Task<int> DeleteStorageGroupsAsync(List<string> groupNames)
         {
-            var client = _clients.Take();
-
-            try
-            {
-                var status = await client.ServiceClient.deleteStorageGroupsAsync(client.SessionId, groupNames);
-
-                if (_debugMode)
-                {
-                    _logger.LogInformation(
-                        "delete storage group(s) {0} successfully, server message is {1}",
-                        groupNames,
-                        status.Message);
-                }
-
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                try
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
                     var status = await client.ServiceClient.deleteStorageGroupsAsync(client.SessionId, groupNames);
 
                     if (_debugMode)
                     {
-                        _logger.LogInformation(
-                            "delete storage group(s) {0} successfully, server message is {1}",
-                            groupNames,
-                            status.Message);
+                        _logger.LogInformation("delete storage group(s) {0} successfully, server message is {1}", groupNames, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when deleting storage group(s)", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when deleting storage group(s)"
+            );
         }
-
         public async Task<int> CreateMultiTimeSeriesAsync(
             List<string> tsPathLst,
             List<TSDataType> dataTypeLst,
             List<TSEncoding> encodingLst,
             List<Compressor> compressorLst)
         {
-            var client = _clients.Take();
-            var dataTypes = dataTypeLst.ConvertAll(x => (int)x);
-            var encodings = encodingLst.ConvertAll(x => (int)x);
-            var compressors = compressorLst.ConvertAll(x => (int)x);
-
-            var req = new TSCreateMultiTimeseriesReq(client.SessionId, tsPathLst, dataTypes, encodings, compressors);
-
-            try
-            {
-                var status = await client.ServiceClient.createMultiTimeseriesAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("creating multiple time series {0}, server message is {1}", tsPathLst, status.Message);
-                }
+                    var dataTypes = dataTypeLst.ConvertAll(x => (int)x);
+                    var encodings = encodingLst.ConvertAll(x => (int)x);
+                    var compressors = compressorLst.ConvertAll(x => (int)x);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    var req = new TSCreateMultiTimeseriesReq(client.SessionId, tsPathLst, dataTypes, encodings, compressors);
 
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.createMultiTimeseriesAsync(req);
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("creating multiple time series {0}, server message is {1}", tsPathLst, status.Message);
                     }
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
 
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when creating multiple time series", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when creating multiple time series"
+            );
         }
-
         public async Task<int> DeleteTimeSeriesAsync(List<string> pathList)
         {
-            var client = _clients.Take();
-
-            try
-            {
-                var status = await client.ServiceClient.deleteTimeseriesAsync(client.SessionId, pathList);
-
-                if (_debugMode)
-                {
-                    _logger.LogInformation("deleting multiple time series {0}, server message is {1}", pathList, status.Message);
-                }
-
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                try
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
                     var status = await client.ServiceClient.deleteTimeseriesAsync(client.SessionId, pathList);
 
@@ -563,18 +544,10 @@
                         _logger.LogInformation("deleting multiple time series {0}, server message is {1}", pathList, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when deleting multiple time series", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when deleting multiple time series"
+            );
         }
 
         public async Task<int> DeleteTimeSeriesAsync(string tsPath)
@@ -596,34 +569,13 @@
                 throw new TException("could not check if certain time series exists", e);
             }
         }
-
         public async Task<int> DeleteDataAsync(List<string> tsPathLst, long startTime, long endTime)
         {
-            var client = _clients.Take();
-            var req = new TSDeleteDataReq(client.SessionId, tsPathLst, startTime, endTime);
-
-            try
-            {
-                var status = await client.ServiceClient.deleteDataAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation(
-                        "delete data from {0}, server message is {1}",
-                        tsPathLst,
-                        status.Message);
-                }
+                    var req = new TSDeleteDataReq(client.SessionId, tsPathLst, startTime, endTime);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.deleteDataAsync(req);
 
                     if (_debugMode)
@@ -634,44 +586,18 @@
                             status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when deleting data", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when deleting data"
+            );
         }
-
         public async Task<int> InsertRecordAsync(string deviceId, RowRecord record)
         {
-            // TBD by Luzhan
-            var client = _clients.Take();
-            var req = new TSInsertRecordReq(client.SessionId, deviceId, record.Measurements, record.ToBytes(),
-                record.Timestamps);
-            try
-            {
-                var status = await client.ServiceClient.insertRecordAsync(req);
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = new TSInsertRecordReq(client.SessionId, deviceId, record.Measurements, record.ToBytes(), record.Timestamps);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertRecordAsync(req);
 
                     if (_debugMode)
@@ -679,46 +605,21 @@
                         _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting record", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting record"
+            );
         }
         public async Task<int> InsertAlignedRecordAsync(string deviceId, RowRecord record)
         {
-            var client = _clients.Take();
-            var req = new TSInsertRecordReq(client.SessionId, deviceId, record.Measurements, record.ToBytes(),
-                record.Timestamps);
-            req.IsAligned = true;
-            // ASSERT that the insert plan is aligned    
-            System.Diagnostics.Debug.Assert(req.IsAligned == true);
-            try
-            {
-                var status = await client.ServiceClient.insertRecordAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = new TSInsertRecordReq(client.SessionId, deviceId, record.Measurements, record.ToBytes(), record.Timestamps);
+                    req.IsAligned = true;
+                    // ASSERT that the insert plan is aligned
+                    System.Diagnostics.Debug.Assert(req.IsAligned == true);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertRecordAsync(req);
 
                     if (_debugMode)
@@ -726,18 +627,10 @@
                         _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting record", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting record"
+            );
         }
 
         public TSInsertStringRecordReq GenInsertStrRecordReq(string deviceId, List<string> measurements,
@@ -745,7 +638,7 @@
         {
             if (values.Count() != measurements.Count())
             {
-                throw new TException("length of data types does not equal to length of values!", null);
+                throw new ArgumentException("length of data types does not equal to length of values!");
             }
 
             return new TSInsertStringRecordReq(sessionId, deviceId, measurements, values, timestamp)
@@ -758,7 +651,7 @@
         {
             if (valuesList.Count() != measurementsList.Count())
             {
-                throw new TException("length of data types does not equal to length of values!", null);
+                throw new ArgumentException("length of data types does not equal to length of values!");
             }
 
             return new TSInsertStringRecordsReq(sessionId, deviceIds, measurementsList, valuesList, timestamps)
@@ -779,71 +672,31 @@
         public async Task<int> InsertStringRecordAsync(string deviceId, List<string> measurements, List<string> values,
             long timestamp)
         {
-            var client = _clients.Take();
-            var req = GenInsertStrRecordReq(deviceId, measurements, values, timestamp, client.SessionId);
-            try
-            {
-                var status = await client.ServiceClient.insertStringRecordAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one string record to device {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = GenInsertStrRecordReq(deviceId, measurements, values, timestamp, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertStringRecordAsync(req);
 
                     if (_debugMode)
                     {
-                        _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
+                        _logger.LogInformation("insert one string record to device {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting a string record", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting a string record"
+            );
         }
         public async Task<int> InsertAlignedStringRecordAsync(string deviceId, List<string> measurements, List<string> values,
             long timestamp)
         {
-            var client = _clients.Take();
-            var req = GenInsertStrRecordReq(deviceId, measurements, values, timestamp, client.SessionId, true);
-            try
-            {
-                var status = await client.ServiceClient.insertStringRecordAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = GenInsertStrRecordReq(deviceId, measurements, values, timestamp, client.SessionId, true);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertStringRecordAsync(req);
 
                     if (_debugMode)
@@ -851,44 +704,19 @@
                         _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting record", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting a string record"
+            );
         }
         public async Task<int> InsertStringRecordsAsync(List<string> deviceIds, List<List<string>> measurements, List<List<string>> values,
             List<long> timestamps)
         {
-            var client = _clients.Take();
-            var req = GenInsertStringRecordsReq(deviceIds, measurements, values, timestamps, client.SessionId);
-            try
-            {
-                var status = await client.ServiceClient.insertStringRecordsAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert string records to devices {0}, server message: {1}", deviceIds, status.Message);
-                }
+                    var req = GenInsertStringRecordsReq(deviceIds, measurements, values, timestamps, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertStringRecordsAsync(req);
 
                     if (_debugMode)
@@ -896,45 +724,19 @@
                         _logger.LogInformation("insert string records to devices {0}, server message: {1}", deviceIds, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting string records", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting string records"
+            );
         }
         public async Task<int> InsertAlignedStringRecordsAsync(List<string> deviceIds, List<List<string>> measurements, List<List<string>> values,
             List<long> timestamps)
         {
-            var client = _clients.Take();
-            var req = GenInsertStringRecordsReq(deviceIds, measurements, values, timestamps, client.SessionId, true);
-            try
-            {
-                var status = await client.ServiceClient.insertStringRecordsAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert string records to devices {0}, server message: {1}", deviceIds, status.Message);
-                }
+                    var req = GenInsertStringRecordsReq(deviceIds, measurements, values, timestamps, client.SessionId, true);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertStringRecordsAsync(req);
 
                     if (_debugMode)
@@ -942,113 +744,51 @@
                         _logger.LogInformation("insert string records to devices {0}, server message: {1}", deviceIds, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting string records", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting string records"
+            );
         }
-
         public async Task<int> InsertRecordsAsync(List<string> deviceId, List<RowRecord> rowRecords)
         {
-            var client = _clients.Take();
-
-            var request = GenInsertRecordsReq(deviceId, rowRecords, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.insertRecordsAsync(request);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert multiple records to devices {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = GenInsertRecordsReq(deviceId, rowRecords, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                request.SessionId = client.SessionId;
-                try
-                {
-                    var status = await client.ServiceClient.insertRecordsAsync(request);
+                    var status = await client.ServiceClient.insertRecordsAsync(req);
 
                     if (_debugMode)
                     {
                         _logger.LogInformation("insert multiple records to devices {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting records", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting records"
+            );
         }
         public async Task<int> InsertAlignedRecordsAsync(List<string> deviceId, List<RowRecord> rowRecords)
         {
-            var client = _clients.Take();
-
-            var request = GenInsertRecordsReq(deviceId, rowRecords, client.SessionId);
-            request.IsAligned = true;
-            // ASSERT that the insert plan is aligned
-            System.Diagnostics.Debug.Assert(request.IsAligned == true);
-
-            try
-            {
-                var status = await client.ServiceClient.insertRecordsAsync(request);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert multiple records to devices {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = GenInsertRecordsReq(deviceId, rowRecords, client.SessionId);
+                    req.IsAligned = true;
+                    // ASSERT that the insert plan is aligned
+                    System.Diagnostics.Debug.Assert(req.IsAligned == true);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                request.SessionId = client.SessionId;
-                try
-                {
-                    var status = await client.ServiceClient.insertRecordsAsync(request);
+                    var status = await client.ServiceClient.insertRecordsAsync(req);
 
                     if (_debugMode)
                     {
                         _logger.LogInformation("insert multiple records to devices {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting records", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting records"
+            );
         }
         public TSInsertTabletReq GenInsertTabletReq(Tablet tablet, long sessionId)
         {
@@ -1061,31 +801,13 @@
                 tablet.GetDataTypes(),
                 tablet.RowNumber);
         }
-
         public async Task<int> InsertTabletAsync(Tablet tablet)
         {
-            var client = _clients.Take();
-            var req = GenInsertTabletReq(tablet, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.insertTabletAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one tablet to device {0}, server message: {1}", tablet.DeviceId, status.Message);
-                }
+                    var req = GenInsertTabletReq(tablet, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertTabletAsync(req);
 
                     if (_debugMode)
@@ -1093,44 +815,19 @@
                         _logger.LogInformation("insert one tablet to device {0}, server message: {1}", tablet.DeviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting tablet", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting tablet"
+            );
         }
         public async Task<int> InsertAlignedTabletAsync(Tablet tablet)
         {
-            var client = _clients.Take();
-            var req = GenInsertTabletReq(tablet, client.SessionId);
-            req.IsAligned = true;
-
-            try
-            {
-                var status = await client.ServiceClient.insertTabletAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one aligned tablet to device {0}, server message: {1}", tablet.DeviceId, status.Message);
-                }
+                    var req = GenInsertTabletReq(tablet, client.SessionId);
+                    req.IsAligned = true;
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertTabletAsync(req);
 
                     if (_debugMode)
@@ -1138,21 +835,12 @@
                         _logger.LogInformation("insert one aligned tablet to device {0}, server message: {1}", tablet.DeviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting tablet", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting aligned tablet"
+            );
         }
 
-
         public TSInsertTabletsReq GenInsertTabletsReq(List<Tablet> tabletLst, long sessionId)
         {
             var deviceIdLst = new List<string>();
@@ -1185,28 +873,11 @@
 
         public async Task<int> InsertTabletsAsync(List<Tablet> tabletLst)
         {
-            var client = _clients.Take();
-            var req = GenInsertTabletsReq(tabletLst, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.insertTabletsAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert multiple tablets, message: {0}", status.Message);
-                }
+                    var req = GenInsertTabletsReq(tabletLst, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertTabletsAsync(req);
 
                     if (_debugMode)
@@ -1214,45 +885,19 @@
                         _logger.LogInformation("insert multiple tablets, message: {0}", status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting tablets", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting tablets"
+            );
         }
-
         public async Task<int> InsertAlignedTabletsAsync(List<Tablet> tabletLst)
         {
-            var client = _clients.Take();
-            var req = GenInsertTabletsReq(tabletLst, client.SessionId);
-            req.IsAligned = true;
-
-            try
-            {
-                var status = await client.ServiceClient.insertTabletsAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert multiple aligned tablets, message: {0}", status.Message);
-                }
+                    var req = GenInsertTabletsReq(tabletLst, client.SessionId);
+                    req.IsAligned = true;
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertTabletsAsync(req);
 
                     if (_debugMode)
@@ -1260,18 +905,10 @@
                         _logger.LogInformation("insert multiple aligned tablets, message: {0}", status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting tablets", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting aligned tablets"
+            );
         }
 
         public async Task<int> InsertRecordsOfOneDeviceAsync(string deviceId, List<RowRecord> rowRecords)
@@ -1313,33 +950,16 @@
         public async Task<int> InsertStringRecordsOfOneDeviceSortedAsync(string deviceId, List<long> timestamps,
             List<List<string>> measurementsList, List<List<string>> valuesList, bool isAligned)
         {
-            var client = _clients.Take();
-
-            if (!_utilFunctions.IsSorted(timestamps))
-            {
-                throw new TException("insert string records of one device error: timestamp not sorted", null);
-            }
-
-            var req = GenInsertStringRecordsOfOneDeviceReq(deviceId, timestamps, measurementsList, valuesList, client.SessionId, isAligned);
-            try
-            {
-                var status = await client.ServiceClient.insertStringRecordsOfOneDeviceAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert string records of one device, message: {0}", status.Message);
-                }
+                    if (!_utilFunctions.IsSorted(timestamps))
+                    {
+                        throw new ArgumentException("insert string records of one device error: timestamp not sorted");
+                    }
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    var req = GenInsertStringRecordsOfOneDeviceReq(deviceId, timestamps, measurementsList, valuesList, client.SessionId, isAligned);
 
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.insertStringRecordsOfOneDeviceAsync(req);
 
                     if (_debugMode)
@@ -1347,19 +967,10 @@
                         _logger.LogInformation("insert string records of one device, message: {0}", status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting string records of one device", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting string records of one device"
+            );
         }
         private TSInsertStringRecordsOfOneDeviceReq GenInsertStringRecordsOfOneDeviceReq(string deviceId,
             List<long> timestamps, List<List<string>> measurementsList, List<List<string>> valuesList,
@@ -1391,39 +1002,20 @@
                 values.ToList(),
                 timestampLst);
         }
-
         public async Task<int> InsertRecordsOfOneDeviceSortedAsync(string deviceId, List<RowRecord> rowRecords)
         {
-            var client = _clients.Take();
-
-            var timestampLst = rowRecords.Select(x => x.Timestamps).ToList();
-
-            if (!_utilFunctions.IsSorted(timestampLst))
-            {
-                throw new TException("insert records of one device error: timestamp not sorted", null);
-            }
-
-            var req = GenInsertRecordsOfOneDeviceRequest(deviceId, rowRecords, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.insertRecordsOfOneDeviceAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert records of one device, message: {0}", status.Message);
-                }
+                    var timestampLst = rowRecords.Select(x => x.Timestamps).ToList();
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (!_utilFunctions.IsSorted(timestampLst))
+                    {
+                        throw new ArgumentException("insert records of one device error: timestamp not sorted");
+                    }
 
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
+                    var req = GenInsertRecordsOfOneDeviceRequest(deviceId, rowRecords, client.SessionId);
+
                     var status = await client.ServiceClient.insertRecordsOfOneDeviceAsync(req);
 
                     if (_debugMode)
@@ -1431,52 +1023,26 @@
                         _logger.LogInformation("insert records of one device, message: {0}", status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting records of one device", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting records of one device"
+            );
         }
         public async Task<int> InsertAlignedRecordsOfOneDeviceSortedAsync(string deviceId, List<RowRecord> rowRecords)
         {
-            var client = _clients.Take();
-
-            var timestampLst = rowRecords.Select(x => x.Timestamps).ToList();
-
-            if (!_utilFunctions.IsSorted(timestampLst))
-            {
-                throw new TException("insert records of one device error: timestamp not sorted", null);
-            }
-
-            var req = GenInsertRecordsOfOneDeviceRequest(deviceId, rowRecords, client.SessionId);
-            req.IsAligned = true;
-
-            try
-            {
-                var status = await client.ServiceClient.insertRecordsOfOneDeviceAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert aligned records of one device, message: {0}", status.Message);
-                }
+                    var timestampLst = rowRecords.Select(x => x.Timestamps).ToList();
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (!_utilFunctions.IsSorted(timestampLst))
+                    {
+                        throw new ArgumentException("insert records of one device error: timestamp not sorted");
+                    }
 
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
+                    var req = GenInsertRecordsOfOneDeviceRequest(deviceId, rowRecords, client.SessionId);
+                    req.IsAligned = true;
+
                     var status = await client.ServiceClient.insertRecordsOfOneDeviceAsync(req);
 
                     if (_debugMode)
@@ -1484,50 +1050,23 @@
                         _logger.LogInformation("insert aligned records of one device, message: {0}", status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when inserting aligned records of one device", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when inserting aligned records of one device"
+            );
         }
-
         public async Task<int> TestInsertRecordAsync(string deviceId, RowRecord record)
         {
-            var client = _clients.Take();
-
-            var req = new TSInsertRecordReq(
-                client.SessionId,
-                deviceId,
-                record.Measurements,
-                record.ToBytes(),
-                record.Timestamps);
-
-            try
-            {
-                var status = await client.ServiceClient.testInsertRecordAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = new TSInsertRecordReq(
+                        client.SessionId,
+                        deviceId,
+                        record.Measurements,
+                        record.ToBytes(),
+                        record.Timestamps);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.testInsertRecordAsync(req);
 
                     if (_debugMode)
@@ -1535,44 +1074,18 @@
                         _logger.LogInformation("insert one record to device {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when test inserting one record", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when test inserting one record"
+            );
         }
-
         public async Task<int> TestInsertRecordsAsync(List<string> deviceId, List<RowRecord> rowRecords)
         {
-            var client = _clients.Take();
-            var req = GenInsertRecordsReq(deviceId, rowRecords, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.testInsertRecordsAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert multiple records to devices {0}, server message: {1}", deviceId, status.Message);
-                }
+                    var req = GenInsertRecordsReq(deviceId, rowRecords, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.testInsertRecordsAsync(req);
 
                     if (_debugMode)
@@ -1580,93 +1093,37 @@
                         _logger.LogInformation("insert multiple records to devices {0}, server message: {1}", deviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when test inserting multiple records", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when test inserting multiple records"
+            );
         }
-
         public async Task<int> TestInsertTabletAsync(Tablet tablet)
         {
-            var client = _clients.Take();
-
-            var req = GenInsertTabletReq(tablet, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.testInsertTabletAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert one tablet to device {0}, server message: {1}", tablet.DeviceId,
-                        status.Message);
-                }
+                    var req = GenInsertTabletReq(tablet, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.testInsertTabletAsync(req);
 
                     if (_debugMode)
                     {
-                        _logger.LogInformation("insert one tablet to device {0}, server message: {1}", tablet.DeviceId,
-                            status.Message);
+                        _logger.LogInformation("insert one tablet to device {0}, server message: {1}", tablet.DeviceId, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when test inserting one tablet", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when test inserting one tablet"
+            );
         }
-
         public async Task<int> TestInsertTabletsAsync(List<Tablet> tabletLst)
         {
-            var client = _clients.Take();
-
-            var req = GenInsertTabletsReq(tabletLst, client.SessionId);
-
-            try
-            {
-                var status = await client.ServiceClient.testInsertTabletsAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("insert multiple tablets, message: {0}", status.Message);
-                }
+                    var req = GenInsertTabletsReq(tabletLst, client.SessionId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.testInsertTabletsAsync(req);
 
                     if (_debugMode)
@@ -1674,147 +1131,74 @@
                         _logger.LogInformation("insert multiple tablets, message: {0}", status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when test inserting multiple tablets", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when test inserting multiple tablets"
+            );
         }
 
         public async Task<SessionDataSet> ExecuteQueryStatementAsync(string sql)
         {
-            TSExecuteStatementResp resp;
-            TSStatus status;
-            var client = _clients.Take();
-            var req = new TSExecuteStatementReq(client.SessionId, sql, client.StatementId)
-            {
-                FetchSize = _fetchSize
-            };
-            try
-            {
-                resp = await client.ServiceClient.executeQueryStatementAsync(req);
-                status = resp.Status;
-            }
-            catch (TException e)
-            {
-                _clients.Add(client);
-
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                req.StatementId = client.StatementId;
-                try
+            return await ExecuteClientOperationAsync<SessionDataSet>(
+                async client =>
                 {
-                    resp = await client.ServiceClient.executeQueryStatementAsync(req);
-                    status = resp.Status;
-                }
-                catch (TException ex)
-                {
-                    _clients.Add(client);
-                    throw new TException("Error occurs when executing query statement", ex);
-                }
-            }
+                    var req = new TSExecuteStatementReq(client.SessionId, sql, client.StatementId)
+                    {
+                        FetchSize = _fetchSize
+                    };
 
-            if (_utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode) == -1)
-            {
-                _clients.Add(client);
+                    var resp = await client.ServiceClient.executeQueryStatementAsync(req);
+                    var status = resp.Status;
 
-                throw new TException("execute query failed", null);
-            }
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("execute query failed, sql: {0}, message: {1}", sql, status.Message));
+                    }
 
-            _clients.Add(client);
-
-            var sessionDataset = new SessionDataSet(sql, resp, _clients, client.StatementId)
-            {
-                FetchSize = _fetchSize,
-            };
-
-            return sessionDataset;
+                    return new SessionDataSet(sql, resp, _clients, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                    };
+                },
+                errMsg: "Error occurs when executing query statement"
+            );
         }
-        public async Task<SessionDataSet> ExecuteStatementAsync(string sql)
+        public async Task<SessionDataSet> ExecuteStatementAsync(string sql, long timeout)
         {
-            TSExecuteStatementResp resp;
-            TSStatus status;
-            var client = _clients.Take();
-            var req = new TSExecuteStatementReq(client.SessionId, sql, client.StatementId)
-            {
-                FetchSize = _fetchSize
-            };
-            try
-            {
-                resp = await client.ServiceClient.executeStatementAsync(req);
-                status = resp.Status;
-            }
-            catch (TException e)
-            {
-                _clients.Add(client);
-
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                req.StatementId = client.StatementId;
-                try
+            return await ExecuteClientOperationAsync<SessionDataSet>(
+                async client =>
                 {
-                    resp = await client.ServiceClient.executeStatementAsync(req);
-                    status = resp.Status;
-                }
-                catch (TException ex)
-                {
-                    _clients.Add(client);
-                    throw new TException("Error occurs when executing query statement", ex);
-                }
-            }
+                    var req = new TSExecuteStatementReq(client.SessionId, sql, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                        Timeout = timeout
+                    };
 
-            if (_utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode) == -1)
-            {
-                _clients.Add(client);
+                    var resp = await client.ServiceClient.executeStatementAsync(req);
+                    var status = resp.Status;
 
-                throw new TException("execute query failed", null);
-            }
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("execute query failed, sql: {0}, message: {1}", sql, status.Message));
+                    }
 
-            _clients.Add(client);
-
-            var sessionDataset = new SessionDataSet(sql, resp, _clients, client.StatementId)
-            {
-                FetchSize = _fetchSize,
-            };
-
-            return sessionDataset;
+                    return new SessionDataSet(sql, resp, _clients, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                    };
+                },
+                errMsg: "Error occurs when executing query statement"
+            );
         }
 
+
         public async Task<int> ExecuteNonQueryStatementAsync(string sql)
         {
-            var client = _clients.Take();
-            var req = new TSExecuteStatementReq(client.SessionId, sql, client.StatementId);
-
-            try
-            {
-                var resp = await client.ServiceClient.executeUpdateStatementAsync(req);
-                var status = resp.Status;
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("execute non-query statement {0} message: {1}", sql, status.Message);
-                }
+                    var req = new TSExecuteStatementReq(client.SessionId, sql, client.StatementId);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                req.StatementId = client.StatementId;
-                try
-                {
                     var resp = await client.ServiceClient.executeUpdateStatementAsync(req);
                     var status = resp.Status;
 
@@ -1823,145 +1207,73 @@
                         _logger.LogInformation("execute non-query statement {0} message: {1}", sql, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when executing non-query statement", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when executing non-query statement"
+            );
         }
         public async Task<SessionDataSet> ExecuteRawDataQuery(List<string> paths, long startTime, long endTime)
         {
-            TSExecuteStatementResp resp;
-            TSStatus status;
-            var client = _clients.Take();
-            var req = new TSRawDataQueryReq(client.SessionId, paths, startTime, endTime, client.StatementId)
-            {
-                FetchSize = _fetchSize,
-                EnableRedirectQuery = false
-            };
-            try
-            {
-                resp = await client.ServiceClient.executeRawDataQueryAsync(req);
-                status = resp.Status;
-            }
-            catch (TException e)
-            {
-                _clients.Add(client);
-
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                req.StatementId = client.StatementId;
-                try
+            return await ExecuteClientOperationAsync<SessionDataSet>(
+                async client =>
                 {
-                    resp = await client.ServiceClient.executeRawDataQueryAsync(req);
-                    status = resp.Status;
-                }
-                catch (TException ex)
-                {
-                    _clients.Add(client);
-                    throw new TException("Error occurs when executing raw data query", ex);
-                }
-            }
+                    var req = new TSRawDataQueryReq(client.SessionId, paths, startTime, endTime, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                        EnableRedirectQuery = false
+                    };
 
-            if (_utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode) == -1)
-            {
-                _clients.Add(client);
+                    var resp = await client.ServiceClient.executeRawDataQueryAsync(req);
+                    var status = resp.Status;
 
-                throw new TException("execute raw data query failed", null);
-            }
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("execute raw data query failed, message: {0}", status.Message));
+                    }
 
-            _clients.Add(client);
-
-            var sessionDataset = new SessionDataSet("", resp, _clients, client.StatementId)
-            {
-                FetchSize = _fetchSize,
-            };
-
-            return sessionDataset;
+                    return new SessionDataSet("", resp, _clients, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                    };
+                },
+                errMsg: "Error occurs when executing raw data query"
+            );
         }
         public async Task<SessionDataSet> ExecuteLastDataQueryAsync(List<string> paths, long lastTime)
         {
-            TSExecuteStatementResp resp;
-            TSStatus status;
-            var client = _clients.Take();
-            var req = new TSLastDataQueryReq(client.SessionId, paths, lastTime, client.StatementId)
-            {
-                FetchSize = _fetchSize,
-                EnableRedirectQuery = false
-            };
-            try
-            {
-                resp = await client.ServiceClient.executeLastDataQueryAsync(req);
-                status = resp.Status;
-            }
-            catch (TException e)
-            {
-                _clients.Add(client);
-
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                req.StatementId = client.StatementId;
-                try
+            return await ExecuteClientOperationAsync<SessionDataSet>(
+                async client =>
                 {
-                    resp = await client.ServiceClient.executeLastDataQueryAsync(req);
-                    status = resp.Status;
-                }
-                catch (TException ex)
-                {
-                    _clients.Add(client);
-                    throw new TException("Error occurs when executing last data query", ex);
-                }
-            }
+                    var req = new TSLastDataQueryReq(client.SessionId, paths, lastTime, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                        EnableRedirectQuery = false
+                    };
 
-            if (_utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode) == -1)
-            {
-                _clients.Add(client);
+                    var resp = await client.ServiceClient.executeLastDataQueryAsync(req);
+                    var status = resp.Status;
 
-                throw new TException("execute last data query failed", null);
-            }
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("execute last data query failed, message: {0}", status.Message));
+                    }
 
-            _clients.Add(client);
-
-            var sessionDataset = new SessionDataSet("", resp, _clients, client.StatementId)
-            {
-                FetchSize = _fetchSize,
-            };
-
-            return sessionDataset;
+                    return new SessionDataSet("", resp, _clients, client.StatementId)
+                    {
+                        FetchSize = _fetchSize,
+                    };
+                },
+                errMsg: "Error occurs when executing last data query"
+            );
         }
 
         public async Task<int> CreateSchemaTemplateAsync(Template template)
         {
-            var client = _clients.Take();
-            var req = new TSCreateSchemaTemplateReq(client.SessionId, template.Name, template.ToBytes());
-            try
-            {
-                var status = await client.ServiceClient.createSchemaTemplateAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("create schema template {0} message: {1}", template.Name, status.Message);
-                }
+                    var req = new TSCreateSchemaTemplateReq(client.SessionId, template.Name, template.ToBytes());
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.createSchemaTemplateAsync(req);
 
                     if (_debugMode)
@@ -1969,43 +1281,18 @@
                         _logger.LogInformation("create schema template {0} message: {1}", template.Name, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when creating schema template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when creating schema template"
+            );
         }
-
         public async Task<int> DropSchemaTemplateAsync(string templateName)
         {
-            var client = _clients.Take();
-            var req = new TSDropSchemaTemplateReq(client.SessionId, templateName);
-            try
-            {
-                var status = await client.ServiceClient.dropSchemaTemplateAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("drop schema template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSDropSchemaTemplateReq(client.SessionId, templateName);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.dropSchemaTemplateAsync(req);
 
                     if (_debugMode)
@@ -2013,43 +1300,18 @@
                         _logger.LogInformation("drop schema template {0} message: {1}", templateName, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when dropping schema template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when dropping schema template"
+            );
         }
-
         public async Task<int> SetSchemaTemplateAsync(string templateName, string prefixPath)
         {
-            var client = _clients.Take();
-            var req = new TSSetSchemaTemplateReq(client.SessionId, templateName, prefixPath);
-            try
-            {
-                var status = await client.ServiceClient.setSchemaTemplateAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("set schema template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSSetSchemaTemplateReq(client.SessionId, templateName, prefixPath);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.setSchemaTemplateAsync(req);
 
                     if (_debugMode)
@@ -2057,43 +1319,18 @@
                         _logger.LogInformation("set schema template {0} message: {1}", templateName, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when setting schema template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when setting schema template"
+            );
         }
-
         public async Task<int> UnsetSchemaTemplateAsync(string prefixPath, string templateName)
         {
-            var client = _clients.Take();
-            var req = new TSUnsetSchemaTemplateReq(client.SessionId, prefixPath, templateName);
-            try
-            {
-                var status = await client.ServiceClient.unsetSchemaTemplateAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("unset schema template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSUnsetSchemaTemplateReq(client.SessionId, prefixPath, templateName);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.unsetSchemaTemplateAsync(req);
 
                     if (_debugMode)
@@ -2101,43 +1338,18 @@
                         _logger.LogInformation("unset schema template {0} message: {1}", templateName, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when unsetting schema template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when unsetting schema template"
+            );
         }
-
         public async Task<int> DeleteNodeInTemplateAsync(string templateName, string path)
         {
-            var client = _clients.Take();
-            var req = new TSPruneSchemaTemplateReq(client.SessionId, templateName, path);
-            try
-            {
-                var status = await client.ServiceClient.pruneSchemaTemplateAsync(req);
-
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("delete node in template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSPruneSchemaTemplateReq(client.SessionId, templateName, path);
 
-                return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var status = await client.ServiceClient.pruneSchemaTemplateAsync(req);
 
                     if (_debugMode)
@@ -2145,325 +1357,183 @@
                         _logger.LogInformation("delete node in template {0} message: {1}", templateName, status.Message);
                     }
 
-                    return _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when deleting node in template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                    return _utilFunctions.VerifySuccess(status);
+                },
+                errMsg: "Error occurs when deleting node in template"
+            );
         }
-
         public async Task<int> CountMeasurementsInTemplateAsync(string name)
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, name, (int)TemplateQueryType.COUNT_MEASUREMENTS);
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<int>(
+                async client =>
                 {
-                    _logger.LogInformation("count measurements in template {0} message: {1}", name, status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, name, (int)TemplateQueryType.COUNT_MEASUREMENTS);
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Count;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("count measurements in template {0} message: {1}", name, status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("count measurements in template failed, template name: {0}, message: {1}", name, status.Message));
+                    }
                     return resp.Count;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when counting measurements in template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when counting measurements in template"
+            );
         }
         public async Task<bool> IsMeasurementInTemplateAsync(string templateName, string path)
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.IS_MEASUREMENT);
-            req.Measurement = path;
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<bool>(
+                async client =>
                 {
-                    _logger.LogInformation("is measurement in template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.IS_MEASUREMENT);
+                    req.Measurement = path;
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Result;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("is measurement in template {0} message: {1}", templateName, status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("is measurement in template failed, template name: {0}, message: {1}", templateName, status.Message));
+                    }
                     return resp.Result;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when checking measurement in template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when checking measurement in template"
+            );
         }
-
-        public async Task<bool> IsPathExistInTemplate(string templateName, string path)
+        public async Task<bool> IsPathExistInTemplateAsync(string templateName, string path)
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.PATH_EXIST);
-            req.Measurement = path;
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<bool>(
+                async client =>
                 {
-                    _logger.LogInformation("is path exist in template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.PATH_EXIST);
+                    req.Measurement = path;
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Result;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("is path exist in template {0} message: {1}", templateName, status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("is path exist in template failed, template name: {0}, message: {1}", templateName, status.Message));
+                    }
                     return resp.Result;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when checking path exist in template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when checking path exist in template"
+            );
         }
-
         public async Task<List<string>> ShowMeasurementsInTemplateAsync(string templateName, string pattern = "")
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.SHOW_MEASUREMENTS);
-            req.Measurement = pattern;
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<List<string>>(
+                async client =>
                 {
-                    _logger.LogInformation("get measurements in template {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.SHOW_MEASUREMENTS);
+                    req.Measurement = pattern;
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Measurements;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("get measurements in template {0} message: {1}", templateName, status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("show measurements in template failed, template name: {0}, pattern: {1}, message: {2}", templateName, pattern, status.Message));
+                    }
                     return resp.Measurements;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when getting measurements in template", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when showing measurements in template"
+            );
         }
+
         public async Task<List<string>> ShowAllTemplatesAsync()
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, "", (int)TemplateQueryType.SHOW_TEMPLATES);
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<List<string>>(
+                async client =>
                 {
-                    _logger.LogInformation("get all templates message: {0}", status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, "", (int)TemplateQueryType.SHOW_TEMPLATES);
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Measurements;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("get all templates message: {0}", status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("show all templates failed, message: {0}", status.Message));
+                    }
                     return resp.Measurements;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when getting all templates", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when getting all templates"
+            );
         }
+
         public async Task<List<string>> ShowPathsTemplateSetOnAsync(string templateName)
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.SHOW_SET_TEMPLATES);
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<List<string>>(
+                async client =>
                 {
-                    _logger.LogInformation("get paths template set on {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.SHOW_SET_TEMPLATES);
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Measurements;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("get paths template set on {0} message: {1}", templateName, status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("show paths template set on failed, template name: {0}, message: {1}", templateName, status.Message));
+                    }
                     return resp.Measurements;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when getting paths template set on", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when getting paths template set on"
+            );
         }
         public async Task<List<string>> ShowPathsTemplateUsingOnAsync(string templateName)
         {
-            var client = _clients.Take();
-            var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.SHOW_USING_TEMPLATES);
-            try
-            {
-                var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
-                var status = resp.Status;
-                if (_debugMode)
+            return await ExecuteClientOperationAsync<List<string>>(
+                async client =>
                 {
-                    _logger.LogInformation("get paths template using on {0} message: {1}", templateName, status.Message);
-                }
+                    var req = new TSQueryTemplateReq(client.SessionId, templateName, (int)TemplateQueryType.SHOW_USING_TEMPLATES);
 
-                _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
-                return resp.Measurements;
-            }
-            catch (TException e)
-            {
-                await Open(_enableRpcCompression);
-                client = _clients.Take();
-                req.SessionId = client.SessionId;
-                try
-                {
                     var resp = await client.ServiceClient.querySchemaTemplateAsync(req);
                     var status = resp.Status;
+
                     if (_debugMode)
                     {
                         _logger.LogInformation("get paths template using on {0} message: {1}", templateName, status.Message);
                     }
 
-                    _utilFunctions.VerifySuccess(status, SuccessCode, RedirectRecommendCode);
+                    if (_utilFunctions.VerifySuccess(status) == -1)
+                    {
+                        throw new Exception(string.Format("show paths template using on failed, template name: {0}, message: {1}", templateName, status.Message));
+                    }
                     return resp.Measurements;
-                }
-                catch (TException ex)
-                {
-                    throw new TException("Error occurs when getting paths template using on", ex);
-                }
-            }
-            finally
-            {
-                _clients.Add(client);
-            }
+                },
+                errMsg: "Error occurs when getting paths template using on"
+            );
         }
 
         protected virtual void Dispose(bool disposing)
diff --git a/src/Apache.IoTDB/Utils.cs b/src/Apache.IoTDB/Utils.cs
index 639ad35..f7adc19 100644
--- a/src/Apache.IoTDB/Utils.cs
+++ b/src/Apache.IoTDB/Utils.cs
@@ -1,3 +1,4 @@
+using System;
 using System.Collections.Generic;
 using System.Linq;
 
@@ -5,6 +6,8 @@
 {
     public class Utils
     {
+        const string PointColon = ":";
+        const string AbbColon = "[";
         public bool IsSorted(IList<long> collection)
         {
             for (var i = 1; i < collection.Count; i++)
@@ -18,24 +21,58 @@
             return true;
         }
 
-        public int VerifySuccess(TSStatus status, int successCode, int redirectRecommendCode)
+        public int VerifySuccess(TSStatus status)
         {
-            if (status.__isset.subStatus)
+            if (status.Code == (int)TSStatusCode.MULTIPLE_ERROR)
             {
-                if (status.SubStatus.Any(subStatus => VerifySuccess(subStatus, successCode, redirectRecommendCode) != 0))
+                if (status.SubStatus.Any(subStatus => VerifySuccess(subStatus) != 0))
                 {
                     return -1;
                 }
-
                 return 0;
             }
-
-            if (status.Code == successCode || status.Code == redirectRecommendCode)
+            if (status.Code == (int)TSStatusCode.REDIRECTION_RECOMMEND)
             {
                 return 0;
             }
-
+            if (status.Code == (int)TSStatusCode.SUCCESS_STATUS)
+            {
+                return 0;
+            }
             return -1;
         }
+        /// <summary>
+        /// Parse TEndPoint from a given TEndPointUrl
+        /// example:[D80:0000:0000:0000:ABAA:0000:00C2:0002]:22227
+        /// </summary>
+        /// <param name="endPointUrl">ip:port</param>
+        /// <returns>TEndPoint null if parse error</returns>
+        public TEndPoint ParseTEndPointIpv4AndIpv6Url(string endPointUrl)
+        {
+            TEndPoint endPoint = new();
+
+            if (endPointUrl.Contains(PointColon))
+            {
+                int pointPosition = endPointUrl.LastIndexOf(PointColon);
+                string port = endPointUrl[(pointPosition + 1)..];
+                string ip = endPointUrl[..pointPosition];
+                if (ip.Contains(AbbColon))
+                {
+                    ip = ip[1..^1]; // Remove the square brackets from IPv6
+                }
+                endPoint.Ip = ip;
+                endPoint.Port = int.Parse(port);
+            }
+
+            return endPoint;
+        }
+        public List<TEndPoint> ParseSeedNodeUrls(List<string> nodeUrls)
+        {
+            if (nodeUrls == null || nodeUrls.Count == 0)
+            {
+                throw new ArgumentException("No seed node URLs provided.");
+            }
+            return nodeUrls.Select(ParseTEndPointIpv4AndIpv6Url).ToList();
+        }
     }
 }
\ No newline at end of file