| import{_ as n,c as e,b as a,o as l}from"./app-C8175JBb.js";const t={};function o(p,s){return l(),e("div",null,s[0]||(s[0]=[a(`<h1 id="rust-native-api-native-api" tabindex="-1"><a class="header-anchor" href="#rust-native-api-native-api"><span>Rust Native API Native API</span></a></h1><p>IoTDB uses Thrift as a cross language RPC framework, so access to IoTDB can be achieved through the interface provided by Thrift.<br> This document will introduce how to generate a native Rust interface that can access IoTDB.</p><h2 id="dependents" tabindex="-1"><a class="header-anchor" href="#dependents"><span>Dependents</span></a></h2><ul><li>JDK >= 1.8</li><li>Rust >= 1.0.0</li><li>thrift 0.14.1</li><li>Linux、Macos or like unix</li><li>Windows+bash</li></ul><p>Thrift (0.14.1 or higher) must be installed to compile Thrift files into Rust code. The following is the official installation tutorial, and in the end, you should receive a Thrift executable file.</p><p><a href="http://thrift.apache.org/docs/install/" target="_blank" rel="noopener noreferrer">http://thrift.apache.org/docs/install/</a></p><h2 id="compile-the-thrift-library-and-generate-the-rust-native-interface" tabindex="-1"><a class="header-anchor" href="#compile-the-thrift-library-and-generate-the-rust-native-interface"><span>Compile the Thrift library and generate the Rust native interface</span></a></h2><ol><li><p>Find the <code>pom.xml</code> file in the root directory of the IoTDB source code folder.</p></li><li><p>Open the <code>pom.xml</code> file and find the following content:</p><div class="language-xml line-numbers-mode" data-highlighter="shiki" data-ext="xml" data-title="xml" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">execution</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">id</span><span style="color:#ABB2BF;">>generate-thrift-sources-python</</span><span style="color:#E06C75;">id</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">phase</span><span style="color:#ABB2BF;">>generate-sources</</span><span style="color:#E06C75;">phase</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">goals</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">goal</span><span style="color:#ABB2BF;">>compile</</span><span style="color:#E06C75;">goal</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </</span><span style="color:#E06C75;">goals</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">configuration</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">generator</span><span style="color:#ABB2BF;">>py</</span><span style="color:#E06C75;">generator</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">outputDirectory</span><span style="color:#ABB2BF;">>\${project.build.directory}/generated-sources-python/</</span><span style="color:#E06C75;">outputDirectory</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </</span><span style="color:#E06C75;">configuration</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </</span><span style="color:#E06C75;">execution</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></div></li><li><p>Duplicate this block and change the <code>id</code>, <code>generator</code> and <code>outputDirectory</code> to this:</p><div class="language-xml line-numbers-mode" data-highlighter="shiki" data-ext="xml" data-title="xml" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">execution</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">id</span><span style="color:#ABB2BF;">>generate-thrift-sources-rust</</span><span style="color:#E06C75;">id</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">phase</span><span style="color:#ABB2BF;">>generate-sources</</span><span style="color:#E06C75;">phase</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">goals</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">goal</span><span style="color:#ABB2BF;">>compile</</span><span style="color:#E06C75;">goal</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </</span><span style="color:#E06C75;">goals</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">configuration</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">generator</span><span style="color:#ABB2BF;">>rs</</span><span style="color:#E06C75;">generator</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> <</span><span style="color:#E06C75;">outputDirectory</span><span style="color:#ABB2BF;">>\${project.build.directory}/generated-sources-rust/</</span><span style="color:#E06C75;">outputDirectory</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </</span><span style="color:#E06C75;">configuration</span><span style="color:#ABB2BF;">></span></span> |
| <span class="line"><span style="color:#ABB2BF;"> </</span><span style="color:#E06C75;">execution</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></div></li><li><p>In the root directory of the IoTDB source code folder,run <code>mvn clean generate-sources</code>.</p><p>This command will automatically delete the files in <code>iotdb/iotdb-protocol/thrift/target</code> and <code>iotdb/iotdb-protocol/thrift-commons/target</code>, and repopulate the folder with the newly generated files.<br> The newly generated Rust sources will be located in <code>iotdb/iotdb-protocol/thrift/target/generated-sources-rust</code> in the various modules of the <code>iotdb-protocol</code> module.</p></li></ol><h2 id="using-the-rust-native-interface" tabindex="-1"><a class="header-anchor" href="#using-the-rust-native-interface"><span>Using the Rust native interface</span></a></h2><p>Copy <code>iotdb/iotdb-protocol/thrift/target/generated-sources-rust/</code> and <code>iotdb/iotdb-protocol/thrift-commons/target/generated-sources-rust/</code> into your project。</p><h2 id="rpc-interface" tabindex="-1"><a class="header-anchor" href="#rpc-interface"><span>RPC interface</span></a></h2><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" data-title="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#7F848E;font-style:italic;">// open a session</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSOpenSessionResp</span><span style="color:#61AFEF;"> openSession</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSOpenSessionReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// close a session</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> closeSession</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSCloseSessionReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// run an SQL statement in batch</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSExecuteStatementResp</span><span style="color:#61AFEF;"> executeStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSExecuteStatementReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// execute SQL statement in batch</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> executeBatchStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSExecuteBatchStatementReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// execute query SQL statement</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSExecuteStatementResp</span><span style="color:#61AFEF;"> executeQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSExecuteStatementReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// execute insert, delete and update SQL statement</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSExecuteStatementResp</span><span style="color:#61AFEF;"> executeUpdateStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSExecuteStatementReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// fetch next query result</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSFetchResultsResp</span><span style="color:#61AFEF;"> fetchResults</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSFetchResultsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// fetch meta data</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSFetchMetadataResp</span><span style="color:#61AFEF;"> fetchMetadata</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSFetchMetadataReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// cancel a query</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> cancelOperation</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSCancelOperationReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// close a query dataset</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> closeOperation</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSCloseOperationReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// get time zone</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSGetTimeZoneResp</span><span style="color:#61AFEF;"> getTimeZone</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">i64</span><span style="color:#E06C75;font-style:italic;"> sessionId</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// set time zone</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> setTimeZone</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSSetTimeZoneReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// get server's properties</span></span> |
| <span class="line"><span style="color:#E5C07B;">ServerProperties</span><span style="color:#61AFEF;"> getProperties</span><span style="color:#ABB2BF;">();</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// CREATE DATABASE</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> setStorageGroup</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">i64</span><span style="color:#E06C75;font-style:italic;"> sessionId</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">string</span><span style="color:#E06C75;font-style:italic;"> storageGroup</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// create timeseries</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> createTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSCreateTimeseriesReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// create multi timeseries</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> createMultiTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSCreateMultiTimeseriesReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// delete timeseries</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> deleteTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">i64</span><span style="color:#E06C75;font-style:italic;"> sessionId</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">list</span><span style="color:#ABB2BF;"><</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">> </span><span style="color:#E06C75;font-style:italic;">path</span><span style="color:#ABB2BF;">)</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// delete sttorage groups</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> deleteStorageGroups</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">i64</span><span style="color:#E06C75;font-style:italic;"> sessionId</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">list</span><span style="color:#ABB2BF;"><</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">> </span><span style="color:#E06C75;font-style:italic;">storageGroup</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert record</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertRecordReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert record in string format</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertStringRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertStringRecordReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert tablet</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertTabletReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert tablets in batch</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertTablets</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertTabletsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert records in batch</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertRecordsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert records of one device</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertRecordsOfOneDevice</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertRecordsOfOneDeviceReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// insert records in batch as string format</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> insertStringRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertStringRecordsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert tablet,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertTabletReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert tablets,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertTablets</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertTabletsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert record,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertRecordReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert record in string format,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertStringRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertStringRecordReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert records,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertRecordsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert records of one device,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertRecordsOfOneDevice</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertRecordsOfOneDeviceReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// test the latency of innsert records in string formate,caution:no data will be inserted, only for test latency</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> testInsertStringRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSInsertStringRecordsReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// delete data</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSStatus</span><span style="color:#61AFEF;"> deleteData</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSDeleteDataReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// execute raw data query</span></span> |
| <span class="line"><span style="color:#E5C07B;">TSExecuteStatementResp</span><span style="color:#61AFEF;"> executeRawDataQuery</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">TSRawDataQueryReq</span><span style="color:#E06C75;font-style:italic;"> req</span><span style="color:#ABB2BF;">);</span></span> |
| <span class="line"></span> |
| <span class="line"><span style="color:#7F848E;font-style:italic;">// request a statement id from server</span></span> |
| <span class="line"><span style="color:#E5C07B;">i64</span><span style="color:#61AFEF;"> requestStatementId</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1</span><span style="color:#ABB2BF;">:</span><span style="color:#E5C07B;">i64</span><span style="color:#E06C75;font-style:italic;"> sessionId</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 class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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>`,12)]))}const r=n(t,[["render",o],["__file","Programming-Rust-Native-API.html.vue"]]),c=JSON.parse('{"path":"/UserGuide/dev-1.3/API/Programming-Rust-Native-API.html","title":"Rust Native API Native API","lang":"en-US","frontmatter":{"description":"Rust Native API Native API IoTDB uses Thrift as a cross language RPC framework, so access to IoTDB can be achieved through the interface provided by Thrift. This document will i...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://iotdb.apache.org/zh/UserGuide/dev-1.3/API/Programming-Rust-Native-API.html"}],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/dev-1.3/API/Programming-Rust-Native-API.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"Rust Native API Native API"}],["meta",{"property":"og:description","content":"Rust Native API Native API IoTDB uses Thrift as a cross language RPC framework, so access to IoTDB can be achieved through the interface provided by Thrift. This document will i..."}],["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":"2025-02-21T09:31:28.000Z"}],["meta",{"property":"article:modified_time","content":"2025-02-21T09:31:28.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Rust Native API Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-02-21T09:31:28.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Dependents","slug":"dependents","link":"#dependents","children":[]},{"level":2,"title":"Compile the Thrift library and generate the Rust native interface","slug":"compile-the-thrift-library-and-generate-the-rust-native-interface","link":"#compile-the-thrift-library-and-generate-the-rust-native-interface","children":[]},{"level":2,"title":"Using the Rust native interface","slug":"using-the-rust-native-interface","link":"#using-the-rust-native-interface","children":[]},{"level":2,"title":"RPC interface","slug":"rpc-interface","link":"#rpc-interface","children":[]}],"git":{"createdTime":1688958677000,"updatedTime":1740130288000,"contributors":[{"name":"CritasWang","username":"CritasWang","email":"critas@outlook.com","commits":4,"url":"https://github.com/CritasWang"},{"name":"W1y1r","username":"W1y1r","email":"150988475+W1y1r@users.noreply.github.com","commits":3,"url":"https://github.com/W1y1r"},{"name":"Mister-Hope","username":"Mister-Hope","email":"mister-hope@outlook.com","commits":1,"url":"https://github.com/Mister-Hope"}]},"readingTime":{"minutes":2.79,"words":838},"filePathRelative":"UserGuide/dev-1.3/API/Programming-Rust-Native-API.md","localizedDate":"July 10, 2023","autoDesc":true}');export{r as comp,c as data}; |