blob: 807cac7dc3d63efab4be7bb49e68d5053310b9ae [file] [log] [blame]
import{_ as o,r as p,o as l,c,a as i,d as n,e as s,b as t,f as a}from"./app-32WlL3ZZ.js";const r={},u=a('<h1 id="c-native-api" tabindex="-1"><a class="header-anchor" href="#c-native-api" aria-hidden="true">#</a> C++ Native API</h1><h2 id="dependencies" tabindex="-1"><a class="header-anchor" href="#dependencies" aria-hidden="true">#</a> Dependencies</h2><ul><li>Java 8+</li><li>Maven 3.9+ (optional when using <code>mvnw</code> command)</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><blockquote><p>Even if we&#39;ll be building a C++ application, we still need <code>Maven</code> for the build and that requires <code>Java</code></p></blockquote><h2 id="installation-from-source-code" tabindex="-1"><a class="header-anchor" href="#installation-from-source-code" aria-hidden="true">#</a> Installation From Source Code</h2><h3 id="install-cpp-dependencies" tabindex="-1"><a class="header-anchor" href="#install-cpp-dependencies" aria-hidden="true">#</a> Install CPP Dependencies</h3>',6),d=a(`<li><p><strong>MAC</strong></p><ol><li>Install Homebrew, as we&#39;ll be installing all dependencies via that.<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>/bin/bash <span class="token parameter variable">-c</span> <span class="token string">&quot;<span class="token variable"><span class="token variable">$(</span><span class="token function">curl</span> <span class="token parameter variable">-fsSL</span> https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh<span class="token variable">)</span></span>&quot;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li>Make sure java ist installed, if not:<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>brew <span class="token function">install</span> <span class="token function">java</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>Please pay attention to the output of the installation process.<br> It will probably note that you need to create a symlink: <ol><li>On Intel-based models:<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">sudo</span> <span class="token function">ln</span> <span class="token parameter variable">-sfn</span> /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li>On Arm-based models<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">sudo</span> <span class="token function">ln</span> <span class="token parameter variable">-sfn</span> /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li></ol></li><li>Install BisonBison 2.3 is preinstalled on OSX, but this version is outdated, and we need a newer version.<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>brew <span class="token function">install</span> bison
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li>Install BoostPlease make sure a relative new version of Boost is ready on your machine.<br> If no Boost available, install the latest version of Boost:<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>brew <span class="token function">install</span> boost
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li>OpenSSL Make sure the Openssl header files and libraries have been installed on your Mac. The default Openssl include file search path is &quot;/usr/local/opt/openssl/include&quot;.<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>brew <span class="token function">install</span> openssl
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li></ol></li><li><p><strong>Ubuntu 20</strong></p><p>To install all dependencies, run:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> default-jdk bison flex libboost-all-dev libssl-dev
</code></pre><div class="line-numbers" aria-hidden="true"><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-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">sudo</span> yum <span class="token function">install</span> bison flex openssl-devel
</code></pre><div class="line-numbers" aria-hidden="true"><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>`,3),k=n("p",null,[n("strong",null,"Windows")],-1),m={href:"https://chocolatey.org/install",target:"_blank",rel:"noopener noreferrer"},v=a(`<li><p>Make sure Java is installed, if not:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>choco <span class="token function">install</span> openjdk
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><blockquote><p>Note on Windows running on aarch64 machines, the chocolatey script has been seen to install an x86_64 version of the JDK instead, which will still work, but at a low-performance, as it&#39;ll be running in emulation-mode. Currently, however aarch64 is a bit of a problem and will hopefully be fully supported in future versions of the cmake-maven-plugin.</p></blockquote></li><li><p>Install Visual Studio 19 2022:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>choco <span class="token function">install</span> visualstudio2022community
choco <span class="token function">install</span> visualstudio2022buildtools
choco <span class="token function">install</span> visualstudio2022-workload-nativedesktop
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li><li><p>Install Flex and Bison:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>choco <span class="token function">install</span> winflexbison
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>Install <code>Boost</code>:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>choco <span class="token function">install</span> boost-msvc-14.2
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li><li><p>Install <code>OpenSSL</code>:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>choco <span class="token function">install</span> openssl
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li>`,5),b=n("h3",{id:"compile",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#compile","aria-hidden":"true"},"#"),s(" Compile")],-1),g={href:"https://iotdb.apache.org/Download/",target:"_blank",rel:"noopener noreferrer"},h=a(`<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">git</span> clone https://github.com/apache/iotdb.git
</code></pre><div class="line-numbers" aria-hidden="true"><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-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">git</span> checkout v0.13.3
</code></pre><div class="line-numbers" aria-hidden="true"><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><blockquote><p>If you want to use the <code>maven-wrapper</code> which will automatically fetch the right version of <code>Maven</code>, replace <code>mvn</code> with <code>./mvnw</code> on Mac and Linux and <code>mvnw.cmd</code> on Windows systems.</p></blockquote><p>In order to compile the project, execute the following command in the root path of the project:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>mvn package <span class="token parameter variable">-P</span> with-cpp <span class="token parameter variable">-pl</span> example/client-cpp-example, <span class="token parameter variable">-am</span> <span class="token parameter variable">-DskipTest</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>As soon as the compilation finishes successfully, the packaged zip file containing the library will be placed under <code>iotdb-client/client-cpp/target/client-cpp-{iotdb-version}-cpp-\${os}-\${aarch}.zip</code> and the example demonstrating the use of the library will be located at: <code>example/client-cpp-example/target/SessionExample</code> and <code>example/client-cpp-example/target/AllignedTimeseriesSessionExample</code>.</p><h2 id="native-apis" tabindex="-1"><a class="header-anchor" href="#native-apis" aria-hidden="true">#</a> Native APIs</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" aria-hidden="true">#</a> Initialization</h3><ul><li><p>Open a Session:</p><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">open</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">open</span><span class="token punctuation">(</span><span class="token keyword">bool</span> enableRPCCompression<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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" aria-hidden="true">#</a> Data Definition Interface (DDL)</h3><h4 id="database-management" tabindex="-1"><a class="header-anchor" href="#database-management" aria-hidden="true">#</a> Database Management</h4><ul><li>Create database:</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">setStorageGroup</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>storageGroupId<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>Delete one or several databases:</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">deleteStorageGroup</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>storageGroup<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">deleteStorageGroups</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>storageGroups<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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" aria-hidden="true">#</a> Timeseries Management</h4><ul><li>Create one or multiple timeseries:</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">createTimeseries</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">,</span> TSDataType<span class="token double-colon punctuation">::</span>TSDataType dataType<span class="token punctuation">,</span> TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding encoding<span class="token punctuation">,</span>
CompressionType<span class="token double-colon punctuation">::</span>CompressionType compressor<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">createMultiTimeseries</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>paths<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>dataTypes<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>encodings<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>CompressionType<span class="token double-colon punctuation">::</span>CompressionType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>compressors<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>map<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token punctuation">,</span> std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">*</span>propsList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>map<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token punctuation">,</span> std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">*</span>tagsList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>map<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token punctuation">,</span> std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">*</span>attributesList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">*</span>measurementAliasList<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">createAlignedTimeseries</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>dataTypes<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>encodings<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>CompressionType<span class="token double-colon punctuation">::</span>CompressionType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>compressors<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">deleteTimeseries</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">deleteTimeseries</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>paths<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">bool</span> <span class="token function">checkTimeseriesExists</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h4 id="schema-template" tabindex="-1"><a class="header-anchor" href="#schema-template" aria-hidden="true">#</a> Schema Template</h4><ul><li>Create a schema template:</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">createSchemaTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> Template <span class="token operator">&amp;</span>templ<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">setSchemaTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span> <span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>prefix_path<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>Unset the schema template:</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">unsetSchemaTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>prefix_path<span class="token punctuation">,</span> <span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token comment">// Add aligned measurements to a template</span>
<span class="token keyword">void</span> <span class="token function">addAlignedMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>dataTypes<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>encodings<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>CompressionType<span class="token double-colon punctuation">::</span>CompressionType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>compressors<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Add one aligned measurement to a template</span>
<span class="token keyword">void</span> <span class="token function">addAlignedMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>measurement<span class="token punctuation">,</span>
TSDataType<span class="token double-colon punctuation">::</span>TSDataType dataType<span class="token punctuation">,</span>
TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding encoding<span class="token punctuation">,</span>
CompressionType<span class="token double-colon punctuation">::</span>CompressionType compressor<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Add unaligned measurements to a template</span>
<span class="token keyword">void</span> <span class="token function">addUnalignedMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>dataTypes<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>encodings<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>CompressionType<span class="token double-colon punctuation">::</span>CompressionType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>compressors<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Add one unaligned measurement to a template</span>
<span class="token keyword">void</span> <span class="token function">addUnalignedMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>measurement<span class="token punctuation">,</span>
TSDataType<span class="token double-colon punctuation">::</span>TSDataType dataType<span class="token punctuation">,</span>
TSEncoding<span class="token double-colon punctuation">::</span>TSEncoding encoding<span class="token punctuation">,</span>
CompressionType<span class="token double-colon punctuation">::</span>CompressionType compressor<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Delete a node in template and its children</span>
<span class="token keyword">void</span> <span class="token function">deleteNodeInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span> <span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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-ext="cpp"><pre class="language-cpp"><code><span class="token comment">// Return the amount of measurements inside a template</span>
<span class="token keyword">int</span> <span class="token function">countMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Return true if path points to a measurement, otherwise returne false</span>
<span class="token keyword">bool</span> <span class="token function">isMeasurementInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span> <span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Return true if path exists in template, otherwise return false</span>
<span class="token keyword">bool</span> <span class="token function">isPathExistInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span> <span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Return all measurements paths inside template</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token function">showMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Return all measurements paths under the designated patter inside template</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token function">showMeasurementsInTemplate</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>template_name<span class="token punctuation">,</span> <span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>pattern<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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" aria-hidden="true">#</a> Data Manipulation Interface (DMI)</h3><h4 id="insert" tabindex="-1"><a class="header-anchor" href="#insert" aria-hidden="true">#</a> Insert</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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">insertRecord</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
<span class="token keyword">int64_t</span> time<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>values<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">insertRecords</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>deviceIds<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">insertRecordsOfOneDevice</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">insertRecord</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
<span class="token keyword">int64_t</span> time<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>types<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>values<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertRecords</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>deviceIds<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>typesList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertRecordsOfOneDevice</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>typesList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">insertTablet</span><span class="token punctuation">(</span>Tablet <span class="token operator">&amp;</span>tablet<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>Insert multiple Tablets</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">insertTablets</span><span class="token punctuation">(</span>std<span class="token double-colon punctuation">::</span>unordered_map<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token punctuation">,</span> Tablet <span class="token operator">*</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>tablets<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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" aria-hidden="true">#</a> Insert data into Aligned Timeseries</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-ext="cpp"><pre class="language-cpp"><code> <span class="token keyword">void</span> <span class="token function">insertAlignedRecord</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
<span class="token keyword">int64_t</span> time<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>values<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedRecord</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
<span class="token keyword">int64_t</span> time<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>measurements<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>types<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>values<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedRecords</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>deviceIds<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedRecords</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>deviceIds<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>typesList<span class="token punctuation">,</span>
<span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedRecordsOfOneDevice</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>typesList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedRecordsOfOneDevice</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">int64_t</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>times<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>measurementsList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>TSDataType<span class="token double-colon punctuation">::</span>TSDataType<span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>typesList<span class="token punctuation">,</span>
std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span><span class="token keyword">char</span> <span class="token operator">*</span><span class="token operator">&gt;&gt;</span> <span class="token operator">&amp;</span>valuesList<span class="token punctuation">,</span>
<span class="token keyword">bool</span> sorted<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedTablet</span><span class="token punctuation">(</span>Tablet <span class="token operator">&amp;</span>tablet<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedTablet</span><span class="token punctuation">(</span>Tablet <span class="token operator">&amp;</span>tablet<span class="token punctuation">,</span>
<span class="token keyword">bool</span> sorted<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">insertAlignedTablets</span><span class="token punctuation">(</span>std<span class="token double-colon punctuation">::</span>unordered_map<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token punctuation">,</span> Tablet <span class="token operator">*</span><span class="token operator">&gt;</span> <span class="token operator">&amp;</span>tablets<span class="token punctuation">,</span>
<span class="token keyword">bool</span> sorted <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="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" aria-hidden="true">#</a> Delete</h4><ul><li>Delete data with timestamps before or equal to a given timestamp of one or several timeseries:</li></ul><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">deleteData</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>path<span class="token punctuation">,</span> <span class="token keyword">int64_t</span> time<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">deleteData</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>vector<span class="token operator">&lt;</span>std<span class="token double-colon punctuation">::</span>string<span class="token operator">&gt;</span> <span class="token operator">&amp;</span>deviceId<span class="token punctuation">,</span> <span class="token keyword">int64_t</span> time<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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" aria-hidden="true">#</a> IoTDB-SQL Interface</h3><ul><li>Execute query statement</li></ul><p>Query statements return data.</p><div class="language-cpp line-numbers-mode" data-ext="cpp"><pre class="language-cpp"><code>unique_ptr<span class="token operator">&lt;</span>SessionDataSet<span class="token operator">&gt;</span> <span class="token function">executeQueryStatement</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>sql<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><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-ext="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token function">executeNonQueryStatement</span><span class="token punctuation">(</span><span class="token keyword">const</span> std<span class="token double-colon punctuation">::</span>string <span class="token operator">&amp;</span>sql<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="examples" tabindex="-1"><a class="header-anchor" href="#examples" aria-hidden="true">#</a> Examples</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" aria-hidden="true">#</a> FAQ</h2><h3 id="on-mac" tabindex="-1"><a class="header-anchor" href="#on-mac" aria-hidden="true">#</a> on Mac</h3><p>If errors occur when compiling thrift source code, try to downgrade your xcode-commandline from 12 to 11.5</p>`,73),y={href:"https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087",target:"_blank",rel:"noopener noreferrer"},w=a(`<h3 id="on-windows" tabindex="-1"><a class="header-anchor" href="#on-windows" aria-hidden="true">#</a> on Windows</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-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>Failed to delete cached <span class="token function">file</span> C:<span class="token punctuation">\\</span>Users<span class="token punctuation">\\</span>Administrator<span class="token punctuation">\\</span>.m2<span class="token punctuation">\\</span>repository<span class="token punctuation">\\</span>.cache<span class="token punctuation">\\</span>download-maven-plugin<span class="token punctuation">\\</span>index.ser
</code></pre><div class="line-numbers" aria-hidden="true"><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>`,5);function f(T,x){const e=p("ExternalLinkIcon");return l(),c("div",null,[i(`
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
`),u,n("ul",null,[d,n("li",null,[k,n("ol",null,[n("li",null,[n("p",null,[s("Install Chocolatey, as we'll be installing all dependencies via that: "),n("a",m,[s("Installation Instructions"),t(e)])])]),v])])]),b,n("p",null,[s("You can download the source code from the "),n("a",g,[s("IoTDB Website"),t(e)]),s(" or clone the GIT repository:")]),h,n("p",null,[s("see "),n("a",y,[s("https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087"),t(e)])]),w])}const I=o(r,[["render",f],["__file","Programming-Cpp-Native-API.html.vue"]]);export{I as default};