blob: 93e57b7f905a2f91dd56f293a3f0a01499f0ce1f [file]
import{_ as n,c as a,b as l,o as e}from"./app-pmkzp6TS.js";const o={};function p(t,s){return e(),a("div",null,[...s[0]||(s[0]=[l(`<h1 id="c-native-api" tabindex="-1"><a class="header-anchor" href="#c-native-api"><span>C# Native API</span></a></h1><h2 id="_1-feature-overview" tabindex="-1"><a class="header-anchor" href="#_1-feature-overview"><span>1. Feature Overview</span></a></h2><p>IoTDB provides a C# native client driver and corresponding connection pool, offering object-oriented interfaces that allow direct assembly of time-series objects for writing without SQL construction. It is recommended to use the connection pool for multi-threaded parallel database operations.</p><h2 id="_2-usage-instructions" tabindex="-1"><a class="header-anchor" href="#_2-usage-instructions"><span>2. Usage Instructions</span></a></h2><p><strong>Environment Requirements:</strong></p><ul><li>.NET SDK &gt;= 5.0 or .NET Framework 4.x</li><li>Thrift &gt;= 0.14.1</li><li>NLog &gt;= 4.7.9</li></ul><p><strong>Dependency Installation:</strong></p><p>It supports installation using tools such as NuGet Package Manager or .NET CLI. Taking .NET CLI as an example:</p><p>If using .NET 5.0 or a later version of the SDK, enter the following command to install the latest NuGet package:</p><div class="language-plain line-numbers-mode" data-highlighter="shiki" data-ext="plain" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-plain"><span class="line"><span>dotnet add package Apache.IoTDB</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.</p><h2 id="_3-read-write-operations" tabindex="-1"><a class="header-anchor" href="#_3-read-write-operations"><span>3. Read/Write Operations</span></a></h2><h3 id="_3-1-tablesessionpool" tabindex="-1"><a class="header-anchor" href="#_3-1-tablesessionpool"><span>3.1 TableSessionPool</span></a></h3><h4 id="_3-1-1-functional-description" tabindex="-1"><a class="header-anchor" href="#_3-1-1-functional-description"><span>3.1.1 Functional Description</span></a></h4><p>The <code>TableSessionPool</code> defines basic operations for interacting with IoTDB, supporting data insertion, query execution, and session closure. It also serves as a connection pool to efficiently reuse connections and properly release resources when unused. This interface defines how to acquire sessions from the pool and how to close the pool.</p><h4 id="_3-1-2-method-list" tabindex="-1"><a class="header-anchor" href="#_3-1-2-method-list"><span>3.1.2 Method List</span></a></h4><p>Below are the methods defined in <code>TableSessionPool</code> with detailed descriptions:</p><table><thead><tr><th>Method</th><th>Description</th><th>Parameters</th><th>Return Type</th></tr></thead><tbody><tr><td><code>Open(bool enableRpcCompression)</code></td><td>Opens a session connection with custom <code>enableRpcCompression</code></td><td><code>enableRpcCompression</code>: Whether to enable <code>RpcCompression</code> (requires server-side configuration alignment)</td><td><code>Task</code></td></tr><tr><td><code>Open()</code></td><td>Opens a session connection without enabling <code>RpcCompression</code></td><td>None</td><td><code>Task</code></td></tr><tr><td><code>InsertAsync(Tablet tablet)</code></td><td>Inserts a <code>Tablet</code> object containing time-series data into the database</td><td><code>tablet</code>: The Tablet object to insert</td><td><code>Task&lt;int&gt;</code></td></tr><tr><td><code>ExecuteNonQueryStatementAsync(string sql)</code></td><td>Executes a non-query SQL statement (e.g., DDL/DML commands)</td><td><code>sql</code>: The SQL statement to execute</td><td><code>Task&lt;int&gt;</code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql)</code></td><td>Executes a query SQL statement and returns a <code>SessionDataSet</code> with results</td><td><code>sql</code>: The SQL query to execute</td><td><code>Task&lt;SessionDataSet&gt;</code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql, long timeoutInMs)</code></td><td>Executes a query SQL statement with a timeout (milliseconds)</td><td><code>sql</code>: The SQL query to execute <br> <code>timeoutInMs</code>: Query timeout in milliseconds</td><td><code>Task&lt;SessionDataSet&gt;</code></td></tr><tr><td><code>Close()</code></td><td>Closes the session and releases held resources</td><td>None</td><td><code>Task</code></td></tr></tbody></table><h4 id="_3-1-3-interface-examples" tabindex="-1"><a class="header-anchor" href="#_3-1-3-interface-examples"><span>3.1.3 Interface Examples</span></a></h4><div class="language-c# line-numbers-mode" data-highlighter="shiki" data-ext="c#" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-c#"><span class="line"><span style="color:#C678DD;">public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> Open</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">bool</span><span style="color:#E5C07B;"> enableRpcCompression</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">CancellationToken</span><span style="color:#E5C07B;"> cancellationToken</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> default)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task Open(</span><span style="color:#E5C07B;">CancellationToken</span><span style="color:#E5C07B;"> cancellationToken</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> default)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;int&gt; InsertAsync(</span><span style="color:#E5C07B;">Tablet</span><span style="color:#E5C07B;"> tablet</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;int&gt; ExecuteNonQueryStatementAsync(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sql</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;SessionDataSet&gt; ExecuteQueryStatementAsync(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sql</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;SessionDataSet&gt; ExecuteQueryStatementAsync(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sql</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">long</span><span style="color:#E5C07B;"> timeoutInMs</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task Close()</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-2-tablesessionpool-builder" tabindex="-1"><a class="header-anchor" href="#_3-2-tablesessionpool-builder"><span>3.2 TableSessionPool.Builder</span></a></h3><h4 id="_3-2-1-functional-description" tabindex="-1"><a class="header-anchor" href="#_3-2-1-functional-description"><span>3.2.1 Functional Description</span></a></h4><p>The <code>TableSessionPool.Builder</code> class configures and creates instances of <code>TableSessionPool</code>, allowing developers to set connection parameters, session settings, and pooling behaviors.</p><h4 id="_3-2-2-configuration-options" tabindex="-1"><a class="header-anchor" href="#_3-2-2-configuration-options"><span>3.2.2 Configuration Options</span></a></h4><p>Below are the available configuration options for <code>TableSessionPool.Builder</code> and their defaults:</p><table><thead><tr><th>​<strong>Configuration Method</strong></th><th>​<strong>Description</strong></th><th>​<strong>Default Value</strong></th></tr></thead><tbody><tr><td><code>SetHost(string host)</code></td><td>Sets the IoTDB node host</td><td><code>localhost</code></td></tr><tr><td><code>SetPort(int port)</code></td><td>Sets the IoTDB node port</td><td><code>6667</code></td></tr><tr><td><code>SetNodeUrls(List nodeUrls)</code></td><td>Sets IoTDB cluster node URLs (overrides <code>SetHost</code>/<code>SetPort</code> when used)</td><td>Not set</td></tr><tr><td><code>SetUsername(string username)</code></td><td>Sets the connection username</td><td><code>&quot;root&quot;</code></td></tr><tr><td><code>SetPassword(string password)</code></td><td>Sets the connection password</td><td><code>&quot;root&quot;</code></td></tr><tr><td><code>SetFetchSize(int fetchSize)</code></td><td>Sets the fetch size for query results</td><td><code>1024</code></td></tr><tr><td><code>SetZoneId(string zoneId)</code></td><td>Sets the timezone ZoneID</td><td><code>UTC+08:00</code></td></tr><tr><td><code>SetPoolSize(int poolSize)</code></td><td>Sets the maximum number of sessions in the connection pool</td><td><code>8</code></td></tr><tr><td><code>SetEnableRpcCompression(bool enable)</code></td><td>Enables/disables RPC compression</td><td><code>false</code></td></tr><tr><td><code>SetConnectionTimeoutInMs(int timeout)</code></td><td>Sets the connection timeout in milliseconds</td><td><code>500</code></td></tr><tr><td><code>SetDatabase(string database)</code></td><td>Sets the target database name</td><td><code>&quot;&quot;</code></td></tr></tbody></table><h4 id="_3-2-3-interface-examples" tabindex="-1"><a class="header-anchor" href="#_3-2-3-interface-examples"><span>3.2.3 Interface Examples</span></a></h4><div class="language-c# line-numbers-mode" data-highlighter="shiki" data-ext="c#" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-c#"><span class="line"><span style="color:#C678DD;">public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetHost</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> host</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _host</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> host</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetPort</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> port</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _port</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> port</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _username</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> username</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _password</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> password</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> fetchSize</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _fetchSize</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> fetchSize</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetZoneId</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> zoneId</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _zoneId</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> zoneId</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetPoolSize</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> poolSize</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _poolSize</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> poolSize</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetEnableRpcCompression</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">bool</span><span style="color:#E5C07B;"> enableRpcCompression</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _enableRpcCompression</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> enableRpcCompression</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetConnectionTimeoutInMs</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> timeout</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _connectionTimeoutInMs</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> timeout</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _nodeUrls</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> nodeUrls</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> protected</span><span style="color:#C678DD;"> internal</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetSqlDialect</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sqlDialect</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _sqlDialect</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> sqlDialect</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetDatabase</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> database</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _database</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> database</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#61AFEF;"> Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _host</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;localhost&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _port</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 6667</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _username</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;root&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _password</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;root&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _fetchSize</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 1024</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _zoneId</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;UTC+08:00&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _poolSize</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 8</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _enableRpcCompression</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> false</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _connectionTimeoutInMs</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 500</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _sqlDialect</span><span style="color:#56B6C2;"> =</span><span style="color:#E5C07B;"> IoTDBConstant</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TABLE_SQL_DIALECT</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _database</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> TableSessionPool</span><span style="color:#61AFEF;"> Build</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E5C07B;"> SessionPool</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // if nodeUrls is not empty, use nodeUrls to create session pool</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">_nodeUrls</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Count</span><span style="color:#56B6C2;"> &gt;</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> sessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">SessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">_nodeUrls</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_username</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_password</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_fetchSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_zoneId</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_poolSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_enableRpcCompression</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_connectionTimeoutInMs</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_sqlDialect</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_database</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> else</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> sessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">SessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">_host</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_port</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_username</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_password</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_fetchSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_zoneId</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_poolSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_enableRpcCompression</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_connectionTimeoutInMs</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_sqlDialect</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_database</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">sessionPool</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_4-example" tabindex="-1"><a class="header-anchor" href="#_4-example"><span>4. Example</span></a></h2><p>Complete example : <a href="https://github.com/apache/iotdb-client-csharp/blob/main/samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs" target="_blank" rel="noopener noreferrer">samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs</a></p><div class="language-c# line-numbers-mode" data-highlighter="shiki" data-ext="c#" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-c#"><span class="line"><span style="color:#7F848E;font-style:italic;">/*</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * Licensed to the Apache Software Foundation (ASF) under one</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * or more contributor license agreements. See the NOTICE file</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * distributed with this work for additional information</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * regarding copyright ownership. The ASF licenses this file</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * to you under the Apache License, Version 2.0 (the</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * &quot;License&quot;); you may not use this file except in compliance</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * with the License. You may obtain a copy of the License at</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> *</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * http://www.apache.org/licenses/LICENSE-2.0</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> *</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * Unless required by applicable law or agreed to in writing,</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * software distributed under the License is distributed on an</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * KIND, either express or implied. See the License for the</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * specific language governing permissions and limitations</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * under the License.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> */</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> System</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> System</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Collections</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Generic</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> System</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Threading</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Tasks</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> Apache</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">IoTDB</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">DataStructure</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">namespace</span><span style="color:#E5C07B;"> Apache</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">IoTDB</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Samples</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">public</span><span style="color:#C678DD;"> class</span><span style="color:#E5C07B;"> TableSessionPoolTest</span></span>
<span class="line"><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#C678DD;"> private</span><span style="color:#C678DD;"> readonly</span><span style="color:#E5C07B;"> SessionPoolTest</span><span style="color:#E06C75;"> sessionPoolTest</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#61AFEF;"> TableSessionPoolTest</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">SessionPoolTest</span><span style="color:#E5C07B;"> sessionPoolTest</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> sessionPoolTest</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> Test</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#61AFEF;">TestCleanup</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#61AFEF;">TestSelectAndInsert</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#61AFEF;">TestUseDatabase</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // await TestCleanup();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> TestSelectAndInsert</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableSessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">Build</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">debug</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">OpenDebugMode</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;CREATE DATABASE test1&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;CREATE DATABASE test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // or use full qualified table name</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span></span>
<span class="line"><span style="color:#98C379;"> &quot;create table test1.table1(region_id STRING TAG, plant_id STRING TAG, device_id STRING TAG, model STRING ATTRIBUTE, temperature FLOAT FIELD, humidity DOUBLE FIELD) with (TTL=3600000)&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span></span>
<span class="line"><span style="color:#98C379;"> &quot;create table table2(region_id STRING TAG, plant_id STRING TAG, color STRING ATTRIBUTE, temperature FLOAT FIELD, speed DOUBLE FIELD) with (TTL=6600000)&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables from current database</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables by specifying another database</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // using SHOW tables FROM</span></span>
<span class="line"><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES FROM test1&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableName</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;testTable1&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E06C75;">columnNames</span><span style="color:#56B6C2;"> =</span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt; {</span></span>
<span class="line"><span style="color:#98C379;"> &quot;region_id&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;plant_id&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;device_id&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;model&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;temperature&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;humidity&quot;</span><span style="color:#ABB2BF;"> };</span></span>
<span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E06C75;">dataTypes</span><span style="color:#56B6C2;"> =</span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;{</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">FLOAT</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">DOUBLE</span><span style="color:#ABB2BF;">};</span></span>
<span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">ColumnCategory</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E06C75;">columnCategories</span><span style="color:#56B6C2;"> =</span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">ColumnCategory</span><span style="color:#ABB2BF;">&gt;{</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TAG</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TAG</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TAG</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">ATTRIBUTE</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">FIELD</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">FIELD</span><span style="color:#ABB2BF;">};</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> values</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">&gt;&gt; { };</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> timestamps</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">long</span><span style="color:#ABB2BF;">&gt; { };</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#ABB2BF;"> (</span><span style="color:#C678DD;">long</span><span style="color:#E06C75;"> timestamp</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">timestamp</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#D19A66;"> 100</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">timestamp</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E5C07B;"> timestamps</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">timestamp</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> values</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">&gt; { </span><span style="color:#98C379;">&quot;1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;5&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;A&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">1.23F</span><span style="color:#56B6C2;"> +</span><span style="color:#E06C75;"> timestamp</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">111.1</span><span style="color:#56B6C2;"> +</span><span style="color:#E06C75;"> timestamp</span><span style="color:#ABB2BF;"> });</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tablet</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">Tablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">tableName</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">columnNames</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">columnCategories</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">dataTypes</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">values</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">timestamps</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">InsertAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">tablet</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;select * from testTable1 &quot;</span></span>
<span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> &quot;where region_id = &#39;1&#39; and plant_id in (&#39;3&#39;, &#39;5&#39;) and device_id = &#39;3&#39;&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> TestUseDatabase</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableSessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetDatabase</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;test1&quot;</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">Build</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">debug</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">OpenDebugMode</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables from current database</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables from current database</span></span>
<span class="line"><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> TestCleanup</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableSessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">Build</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">debug</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">OpenDebugMode</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;drop database test1&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;drop database test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#ABB2BF;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,31)])])}const r=n(o,[["render",p]]),i=JSON.parse('{"path":"/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html","title":"C# Native API","lang":"en-US","frontmatter":{"description":"C# Native API 1. Feature Overview IoTDB provides a C# native client driver and corresponding connection pool, offering object-oriented interfaces that allow direct assembly of t...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"C# Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-03-25T07:01:57.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"C# Native API"}],["meta",{"property":"og:description","content":"C# Native API 1. Feature Overview IoTDB provides a C# native client driver and corresponding connection pool, offering object-oriented interfaces that allow direct assembly of t..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2026-03-25T07:01:57.000Z"}],["meta",{"property":"article:modified_time","content":"2026-03-25T07:01:57.000Z"}],["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://iotdb.apache.org/zh/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html"}]]},"git":{"createdTime":1743127782000,"updatedTime":1774422117000,"contributors":[{"name":"leto-b","username":"leto-b","email":"bingqian.bai@timecho.com","commits":4,"url":"https://github.com/leto-b"}]},"readingTime":{"minutes":4.56,"words":1368},"filePathRelative":"UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.md","autoDesc":true}');export{r as comp,i as data};