blob: be366daf1b2c139de29e387fb5296cd3d8a227eb [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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: kudu::client::KuduClient 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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Kudu C++ client API
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</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_1KuduClient.html">KuduClient</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classkudu_1_1client_1_1KuduClient-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">kudu::client::KuduClient Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A handle for a connection to a cluster.
<a href="classkudu_1_1client_1_1KuduClient.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="client_8h_source.html">client.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for kudu::client::KuduClient:</div>
<div class="dyncontent">
<div class="center">
<img src="classkudu_1_1client_1_1KuduClient.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aef70c7f3a596ecda4040f9d46514b11a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#aef70c7f3a596ecda4040f9d46514b11a">ReplicaSelection</a> { <a class="el" href="classkudu_1_1client_1_1KuduClient.html#aef70c7f3a596ecda4040f9d46514b11aafb912836db348061379d0e0a9055e239">LEADER_ONLY</a>
, <a class="el" href="classkudu_1_1client_1_1KuduClient.html#aef70c7f3a596ecda4040f9d46514b11aa801886067da41dacd0c9c2b8091f08d8">CLOSEST_REPLICA</a>
, <a class="el" href="classkudu_1_1client_1_1KuduClient.html#aef70c7f3a596ecda4040f9d46514b11aaa060fb6126a3e3fa80079f885dc7d48f">FIRST_REPLICA</a>
}</td></tr>
<tr class="memdesc:aef70c7f3a596ecda4040f9d46514b11a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Policy with which to choose amongst multiple replicas. <a href="classkudu_1_1client_1_1KuduClient.html#aef70c7f3a596ecda4040f9d46514b11a">More...</a><br /></td></tr>
<tr class="separator:aef70c7f3a596ecda4040f9d46514b11a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a003f13604b4fb378f61e133a9b49d153"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduTableCreator.html">KuduTableCreator</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a003f13604b4fb378f61e133a9b49d153">NewTableCreator</a> ()</td></tr>
<tr class="separator:a003f13604b4fb378f61e133a9b49d153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f0323b439d8658b2ac31fde7f46de63"><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_1KuduClient.html#a2f0323b439d8658b2ac31fde7f46de63">IsCreateTableInProgress</a> (const std::string &amp;table_name, bool *create_in_progress)</td></tr>
<tr class="separator:a2f0323b439d8658b2ac31fde7f46de63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d7cbad036bc74c71873a428abce5c1d"><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_1KuduClient.html#a9d7cbad036bc74c71873a428abce5c1d">DeleteTable</a> (const std::string &amp;table_name)</td></tr>
<tr class="separator:a9d7cbad036bc74c71873a428abce5c1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a116bbcf13dc0991ad2a3129630075aea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduTableAlterer.html">KuduTableAlterer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a116bbcf13dc0991ad2a3129630075aea">NewTableAlterer</a> (const std::string &amp;table_name)</td></tr>
<tr class="separator:a116bbcf13dc0991ad2a3129630075aea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a331e528759296089837b4611c01809"><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_1KuduClient.html#a7a331e528759296089837b4611c01809">IsAlterTableInProgress</a> (const std::string &amp;table_name, bool *alter_in_progress)</td></tr>
<tr class="separator:a7a331e528759296089837b4611c01809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aa649e05e0cfb0e10ebce98fb4d7a65"><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_1KuduClient.html#a2aa649e05e0cfb0e10ebce98fb4d7a65">GetTableSchema</a> (const std::string &amp;table_name, <a class="el" href="classkudu_1_1client_1_1KuduSchema.html">KuduSchema</a> *schema)</td></tr>
<tr class="separator:a2aa649e05e0cfb0e10ebce98fb4d7a65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae283a49551a081524b41f5d8e51e68d9"><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_1KuduClient.html#ae283a49551a081524b41f5d8e51e68d9">ListTabletServers</a> (std::vector&lt; <a class="el" href="classkudu_1_1client_1_1KuduTabletServer.html">KuduTabletServer</a> * &gt; *tablet_servers)</td></tr>
<tr class="separator:ae283a49551a081524b41f5d8e51e68d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ab09f69753b8c99ac7b2eeed03faa1d"><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_1KuduClient.html#a3ab09f69753b8c99ac7b2eeed03faa1d">ListTables</a> (std::vector&lt; std::string &gt; *tables, const std::string &amp;filter=&quot;&quot;)</td></tr>
<tr class="separator:a3ab09f69753b8c99ac7b2eeed03faa1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96e9a6c0a16a8825c291528ac27af818"><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_1KuduClient.html#a96e9a6c0a16a8825c291528ac27af818">TableExists</a> (const std::string &amp;table_name, bool *exists)</td></tr>
<tr class="separator:a96e9a6c0a16a8825c291528ac27af818"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa82a09718ffe68d3255195e736aec8d7"><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_1KuduClient.html#aa82a09718ffe68d3255195e736aec8d7">OpenTable</a> (const std::string &amp;table_name, sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTable.html">KuduTable</a> &gt; *table)</td></tr>
<tr class="separator:aa82a09718ffe68d3255195e736aec8d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f5b9bf8767b44f03f4d3220dfd5f925"><td class="memItemLeft" align="right" valign="top">sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduSession.html">KuduSession</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a1f5b9bf8767b44f03f4d3220dfd5f925">NewSession</a> ()</td></tr>
<tr class="separator:a1f5b9bf8767b44f03f4d3220dfd5f925"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acce5fd87acb241d2ce2686545f423345"><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_1KuduClient.html#acce5fd87acb241d2ce2686545f423345">NewTransaction</a> (sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> &gt; *txn) WARN_UNUSED_RESULT</td></tr>
<tr class="separator:acce5fd87acb241d2ce2686545f423345"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e1363d5dfab959b0d9ca98bfd390433"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a1e1363d5dfab959b0d9ca98bfd390433">IsMultiMaster</a> () const</td></tr>
<tr class="separator:a1e1363d5dfab959b0d9ca98bfd390433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0646b1b93edeb92cf7ea46a1bb433838"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classkudu_1_1MonoDelta.html">MonoDelta</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a0646b1b93edeb92cf7ea46a1bb433838">default_admin_operation_timeout</a> () const</td></tr>
<tr class="separator:a0646b1b93edeb92cf7ea46a1bb433838"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaae3d73831a41d260d2578fef68bcd49"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classkudu_1_1MonoDelta.html">MonoDelta</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#aaae3d73831a41d260d2578fef68bcd49">default_rpc_timeout</a> () const</td></tr>
<tr class="separator:aaae3d73831a41d260d2578fef68bcd49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68b569dd6749ec61805e3b0a691eacac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1MonoDelta.html">MonoDelta</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a68b569dd6749ec61805e3b0a691eacac">connection_negotiation_timeout</a> () const</td></tr>
<tr class="separator:a68b569dd6749ec61805e3b0a691eacac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4af2abf2a56d92d8795662fa090baa9"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#aa4af2abf2a56d92d8795662fa090baa9">GetLatestObservedTimestamp</a> () const</td></tr>
<tr class="separator:aa4af2abf2a56d92d8795662fa090baa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0809b055eda76fd68988462f2a9791dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a0809b055eda76fd68988462f2a9791dd">SetLatestObservedTimestamp</a> (uint64_t ht_timestamp)</td></tr>
<tr class="separator:a0809b055eda76fd68988462f2a9791dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae932971967e58a8a7b85f6a56ee44cd0"><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_1KuduClient.html#ae932971967e58a8a7b85f6a56ee44cd0">ExportAuthenticationCredentials</a> (std::string *authn_creds) const</td></tr>
<tr class="separator:ae932971967e58a8a7b85f6a56ee44cd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a196f1a18c000cdca309d05161caaddaa"><td class="memItemLeft" align="right" valign="top">static const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduClient.html#a196f1a18c000cdca309d05161caaddaa">kNoTimestamp</a></td></tr>
<tr class="separator:a196f1a18c000cdca309d05161caaddaa"><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>A handle for a connection to a cluster. </p>
<p>The <a class="el" href="classkudu_1_1client_1_1KuduClient.html" title="A handle for a connection to a cluster.">KuduClient</a> class represents a connection to a cluster. From the user perspective, they should only need to create one of these in their application, likely a singleton &ndash; but it is not a singleton in Kudu in any way. Different <a class="el" href="classkudu_1_1client_1_1KuduClient.html" title="A handle for a connection to a cluster.">KuduClient</a> objects do not interact with each other &ndash; no connection pooling, etc. With the exception of common properties managed by free (non-member) functions in the kudu::client namespace, each <a class="el" href="classkudu_1_1client_1_1KuduClient.html" title="A handle for a connection to a cluster.">KuduClient</a> object is sandboxed with no global cross-client state.</p>
<p>In the implementation, the client holds various pieces of common infrastructure which is not table-specific: </p><ul>
<li>RPC messenger: reactor threads and RPC connections are pooled here </li>
<li>Authentication: the client is initialized with some credentials, and all accesses through it share those credentials. </li>
<li>Caches: caches of table schemas, tablet locations, tablet server IP addresses, etc are shared per-client.</li>
</ul>
<p>In order to actually write data to the cluster, callers must first create a <a class="el" href="classkudu_1_1client_1_1KuduSession.html" title="Representation of a Kudu client session.">KuduSession</a> object using <a class="el" href="classkudu_1_1client_1_1KuduClient.html#a1f5b9bf8767b44f03f4d3220dfd5f925">NewSession()</a>. A <a class="el" href="classkudu_1_1client_1_1KuduClient.html" title="A handle for a connection to a cluster.">KuduClient</a> may have several associated sessions.</p>
<dl class="section note"><dt>Note</dt><dd>This class is thread-safe.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>Cluster administration functions are likely to be in this class as well. </dd></dl>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="aef70c7f3a596ecda4040f9d46514b11a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef70c7f3a596ecda4040f9d46514b11a">&#9670;&nbsp;</a></span>ReplicaSelection</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classkudu_1_1client_1_1KuduClient.html#aef70c7f3a596ecda4040f9d46514b11a">kudu::client::KuduClient::ReplicaSelection</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Policy with which to choose amongst multiple replicas. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aef70c7f3a596ecda4040f9d46514b11aafb912836db348061379d0e0a9055e239"></a>LEADER_ONLY&#160;</td><td class="fielddoc"><p>Select the LEADER replica. </p>
</td></tr>
<tr><td class="fieldname"><a id="aef70c7f3a596ecda4040f9d46514b11aa801886067da41dacd0c9c2b8091f08d8"></a>CLOSEST_REPLICA&#160;</td><td class="fielddoc"><p>Select the closest replica to the client. Local replicas are considered the closest, followed by replicas in the same location as the client, followed by all other replicas. If there are multiple closest replicas, one is chosen randomly. </p>
</td></tr>
<tr><td class="fieldname"><a id="aef70c7f3a596ecda4040f9d46514b11aaa060fb6126a3e3fa80079f885dc7d48f"></a>FIRST_REPLICA&#160;</td><td class="fielddoc"><p>Select the first replica in the list. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a68b569dd6749ec61805e3b0a691eacac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68b569dd6749ec61805e3b0a691eacac">&#9670;&nbsp;</a></span>connection_negotiation_timeout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1MonoDelta.html">MonoDelta</a> kudu::client::KuduClient::connection_negotiation_timeout </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Timeout for connection negotiation to a remote server. </dd></dl>
</div>
</div>
<a id="a0646b1b93edeb92cf7ea46a1bb433838"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0646b1b93edeb92cf7ea46a1bb433838">&#9670;&nbsp;</a></span>default_admin_operation_timeout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classkudu_1_1MonoDelta.html">MonoDelta</a>&amp; kudu::client::KuduClient::default_admin_operation_timeout </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Default timeout for admin operations. </dd></dl>
</div>
</div>
<a id="aaae3d73831a41d260d2578fef68bcd49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaae3d73831a41d260d2578fef68bcd49">&#9670;&nbsp;</a></span>default_rpc_timeout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classkudu_1_1MonoDelta.html">MonoDelta</a>&amp; kudu::client::KuduClient::default_rpc_timeout </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Default timeout for RPCs. </dd></dl>
</div>
</div>
<a id="a9d7cbad036bc74c71873a428abce5c1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d7cbad036bc74c71873a428abce5c1d">&#9670;&nbsp;</a></span>DeleteTable()</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::KuduClient::DeleteTable </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete/drop a table.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table to drop. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation status. </dd></dl>
</div>
</div>
<a id="ae932971967e58a8a7b85f6a56ee44cd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae932971967e58a8a7b85f6a56ee44cd0">&#9670;&nbsp;</a></span>ExportAuthenticationCredentials()</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::KuduClient::ExportAuthenticationCredentials </td>
<td>(</td>
<td class="paramtype">std::string *&#160;</td>
<td class="paramname"><em>authn_creds</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Export the current authentication credentials from this client. This includes the necessary credentials to authenticate to the cluster, as well as to authenticate the cluster to the client.</p>
<p>The resulting binary string may be passed into a new C++ client via the <code><a class="el" href="classkudu_1_1client_1_1KuduClientBuilder.html#a5c411bc4638cbf77e5d318f5049b0b7e">KuduClientBuilder::import_authentication_credentials</a></code> method, or into a new Java client via <code>KuduClient::importAuthenticationCredentials</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">authn_creds</td><td>The resulting binary authentication credentials. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkudu_1_1Status.html" title="A representation of an operation&#39;s outcome.">Status</a> object for the operation. </dd></dl>
</div>
</div>
<a id="aa4af2abf2a56d92d8795662fa090baa9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4af2abf2a56d92d8795662fa090baa9">&#9670;&nbsp;</a></span>GetLatestObservedTimestamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t kudu::client::KuduClient::GetLatestObservedTimestamp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the highest HybridTime timestamp observed by the client.</p>
<p>This is useful when retrieving timestamp from one client and forwarding it to another to enforce external consistency when using <a class="el" href="classkudu_1_1client_1_1KuduSession.html#aabd55109ba3b086bbe33b277cdd40d22ae978fab7451faebf4399830b603c855c">KuduSession::CLIENT_PROPAGATED</a> external consistency mode.</p>
<dl class="section note"><dt>Note</dt><dd>This method is experimental and will either disappear or change in a future release.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>Highest HybridTime timestamp observed by the client. </dd></dl>
</div>
</div>
<a id="a2aa649e05e0cfb0e10ebce98fb4d7a65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2aa649e05e0cfb0e10ebce98fb4d7a65">&#9670;&nbsp;</a></span>GetTableSchema()</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::KuduClient::GetTableSchema </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></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>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get table's schema.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">schema</td><td>Raw pointer to the schema object; caller gets ownership. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation status. </dd></dl>
</div>
</div>
<a id="a7a331e528759296089837b4611c01809"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a331e528759296089837b4611c01809">&#9670;&nbsp;</a></span>IsAlterTableInProgress()</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::KuduClient::IsAlterTableInProgress </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool *&#160;</td>
<td class="paramname"><em>alter_in_progress</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if table alteration is in-progress.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">alter_in_progress</td><td>The value is set only in case of success; it is <code>true</code> iff the operation is in progress. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation status. </dd></dl>
</div>
</div>
<a id="a2f0323b439d8658b2ac31fde7f46de63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f0323b439d8658b2ac31fde7f46de63">&#9670;&nbsp;</a></span>IsCreateTableInProgress()</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::KuduClient::IsCreateTableInProgress </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool *&#160;</td>
<td class="paramname"><em>create_in_progress</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether a create table operation is in-progress.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">create_in_progress</td><td>The value is set only in case of success; it is <code>true</code> iff the operation is in progress. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation status. </dd></dl>
</div>
</div>
<a id="a1e1363d5dfab959b0d9ca98bfd390433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e1363d5dfab959b0d9ca98bfd390433">&#9670;&nbsp;</a></span>IsMultiMaster()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool kudu::client::KuduClient::IsMultiMaster </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><code>true</code> iff client is configured to talk to multiple Kudu master servers. </dd></dl>
</div>
</div>
<a id="a3ab09f69753b8c99ac7b2eeed03faa1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ab09f69753b8c99ac7b2eeed03faa1d">&#9670;&nbsp;</a></span>ListTables()</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::KuduClient::ListTables </td>
<td>(</td>
<td class="paramtype">std::vector&lt; std::string &gt; *&#160;</td>
<td class="paramname"><em>tables</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>filter</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>List only those tables whose names pass a substring match on <code>filter</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">tables</td><td>The placeholder for the result. Appended only on success. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">filter</td><td>Substring filter to use; empty sub-string filter matches all tables. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkudu_1_1Status.html" title="A representation of an operation&#39;s outcome.">Status</a> object for the operation. </dd></dl>
</div>
</div>
<a id="ae283a49551a081524b41f5d8e51e68d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae283a49551a081524b41f5d8e51e68d9">&#9670;&nbsp;</a></span>ListTabletServers()</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::KuduClient::ListTabletServers </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classkudu_1_1client_1_1KuduTabletServer.html">KuduTabletServer</a> * &gt; *&#160;</td>
<td class="paramname"><em>tablet_servers</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get information on current tablet servers.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">tablet_servers</td><td>The placeholder for the result. The caller takes ownership of the container's elements. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation status. </dd></dl>
</div>
</div>
<a id="a1f5b9bf8767b44f03f4d3220dfd5f925"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f5b9bf8767b44f03f4d3220dfd5f925">&#9670;&nbsp;</a></span>NewSession()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">sp::shared_ptr&lt;<a class="el" href="classkudu_1_1client_1_1KuduSession.html">KuduSession</a>&gt; kudu::client::KuduClient::NewSession </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new session for interacting with the cluster.</p>
<p>This is a fully local operation (no RPCs or blocking).</p>
<dl class="section return"><dt>Returns</dt><dd>A new session object; caller is responsible for destroying it. </dd></dl>
</div>
</div>
<a id="a116bbcf13dc0991ad2a3129630075aea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a116bbcf13dc0991ad2a3129630075aea">&#9670;&nbsp;</a></span>NewTableAlterer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduTableAlterer.html">KuduTableAlterer</a>* kudu::client::KuduClient::NewTableAlterer </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="classkudu_1_1client_1_1KuduTableAlterer.html" title="Alters an existing table based on the provided steps.">KuduTableAlterer</a> object.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table to alter. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to newly created object: it is the caller's responsibility to free it. </dd></dl>
</div>
</div>
<a id="a003f13604b4fb378f61e133a9b49d153"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a003f13604b4fb378f61e133a9b49d153">&#9670;&nbsp;</a></span>NewTableCreator()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduTableCreator.html">KuduTableCreator</a>* kudu::client::KuduClient::NewTableCreator </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="classkudu_1_1client_1_1KuduTableCreator.html" title="A helper class to create a new table with the desired options.">KuduTableCreator</a> object.</p>
<dl class="section return"><dt>Returns</dt><dd>Pointer to newly created object; it is the caller's responsibility to free it. </dd></dl>
</div>
</div>
<a id="acce5fd87acb241d2ce2686545f423345"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acce5fd87acb241d2ce2686545f423345">&#9670;&nbsp;</a></span>NewTransaction()</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::KuduClient::NewTransaction </td>
<td>(</td>
<td class="paramtype">sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a> &gt; *&#160;</td>
<td class="paramname"><em>txn</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start a multi-row transaction.</p>
<p>This method results in an RPC sent to a Kudu cluster to begin a multi-row distributed transaction. In case of success, the resulting transaction handle is output into the 'txn' parameter. That handle can be used to create a new <code><a class="el" href="classkudu_1_1client_1_1KuduSession.html" title="Representation of a Kudu client session.">KuduSession</a></code> using the <code>NewSession(const sp::shared_ptr&lt;KuduSession&gt;&amp;)</code> method. To commit or rollback all single-row write operations performed in the context of the newly created transaction, use <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#aaf0b693b1ff9a44399bea3ed1f22f495">KuduTransaction::Commit()</a></code> and <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html#a68b5c532b44f84beabe7ae7ca46889f8">KuduTransaction::Rollback()</a></code> methods correspondingly.</p>
<dl class="section note"><dt>Note</dt><dd>The newly created object starts sending keep-alive messages for the newly opened transaction as required by the keep-alive interval assigned to the transaction by the system. To keep the heartbeating, the newly created <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></code> should be kept in scope.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This method is experimental and may change or disappear in future.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">txn</td><td>[out] The resulting <code><a class="el" href="classkudu_1_1client_1_1KuduTransaction.html">KuduTransaction</a></code> object wrapped into a smart pointer. This 'out' parameter is populated iff the operation to begin a transaction was successful. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The status of underlying "begin transaction" operation. </dd></dl>
</div>
</div>
<a id="aa82a09718ffe68d3255195e736aec8d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa82a09718ffe68d3255195e736aec8d7">&#9670;&nbsp;</a></span>OpenTable()</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::KuduClient::OpenTable </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTable.html">KuduTable</a> &gt; *&#160;</td>
<td class="paramname"><em>table</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open table with the given name.</p>
<p>This method does an RPC to ensure that the table exists and looks up its schema.</p>
<dl class="section note"><dt>Note</dt><dd>New range partitions created by other clients will immediately be available after opening the table.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">table</td><td>The result table. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation status.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd><p class="startdd">Should we offer an async version of this as well? </p>
<p class="enddd">Probably should have a configurable timeout in <a class="el" href="classkudu_1_1client_1_1KuduClientBuilder.html" title="A &quot;factory&quot; for KuduClient objects.">KuduClientBuilder</a>? </p>
</dd></dl>
</div>
</div>
<a id="a0809b055eda76fd68988462f2a9791dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0809b055eda76fd68988462f2a9791dd">&#9670;&nbsp;</a></span>SetLatestObservedTimestamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void kudu::client::KuduClient::SetLatestObservedTimestamp </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>ht_timestamp</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the latest observed HybridTime timestamp.</p>
<p>This is only useful when forwarding timestamps between clients to enforce external consistency when using <a class="el" href="classkudu_1_1client_1_1KuduSession.html#aabd55109ba3b086bbe33b277cdd40d22ae978fab7451faebf4399830b603c855c">KuduSession::CLIENT_PROPAGATED</a> external consistency mode.</p>
<p>The HybridTime encoded timestamp should be obtained from another client's <a class="el" href="classkudu_1_1client_1_1KuduClient.html#aa4af2abf2a56d92d8795662fa090baa9">KuduClient::GetLatestObservedTimestamp()</a> method.</p>
<dl class="section note"><dt>Note</dt><dd>This method is experimental and will either disappear or change in a future release.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ht_timestamp</td><td>Timestamp encoded in HybridTime format. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a96e9a6c0a16a8825c291528ac27af818"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96e9a6c0a16a8825c291528ac27af818">&#9670;&nbsp;</a></span>TableExists()</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::KuduClient::TableExists </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>table_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool *&#160;</td>
<td class="paramname"><em>exists</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if the table given by 'table_name' exists.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table_name</td><td>Name of the table. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">exists</td><td>Set only on success; set to <code>true</code> iff table exists. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classkudu_1_1Status.html" title="A representation of an operation&#39;s outcome.">Status</a> object for the operation. </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a196f1a18c000cdca309d05161caaddaa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a196f1a18c000cdca309d05161caaddaa">&#9670;&nbsp;</a></span>kNoTimestamp</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint64_t kudu::client::KuduClient::kNoTimestamp</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Value for the latest observed timestamp when none has been observed or set. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/kudu/client/<a class="el" href="client_8h_source.html">client.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
<small>Generated for Kudu version 1.15.0 on Mon Jun 21 2021 20:36:36 by Doxygen 1.9.1</small>
<br>
<small>Copyright © 2021 The Apache Software Foundation.</small>
</address>
</body>
</html>