<!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>
