blob: eeb07f09242e1f6c63497a289a3c9f3642ef1a35 [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="go-native-api" tabindex="-1"><a class="header-anchor" href="#go-native-api"><span>Go Native API</span></a></h1><p>The Git repository for the Go Native API client is located <a href="https://github.com/apache/iotdb-client-go/" target="_blank" rel="noopener noreferrer">here</a></p><h2 id="_1-usage" tabindex="-1"><a class="header-anchor" href="#_1-usage"><span>1. Usage</span></a></h2><h3 id="_1-1-dependencies" tabindex="-1"><a class="header-anchor" href="#_1-1-dependencies"><span>1.1 Dependencies</span></a></h3><ul><li>golang &gt;= 1.13</li><li>make &gt;= 3.0</li><li>curl &gt;= 7.1.1</li><li>thrift 0.15.0</li><li>Linux、Macos or other unix-like systems</li><li>Windows+bash (WSL、cygwin、Git Bash)</li></ul><h3 id="_1-2-installation" tabindex="-1"><a class="header-anchor" href="#_1-2-installation"><span>1.2 Installation</span></a></h3><ul><li>go mod</li></ul><div class="language-sh line-numbers-mode" data-highlighter="shiki" data-ext="sh" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sh"><span class="line"><span style="color:#C678DD;">export</span><span style="color:#E06C75;"> GO111MODULE</span><span style="color:#56B6C2;">=</span><span style="color:#E06C75;">on</span></span>
<span class="line"><span style="color:#C678DD;">export</span><span style="color:#E06C75;"> GOPROXY</span><span style="color:#56B6C2;">=</span><span style="color:#E06C75;">https</span><span style="color:#ABB2BF;">://</span><span style="color:#E06C75;">goproxy</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">io</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">mkdir</span><span style="color:#98C379;"> session_example</span><span style="color:#ABB2BF;"> &amp;&amp; </span><span style="color:#56B6C2;">cd</span><span style="color:#98C379;"> session_example</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">curl</span><span style="color:#D19A66;"> -o</span><span style="color:#98C379;"> session_example.go</span><span style="color:#D19A66;"> -L</span><span style="color:#98C379;"> https://github.com/apache/iotdb-client-go/raw/main/example/session_example.go</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">go</span><span style="color:#98C379;"> mod</span><span style="color:#98C379;"> init</span><span style="color:#98C379;"> session_example</span></span>
<span class="line"><span style="color:#61AFEF;">go</span><span style="color:#98C379;"> run</span><span style="color:#98C379;"> session_example.go</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></div><ul><li>GOPATH</li></ul><div class="language-sh line-numbers-mode" data-highlighter="shiki" data-ext="sh" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sh"><span class="line"><span style="color:#7F848E;font-style:italic;"># get thrift 0.15.0</span></span>
<span class="line"><span style="color:#61AFEF;">go</span><span style="color:#98C379;"> get</span><span style="color:#98C379;"> github.com/apache/thrift</span></span>
<span class="line"><span style="color:#56B6C2;">cd</span><span style="color:#E06C75;"> $GOPATH</span><span style="color:#98C379;">/src/github.com/apache/thrift</span></span>
<span class="line"><span style="color:#61AFEF;">git</span><span style="color:#98C379;"> checkout</span><span style="color:#D19A66;"> 0.15.0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">mkdir</span><span style="color:#D19A66;"> -p</span><span style="color:#E06C75;"> $GOPATH</span><span style="color:#98C379;">/src/iotdb-client-go-example/session_example</span></span>
<span class="line"><span style="color:#56B6C2;">cd</span><span style="color:#E06C75;"> $GOPATH</span><span style="color:#98C379;">/src/iotdb-client-go-example/session_example</span></span>
<span class="line"><span style="color:#61AFEF;">curl</span><span style="color:#D19A66;"> -o</span><span style="color:#98C379;"> session_example.go</span><span style="color:#D19A66;"> -L</span><span style="color:#98C379;"> https://github.com/apache/iotdb-client-go/raw/main/example/session_example.go</span></span>
<span class="line"><span style="color:#61AFEF;">go</span><span style="color:#98C379;"> run</span><span style="color:#98C379;"> session_example.go</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></div><ul><li>Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.</li></ul><h2 id="_2-itablesession-interface" tabindex="-1"><a class="header-anchor" href="#_2-itablesession-interface"><span>2. ITableSession Interface</span></a></h2><h3 id="_2-1-description" tabindex="-1"><a class="header-anchor" href="#_2-1-description"><span>2.1 Description</span></a></h3><p>Defines core operations for interacting with IoTDB tables, including data insertion, query execution, and session closure. Not thread-safe.</p><h3 id="_2-2-method-list" tabindex="-1"><a class="header-anchor" href="#_2-2-method-list"><span>2.2 Method List</span></a></h3><table><thead><tr><th><strong>Method Name</strong></th><th><strong>Description</strong></th><th><strong>Parameters</strong></th><th><strong>Return Value</strong></th><th><strong>Return Error</strong></th></tr></thead><tbody><tr><td><code>Insert(tablet *Tablet)</code></td><td>Inserts a<code>Tablet</code>containing time-series data into the database.</td><td><code>tablet</code>: A pointer to a Tablet containing time-series data to be inserted.</td><td>A pointer to TSStatus indicating the execution result.</td><td>An error if an issue occurs during the operation, such as a connection error or execution failure.</td></tr><tr><td><code>xecuteNonQueryStatement(sql string)</code></td><td>Executes non-query SQL statements such as DDL or DML commands.</td><td><code>sql</code>: The SQL statement to execute.</td><td>A pointer to TSStatus indicating the execution result.</td><td>An error if an issue occurs during the operation, such as a connection error or execution failure.</td></tr><tr><td><code>ExecuteQueryStatement (sql string, timeoutInMs *int64)</code></td><td>Executes a query SQL statement with a specified timeout in milliseconds.</td><td><code>sql</code>: The SQL query statement.<code>timeoutInMs</code>: Query timeout in milliseconds.</td><td>A pointer to SessionDataSet containing the query results.</td><td>An error if an issue occurs during the operation, such as a connection error or execution failure.</td></tr><tr><td><code>Close()</code></td><td>Closes the session and releases resources.</td><td>None</td><td>None</td><td>An error if there is an issue with closing the IoTDB connection.</td></tr></tbody></table><h3 id="_2-3-interface-definition" tabindex="-1"><a class="header-anchor" href="#_2-3-interface-definition"><span>2.3 Interface Definition</span></a></h3><ol><li>ITableSession</li></ol><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-go"><span class="line"><span style="color:#7F848E;font-style:italic;">// ITableSession defines an interface for interacting with IoTDB tables.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// It supports operations such as data insertion, executing queries, and closing the session.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Implementations of this interface are expected to manage connections and ensure</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// proper resource cleanup.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Each method may return an error to indicate issues such as connection errors</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// or execution failures.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Since this interface includes a Close method, it is recommended to use</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// defer to ensure the session is properly closed.</span></span>
<span class="line"><span style="color:#C678DD;">type</span><span style="color:#E5C07B;"> ITableSession</span><span style="color:#C678DD;"> interface</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Insert inserts a Tablet into the database.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Parameters:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - tablet: A pointer to a Tablet containing time-series data to be inserted.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - r: A pointer to TSStatus indicating the execution result.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - err: An error if an issue occurs during the operation, such as a connection error or execution failure.</span></span>
<span class="line"><span style="color:#61AFEF;"> Insert</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">tablet</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">Tablet</span><span style="color:#ABB2BF;">) (</span><span style="color:#E06C75;font-style:italic;">r</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">common</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TSStatus</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">err</span><span style="color:#C678DD;"> error</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // ExecuteNonQueryStatement executes a non-query SQL statement, such as a DDL or DML command.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Parameters:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - sql: The SQL statement to execute.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - r: A pointer to TSStatus indicating the execution result.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - err: An error if an issue occurs during the operation, such as a connection error or execution failure.</span></span>
<span class="line"><span style="color:#61AFEF;"> ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">sql</span><span style="color:#C678DD;"> string</span><span style="color:#ABB2BF;">) (</span><span style="color:#E06C75;font-style:italic;">r</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">common</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TSStatus</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">err</span><span style="color:#C678DD;"> error</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // ExecuteQueryStatement executes a query SQL statement and returns the result set.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Parameters:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - sql: The SQL query statement to execute.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - timeoutInMs: A pointer to the timeout duration in milliseconds for the query execution. </span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - result: A pointer to SessionDataSet containing the query results.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - err: An error if an issue occurs during the operation, such as a connection error or execution failure.</span></span>
<span class="line"><span style="color:#61AFEF;"> ExecuteQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">sql</span><span style="color:#C678DD;"> string</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">timeoutInMs</span><span style="color:#C678DD;"> *int64</span><span style="color:#ABB2BF;">) (</span><span style="color:#C678DD;">*</span><span style="color:#E5C07B;">SessionDataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">error</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Close closes the session, releasing any held resources.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> //</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // - err: An error if there is an issue with closing the IoTDB connection.</span></span>
<span class="line"><span style="color:#61AFEF;"> Close</span><span style="color:#ABB2BF;">() (</span><span style="color:#E06C75;font-style:italic;">err</span><span style="color:#C678DD;"> error</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></div><ol start="2"><li>Constructing a TableSession</li></ol><ul><li>There’s no need to manually set the <code>sqlDialect</code> field in the <code>Config</code>structs. This is automatically handled by the corresponding <code>NewSession</code> function during initialization. Simply use the appropriate constructor based on your use case (single-node or cluster).</li></ul><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-go"><span class="line"><span style="color:#C678DD;">type</span><span style="color:#E5C07B;"> Config</span><span style="color:#C678DD;"> struct</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> Host</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Port</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Password</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> FetchSize</span><span style="color:#C678DD;"> int32</span></span>
<span class="line"><span style="color:#E06C75;"> TimeZone</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> ConnectRetryMax</span><span style="color:#C678DD;"> int</span></span>
<span class="line"><span style="color:#E06C75;"> sqlDialect</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Version</span><span style="color:#E5C07B;"> Version</span></span>
<span class="line"><span style="color:#E06C75;"> Database</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">type</span><span style="color:#E5C07B;"> ClusterConfig</span><span style="color:#C678DD;"> struct</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> NodeUrls</span><span style="color:#ABB2BF;"> []</span><span style="color:#C678DD;">string</span><span style="color:#7F848E;font-style:italic;"> //ip:port</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Password</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> FetchSize</span><span style="color:#C678DD;"> int32</span></span>
<span class="line"><span style="color:#E06C75;"> TimeZone</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> ConnectRetryMax</span><span style="color:#C678DD;"> int</span></span>
<span class="line"><span style="color:#E06C75;"> sqlDialect</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Database</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// NewTableSession creates a new TableSession instance using the provided configuration.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Parameters:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - config: The configuration for the session.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - enableRPCCompression: A boolean indicating whether RPC compression is enabled.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - connectionTimeoutInMs: The timeout in milliseconds for establishing a connection.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - An ITableSession instance if the session is successfully created.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - An error if there is an issue during session initialization.</span></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> NewTableSession</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">config</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">Config</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">enableRPCCompression</span><span style="color:#C678DD;"> bool</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">connectionTimeoutInMs</span><span style="color:#C678DD;"> int</span><span style="color:#ABB2BF;">) (</span><span style="color:#E5C07B;">ITableSession</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">error</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// NewClusterTableSession creates a new TableSession instance for a cluster setup.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Parameters:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - clusterConfig: The configuration for the cluster session.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - enableRPCCompression: A boolean indicating whether RPC compression is enabled.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - An ITableSession instance if the session is successfully created.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - An error if there is an issue during session initialization.</span></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> NewClusterTableSession</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">clusterConfig</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">ClusterConfig</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">enableRPCCompression</span><span style="color:#C678DD;"> bool</span><span style="color:#ABB2BF;">) (</span><span style="color:#E5C07B;">ITableSession</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">error</span><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></div><blockquote><p>Note:</p><p>When creating a <code>TableSession</code> via <code>NewTableSession</code> or <code>NewClusterTableSession</code>, the connection is already established; no additional <code>Open</code> operation is required.</p></blockquote><h3 id="_2-4-example" tabindex="-1"><a class="header-anchor" href="#_2-4-example"><span>2.4 Example</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-go"><span class="line"><span style="color:#C678DD;">package</span><span style="color:#E5C07B;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> (</span></span>
<span class="line"><span style="color:#98C379;"> &quot;flag&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;log&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;math/rand&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;strconv&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;time&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#98C379;"> &quot;github.com/apache/iotdb-client-go/v2/client&quot;</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> main</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#E06C75;"> flag</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Parse</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> config</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Config</span><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#E06C75;"> Host</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;127.0.0.1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Port</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;6667&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#ABB2BF;">: </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:#ABB2BF;">: </span><span style="color:#98C379;">&quot;root&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Database</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;test_session&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">NewTableSession</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">config</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> session</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:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create database test_db&quot;</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use test_db&quot;</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create table t1 (tag1 string tag, tag2 string tag, s1 text field, s2 text field)&quot;</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> insertRelationalTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#61AFEF;"> showTables</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#61AFEF;"> query</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</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;">func</span><span style="color:#61AFEF;"> getTextValueFromDataSet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">dataSet</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">SessionDataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">columnName</span><span style="color:#C678DD;"> string</span><span style="color:#ABB2BF;">) </span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> isNull</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">IsNull</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">columnName</span><span style="color:#ABB2BF;">); </span><span style="color:#E06C75;">err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> } </span><span style="color:#C678DD;">else</span><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> isNull</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#98C379;"> &quot;null&quot;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> v</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetString</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">columnName</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</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:#E06C75;"> v</span></span>
<span class="line"><span style="color:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> insertRelationalTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">session</span><span style="color:#E5C07B;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">ITableSession</span><span style="color:#ABB2BF;">) {</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">NewRelationalTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;t1&quot;</span><span style="color:#ABB2BF;">, []</span><span style="color:#C678DD;">*</span><span style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">MeasurementSchema</span><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> Measurement</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;tag1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> DataType</span><span style="color:#ABB2BF;">: </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">STRING</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:#E06C75;"> Measurement</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;tag2&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> DataType</span><span style="color:#ABB2BF;">: </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">STRING</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:#E06C75;"> Measurement</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;s1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> DataType</span><span style="color:#ABB2BF;">: </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">TEXT</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:#E06C75;"> Measurement</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;s2&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> DataType</span><span style="color:#ABB2BF;">: </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">TEXT</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 style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">ColumnCategory</span><span style="color:#ABB2BF;">{</span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">TAG</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">TAG</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">FIELD</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">FIELD</span><span style="color:#ABB2BF;">}, </span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;Failed to create relational tablet {}&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> ts</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> time</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Now</span><span style="color:#ABB2BF;">().</span><span style="color:#61AFEF;">UTC</span><span style="color:#ABB2BF;">().</span><span style="color:#61AFEF;">UnixNano</span><span style="color:#ABB2BF;">() </span><span style="color:#C678DD;">/</span><span style="color:#D19A66;"> 1000000</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#E06C75;"> row</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">row</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#D19A66;"> 16</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">row</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> ts</span><span style="color:#56B6C2;">++</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetTimestamp</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">ts</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;tag1_value_&quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">), </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;tag2_value_&quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">), </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;s1_value_&quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">), </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;s2_value_&quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">), </span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">RowSize</span><span style="color:#56B6C2;">++</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Insert</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 style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Reset</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#E06C75;"> row</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">row</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#D19A66;"> 16</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">row</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> ts</span><span style="color:#56B6C2;">++</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetTimestamp</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">ts</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;tag1_value_1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;tag2_value_1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;s1_value_&quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">), </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;s2_value_&quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">), </span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E06C75;"> nullValueColumn</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> rand</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Intn</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">4</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">SetValueAt</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">nil</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">nullValueColumn</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">row</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> tablet</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">RowSize</span><span style="color:#56B6C2;">++</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Insert</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">tablet</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;">func</span><span style="color:#61AFEF;"> showTables</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">session</span><span style="color:#E5C07B;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">ITableSession</span><span style="color:#ABB2BF;">) {</span></span>
<span class="line"><span style="color:#E06C75;"> timeout</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> int64</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">2000</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;show tables&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;">timeout</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> hasNext</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#56B6C2;"> !</span><span style="color:#E06C75;">hasNext</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> break</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> value</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetString</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;TableName&quot;</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Printf</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;tableName is </span><span style="color:#D19A66;">%v</span><span style="color:#98C379;">&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">value</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>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> query</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">session</span><span style="color:#E5C07B;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">ITableSession</span><span style="color:#ABB2BF;">) {</span></span>
<span class="line"><span style="color:#E06C75;"> timeout</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> int64</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">2000</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;select * from t1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;">timeout</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> hasNext</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#56B6C2;"> !</span><span style="color:#E06C75;">hasNext</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> break</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Printf</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;</span><span style="color:#D19A66;">%v</span><span style="color:#D19A66;"> %v</span><span style="color:#D19A66;"> %v</span><span style="color:#D19A66;"> %v</span><span style="color:#98C379;">&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#61AFEF;">getTextValueFromDataSet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;tag1&quot;</span><span style="color:#ABB2BF;">), </span><span style="color:#61AFEF;">getTextValueFromDataSet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;tag2&quot;</span><span style="color:#ABB2BF;">), </span><span style="color:#61AFEF;">getTextValueFromDataSet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;s1&quot;</span><span style="color:#ABB2BF;">), </span><span style="color:#61AFEF;">getTextValueFromDataSet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;s2&quot;</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>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">err</span><span style="color:#C678DD;"> error</span><span style="color:#ABB2BF;">) {</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</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></div><h2 id="_3-tablesessionpool-interface" tabindex="-1"><a class="header-anchor" href="#_3-tablesessionpool-interface"><span>3. TableSessionPool Interface</span></a></h2><h3 id="_3-1-description" tabindex="-1"><a class="header-anchor" href="#_3-1-description"><span>3.1 Description</span></a></h3><p>Manages a pool of <code>ITableSession</code> instances for efficient connection reuse and resource cleanup.</p><h3 id="_3-2-method-list" tabindex="-1"><a class="header-anchor" href="#_3-2-method-list"><span>3.2 Method List</span></a></h3><table><thead><tr><th><strong>Method Name</strong></th><th><strong>Description</strong></th><th><strong>Return Value</strong></th><th><strong>Return Error</strong></th></tr></thead><tbody><tr><td><code>GetSession()</code></td><td>Acquires a session from the pool for database interaction.</td><td>A usable ITableSession instance for interacting with IoTDB.</td><td>An error if a session cannot be acquired.</td></tr><tr><td><code>Close()</code></td><td>Closes the session pool and releases resources.。</td><td>None</td><td>None</td></tr></tbody></table><h3 id="_3-3-interface-definition" tabindex="-1"><a class="header-anchor" href="#_3-3-interface-definition"><span>3.3 Interface Definition</span></a></h3><ol><li>TableSessionPool</li></ol><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-go"><span class="line"><span style="color:#7F848E;font-style:italic;">// TableSessionPool manages a pool of ITableSession instances, enabling efficient</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// reuse and management of resources. It provides methods to acquire a session</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// from the pool and to close the pool, releasing all held resources.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// This implementation ensures proper lifecycle management of sessions,</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// including efficient reuse and cleanup of resources.</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// GetSession acquires an ITableSession instance from the pool.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - A usable ITableSession instance for interacting with IoTDB.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - An error if a session cannot be acquired.</span></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#ABB2BF;"> (</span><span style="color:#E06C75;font-style:italic;">spool </span><span style="color:#C678DD;">*</span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">) </span><span style="color:#61AFEF;">GetSession</span><span style="color:#ABB2BF;">() (</span><span style="color:#E5C07B;">ITableSession</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">error</span><span style="color:#ABB2BF;">) {</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E06C75;"> spool</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">getTableSession</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:#7F848E;font-style:italic;">// Close closes the TableSessionPool, releasing all held resources.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Once closed, no further sessions can be acquired from the pool.</span></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#ABB2BF;"> (</span><span style="color:#E06C75;font-style:italic;">spool </span><span style="color:#C678DD;">*</span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">) </span><span style="color:#61AFEF;">Close</span><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></div><ol start="2"><li>Constructing a TableSessionPool</li></ol><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-go"><span class="line"><span style="color:#C678DD;">type</span><span style="color:#E5C07B;"> PoolConfig</span><span style="color:#C678DD;"> struct</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> Host</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Port</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> NodeUrls</span><span style="color:#ABB2BF;"> []</span><span style="color:#C678DD;">string</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> Password</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> FetchSize</span><span style="color:#C678DD;"> int32</span></span>
<span class="line"><span style="color:#E06C75;"> TimeZone</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> ConnectRetryMax</span><span style="color:#C678DD;"> int</span></span>
<span class="line"><span style="color:#E06C75;"> Database</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#E06C75;"> sqlDialect</span><span style="color:#C678DD;"> string</span></span>
<span class="line"><span style="color:#ABB2BF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// NewTableSessionPool creates a new TableSessionPool with the specified configuration.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Parameters:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - conf: PoolConfig defining the configuration for the pool.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - maxSize: The maximum number of sessions the pool can hold.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - connectionTimeoutInMs: Timeout for establishing a connection in milliseconds.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - waitToGetSessionTimeoutInMs: Timeout for waiting to acquire a session in milliseconds.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - enableCompression: A boolean indicating whether to enable compression.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">//</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Returns:</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// - A TableSessionPool instance.</span></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> NewTableSessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">conf</span><span style="color:#C678DD;"> *</span><span style="color:#E5C07B;">PoolConfig</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">maxSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">connectionTimeoutInMs</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;font-style:italic;">waitToGetSessionTimeoutInMs</span><span style="color:#C678DD;"> int</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;font-style:italic;"> enableCompression</span><span style="color:#C678DD;"> bool</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">TableSessionPool</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></div><blockquote><p>Note:</p><ul><li>If a <code>Database</code> is specified when creating the <code>TableSessionPool</code>, all sessions acquired from the pool will automatically use this database. There is no need to explicitly set the database during operations.</li><li>Automatic State Reset: If a session temporarily switches to another database using <code>USE DATABASE</code> during usage, the session will automatically revert to the original database specified in the pool when closed and returned to the pool.</li></ul></blockquote><h3 id="_3-4-example" tabindex="-1"><a class="header-anchor" href="#_3-4-example"><span>3.4 Example</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-go"><span class="line"><span style="color:#C678DD;">package</span><span style="color:#E5C07B;"> main</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">import</span><span style="color:#ABB2BF;"> (</span></span>
<span class="line"><span style="color:#98C379;"> &quot;log&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;strconv&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;sync&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;sync/atomic&quot;</span></span>
<span class="line"><span style="color:#98C379;"> &quot;time&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#98C379;"> &quot;github.com/apache/iotdb-client-go/v2/client&quot;</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">func</span><span style="color:#61AFEF;"> main</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#61AFEF;"> sessionPoolWithSpecificDatabaseExample</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#61AFEF;"> sessionPoolWithoutSpecificDatabaseExample</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#61AFEF;"> putBackToSessionPoolExample</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;">func</span><span style="color:#61AFEF;"> putBackToSessionPoolExample</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // should create database test_db before executing</span></span>
<span class="line"><span style="color:#E06C75;"> config</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">PoolConfig</span><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#E06C75;"> Host</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;127.0.0.1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Port</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;6667&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#ABB2BF;">: </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:#ABB2BF;">: </span><span style="color:#98C379;">&quot;root&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Database</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;test_db&quot;</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:#E5C07B;"> :=</span><span style="color:#E06C75;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">NewTableSessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">config</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">60000</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">4000</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> sessionPool</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:#E06C75;"> num</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 4</span></span>
<span class="line"><span style="color:#E06C75;"> successGetSessionNum</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> int32</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">0</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> wg</span><span style="color:#E5C07B;"> sync</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">WaitGroup</span></span>
<span class="line"><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">num</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#E06C75;"> i</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#E06C75;"> num</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> dbName</span><span style="color:#E5C07B;"> :=</span><span style="color:#98C379;"> &quot;db&quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">i</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> go</span><span style="color:#C678DD;"> func</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Done</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetSession</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;Failed to create database &quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">dbName</span><span style="color:#C678DD;">+</span><span style="color:#98C379;">&quot;because &quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> return</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> atomic</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">AddInt32</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;">successGetSessionNum</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#C678DD;"> func</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#E06C75;"> time</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Sleep</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">6</span><span style="color:#C678DD;"> *</span><span style="color:#E06C75;"> time</span><span style="color:#ABB2BF;">.</span><span style="color:#E06C75;">Second</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // put back to session pool</span></span>
<span class="line"><span style="color:#E06C75;"> session</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:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create database &quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> dbName</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use &quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> dbName</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create table table_of_&quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> dbName</span><span style="color:#C678DD;"> +</span><span style="color:#98C379;"> &quot; (tag1 string tag, tag2 string tag, s1 text field, s2 text field)&quot;</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:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Wait</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;success num is&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">successGetSessionNum</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;All session&#39;s database have been reset.&quot;</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // the using database will automatically reset to session pool&#39;s database after the session closed</span></span>
<span class="line"><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">5</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#E06C75;"> i</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#D19A66;"> 5</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> go</span><span style="color:#C678DD;"> func</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Done</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetSession</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;Failed to get session because &quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> timeout</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> int64</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">3000</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;show tables&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;">timeout</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> hasNext</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#56B6C2;"> !</span><span style="color:#E06C75;">hasNext</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> break</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> value</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> dataSet</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetString</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;TableName&quot;</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;table is&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">value</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#E06C75;"> dataSet</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>
<span class="line"><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Wait</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;">func</span><span style="color:#61AFEF;"> sessionPoolWithSpecificDatabaseExample</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // should create database test_db before executing</span></span>
<span class="line"><span style="color:#E06C75;"> config</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">PoolConfig</span><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#E06C75;"> Host</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;127.0.0.1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Port</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;6667&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#ABB2BF;">: </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:#ABB2BF;">: </span><span style="color:#98C379;">&quot;root&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Database</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;test_db&quot;</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:#E5C07B;"> :=</span><span style="color:#E06C75;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">NewTableSessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">config</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">60000</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">8000</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> num</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 10</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> wg</span><span style="color:#E5C07B;"> sync</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">WaitGroup</span></span>
<span class="line"><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">num</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#E06C75;"> i</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#E06C75;"> num</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> tableName</span><span style="color:#E5C07B;"> :=</span><span style="color:#98C379;"> &quot;t&quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">i</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> go</span><span style="color:#C678DD;"> func</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Done</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetSession</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;Failed to create table &quot;</span><span style="color:#C678DD;">+</span><span style="color:#E06C75;">tableName</span><span style="color:#C678DD;">+</span><span style="color:#98C379;">&quot;because &quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> return</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create table &quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> tableName</span><span style="color:#C678DD;"> +</span><span style="color:#98C379;"> &quot; (tag1 string tag, tag2 string tag, s1 text field, s2 text field)&quot;</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:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Wait</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;">func</span><span style="color:#61AFEF;"> sessionPoolWithoutSpecificDatabaseExample</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#E06C75;"> config</span><span style="color:#E5C07B;"> :=</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E5C07B;">client</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">PoolConfig</span><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#E06C75;"> Host</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;127.0.0.1&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> Port</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&quot;6667&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E06C75;"> UserName</span><span style="color:#ABB2BF;">: </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:#ABB2BF;">: </span><span style="color:#98C379;">&quot;root&quot;</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:#E5C07B;"> :=</span><span style="color:#E06C75;"> client</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">NewTableSessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">config</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">3</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">60000</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">8000</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> num</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 10</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> wg</span><span style="color:#E5C07B;"> sync</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">WaitGroup</span></span>
<span class="line"><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">num</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#E06C75;"> i</span><span style="color:#E5C07B;"> :=</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#E06C75;"> num</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">i</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> dbName</span><span style="color:#E5C07B;"> :=</span><span style="color:#98C379;"> &quot;db&quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> strconv</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Itoa</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">i</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> go</span><span style="color:#C678DD;"> func</span><span style="color:#ABB2BF;">() {</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Done</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#E5C07B;"> :=</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">GetSession</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Println</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;Failed to create database &quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">dbName</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">err</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#C678DD;"> return</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> defer</span><span style="color:#E06C75;"> session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create database &quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> dbName</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use &quot;</span><span style="color:#C678DD;"> +</span><span style="color:#E06C75;"> dbName</span><span style="color:#ABB2BF;">))</span></span>
<span class="line"><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">session</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;create table t1 (tag1 string tag, tag2 string tag, s1 text field, s2 text field)&quot;</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:#E06C75;"> wg</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Wait</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;">func</span><span style="color:#61AFEF;"> checkError</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;font-style:italic;">err</span><span style="color:#C678DD;"> error</span><span style="color:#ABB2BF;">) {</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#E06C75;"> err</span><span style="color:#56B6C2;"> !=</span><span style="color:#D19A66;"> nil</span><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> log</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Fatal</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">err</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></div>`,38)])])}const r=n(o,[["render",p]]),i=JSON.parse('{"path":"/UserGuide/latest-Table/API/Programming-Go-Native-API_apache.html","title":"Go Native API","lang":"en-US","frontmatter":{"description":"Go Native API The Git repository for the Go Native API client is located here 1. Usage 1.1 Dependencies golang >= 1.13 make >= 3.0 curl >= 7.1.1 thrift 0.15.0 LinuxMacos or oth...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Go Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-03-26T11:09:28.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/latest-Table/API/Programming-Go-Native-API_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"Go Native API"}],["meta",{"property":"og:description","content":"Go Native API The Git repository for the Go Native API client is located here 1. Usage 1.1 Dependencies golang >= 1.13 make >= 3.0 curl >= 7.1.1 thrift 0.15.0 Linux、Macos or oth..."}],["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-26T11:09:28.000Z"}],["meta",{"property":"article:modified_time","content":"2026-03-26T11:09:28.000Z"}],["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://iotdb.apache.org/zh/UserGuide/latest-Table/API/Programming-Go-Native-API_apache.html"}]]},"git":{"createdTime":1745295475000,"updatedTime":1774523368000,"contributors":[{"name":"leto-b","username":"leto-b","email":"bingqian.bai@timecho.com","commits":4,"url":"https://github.com/leto-b"},{"name":"Haonan","username":"Haonan","email":"hhaonan@outlook.com","commits":1,"url":"https://github.com/Haonan"}]},"readingTime":{"minutes":7.08,"words":2125},"filePathRelative":"UserGuide/latest-Table/API/Programming-Go-Native-API_apache.md","autoDesc":true}');export{r as comp,i as data};