blob: aff38dcdedae7b3f611e121e6e3c2495d342cc2f [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.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: KuduScanner 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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.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.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('classKuduScanner.html','','classKuduScanner-members'); });
</script>
<div id="container">
<div id="doc-content">
<!-- 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 class="header">
<div class="headertitle"><div class="title">KuduScanner Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>This class is a representation of a single scan.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="client_8h_source.html">client.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-types" class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a36fdb59d6488618363331269d3f58348" id="r_a36fdb59d6488618363331269d3f58348"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a36fdb59d6488618363331269d3f58348">ReadMode</a> { <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a36fdb59d6488618363331269d3f58348a8694cef688d819806fa9a85b002231a8">READ_LATEST</a>
, <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a36fdb59d6488618363331269d3f58348a380798cc81589d865b7b2549e186b2e2">READ_AT_SNAPSHOT</a>
, <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a36fdb59d6488618363331269d3f58348af77adb329e45d7e0b1ac136dad8f8567">READ_YOUR_WRITES</a>
}</td></tr>
<tr class="memdesc:a36fdb59d6488618363331269d3f58348"><td class="mdescLeft">&#160;</td><td class="mdescRight">The read modes for scanners. <a href="#a36fdb59d6488618363331269d3f58348">More...</a><br /></td></tr>
<tr class="memitem:a3d6c79325c9da9741d0accf1b43bf7f9" id="r_a3d6c79325c9da9741d0accf1b43bf7f9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3d6c79325c9da9741d0accf1b43bf7f9">OrderMode</a> { <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a3d6c79325c9da9741d0accf1b43bf7f9adfeea547de613f36a0aff9f585671ec3">UNORDERED</a>
, <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a3d6c79325c9da9741d0accf1b43bf7f9a4395ad2ec57ce53e30d8b5748fa2c63a">ORDERED</a>
}</td></tr>
<tr class="memitem:a458cff1556ee4a9e583c0e436c87670d" id="r_a458cff1556ee4a9e583c0e436c87670d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>kScanTimeoutMillis</b> = 30000
}</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2c621f778072a02f4092e96a0baf8180" id="r_a2c621f778072a02f4092e96a0baf8180"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2c621f778072a02f4092e96a0baf8180">KuduScanner</a> (<a class="el" href="classkudu_1_1client_1_1KuduTable.html">KuduTable</a> *table)</td></tr>
<tr class="memitem:abb10b26056757bf81c410d3d5e6bcc01" id="r_abb10b26056757bf81c410d3d5e6bcc01"><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="#abb10b26056757bf81c410d3d5e6bcc01">SetProjectedColumnNames</a> (const std::vector&lt; std::string &gt; &amp;col_names) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a8d938c6efc1b36d456c91b5af0b1578d" id="r_a8d938c6efc1b36d456c91b5af0b1578d"><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="#a8d938c6efc1b36d456c91b5af0b1578d">SetProjectedColumnIndexes</a> (const std::vector&lt; int &gt; &amp;col_indexes) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a5eff07067d76a60ab12e2d555e3db1ce" id="r_a5eff07067d76a60ab12e2d555e3db1ce"><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="#a5eff07067d76a60ab12e2d555e3db1ce">SetProjectedColumns</a> (const std::vector&lt; std::string &gt; &amp;col_names) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a0d5bb07306f697ece10fc099d47dd1f2" id="r_a0d5bb07306f697ece10fc099d47dd1f2"><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="#a0d5bb07306f697ece10fc099d47dd1f2">SetQueryId</a> (const std::string &amp;query_id)</td></tr>
<tr class="memitem:a47b0fcd30f8002cb4fdcf69351896b74" id="r_a47b0fcd30f8002cb4fdcf69351896b74"><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="#a47b0fcd30f8002cb4fdcf69351896b74">AddConjunctPredicate</a> (<a class="el" href="classkudu_1_1client_1_1KuduPredicate.html">KuduPredicate</a> *pred) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a67691944fc112f43c565ab4486514b86" id="r_a67691944fc112f43c565ab4486514b86"><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="#a67691944fc112f43c565ab4486514b86">AddLowerBound</a> (const <a class="el" href="classKuduPartialRow.html">KuduPartialRow</a> &amp;key)</td></tr>
<tr class="memitem:aff1fbf928d29bceff805d7d8b9904282" id="r_aff1fbf928d29bceff805d7d8b9904282"><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="#aff1fbf928d29bceff805d7d8b9904282">AddLowerBoundRaw</a> (const Slice &amp;key)</td></tr>
<tr class="memitem:a551fd38d48a686f2662727a82e79bd3d" id="r_a551fd38d48a686f2662727a82e79bd3d"><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="#a551fd38d48a686f2662727a82e79bd3d">AddExclusiveUpperBound</a> (const <a class="el" href="classKuduPartialRow.html">KuduPartialRow</a> &amp;key)</td></tr>
<tr class="memitem:aaa45befeacfea4d7722c9f7c661fa83a" id="r_aaa45befeacfea4d7722c9f7c661fa83a"><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="#aaa45befeacfea4d7722c9f7c661fa83a">AddExclusiveUpperBoundRaw</a> (const Slice &amp;key)</td></tr>
<tr class="memitem:ab53b88307028a50f66bcffe5e78c6d6e" id="r_ab53b88307028a50f66bcffe5e78c6d6e"><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="#ab53b88307028a50f66bcffe5e78c6d6e">AddLowerBoundPartitionKeyRaw</a> (const Slice &amp;partition_key)</td></tr>
<tr class="memitem:aa951a6ec3aeb82c82afe35d8e3ba18a9" id="r_aa951a6ec3aeb82c82afe35d8e3ba18a9"><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="#aa951a6ec3aeb82c82afe35d8e3ba18a9">AddExclusiveUpperBoundPartitionKeyRaw</a> (const Slice &amp;partition_key)</td></tr>
<tr class="memitem:a4a4a2e354b3113561758b9bf4095d310" id="r_a4a4a2e354b3113561758b9bf4095d310"><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="#a4a4a2e354b3113561758b9bf4095d310">SetCacheBlocks</a> (bool cache_blocks)</td></tr>
<tr class="memitem:aa1ff3c11d9ac9f8183189ea5ac1ed9f1" id="r_aa1ff3c11d9ac9f8183189ea5ac1ed9f1"><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="#aa1ff3c11d9ac9f8183189ea5ac1ed9f1">Open</a> ()</td></tr>
<tr class="memitem:aa4a0caf7142880255d7aac1d75f33d21" id="r_aa4a0caf7142880255d7aac1d75f33d21"><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="#aa4a0caf7142880255d7aac1d75f33d21">KeepAlive</a> ()</td></tr>
<tr class="memitem:a77af993938e826c8b4a8749a6c907869" id="r_a77af993938e826c8b4a8749a6c907869"><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="#a77af993938e826c8b4a8749a6c907869">StartKeepAlivePeriodically</a> (uint64_t keep_alive_interval_ms=30000)</td></tr>
<tr class="memitem:af23fc2ed326b3cc4fa53acad684697d0" id="r_af23fc2ed326b3cc4fa53acad684697d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af23fc2ed326b3cc4fa53acad684697d0">StopKeepAlivePeriodically</a> ()</td></tr>
<tr class="memitem:ac673dd15cb038e75787af7e74087e874" id="r_ac673dd15cb038e75787af7e74087e874"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac673dd15cb038e75787af7e74087e874">Close</a> ()</td></tr>
<tr class="memitem:a4c4f46e8da9053621727a2e365196c94" id="r_a4c4f46e8da9053621727a2e365196c94"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4c4f46e8da9053621727a2e365196c94">HasMoreRows</a> () const</td></tr>
<tr class="memitem:a409a42496942e93df5f4879b7a348e87" id="r_a409a42496942e93df5f4879b7a348e87"><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="#a409a42496942e93df5f4879b7a348e87">NextBatch</a> (std::vector&lt; KuduRowResult &gt; *rows)</td></tr>
<tr class="memitem:af1475d9a0667839c1ed9c3714b47d487" id="r_af1475d9a0667839c1ed9c3714b47d487"><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="#af1475d9a0667839c1ed9c3714b47d487">NextBatch</a> (<a class="el" href="classkudu_1_1client_1_1KuduScanBatch.html">KuduScanBatch</a> *batch)</td></tr>
<tr class="memitem:a6508528f880d73d7d66e37752130fb81" id="r_a6508528f880d73d7d66e37752130fb81"><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="#a6508528f880d73d7d66e37752130fb81">NextBatch</a> (KuduColumnarScanBatch *batch)</td></tr>
<tr class="memitem:ac2bce7bd17627a3aa46f7d7fdb4c0c10" id="r_ac2bce7bd17627a3aa46f7d7fdb4c0c10"><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="#ac2bce7bd17627a3aa46f7d7fdb4c0c10">GetCurrentServer</a> (KuduTabletServer **server)</td></tr>
<tr class="memitem:acec75a69aa27a039263a5518b021c2c3" id="r_acec75a69aa27a039263a5518b021c2c3"><td class="memItemLeft" align="right" valign="top">const ResourceMetrics &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acec75a69aa27a039263a5518b021c2c3">GetResourceMetrics</a> () const</td></tr>
<tr class="memitem:af82c4ccb442c222033841dd65cf5a67c" id="r_af82c4ccb442c222033841dd65cf5a67c"><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="#af82c4ccb442c222033841dd65cf5a67c">SetBatchSizeBytes</a> (uint32_t batch_size)</td></tr>
<tr class="memitem:af1db3f372fe3d0f30cd0b6a36b783cc8" id="r_af1db3f372fe3d0f30cd0b6a36b783cc8"><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="#af1db3f372fe3d0f30cd0b6a36b783cc8">SetSelection</a> (<a class="el" href="classKuduClient.html#aef70c7f3a596ecda4040f9d46514b11a">KuduClient::ReplicaSelection</a> selection) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a248e0a05e7bfdc31b5b8d363a937e81e" id="r_a248e0a05e7bfdc31b5b8d363a937e81e"><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="#a248e0a05e7bfdc31b5b8d363a937e81e">SetReadMode</a> (<a class="el" href="#a36fdb59d6488618363331269d3f58348">ReadMode</a> read_mode) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a915b45a3edca37971235070c057a3e82" id="r_a915b45a3edca37971235070c057a3e82"><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="#a915b45a3edca37971235070c057a3e82">SetOrderMode</a> (<a class="el" href="#a3d6c79325c9da9741d0accf1b43bf7f9">OrderMode</a> order_mode) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a107a8a682c0977272e0ae47746d39e6f" id="r_a107a8a682c0977272e0ae47746d39e6f"><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="#a107a8a682c0977272e0ae47746d39e6f">SetFaultTolerant</a> () WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a5b36a405daf09399438d5501b25b9f9f" id="r_a5b36a405daf09399438d5501b25b9f9f"><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="#a5b36a405daf09399438d5501b25b9f9f">SetSnapshotMicros</a> (uint64_t snapshot_timestamp_micros) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:ab13dbb301197b411dec4cd6870801bae" id="r_ab13dbb301197b411dec4cd6870801bae"><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="#ab13dbb301197b411dec4cd6870801bae">SetSnapshotRaw</a> (uint64_t snapshot_timestamp) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:a97c9f5e6a1056484c88ced411e19bee6" id="r_a97c9f5e6a1056484c88ced411e19bee6"><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="#a97c9f5e6a1056484c88ced411e19bee6">SetTimeoutMillis</a> (int millis)</td></tr>
<tr class="memitem:a698eb4ea965b5f7d32770fff46635b82" id="r_a698eb4ea965b5f7d32770fff46635b82"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classkudu_1_1client_1_1KuduSchema.html">KuduSchema</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a698eb4ea965b5f7d32770fff46635b82">GetProjectionSchema</a> () const</td></tr>
<tr class="memitem:ace7abb2a8f7c853c2c81f570bb690b71" id="r_ace7abb2a8f7c853c2c81f570bb690b71"><td class="memItemLeft" align="right" valign="top">sp::shared_ptr&lt; <a class="el" href="classkudu_1_1client_1_1KuduTable.html">KuduTable</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ace7abb2a8f7c853c2c81f570bb690b71">GetKuduTable</a> ()</td></tr>
<tr class="memitem:a71608e5e773e74efe1e8ca2b881f14ac" id="r_a71608e5e773e74efe1e8ca2b881f14ac"><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="#a71608e5e773e74efe1e8ca2b881f14ac">SetLimit</a> (int64_t limit) WARN_UNUSED_RESULT</td></tr>
<tr class="memitem:aaf0d2cd7837f3d08866d6e5c1c3a0aae" id="r_aaf0d2cd7837f3d08866d6e5c1c3a0aae"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaf0d2cd7837f3d08866d6e5c1c3a0aae">ToString</a> () const</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-member-group" class="groupheader"><a id="member-group" name="member-group"></a>
Advanced/Unstable API</h2></td></tr>
<tr><td class="ititle" colspan="2"><p>Modifier flags for the row format returned from the server.</p>
<dl class="section note"><dt>Note</dt><dd>Each flag corresponds to a bit that gets set on a bitset that is sent to the server. See <a class="el" href="#a3dbaf4c2db6a37517a242dcb8ee64c11">SetRowFormatFlags()</a> for example usage. </dd></dl>
</td></tr>
<tr class="memitem:a68345956f3f4c7fd5e1665fd292f6a85" id="r_a68345956f3f4c7fd5e1665fd292f6a85"><td class="memItemLeft" align="right" valign="top"><a id="a68345956f3f4c7fd5e1665fd292f6a85" name="a68345956f3f4c7fd5e1665fd292f6a85"></a>
static const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>NO_FLAGS</b> = 0</td></tr>
<tr class="memdesc:a68345956f3f4c7fd5e1665fd292f6a85"><td class="mdescLeft">&#160;</td><td class="mdescRight">No flags set. <br /></td></tr>
<tr class="memitem:a63cd270f3bc72f4197d2581ec8f8fc44" id="r_a63cd270f3bc72f4197d2581ec8f8fc44"><td class="memItemLeft" align="right" valign="top">static const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a63cd270f3bc72f4197d2581ec8f8fc44">PAD_UNIXTIME_MICROS_TO_16_BYTES</a> = 1 &lt;&lt; 0</td></tr>
<tr class="memitem:ac524332b8cfac93065b1006847b16f10" id="r_ac524332b8cfac93065b1006847b16f10"><td class="memItemLeft" align="right" valign="top">static const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac524332b8cfac93065b1006847b16f10">COLUMNAR_LAYOUT</a> = 1 &lt;&lt; 1</td></tr>
<tr class="memitem:a3dbaf4c2db6a37517a242dcb8ee64c11" id="r_a3dbaf4c2db6a37517a242dcb8ee64c11"><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="#a3dbaf4c2db6a37517a242dcb8ee64c11">SetRowFormatFlags</a> (uint64_t flags)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This class is a representation of a single scan. </p>
<dl class="section note"><dt>Note</dt><dd>This class is not thread-safe, though different scanners on different threads may share a single <a class="el" href="classKuduTable.html" title="A representation of a table on a particular cluster.">KuduTable</a> object. </dd></dl>
</div><a name="doc-enum-members" id="doc-enum-members"></a><h2 id="header-doc-enum-members" class="groupheader">Member Enumeration Documentation</h2>
<a id="a458cff1556ee4a9e583c0e436c87670d" name="a458cff1556ee4a9e583c0e436c87670d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a458cff1556ee4a9e583c0e436c87670d">&#9670;&#160;</a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<p>Default scanner timeout. This is set to 3x the default RPC timeout returned by <a class="el" href="classKuduClientBuilder.html#a1ce899016722e579349f7e03861f2118">KuduClientBuilder::default_rpc_timeout()</a>. </p>
</div>
</div>
<a id="a3d6c79325c9da9741d0accf1b43bf7f9" name="a3d6c79325c9da9741d0accf1b43bf7f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d6c79325c9da9741d0accf1b43bf7f9">&#9670;&#160;</a></span>OrderMode</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a3d6c79325c9da9741d0accf1b43bf7f9">kudu::client::KuduScanner::OrderMode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether the rows should be returned in order.</p>
<p>This affects the fault-tolerance properties of a scanner. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3d6c79325c9da9741d0accf1b43bf7f9adfeea547de613f36a0aff9f585671ec3" name="a3d6c79325c9da9741d0accf1b43bf7f9adfeea547de613f36a0aff9f585671ec3"></a>UNORDERED&#160;</td><td class="fielddoc"><p>Rows will be returned in an arbitrary order determined by the tablet server. This is efficient, but unordered scans are not fault-tolerant and cannot be resumed in the case of tablet server failure.</p>
<p>This is the default mode. </p>
</td></tr>
<tr><td class="fieldname"><a id="a3d6c79325c9da9741d0accf1b43bf7f9a4395ad2ec57ce53e30d8b5748fa2c63a" name="a3d6c79325c9da9741d0accf1b43bf7f9a4395ad2ec57ce53e30d8b5748fa2c63a"></a>ORDERED&#160;</td><td class="fielddoc"><p>Rows will be returned ordered by primary key. Sorting the rows imposes additional overhead on the tablet server, but means that scans are fault-tolerant and will be resumed at another tablet server in the case of a failure. </p>
</td></tr>
</table>
</div>
</div>
<a id="a36fdb59d6488618363331269d3f58348" name="a36fdb59d6488618363331269d3f58348"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36fdb59d6488618363331269d3f58348">&#9670;&#160;</a></span>ReadMode</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a36fdb59d6488618363331269d3f58348">kudu::client::KuduScanner::ReadMode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>The read modes for scanners. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a36fdb59d6488618363331269d3f58348a8694cef688d819806fa9a85b002231a8" name="a36fdb59d6488618363331269d3f58348a8694cef688d819806fa9a85b002231a8"></a>READ_LATEST&#160;</td><td class="fielddoc"><p>When <code>READ_LATEST</code> is specified the server will always return committed writes at the time the request was received. This type of read does not return a snapshot timestamp and is not repeatable.</p>
<p>In ACID terms this corresponds to Isolation mode: "Read Committed"</p>
<p>This is the default mode. </p>
</td></tr>
<tr><td class="fieldname"><a id="a36fdb59d6488618363331269d3f58348a380798cc81589d865b7b2549e186b2e2" name="a36fdb59d6488618363331269d3f58348a380798cc81589d865b7b2549e186b2e2"></a>READ_AT_SNAPSHOT&#160;</td><td class="fielddoc"><p>When <code>READ_AT_SNAPSHOT</code> is specified the server will attempt to perform a read at the provided timestamp. If no timestamp is provided the server will take the current time as the snapshot timestamp. In this mode reads are repeatable, i.e. all future reads at the same timestamp will yield the same data. This is performed at the expense of waiting for in-flight ops whose timestamp is lower than the snapshot's timestamp to complete, so it might incur a latency penalty. See <a class="el" href="#a5b36a405daf09399438d5501b25b9f9f">KuduScanner::SetSnapshotMicros()</a> and <a class="el" href="#ab13dbb301197b411dec4cd6870801bae">KuduScanner::SetSnapshotRaw()</a> for details.</p>
<p>In ACID terms this, by itself, corresponds to Isolation mode "Repeatable
Read". If all writes to the scanned tablet are made externally consistent, then this corresponds to Isolation mode "Strict-Serializable".</p>
<dl class="section note"><dt>Note</dt><dd>There are currently "holes", which happen in rare edge conditions, by which writes are sometimes not externally consistent even when action was taken to make them so. In these cases Isolation may degenerate to mode "Read Committed". See KUDU-430. </dd></dl>
</td></tr>
<tr><td class="fieldname"><a id="a36fdb59d6488618363331269d3f58348af77adb329e45d7e0b1ac136dad8f8567" name="a36fdb59d6488618363331269d3f58348af77adb329e45d7e0b1ac136dad8f8567"></a>READ_YOUR_WRITES&#160;</td><td class="fielddoc"><p>When <code>READ_YOUR_WRITES</code> is specified, the client will perform a read such that it follows all previously known writes and reads from this client. Specifically this mode: (1) ensures read-your-writes and read-your-reads session guarantees, (2) minimizes latency caused by waiting for outstanding write ops to complete.</p>
<p>Reads in this mode are not repeatable: two READ_YOUR_WRITES reads, even if they provide the same propagated timestamp bound, can execute at different timestamps and thus return different results. </p>
</td></tr>
</table>
</div>
</div>
<a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a2c621f778072a02f4092e96a0baf8180" name="a2c621f778072a02f4092e96a0baf8180"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c621f778072a02f4092e96a0baf8180">&#9670;&#160;</a></span>KuduScanner()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">kudu::client::KuduScanner::KuduScanner </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classkudu_1_1client_1_1KuduTable.html">KuduTable</a> *</td> <td class="paramname"><span class="paramname"><em>table</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel explicit">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor for <a class="el" href="classKuduScanner.html" title="This class is a representation of a single scan.">KuduScanner</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">table</td><td>The table to perfrom scan. The given object must remain valid for the lifetime of this scanner object. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a47b0fcd30f8002cb4fdcf69351896b74" name="a47b0fcd30f8002cb4fdcf69351896b74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47b0fcd30f8002cb4fdcf69351896b74">&#9670;&#160;</a></span>AddConjunctPredicate()</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::KuduScanner::AddConjunctPredicate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classkudu_1_1client_1_1KuduPredicate.html">KuduPredicate</a> *</td> <td class="paramname"><span class="paramname"><em>pred</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a predicate for the scan.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pred</td><td>Predicate to set. The KuduScanTokenBuilder instance takes ownership of the parameter even if a bad <a class="el" href="classStatus.html" title="A representation of an operation&#39;s outcome.">Status</a> is returned. Multiple calls of this method make the specified set of predicates work in conjunction, i.e. all predicates must be true for a row to be returned. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a551fd38d48a686f2662727a82e79bd3d" name="a551fd38d48a686f2662727a82e79bd3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a551fd38d48a686f2662727a82e79bd3d">&#9670;&#160;</a></span>AddExclusiveUpperBound()</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::KuduScanner::AddExclusiveUpperBound </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classKuduPartialRow.html">KuduPartialRow</a> &amp;</td> <td class="paramname"><span class="paramname"><em>key</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add an upper bound (exclusive) primary key for the scan.</p>
<p>If any bound is already added, this bound is intersected with that one.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key to setup the upper bound. The scanner makes a copy of the parameter, the caller may free it afterward. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="aa951a6ec3aeb82c82afe35d8e3ba18a9" name="aa951a6ec3aeb82c82afe35d8e3ba18a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa951a6ec3aeb82c82afe35d8e3ba18a9">&#9670;&#160;</a></span>AddExclusiveUpperBoundPartitionKeyRaw()</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::KuduScanner::AddExclusiveUpperBoundPartitionKeyRaw </td>
<td>(</td>
<td class="paramtype">const Slice &amp;</td> <td class="paramname"><span class="paramname"><em>partition_key</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add an upper bound (exclusive) partition key for the scan.</p>
<dl class="section note"><dt>Note</dt><dd>This method is unstable, and for internal use only.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">partition_key</td><td>The scanner makes a copy of the parameter, the caller may invalidate it afterward. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="aaa45befeacfea4d7722c9f7c661fa83a" name="aaa45befeacfea4d7722c9f7c661fa83a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa45befeacfea4d7722c9f7c661fa83a">&#9670;&#160;</a></span>AddExclusiveUpperBoundRaw()</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::KuduScanner::AddExclusiveUpperBoundRaw </td>
<td>(</td>
<td class="paramtype">const Slice &amp;</td> <td class="paramname"><span class="paramname"><em>key</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add an upper bound (exclusive) primary key for the scan.</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated</a></b></dt><dd>Use <a class="el" href="#a551fd38d48a686f2662727a82e79bd3d">AddExclusiveUpperBound()</a> instead.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The encoded primary key is an opaque slice of data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a67691944fc112f43c565ab4486514b86" name="a67691944fc112f43c565ab4486514b86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67691944fc112f43c565ab4486514b86">&#9670;&#160;</a></span>AddLowerBound()</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::KuduScanner::AddLowerBound </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classKuduPartialRow.html">KuduPartialRow</a> &amp;</td> <td class="paramname"><span class="paramname"><em>key</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a lower bound (inclusive) primary key for the scan.</p>
<p>If any bound is already added, this bound is intersected with that one.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>Lower bound primary key to add. The KuduScanTokenBuilder instance does not take ownership of the parameter. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="ab53b88307028a50f66bcffe5e78c6d6e" name="ab53b88307028a50f66bcffe5e78c6d6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab53b88307028a50f66bcffe5e78c6d6e">&#9670;&#160;</a></span>AddLowerBoundPartitionKeyRaw()</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::KuduScanner::AddLowerBoundPartitionKeyRaw </td>
<td>(</td>
<td class="paramtype">const Slice &amp;</td> <td class="paramname"><span class="paramname"><em>partition_key</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a lower bound (inclusive) partition key for the scan.</p>
<dl class="section note"><dt>Note</dt><dd>This method is unstable, and for internal use only.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">partition_key</td><td>The scanner makes a copy of the parameter: the caller may invalidate it afterward. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="aff1fbf928d29bceff805d7d8b9904282" name="aff1fbf928d29bceff805d7d8b9904282"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff1fbf928d29bceff805d7d8b9904282">&#9670;&#160;</a></span>AddLowerBoundRaw()</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::KuduScanner::AddLowerBoundRaw </td>
<td>(</td>
<td class="paramtype">const Slice &amp;</td> <td class="paramname"><span class="paramname"><em>key</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add lower bound for the scan.</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated</a></b></dt><dd>Use <a class="el" href="#a67691944fc112f43c565ab4486514b86">AddLowerBound()</a> instead.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The primary key to use as an opaque slice of data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="ac673dd15cb038e75787af7e74087e874" name="ac673dd15cb038e75787af7e74087e874"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac673dd15cb038e75787af7e74087e874">&#9670;&#160;</a></span>Close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void kudu::client::KuduScanner::Close </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close the scanner.</p>
<p>Closing the scanner releases resources on the server. This call does not block, and will not ever fail, even if the server cannot be contacted.</p>
<dl class="section note"><dt>Note</dt><dd>The scanner is reset to its initial state by this function. You'll have to re-add any projection, predicates, etc if you want to reuse this object. </dd></dl>
</div>
</div>
<a id="ac2bce7bd17627a3aa46f7d7fdb4c0c10" name="ac2bce7bd17627a3aa46f7d7fdb4c0c10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2bce7bd17627a3aa46f7d7fdb4c0c10">&#9670;&#160;</a></span>GetCurrentServer()</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::KuduScanner::GetCurrentServer </td>
<td>(</td>
<td class="paramtype">KuduTabletServer **</td> <td class="paramname"><span class="paramname"><em>server</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the KuduTabletServer that is currently handling the scan.</p>
<p>More concretely, this is the server that handled the most recent <a class="el" href="#aa1ff3c11d9ac9f8183189ea5ac1ed9f1">Open()</a> or <a class="el" href="#a409a42496942e93df5f4879b7a348e87">NextBatch()</a> RPC made by the server.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">server</td><td>Placeholder for the result. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="ace7abb2a8f7c853c2c81f570bb690b71" name="ace7abb2a8f7c853c2c81f570bb690b71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace7abb2a8f7c853c2c81f570bb690b71">&#9670;&#160;</a></span>GetKuduTable()</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_1KuduTable.html">KuduTable</a> &gt; kudu::client::KuduScanner::GetKuduTable </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classKuduTable.html" title="A representation of a table on a particular cluster.">KuduTable</a> being scanned. </dd></dl>
</div>
</div>
<a id="a698eb4ea965b5f7d32770fff46635b82" name="a698eb4ea965b5f7d32770fff46635b82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a698eb4ea965b5f7d32770fff46635b82">&#9670;&#160;</a></span>GetProjectionSchema()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classkudu_1_1client_1_1KuduSchema.html">KuduSchema</a> kudu::client::KuduScanner::GetProjectionSchema </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Schema of the projection being scanned. </dd></dl>
</div>
</div>
<a id="acec75a69aa27a039263a5518b021c2c3" name="acec75a69aa27a039263a5518b021c2c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acec75a69aa27a039263a5518b021c2c3">&#9670;&#160;</a></span>GetResourceMetrics()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const ResourceMetrics &amp; kudu::client::KuduScanner::GetResourceMetrics </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Cumulative resource metrics since the scan was started. </dd></dl>
</div>
</div>
<a id="a4c4f46e8da9053621727a2e365196c94" name="a4c4f46e8da9053621727a2e365196c94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c4f46e8da9053621727a2e365196c94">&#9670;&#160;</a></span>HasMoreRows()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool kudu::client::KuduScanner::HasMoreRows </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if there may be rows to be fetched from this scanner.</p>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if there may be rows to be fetched from this scanner. The method returns <code>true</code> provided there's at least one more tablet left to scan, even if that tablet has no data (we'll only know once we scan it). It will also be <code>true</code> after the initially opening the scanner before NextBatch is called for the first time. </dd></dl>
</div>
</div>
<a id="aa4a0caf7142880255d7aac1d75f33d21" name="aa4a0caf7142880255d7aac1d75f33d21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4a0caf7142880255d7aac1d75f33d21">&#9670;&#160;</a></span>KeepAlive()</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::KuduScanner::KeepAlive </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Keep the current remote scanner alive.</p>
<p>Keep the current remote scanner alive on the Tablet server for an additional time-to-live. This is useful if the interval in between <a class="el" href="#a409a42496942e93df5f4879b7a348e87">NextBatch()</a> calls is big enough that the remote scanner might be garbage collected. The scanner time-to-live can be configured on the tablet server via the &ndash;scanner_ttl_ms configuration flag and has a default of 60 seconds.</p>
<p>This does not invalidate any previously fetched results.</p>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. In particular, this method returns a non-OK status if the scanner was already garbage collected or if the TabletServer was unreachable, for any reason. Note that a non-OK status returned by this method should not be taken as indication that the scan has failed. Subsequent calls to <a class="el" href="#a409a42496942e93df5f4879b7a348e87">NextBatch()</a> might still be successful, particularly if the scanner is configured to be fault tolerant. </dd></dl>
</div>
</div>
<a id="a6508528f880d73d7d66e37752130fb81" name="a6508528f880d73d7d66e37752130fb81"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6508528f880d73d7d66e37752130fb81">&#9670;&#160;</a></span>NextBatch() <span class="overload">[1/3]</span></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::KuduScanner::NextBatch </td>
<td>(</td>
<td class="paramtype">KuduColumnarScanBatch *</td> <td class="paramname"><span class="paramname"><em>batch</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch the next batch of columnar results for this scanner.</p>
<p>This variant may only be used when the scan is configured with the COLUMNAR_LAYOUT RowFormatFlag.</p>
<p>A single KuduColumnarScanBatch object may be reused. Each subsequent call replaces the data from the previous call, and invalidates any Slice objects previously obtained from the batch. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">batch</td><td>Placeholder for the result. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="af1475d9a0667839c1ed9c3714b47d487" name="af1475d9a0667839c1ed9c3714b47d487"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1475d9a0667839c1ed9c3714b47d487">&#9670;&#160;</a></span>NextBatch() <span class="overload">[2/3]</span></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::KuduScanner::NextBatch </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classkudu_1_1client_1_1KuduScanBatch.html">KuduScanBatch</a> *</td> <td class="paramname"><span class="paramname"><em>batch</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch the next batch of results for this scanner.</p>
<p>This variant may not be used when the scan is configured with the COLUMNAR_LAYOUT RowFormatFlag.</p>
<p>A single <a class="el" href="classKuduScanBatch.html" title="A batch of zero or more rows returned by a scan operation.">KuduScanBatch</a> object may be reused. Each subsequent call replaces the data from the previous call, and invalidates any <a class="el" href="classKuduScanBatch_1_1RowPtr.html" title="A handle for a single row in KuduScanBatch.">KuduScanBatch::RowPtr</a> objects previously obtained from the batch. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">batch</td><td>Placeholder for the result. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a409a42496942e93df5f4879b7a348e87" name="a409a42496942e93df5f4879b7a348e87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a409a42496942e93df5f4879b7a348e87">&#9670;&#160;</a></span>NextBatch() <span class="overload">[3/3]</span></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::KuduScanner::NextBatch </td>
<td>(</td>
<td class="paramtype">std::vector&lt; KuduRowResult &gt; *</td> <td class="paramname"><span class="paramname"><em>rows</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get next batch of rows.</p>
<p>Clears 'rows' and populates it with the next batch of rows from the tablet server. A call to <a class="el" href="#a409a42496942e93df5f4879b7a348e87">NextBatch()</a> invalidates all previously fetched results which might now be pointing to garbage memory.</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated</a></b></dt><dd>Use <a class="el" href="#af1475d9a0667839c1ed9c3714b47d487">NextBatch(KuduScanBatch*)</a> instead.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">rows</td><td>Placeholder for the result. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="aa1ff3c11d9ac9f8183189ea5ac1ed9f1" name="aa1ff3c11d9ac9f8183189ea5ac1ed9f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1ff3c11d9ac9f8183189ea5ac1ed9f1">&#9670;&#160;</a></span>Open()</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::KuduScanner::Open </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Result status of the operation (begin scanning). </dd></dl>
</div>
</div>
<a id="af82c4ccb442c222033841dd65cf5a67c" name="af82c4ccb442c222033841dd65cf5a67c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af82c4ccb442c222033841dd65cf5a67c">&#9670;&#160;</a></span>SetBatchSizeBytes()</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::KuduScanner::SetBatchSizeBytes </td>
<td>(</td>
<td class="paramtype">uint32_t</td> <td class="paramname"><span class="paramname"><em>batch_size</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the hint for the size of the next batch in bytes.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">batch_size</td><td>The hint of batch size to set. If setting to 0 before calling <a class="el" href="#aa1ff3c11d9ac9f8183189ea5ac1ed9f1">Open()</a>, it means that the first call to the tablet server won't return data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a4a4a2e354b3113561758b9bf4095d310" name="a4a4a2e354b3113561758b9bf4095d310"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a4a2e354b3113561758b9bf4095d310">&#9670;&#160;</a></span>SetCacheBlocks()</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::KuduScanner::SetCacheBlocks </td>
<td>(</td>
<td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>cache_blocks</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the block caching policy.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">cache_blocks</td><td>If <code>true</code>, scanned data blocks will be cached in memory and made available for future scans. Default is <code>true</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a107a8a682c0977272e0ae47746d39e6f" name="a107a8a682c0977272e0ae47746d39e6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a107a8a682c0977272e0ae47746d39e6f">&#9670;&#160;</a></span>SetFaultTolerant()</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::KuduScanner::SetFaultTolerant </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Make scans resumable at another tablet server if current server fails.</p>
<p>Scans are by default non fault-tolerant, and scans will fail if scanning an individual tablet fails (for example, if a tablet server crashes in the middle of a tablet scan). If this method is called, scans will be resumed at another tablet server in the case of failure.</p>
<p>Fault-tolerant scans typically have lower throughput than non fault-tolerant scans. Fault tolerant scans use <code>READ_AT_SNAPSHOT</code> mode: if no snapshot timestamp is provided, the server will pick one.</p>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a71608e5e773e74efe1e8ca2b881f14ac" name="a71608e5e773e74efe1e8ca2b881f14ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71608e5e773e74efe1e8ca2b881f14ac">&#9670;&#160;</a></span>SetLimit()</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::KuduScanner::SetLimit </td>
<td>(</td>
<td class="paramtype">int64_t</td> <td class="paramname"><span class="paramname"><em>limit</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the maximum number of rows the scanner should return.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">limit</td><td>Limit on the number of rows to return. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a915b45a3edca37971235070c057a3e82" name="a915b45a3edca37971235070c057a3e82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a915b45a3edca37971235070c057a3e82">&#9670;&#160;</a></span>SetOrderMode()</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::KuduScanner::SetOrderMode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="#a3d6c79325c9da9741d0accf1b43bf7f9">OrderMode</a></td> <td class="paramname"><span class="paramname"><em>order_mode</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated</a></b></dt><dd>Use <a class="el" href="#a107a8a682c0977272e0ae47746d39e6f">SetFaultTolerant()</a> instead.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">order_mode</td><td>Result record ordering mode to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a8d938c6efc1b36d456c91b5af0b1578d" name="a8d938c6efc1b36d456c91b5af0b1578d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d938c6efc1b36d456c91b5af0b1578d">&#9670;&#160;</a></span>SetProjectedColumnIndexes()</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::KuduScanner::SetProjectedColumnIndexes </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>col_indexes</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the column projection by passing the column indexes to read.</p>
<p>Set the column projection used for this scanner by passing the column indices to read. A call to this method overrides any previous call to <a class="el" href="#abb10b26056757bf81c410d3d5e6bcc01">SetProjectedColumnNames()</a> or <a class="el" href="#a8d938c6efc1b36d456c91b5af0b1578d">SetProjectedColumnIndexes()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">col_indexes</td><td>Column indices for the projection. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="abb10b26056757bf81c410d3d5e6bcc01" name="abb10b26056757bf81c410d3d5e6bcc01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb10b26056757bf81c410d3d5e6bcc01">&#9670;&#160;</a></span>SetProjectedColumnNames()</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::KuduScanner::SetProjectedColumnNames </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>col_names</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the projection for the scanner using column names.</p>
<p>Set the projection used for the scanner by passing column names to read. This overrides any previous call to <a class="el" href="#abb10b26056757bf81c410d3d5e6bcc01">SetProjectedColumnNames()</a> or <a class="el" href="#a8d938c6efc1b36d456c91b5af0b1578d">SetProjectedColumnIndexes()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">col_names</td><td>Column names to use for the projection. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a5eff07067d76a60ab12e2d555e3db1ce" name="a5eff07067d76a60ab12e2d555e3db1ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5eff07067d76a60ab12e2d555e3db1ce">&#9670;&#160;</a></span>SetProjectedColumns()</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::KuduScanner::SetProjectedColumns </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>col_names</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000003">Deprecated</a></b></dt><dd>Use <a class="el" href="#abb10b26056757bf81c410d3d5e6bcc01">SetProjectedColumnNames()</a> instead.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">col_names</td><td>Column names to use for the projection. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a0d5bb07306f697ece10fc099d47dd1f2" name="a0d5bb07306f697ece10fc099d47dd1f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d5bb07306f697ece10fc099d47dd1f2">&#9670;&#160;</a></span>SetQueryId()</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::KuduScanner::SetQueryId </td>
<td>(</td>
<td class="paramtype">const std::string &amp;</td> <td class="paramname"><span class="paramname"><em>query_id</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a query id for the scan to trace the whole scanning process. Query id is posted by the user or generated automatically by the client library code. It is used to trace the whole query process for debugging.</p>
<p>Example usage: </p><div class="fragment"><div class="line"><a class="code hl_function" href="#a2c621f778072a02f4092e96a0baf8180">KuduScanner</a> scanner(...);</div>
<div class="line">scanner.SetQueryId(query_id);</div>
<div class="line">scanner.Open();</div>
<div class="line"><span class="keywordflow">while</span> (scanner.HasMoreRows()) {</div>
<div class="line"> <a class="code hl_class" href="classkudu_1_1client_1_1KuduScanBatch.html">KuduScanBatch</a> batch;</div>
<div class="line"> scanner.NextBatch(&amp;batch);</div>
<div class="line">}</div>
<div class="ttc" id="aclassKuduScanner_html_a2c621f778072a02f4092e96a0baf8180"><div class="ttname"><a href="#a2c621f778072a02f4092e96a0baf8180">KuduScanner::KuduScanner</a></div><div class="ttdeci">KuduScanner(KuduTable *table)</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduScanBatch_html"><div class="ttname"><a href="classkudu_1_1client_1_1KuduScanBatch.html">kudu::client::KuduScanBatch</a></div><div class="ttdoc">A batch of zero or more rows returned by a scan operation.</div><div class="ttdef"><b>Definition</b> scan_batch.h:84</div></div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">query_id</td><td>A query id to identify a query. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a248e0a05e7bfdc31b5b8d363a937e81e" name="a248e0a05e7bfdc31b5b8d363a937e81e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a248e0a05e7bfdc31b5b8d363a937e81e">&#9670;&#160;</a></span>SetReadMode()</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::KuduScanner::SetReadMode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="#a36fdb59d6488618363331269d3f58348">ReadMode</a></td> <td class="paramname"><span class="paramname"><em>read_mode</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the <a class="el" href="#a36fdb59d6488618363331269d3f58348" title="The read modes for scanners.">ReadMode</a>. Default is <code>READ_LATEST</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">read_mode</td><td>Read mode to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a3dbaf4c2db6a37517a242dcb8ee64c11" name="a3dbaf4c2db6a37517a242dcb8ee64c11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3dbaf4c2db6a37517a242dcb8ee64c11">&#9670;&#160;</a></span>SetRowFormatFlags()</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::KuduScanner::SetRowFormatFlags </td>
<td>(</td>
<td class="paramtype">uint64_t</td> <td class="paramname"><span class="paramname"><em>flags</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Optionally set row format modifier flags.</p>
<p>If flags is RowFormatFlags::NO_FLAGS, then no modifications will be made to the row format and the default will be used.</p>
<p>Some flags require server-side server-side support, thus the caller should be prepared to handle a NotSupported status in <a class="el" href="#aa1ff3c11d9ac9f8183189ea5ac1ed9f1">Open()</a> and <a class="el" href="#a409a42496942e93df5f4879b7a348e87">NextBatch()</a>.</p>
<p>Example usage (without error handling, for brevity): </p><div class="fragment"><div class="line"><a class="code hl_function" href="#a2c621f778072a02f4092e96a0baf8180">KuduScanner</a> scanner(...);</div>
<div class="line">uint64_t row_format_flags = <a class="code hl_variable" href="#a68345956f3f4c7fd5e1665fd292f6a85">KuduScanner::NO_FLAGS</a>;</div>
<div class="line">row_format_flags |= <a class="code hl_variable" href="#a63cd270f3bc72f4197d2581ec8f8fc44">KuduScanner::PAD_UNIXTIME_MICROS_TO_16_BYTES</a>;</div>
<div class="line">scanner.SetRowFormatFlags(row_format_flags);</div>
<div class="line">scanner.Open();</div>
<div class="line"><span class="keywordflow">while</span> (scanner.HasMoreRows()) {</div>
<div class="line"> <a class="code hl_class" href="classkudu_1_1client_1_1KuduScanBatch.html">KuduScanBatch</a> batch;</div>
<div class="line"> scanner.NextBatch(&amp;batch);</div>
<div class="line"> Slice direct_data = batch.<a class="code hl_function" href="classkudu_1_1client_1_1KuduScanBatch.html#a09bfd1652c0ab153ca6759317c3d3992">direct_data</a>();</div>
<div class="line"> Slice indirect_data = batch.<a class="code hl_function" href="classkudu_1_1client_1_1KuduScanBatch.html#a3cb4c17aa228e680ecf088a29a075989">indirect_data</a>();</div>
<div class="line"> ... <span class="comment">// Row data decoding and handling.</span></div>
<div class="line">}</div>
<div class="ttc" id="aclassKuduScanner_html_a63cd270f3bc72f4197d2581ec8f8fc44"><div class="ttname"><a href="#a63cd270f3bc72f4197d2581ec8f8fc44">KuduScanner::PAD_UNIXTIME_MICROS_TO_16_BYTES</a></div><div class="ttdeci">static const uint64_t PAD_UNIXTIME_MICROS_TO_16_BYTES</div><div class="ttdef"><b>Definition</b> client.h:3185</div></div>
<div class="ttc" id="aclassKuduScanner_html_a68345956f3f4c7fd5e1665fd292f6a85"><div class="ttname"><a href="#a68345956f3f4c7fd5e1665fd292f6a85">KuduScanner::NO_FLAGS</a></div><div class="ttdeci">static const uint64_t NO_FLAGS</div><div class="ttdoc">No flags set.</div><div class="ttdef"><b>Definition</b> client.h:3178</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduScanBatch_html_a09bfd1652c0ab153ca6759317c3d3992"><div class="ttname"><a href="classkudu_1_1client_1_1KuduScanBatch.html#a09bfd1652c0ab153ca6759317c3d3992">kudu::client::KuduScanBatch::direct_data</a></div><div class="ttdeci">Slice direct_data() const</div></div>
<div class="ttc" id="aclasskudu_1_1client_1_1KuduScanBatch_html_a3cb4c17aa228e680ecf088a29a075989"><div class="ttname"><a href="classkudu_1_1client_1_1KuduScanBatch.html#a3cb4c17aa228e680ecf088a29a075989">kudu::client::KuduScanBatch::indirect_data</a></div><div class="ttdeci">Slice indirect_data() const</div></div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Row format modifier flags to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="af1db3f372fe3d0f30cd0b6a36b783cc8" name="af1db3f372fe3d0f30cd0b6a36b783cc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1db3f372fe3d0f30cd0b6a36b783cc8">&#9670;&#160;</a></span>SetSelection()</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::KuduScanner::SetSelection </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKuduClient.html#aef70c7f3a596ecda4040f9d46514b11a">KuduClient::ReplicaSelection</a></td> <td class="paramname"><span class="paramname"><em>selection</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the replica selection policy while scanning.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">selection</td><td>The policy to set. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo</a></b></dt><dd>Kill this method in favor of a consistency-level-based API. </dd></dl>
</div>
</div>
<a id="a5b36a405daf09399438d5501b25b9f9f" name="a5b36a405daf09399438d5501b25b9f9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b36a405daf09399438d5501b25b9f9f">&#9670;&#160;</a></span>SetSnapshotMicros()</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::KuduScanner::SetSnapshotMicros </td>
<td>(</td>
<td class="paramtype">uint64_t</td> <td class="paramname"><span class="paramname"><em>snapshot_timestamp_micros</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set snapshot timestamp for scans in <code>READ_AT_SNAPSHOT</code> mode.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">snapshot_timestamp_micros</td><td>Timestamp to set in in microseconds since the Epoch. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="ab13dbb301197b411dec4cd6870801bae" name="ab13dbb301197b411dec4cd6870801bae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab13dbb301197b411dec4cd6870801bae">&#9670;&#160;</a></span>SetSnapshotRaw()</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::KuduScanner::SetSnapshotRaw </td>
<td>(</td>
<td class="paramtype">uint64_t</td> <td class="paramname"><span class="paramname"><em>snapshot_timestamp</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set snapshot timestamp for scans in <code>READ_AT_SNAPSHOT</code> mode (raw).</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">snapshot_timestamp</td><td>Timestamp to set in raw encoded form (i.e. as returned by a previous call to a server). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a97c9f5e6a1056484c88ced411e19bee6" name="a97c9f5e6a1056484c88ced411e19bee6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97c9f5e6a1056484c88ced411e19bee6">&#9670;&#160;</a></span>SetTimeoutMillis()</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::KuduScanner::SetTimeoutMillis </td>
<td>(</td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>millis</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the maximum time that <a class="el" href="#aa1ff3c11d9ac9f8183189ea5ac1ed9f1">Open()</a> and <a class="el" href="#a409a42496942e93df5f4879b7a348e87">NextBatch()</a> are allowed to take.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">millis</td><td>Timeout to set (in milliseconds). Must be greater than 0. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a77af993938e826c8b4a8749a6c907869" name="a77af993938e826c8b4a8749a6c907869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77af993938e826c8b4a8749a6c907869">&#9670;&#160;</a></span>StartKeepAlivePeriodically()</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::KuduScanner::StartKeepAlivePeriodically </td>
<td>(</td>
<td class="paramtype">uint64_t</td> <td class="paramname"><span class="paramname"><em>keep_alive_interval_ms</em></span><span class="paramdefsep"> = </span><span class="paramdefval">30000</span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Keep the current remote scanner alive by sending keep-alive requests periodically.</p>
<p>This function uses a timer to call <a class="el" href="#aa4a0caf7142880255d7aac1d75f33d21">KeepAlive()</a> periodically which is defined by parameter keep_alive_interval_ms. It sends keep-alive requests to the server periodically using a separate thread. This is useful if the client takes long time to handle the fetched data before having the chance to call <a class="el" href="#aa4a0caf7142880255d7aac1d75f33d21">KeepAlive()</a>. This can be called after the scanner is opened and the timer can be stopped by calling <a class="el" href="#af23fc2ed326b3cc4fa53acad684697d0">StopKeepAlivePeriodically()</a>.</p>
<dl class="section note"><dt>Note</dt><dd>This method isn't thread-safe.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">keep_alive_interval_ms</td><td>The interval to send keep alive request. The default value is 30000 ms, which is half of the default setting for the &ndash;scanner_ttl_ms scanner. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>It returns a non-OK if the scanner is not opened. </dd></dl>
</div>
</div>
<a id="af23fc2ed326b3cc4fa53acad684697d0" name="af23fc2ed326b3cc4fa53acad684697d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af23fc2ed326b3cc4fa53acad684697d0">&#9670;&#160;</a></span>StopKeepAlivePeriodically()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void kudu::client::KuduScanner::StopKeepAlivePeriodically </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop keeping the current remote scanner alive periodically.</p>
<p>This function stops to send keep-alive requests to the server periodically. After function StartKeepAlivePeriodically is called, this function can be used to stop the keep-alive timer at any time. The timer will be stopped automatically after finishing scanning. But it can also be stopped manually by calling this function. </p>
</div>
</div>
<a id="aaf0d2cd7837f3d08866d6e5c1c3a0aae" name="aaf0d2cd7837f3d08866d6e5c1c3a0aae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf0d2cd7837f3d08866d6e5c1c3a0aae">&#9670;&#160;</a></span>ToString()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string kudu::client::KuduScanner::ToString </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>String representation of this scan. </dd></dl>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="ac524332b8cfac93065b1006847b16f10" name="ac524332b8cfac93065b1006847b16f10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac524332b8cfac93065b1006847b16f10">&#9670;&#160;</a></span>COLUMNAR_LAYOUT</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::KuduScanner::COLUMNAR_LAYOUT = 1 &lt;&lt; 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enable column-oriented data transfer. The server will transfer data to the client in a columnar format rather than a row-wise format. The KuduColumnarScanBatch API must be used to fetch results from this scan.</p>
<p>NOTE: older versions of the Kudu server do not support this feature. Clients aiming to support compatibility with previous versions should have a fallback code path. </p>
</div>
</div>
<a id="a63cd270f3bc72f4197d2581ec8f8fc44" name="a63cd270f3bc72f4197d2581ec8f8fc44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63cd270f3bc72f4197d2581ec8f8fc44">&#9670;&#160;</a></span>PAD_UNIXTIME_MICROS_TO_16_BYTES</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::KuduScanner::PAD_UNIXTIME_MICROS_TO_16_BYTES = 1 &lt;&lt; 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>This flag actually wastes throughput by making messages larger than they need to be. It exists merely for compatibility reasons and requires the user to know the row format in order to decode the data. That is, if this flag is enabled, the user <em>must</em> use <a class="el" href="classKuduScanBatch.html#a09bfd1652c0ab153ca6759317c3d3992">KuduScanBatch::direct_data()</a> and <a class="el" href="classKuduScanBatch.html#a3cb4c17aa228e680ecf088a29a075989">KuduScanBatch::indirect_data()</a> to obtain the row data for further decoding. Using <a class="el" href="classKuduScanBatch.html#a3f6366606eec7f0d0a8953ff6a81c320">KuduScanBatch::Row()</a> might yield incorrect/corrupt results and might even cause the client to crash. </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="client_8h_source.html">client.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
<small>Generated for Kudu version 1.18.0 on Wed Jul 9 2025 13:08:41 by Doxygen 1.14.0</small>
<br>
<small>Copyright © 2025 The Apache Software Foundation.</small>
</address>
</body>
</html>