blob: c06fb3139d555b23c06fbbf70159b8a357e75352 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: kudu::client::KuduSchemaBuilder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Kudu C++ client API
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>kudu</b></li><li class="navelem"><b>client</b></li><li class="navelem"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html">KuduSchemaBuilder</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classkudu_1_1client_1_1KuduSchemaBuilder-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">kudu::client::KuduSchemaBuilder Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Builder API for constructing a <a class="el" href="classkudu_1_1client_1_1KuduSchema.html" title="A representation of a table&#39;s schema.">KuduSchema</a> object.
<a href="classkudu_1_1client_1_1KuduSchemaBuilder.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="schema_8h_source.html">schema.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a1d15fed88cf3b1f2ca3313989c16a938" id="r_a1d15fed88cf3b1f2ca3313989c16a938"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduColumnSpec.html">KuduColumnSpec</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#a1d15fed88cf3b1f2ca3313989c16a938">AddColumn</a> (const std::string &amp;name)</td></tr>
<tr class="separator:a1d15fed88cf3b1f2ca3313989c16a938"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa05d2b419b9e971f9211a417599ad7f4" id="r_aa05d2b419b9e971f9211a417599ad7f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html">KuduSchemaBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#aa05d2b419b9e971f9211a417599ad7f4">SetPrimaryKey</a> (const std::vector&lt; std::string &gt; &amp;key_col_names)</td></tr>
<tr class="separator:aa05d2b419b9e971f9211a417599ad7f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfef3c2a78ba0397a1252148daf3470c" id="r_acfef3c2a78ba0397a1252148daf3470c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html">KuduSchemaBuilder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#acfef3c2a78ba0397a1252148daf3470c">SetNonUniquePrimaryKey</a> (const std::vector&lt; std::string &gt; &amp;key_col_names)</td></tr>
<tr class="separator:acfef3c2a78ba0397a1252148daf3470c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af117e347a7d0910dda2695997859db15" id="r_af117e347a7d0910dda2695997859db15"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#af117e347a7d0910dda2695997859db15">Build</a> (<a class="el" href="classkudu_1_1client_1_1KuduSchema.html">KuduSchema</a> *schema)</td></tr>
<tr class="separator:af117e347a7d0910dda2695997859db15"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Builder API for constructing a <a class="el" href="classkudu_1_1client_1_1KuduSchema.html" title="A representation of a table&#39;s schema.">KuduSchema</a> object. </p>
<p>The API here is a "fluent" style of programming, such that the resulting code looks somewhat like a SQL "CREATE TABLE" statement. For example:</p>
<p>SQL: </p><div class="fragment"><div class="line">CREATE TABLE t (</div>
<div class="line"> my_key <span class="keywordtype">int</span> not null primary key,</div>
<div class="line"> a <span class="keywordtype">float</span> <span class="keywordflow">default</span> 1.5</div>
<div class="line">);</div>
</div><!-- fragment --><p>is represented as: </p><div class="fragment"><div class="line"><a class="code hl_class" href="classkudu_1_1client_1_1KuduSchemaBuilder.html">KuduSchemaBuilder</a> t;</div>
<div class="line">t.<a class="code hl_function" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#a1d15fed88cf3b1f2ca3313989c16a938">AddColumn</a>(<span class="stringliteral">&quot;my_key&quot;</span>)-&gt;<a class="code hl_function" href="classkudu_1_1client_1_1KuduColumnSpec.html#a33058c658abda55dc2e20447df6e9006">Type</a>(KuduColumnSchema::INT32)-&gt;<a class="code hl_function" href="classkudu_1_1client_1_1KuduColumnSpec.html#a247c652611efae4c8980427e548fd5e9">NotNull</a>()-&gt;<a class="code hl_function" href="classkudu_1_1client_1_1KuduColumnSpec.html#aa6eccfbacdb5a64c3279e7c2639182b7">PrimaryKey</a>();</div>
<div class="line">t.<a class="code hl_function" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#a1d15fed88cf3b1f2ca3313989c16a938">AddColumn</a>(<span class="stringliteral">&quot;a&quot;</span>)-&gt;<a class="code hl_function" href="classkudu_1_1client_1_1KuduColumnSpec.html#a33058c658abda55dc2e20447df6e9006">Type</a>(KuduColumnSchema::FLOAT)-&gt;<a class="code hl_function" href="classkudu_1_1client_1_1KuduColumnSpec.html#a448d9857a5d7b6552fd4082d198705c5">Default</a>(<a class="code hl_function" href="classkudu_1_1client_1_1KuduValue.html#a1258c55ea7df425c149eba0bdc887cd1">KuduValue::FromFloat</a>(1.5));</div>
<div class="line"><a class="code hl_class" href="classkudu_1_1client_1_1KuduSchema.html">KuduSchema</a> schema;</div>
<div class="line">t.<a class="code hl_function" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#af117e347a7d0910dda2695997859db15">Build</a>(&amp;schema);</div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduColumnSpec_html_a247c652611efae4c8980427e548fd5e9"><div class="ttname"><a href="classkudu_1_1client_1_1KuduColumnSpec.html#a247c652611efae4c8980427e548fd5e9">kudu::client::KuduColumnSpec::NotNull</a></div><div class="ttdeci">KuduColumnSpec * NotNull()</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduColumnSpec_html_a33058c658abda55dc2e20447df6e9006"><div class="ttname"><a href="classkudu_1_1client_1_1KuduColumnSpec.html#a33058c658abda55dc2e20447df6e9006">kudu::client::KuduColumnSpec::Type</a></div><div class="ttdeci">KuduColumnSpec * Type(KuduColumnSchema::DataType type)</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduColumnSpec_html_a448d9857a5d7b6552fd4082d198705c5"><div class="ttname"><a href="classkudu_1_1client_1_1KuduColumnSpec.html#a448d9857a5d7b6552fd4082d198705c5">kudu::client::KuduColumnSpec::Default</a></div><div class="ttdeci">KuduColumnSpec * Default(KuduValue *value)</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduColumnSpec_html_aa6eccfbacdb5a64c3279e7c2639182b7"><div class="ttname"><a href="classkudu_1_1client_1_1KuduColumnSpec.html#aa6eccfbacdb5a64c3279e7c2639182b7">kudu::client::KuduColumnSpec::PrimaryKey</a></div><div class="ttdeci">KuduColumnSpec * PrimaryKey()</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduSchemaBuilder_html"><div class="ttname"><a href="classkudu_1_1client_1_1KuduSchemaBuilder.html">kudu::client::KuduSchemaBuilder</a></div><div class="ttdoc">Builder API for constructing a KuduSchema object.</div><div class="ttdef"><b>Definition</b> schema.h:622</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduSchemaBuilder_html_a1d15fed88cf3b1f2ca3313989c16a938"><div class="ttname"><a href="classkudu_1_1client_1_1KuduSchemaBuilder.html#a1d15fed88cf3b1f2ca3313989c16a938">kudu::client::KuduSchemaBuilder::AddColumn</a></div><div class="ttdeci">KuduColumnSpec * AddColumn(const std::string &amp;name)</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduSchemaBuilder_html_af117e347a7d0910dda2695997859db15"><div class="ttname"><a href="classkudu_1_1client_1_1KuduSchemaBuilder.html#af117e347a7d0910dda2695997859db15">kudu::client::KuduSchemaBuilder::Build</a></div><div class="ttdeci">Status Build(KuduSchema *schema)</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduSchema_html"><div class="ttname"><a href="classkudu_1_1client_1_1KuduSchema.html">kudu::client::KuduSchema</a></div><div class="ttdoc">A representation of a table's schema.</div><div class="ttdef"><b>Definition</b> schema.h:688</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduValue_html_a1258c55ea7df425c149eba0bdc887cd1"><div class="ttname"><a href="classkudu_1_1client_1_1KuduValue.html#a1258c55ea7df425c149eba0bdc887cd1">kudu::client::KuduValue::FromFloat</a></div><div class="ttdeci">static KuduValue * FromFloat(float val)</div></div>
</div><!-- fragment --> </div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a1d15fed88cf3b1f2ca3313989c16a938" name="a1d15fed88cf3b1f2ca3313989c16a938"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d15fed88cf3b1f2ca3313989c16a938">&#9670;&#160;</a></span>AddColumn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduColumnSpec.html">KuduColumnSpec</a> * kudu::client::KuduSchemaBuilder::AddColumn </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a column with the specified name to the schema.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>Name of the column to add. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classkudu_1_1client_1_1KuduColumnSpec.html" title="Builder API for specifying or altering a column within a table schema.">KuduColumnSpec</a> object for a new column within the Schema. The returned object is owned by the <a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html" title="Builder API for constructing a KuduSchema object.">KuduSchemaBuilder</a>. </dd></dl>
</div>
</div>
<a id="af117e347a7d0910dda2695997859db15" name="af117e347a7d0910dda2695997859db15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af117e347a7d0910dda2695997859db15">&#9670;&#160;</a></span>Build()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1Status.html">Status</a> kudu::client::KuduSchemaBuilder::Build </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classkudu_1_1client_1_1KuduSchema.html">KuduSchema</a> *&#160;</td>
<td class="paramname"><em>schema</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Build the schema based on current configuration of the builder object.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">schema</td><td>The placeholder for the result schema. Upon successful completion, the parameter is reset to the result of this builder: literally, calling <a class="el" href="classkudu_1_1client_1_1KuduSchema.html#a3f51ccf1a7e6f4a4fe4958073305dbab">KuduSchema::Reset()</a> on the parameter. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. If the resulting would-be-schema is invalid for any reason (e.g. missing types, duplicate column names, etc.) a bad <a class="el" href="classkudu_1_1Status.html" title="A representation of an operation&#39;s outcome.">Status</a> is returned. </dd></dl>
</div>
</div>
<a id="acfef3c2a78ba0397a1252148daf3470c" name="acfef3c2a78ba0397a1252148daf3470c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfef3c2a78ba0397a1252148daf3470c">&#9670;&#160;</a></span>SetNonUniquePrimaryKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html">KuduSchemaBuilder</a> * kudu::client::KuduSchemaBuilder::SetNonUniquePrimaryKey </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>key_col_names</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the non-unique primary key of the new Schema based on the given column names.</p>
<p>This may be used to specify a compound non-unique primary key.</p>
<dl class="section note"><dt>Note</dt><dd>By specifying non-unique primary keys, an auto incrementing column is created automatically. They form together the effective primary key. The auto incrementing field is populated on the server side, it must not be specified during insertion. All subsequent operations like scans will contain the auto incrementing column by default. If one wants to omit the auto incrementing column, it can be accomplished through existing projection methods.</dd>
<dd>
A call to <a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#aa05d2b419b9e971f9211a417599ad7f4">SetPrimaryKey()</a> or <a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#acfef3c2a78ba0397a1252148daf3470c">SetNonUniquePrimaryKey()</a> overrides any previous call to these two methods.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">key_col_names</td><td>Names of the columns to include into the compound non-unique primary key. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the modified object. </dd></dl>
</div>
</div>
<a id="aa05d2b419b9e971f9211a417599ad7f4" name="aa05d2b419b9e971f9211a417599ad7f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa05d2b419b9e971f9211a417599ad7f4">&#9670;&#160;</a></span>SetPrimaryKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html">KuduSchemaBuilder</a> * kudu::client::KuduSchemaBuilder::SetPrimaryKey </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>key_col_names</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the primary key of the new Schema based on the given column names.</p>
<p>This may be used to specify a compound primary key.</p>
<dl class="section note"><dt>Note</dt><dd>A call to <a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#aa05d2b419b9e971f9211a417599ad7f4">SetPrimaryKey()</a> or <a class="el" href="classkudu_1_1client_1_1KuduSchemaBuilder.html#acfef3c2a78ba0397a1252148daf3470c">SetNonUniquePrimaryKey()</a> overrides any previous call to these two methods.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">key_col_names</td><td>Names of the columns to include into the compound primary key. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the modified object. </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/kudu/client/<a class="el" href="schema_8h_source.html">schema.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
<small>Generated for Kudu version 1.17.0 on Mon Sep 4 2023 19:49:30 by Doxygen 1.9.8</small>
<br>
<small>Copyright © 2023 The Apache Software Foundation.</small>
</address>
</body>
</html>