blob: 4fae8810b51f700e88cab70ce0499389ec1ae844 [file]
import{_ as n,c as a,b as l,o as e}from"./app-pmkzp6TS.js";const o={};function p(t,s){return e(),a("div",null,[...s[0]||(s[0]=[l(`<h1 id="c-native-api" tabindex="-1"><a class="header-anchor" href="#c-native-api"><span>C++ Native API</span></a></h1><h2 id="dependencies" tabindex="-1"><a class="header-anchor" href="#dependencies"><span>Dependencies</span></a></h2><ul><li>Java 8+</li><li>Maven 3.5+</li><li>Flex</li><li>Bison 2.7+</li><li>Boost 1.56+</li><li>OpenSSL 1.0+</li><li>GCC 5.5.0+</li></ul><h2 id="installation-from-source-code" tabindex="-1"><a class="header-anchor" href="#installation-from-source-code"><span>Installation From Source Code</span></a></h2><h3 id="install-cpp-dependencies" tabindex="-1"><a class="header-anchor" href="#install-cpp-dependencies"><span>Install CPP Dependencies</span></a></h3><ul><li><p><strong>MAC</strong></p><ol><li><p>Install Bison Bison 2.3 is preinstalled on OSX, but this version is outdated, and we need a newer version.</p><p>When building Thrift with Bison 2.3, the following error would be shown in the build output:<br><code>invalid directive: &#39;%code&#39;</code></p><p>In such a case, please update <code>Bison</code>:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">brew</span><span style="color:#98C379;"> install</span><span style="color:#98C379;"> bison</span></span>
<span class="line"><span style="color:#61AFEF;">brew</span><span style="color:#98C379;"> link</span><span style="color:#98C379;"> bison</span><span style="color:#D19A66;"> --force</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></div><p>Then, you need to tell the OS where the new bison is.</p><p>For Bash users:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#56B6C2;">echo</span><span style="color:#98C379;"> &#39;export PATH=&quot;/usr/local/opt/bison/bin:$PATH&quot;&#39;</span><span style="color:#ABB2BF;"> &gt;&gt; </span><span style="color:#98C379;">~/.bash_profile</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>For zsh users:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#56B6C2;">echo</span><span style="color:#98C379;"> &#39;export PATH=&quot;/usr/local/opt/bison/bin:$PATH&quot;&#39;</span><span style="color:#ABB2BF;"> &gt;&gt; </span><span style="color:#98C379;">~/.zshrc</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div></li><li><p>Install Boost :Please make sure a relative new version of Boost is ready on your machine.<br> If no Boost available, install the latest version of Boost:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">brew</span><span style="color:#98C379;"> install</span><span style="color:#98C379;"> boost</span></span>
<span class="line"><span style="color:#61AFEF;">brew</span><span style="color:#98C379;"> link</span><span style="color:#98C379;"> boost</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></div></li><li><p>OpenSSL :Make sure the Openssl libraries has been installed on your Mac. The default Openssl include file search path is &quot;/usr/local/opt/openssl/include&quot;.</p><p>If Openssl header files can not be found when building Thrift, please add option<code>-Dopenssl.include.dir=&quot;&quot;</code>.</p></li></ol></li><li><p><strong>Ubuntu 20</strong></p><p>To install all dependencies, run:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">sudo</span><span style="color:#98C379;"> apt-get</span><span style="color:#98C379;"> install</span><span style="color:#98C379;"> gcc-9</span><span style="color:#98C379;"> g++-9</span><span style="color:#98C379;"> libstdc++-9-dev</span><span style="color:#98C379;"> bison</span><span style="color:#98C379;"> flex</span><span style="color:#98C379;"> libboost-all-dev</span><span style="color:#98C379;"> libssl-dev</span><span style="color:#98C379;"> zlib1g-dev</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div></li><li><p><strong>CentOS 7.x</strong></p><p>Some packages can be installed using Yum:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">sudo</span><span style="color:#98C379;"> yum</span><span style="color:#98C379;"> install</span><span style="color:#98C379;"> bison</span><span style="color:#98C379;"> flex</span><span style="color:#98C379;"> openssl-devel</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>The version of gcc and boost installed by yum is too low, therefore you should compile or download these binary packages by yourself.</p></li><li><p><strong>Windows</strong></p><ol><li><p>Building environment</p><ul><li>Install <code>MS Visual Studio</code>(recommend 2019 version): remember to install Visual Studio C/C++ IDE and compiler(supporting CMake, Clang, MinGW).</li><li>Download and install <a href="https://cmake.org/download/" target="_blank" rel="noopener noreferrer">CMake</a> .</li></ul></li><li><p>Download and install <code>Flex</code> &amp; <code>Bison</code></p><ul><li>Download <a href="https://sourceforge.net/projects/winflexbison/" target="_blank" rel="noopener noreferrer">Win_Flex_Bison</a> .</li><li>After downloading, please rename the executables to <code>flex.exe</code> and <code>bison.exe</code> and add the directory containing them to the <code>PATH</code> environment variable.</li></ul></li><li><p>Install <code>Boost</code></p><ul><li>Download <a href="https://www.boost.org/users/download/" target="_blank" rel="noopener noreferrer">Boost</a> .</li><li>Then build <code>Boost</code> by executing <code>bootstrap.bat</code> and <code>b2.exe</code>.</li></ul></li><li><p>Install <code>OpenSSL</code></p><ul><li>Download and install <a href="http://slproweb.com/products/Win32OpenSSL.html" target="_blank" rel="noopener noreferrer">OpenSSL</a> .</li></ul></li></ol></li></ul><h3 id="compile" tabindex="-1"><a class="header-anchor" href="#compile"><span>Compile</span></a></h3><p>You can download the source code from the <a href="https://iotdb.apache.org/Download/" target="_blank" rel="noopener noreferrer">IoTDB Website</a> or clone the GIT repository:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">git</span><span style="color:#98C379;"> clone</span><span style="color:#98C379;"> https://github.com/apache/iotdb.git</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>The default dev branch is the master branch, If you want to use a released version (e.g. <code>0.13.3</code> or <code>1.2.0</code>), be sure to check out the corresponding tag:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">git</span><span style="color:#98C379;"> checkout</span><span style="color:#98C379;"> v0.13.3</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>(Please note that we are using a <code>Go</code> compatible naming schema for our release tags, which prefixes the version by a <code>v</code>)</p><p>Under the root path of iotdb:</p><ul><li><p>Mac &amp; Linux:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">mvn</span><span style="color:#98C379;"> package</span><span style="color:#D19A66;"> -P</span><span style="color:#98C379;"> compile-cpp</span><span style="color:#D19A66;"> -pl</span><span style="color:#98C379;"> example/client-cpp-example</span><span style="color:#D19A66;"> -am</span><span style="color:#D19A66;"> -DskipTest</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div></li><li><p>Windows:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">mvn</span><span style="color:#98C379;"> package</span><span style="color:#D19A66;"> -P</span><span style="color:#98C379;"> compile-cpp</span><span style="color:#D19A66;"> -pl</span><span style="color:#98C379;"> iotdb-client/client-cpp,iotdb-core/datanode,example/client-cpp-example</span><span style="color:#D19A66;"> -am</span><span style="color:#D19A66;"> -Dcmake.generator=</span><span style="color:#98C379;">&quot;your cmake generator&quot;</span><span style="color:#D19A66;"> -Dboost.include.dir=\${</span><span style="color:#E06C75;">your</span><span style="color:#E06C75;"> boost</span><span style="color:#E06C75;"> header</span><span style="color:#E06C75;"> folder</span><span style="color:#D19A66;">}</span><span style="color:#D19A66;"> -Dboost.library.dir=\${</span><span style="color:#E06C75;">your</span><span style="color:#E06C75;"> boost</span><span style="color:#E06C75;"> lib</span><span style="color:#D19A66;"> (</span><span style="color:#E06C75;">stage</span><span style="color:#D19A66;">) </span><span style="color:#E06C75;">folder</span><span style="color:#D19A66;">}</span><span style="color:#D19A66;"> -DskipTests</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><ul><li>When building the client-cpp project, use the <code>-Dcmake.generator=&quot;&quot;</code> option to specify a Cmake generator. E.g. <code>-Dcmake.generator=&quot;Visual Studio 16 2019&quot;</code> (<code>cmake --help</code> shows a long list of supported Cmake generators.)</li><li>To help CMake find your Boost libraries on windows, you should also append <code>-DboostIncludeDir=&quot;C:\\Program Files (x86)\\boost_1_78_0&quot; -DboostLibraryDir=&quot;C:\\Program Files (x86)\\boost_1_78_0\\stage\\lib&quot;</code> to your mvn build command.<br> \`\`</li></ul></li></ul><p>As soon as the compilation finishes successfully, the packaged zip file will be placed under <code>client-cpp/target/client-cpp-1.3.0-SNAPSHOT-cpp-\${os}.zip</code></p><h2 id="native-apis" tabindex="-1"><a class="header-anchor" href="#native-apis"><span>Native APIs</span></a></h2><p>Here we demonstrate the most commonly used interfaces and their parameters in the Native API:</p><h3 id="initialization" tabindex="-1"><a class="header-anchor" href="#initialization"><span>Initialization</span></a></h3><ul><li><p>Open a Session:</p><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> open</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></div></li><li><p>Open a session, with a parameter controlling if RPC compression should be used:</p><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> open</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">bool</span><span style="color:#E06C75;font-style:italic;"> enableRPCCompression</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></div><p>Notice: The RPC compression setting of the client is required to match that of the IoTDB server</p></li><li><p>Close a session:</p><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</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></div></li></ul><h3 id="data-definition-interface-ddl" tabindex="-1"><a class="header-anchor" href="#data-definition-interface-ddl"><span>Data Definition Interface (DDL)</span></a></h3><h4 id="database-management" tabindex="-1"><a class="header-anchor" href="#database-management"><span>Database Management</span></a></h4><ul><li>Create database:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> setStorageGroup</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">storageGroupId</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></div><ul><li>Delete one or several databases:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteStorageGroup</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">storageGroup</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteStorageGroups</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">storageGroups</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></div><h4 id="timeseries-management" tabindex="-1"><a class="header-anchor" href="#timeseries-management"><span>Timeseries Management</span></a></h4><ul><li>Create one or multiple timeseries:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> createTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">path</span><span style="color:#ABB2BF;">, TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#E06C75;font-style:italic;"> dataType</span><span style="color:#ABB2BF;">, TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#E06C75;font-style:italic;"> encoding</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#E06C75;font-style:italic;"> compressor</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> createMultiTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">paths</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">dataTypes</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">encodings</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">compressors</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">map</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">, std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">*</span><span style="color:#E06C75;font-style:italic;">propsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">map</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">, std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">*</span><span style="color:#E06C75;font-style:italic;">tagsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">map</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">, std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">*</span><span style="color:#E06C75;font-style:italic;">attributesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">*</span><span style="color:#E06C75;font-style:italic;">measurementAliasList</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><ul><li>Create aligned timeseries:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> createAlignedTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">dataTypes</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">encodings</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">compressors</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></div><ul><li>Delete one or several timeseries:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">path</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteTimeseries</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">paths</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></div><ul><li>Check whether a specific timeseries exists:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">bool</span><span style="color:#61AFEF;"> checkTimeseriesExists</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">path</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></div><h4 id="schema-template" tabindex="-1"><a class="header-anchor" href="#schema-template"><span>Schema Template</span></a></h4><ul><li>Create a schema template:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> createSchemaTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#E5C07B;"> Template</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">templ</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></div><ul><li>Set the schema template named <code>templateName</code> at path <code>prefixPath</code>:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> setSchemaTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">prefix_path</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></div><ul><li>Unset the schema template:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> unsetSchemaTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">prefix_path</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</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></div><ul><li>After a schema template was created, you can edit the template with following functions:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#7F848E;font-style:italic;">// Add aligned measurements to a template</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> addAlignedMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">dataTypes</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">encodings</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">compressors</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Add one aligned measurement to a template</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> addAlignedMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">measurement</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#E06C75;font-style:italic;"> dataType</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#E06C75;font-style:italic;"> encoding</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#E06C75;font-style:italic;"> compressor</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Add unaligned measurements to a template</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> addUnalignedMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">dataTypes</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">encodings</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">compressors</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Add one unaligned measurement to a template</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> addUnalignedMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">measurement</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#E06C75;font-style:italic;"> dataType</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> TSEncoding::</span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#E06C75;font-style:italic;"> encoding</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> CompressionType::</span><span style="color:#E5C07B;">CompressionType</span><span style="color:#E06C75;font-style:italic;"> compressor</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Delete a node in template and its children</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteNodeInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">path</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></div><ul><li>You can query schema templates with these APIs:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#7F848E;font-style:italic;">// Return the amount of measurements inside a template</span></span>
<span class="line"><span style="color:#C678DD;">int</span><span style="color:#61AFEF;"> countMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Return true if path points to a measurement, otherwise returne false</span></span>
<span class="line"><span style="color:#C678DD;">bool</span><span style="color:#61AFEF;"> isMeasurementInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</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;">// Return true if path exists in template, otherwise return false</span></span>
<span class="line"><span style="color:#C678DD;">bool</span><span style="color:#61AFEF;"> isPathExistInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</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;">// Return all measurements paths inside template</span></span>
<span class="line"><span style="color:#ABB2BF;">std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#61AFEF;">showMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Return all measurements paths under the designated patter inside template</span></span>
<span class="line"><span style="color:#ABB2BF;">std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#61AFEF;">showMeasurementsInTemplate</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">template_name</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">pattern</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></div><h3 id="data-manipulation-interface-dmi" tabindex="-1"><a class="header-anchor" href="#data-manipulation-interface-dmi"><span>Data Manipulation Interface (DMI)</span></a></h3><h4 id="insert" tabindex="-1"><a class="header-anchor" href="#insert"><span>Insert</span></a></h4><ul><li>Insert one record, which contains multiple measurement value of a given device and timestamp:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> int64_t</span><span style="color:#E06C75;font-style:italic;"> time</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">values</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></div><ul><li>Insert multiple Records for multiple devices (With type info in the <code>typesList</code> parameter the server doesn&#39;t need to do type inference, which results in better performance):</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">deviceIds</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</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></div><ul><li>Insert multiple Records for the same device:</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertRecordsOfOneDevice</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</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></div><p>All of the above versions require the server to figure out the data-types of each value, which comes with quite a performance-cost, therefore all of the above are also available in a version without type-inference:</p><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> int64_t</span><span style="color:#E06C75;font-style:italic;"> time</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">types</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">values</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">deviceIds</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">typesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertRecordsOfOneDevice</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">typesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</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><p>For even better performance, it is recommended to use Tablets to help improve write efficiency.</p><ul><li>Insert a Tabletwhich inserts multiple rows of data for a given device. Each row has the same structure: <ul><li>Better write performance</li><li>Support null values: Fill the null value with any value, and then mark the null value via BitMap</li></ul></li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">Tablet</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">tablet</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></div><ul><li>Insert multiple Tablets</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> insertTablets</span><span style="color:#ABB2BF;">(std::</span><span style="color:#E5C07B;">unordered_map</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">Tablet</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">tablets</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></div><h4 id="insert-data-into-aligned-timeseries" tabindex="-1"><a class="header-anchor" href="#insert-data-into-aligned-timeseries"><span>Insert data into Aligned Timeseries</span></a></h4><p>The insertion of aligned timeseries is performed by functions such as <code>insertAlignedXXX</code> however semantically they align to the non-aligned versions of the previous chapter:</p><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> int64_t</span><span style="color:#E06C75;font-style:italic;"> time</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">values</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> int64_t</span><span style="color:#E06C75;font-style:italic;"> time</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurements</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">types</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">values</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">deviceIds</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedRecords</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">deviceIds</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">typesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedRecordsOfOneDevice</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">typesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedRecordsOfOneDevice</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">deviceId</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">int64_t</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">times</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">measurementsList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;TSDataType::</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">typesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">char</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt;&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">valuesList</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#C678DD;"> bool</span><span style="color:#E06C75;font-style:italic;"> sorted</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">Tablet</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">tablet</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedTablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">Tablet</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">tablet</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> bool</span><span style="color:#E06C75;font-style:italic;"> sorted</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> void</span><span style="color:#61AFEF;"> insertAlignedTablets</span><span style="color:#ABB2BF;">(std::</span><span style="color:#E5C07B;">unordered_map</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">Tablet</span><span style="color:#C678DD;"> *</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">tablets</span><span style="color:#ABB2BF;">, </span></span>
<span class="line"><span style="color:#C678DD;"> bool</span><span style="color:#E06C75;font-style:italic;"> sorted</span><span style="color:#C678DD;"> =</span><span style="color:#D19A66;"> false</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></div><h4 id="delete" tabindex="-1"><a class="header-anchor" href="#delete"><span>Delete</span></a></h4><ul><li>Delete data in a time range of one or several timeseries</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteData</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">path</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">int64_t</span><span style="color:#E06C75;font-style:italic;"> endTime</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteData</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">paths</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">int64_t</span><span style="color:#E06C75;font-style:italic;"> endTime</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> deleteData</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">vector</span><span style="color:#ABB2BF;">&lt;std::</span><span style="color:#E5C07B;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#C678DD;">&amp;</span><span style="color:#E06C75;font-style:italic;">paths</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">int64_t</span><span style="color:#E06C75;font-style:italic;"> startTime</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">int64_t</span><span style="color:#E06C75;font-style:italic;"> endTime</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></div><h3 id="iotdb-sql-interface" tabindex="-1"><a class="header-anchor" href="#iotdb-sql-interface"><span>IoTDB-SQL Interface</span></a></h3><ul><li>Execute query statement</li></ul><p>Query statements return data.</p><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#E5C07B;">unique_ptr</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">SessionDataSet</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#61AFEF;">executeQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">sql</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></div><p>Non-Query statements don&#39;t return data (Delete, Create, ... statements)</p><ul><li>Execute non query statement</li></ul><div class="language-cpp line-numbers-mode" data-highlighter="shiki" data-ext="cpp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-cpp"><span class="line"><span style="color:#C678DD;">void</span><span style="color:#61AFEF;"> executeNonQueryStatement</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">const</span><span style="color:#ABB2BF;"> std::</span><span style="color:#E5C07B;">string</span><span style="color:#C678DD;"> &amp;</span><span style="color:#E06C75;font-style:italic;">sql</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></div><h2 id="examples" tabindex="-1"><a class="header-anchor" href="#examples"><span>Examples</span></a></h2><p>The sample code for using these interfaces is located in:</p><ul><li><code>example/client-cpp-example/src/SessionExample.cpp</code></li><li><code>example/client-cpp-example/src/AlignedTimeseriesSessionExample.cpp</code></li></ul><p>As soon as the compilation finishes, the example project will be located at <code>example/client-cpp-example/target</code></p><h2 id="faq" tabindex="-1"><a class="header-anchor" href="#faq"><span>FAQ</span></a></h2><h3 id="on-mac" tabindex="-1"><a class="header-anchor" href="#on-mac"><span>on Mac</span></a></h3><p>If errors occur when compiling thrift source code, try to downgrade your xcode-commandline from 12 to 11.5</p><p>see <a href="https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087" target="_blank" rel="noopener noreferrer">https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087</a></p><h3 id="on-windows" tabindex="-1"><a class="header-anchor" href="#on-windows"><span>on Windows</span></a></h3><p>When Building Thrift and downloading packages via &quot;wget&quot;, a possible annoying issue may occur with<br> error message looks like:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">Failed</span><span style="color:#98C379;"> to</span><span style="color:#98C379;"> delete</span><span style="color:#98C379;"> cached</span><span style="color:#98C379;"> file</span><span style="color:#98C379;"> C:</span><span style="color:#56B6C2;">\\U</span><span style="color:#98C379;">sers</span><span style="color:#56B6C2;">\\A</span><span style="color:#98C379;">dministrator</span><span style="color:#56B6C2;">\\.</span><span style="color:#98C379;">m2</span><span style="color:#56B6C2;">\\r</span><span style="color:#98C379;">epository</span><span style="color:#56B6C2;">\\.</span><span style="color:#98C379;">cache</span><span style="color:#56B6C2;">\\d</span><span style="color:#98C379;">ownload-maven-plugin</span><span style="color:#56B6C2;">\\i</span><span style="color:#98C379;">ndex.ser</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Possible fixes:</p><ul><li>Try to delete the &quot;.m2\\repository.cache&quot; directory and try again.</li><li>Add &quot;&lt;skipCache&gt;true&lt;/skipCache&gt;&quot; configuration to the download-maven-plugin maven phase that complains this error.</li></ul>`,86)])])}const r=n(o,[["render",p]]),i=JSON.parse('{"path":"/UserGuide/V1.2.x/API/Programming-Cpp-Native-API.html","title":"C++ Native API","lang":"en-US","frontmatter":{"description":"C++ Native API Dependencies Java 8+ Maven 3.5+ Flex Bison 2.7+ Boost 1.56+ OpenSSL 1.0+ GCC 5.5.0+ Installation From Source Code Install CPP Dependencies MAC Install Bison Biso...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"C++ Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-10-15T07:57:32.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/V1.2.x/API/Programming-Cpp-Native-API.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"C++ Native API"}],["meta",{"property":"og:description","content":"C++ Native API Dependencies Java 8+ Maven 3.5+ Flex Bison 2.7+ Boost 1.56+ OpenSSL 1.0+ GCC 5.5.0+ Installation From Source Code Install CPP Dependencies MAC Install Bison :Biso..."}],["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":"2024-10-15T07:57:32.000Z"}],["meta",{"property":"article:modified_time","content":"2024-10-15T07:57:32.000Z"}],["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://iotdb.apache.org/zh/UserGuide/V1.2.x/API/Programming-Cpp-Native-API.html"}]]},"git":{"createdTime":1688958677000,"updatedTime":1728979052000,"contributors":[{"name":"CritasWang","username":"CritasWang","email":"critas@outlook.com","commits":1,"url":"https://github.com/CritasWang"},{"name":"LeiRui","username":"LeiRui","email":"33376433+LeiRui@users.noreply.github.com","commits":1,"url":"https://github.com/LeiRui"},{"name":"Christofer Dutz","username":"","email":"christofer.dutz@c-ware.de","commits":1},{"name":"Haonan","username":"Haonan","email":"hhaonan@outlook.com","commits":1,"url":"https://github.com/Haonan"}]},"readingTime":{"minutes":6.7,"words":2009},"filePathRelative":"UserGuide/V1.2.x/API/Programming-Cpp-Native-API.md","autoDesc":true}');export{r as comp,i as data};