<!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: Deprecated List</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><!-- top -->
<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Deprecated List </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduColumnStorageAttributes.html#aeb835a12e6f40b1a619afa8abd773b6da28c1ed31be30579070232164c24b4b82">kudu::client::KuduColumnStorageAttributes::GROUP_VARINT</a>  </dt>
<dd><a class="anchor" id="_deprecated000010"></a>GROUP_VARINT is not supported for valid types, and will fall back to another encoding on the server side.  </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduColumnStorageAttributes.html#a2d6e5bec50a7305b3b4d75d21d000fab">kudu::client::KuduColumnStorageAttributes::KuduColumnStorageAttributes</a>  (EncodingType encoding=AUTO_ENCODING, CompressionType compression=DEFAULT_COMPRESSION, int32_t block_size=0) ATTRIBUTE_DEPRECATED("this const ructor will be private in a future release")</dt>
<dd><a class="anchor" id="_deprecated000009"></a>This constructor is deprecated for external use, and will be made private in a future release. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#aefb6badecb950d5089b2f9d29d1f2ffe">kudu::client::KuduScanner::AddExclusiveUpperBoundRaw</a>  (const <a class="el" href="classkudu_1_1Slice.html" title="A wrapper around externally allocated data.">Slice</a> &amp;key) ATTRIBUTE_DEPRECATED("use AddExclusiveUpperBound() instead")</dt>
<dd><a class="anchor" id="_deprecated000005"></a>Use <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a551fd38d48a686f2662727a82e79bd3d">AddExclusiveUpperBound()</a> instead. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a3e51a978f3e54237fa60f7447ef3436e">kudu::client::KuduScanner::AddLowerBoundRaw</a>  (const <a class="el" href="classkudu_1_1Slice.html" title="A wrapper around externally allocated data.">Slice</a> &amp;key) ATTRIBUTE_DEPRECATED("use AddLowerBound() instead")</dt>
<dd><a class="anchor" id="_deprecated000004"></a>Use <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a67691944fc112f43c565ab4486514b86">AddLowerBound()</a> instead. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#af365f1d3b3b34aeb7d016727a9019067">kudu::client::KuduScanner::NextBatch</a>  (std::vector&lt; KuduRowResult &gt; *rows) ATTRIBUTE_DEPRECATED("use NextBatch(KuduScanBatch*) instead")</dt>
<dd><a class="anchor" id="_deprecated000006"></a>Use <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#af1475d9a0667839c1ed9c3714b47d487">NextBatch(KuduScanBatch*)</a> instead. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a93a87740ea75c9b6524dc229576b69fc">kudu::client::KuduScanner::SetOrderMode</a>  (OrderMode order_mode) WARN_UNUSED_RESULT ATTRIBUTE_DEPRECATED("use SetFaultTolerant() instead")</dt>
<dd><a class="anchor" id="_deprecated000007"></a>Use <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a107a8a682c0977272e0ae47746d39e6f">SetFaultTolerant()</a> instead. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#a68e2115cde71e113674e7a8b4df399ad">kudu::client::KuduScanner::SetProjectedColumns</a>  (const std::vector&lt; std::string &gt; &amp;col_names) WARN_UNUSED_RESULT ATTRIBUTE_DEPRECATED("use SetProjectedColumnNames() instead")</dt>
<dd><a class="anchor" id="_deprecated000003"></a>Use <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#abb10b26056757bf81c410d3d5e6bcc01">SetProjectedColumnNames()</a> instead. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduSchema.html#a3f51ccf1a7e6f4a4fe4958073305dbab">kudu::client::KuduSchema::Reset</a>  (const std::vector&lt; KuduColumnSchema &gt; &amp;columns, int key_columns) WARN_UNUSED_RESULT</dt>
<dd><a class="anchor" id="_deprecated000012"></a>This method will be removed soon. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduSession.html#a24e68920465b5bb06f0426dea5970112">kudu::client::KuduSession::CountBufferedOperations</a>  () const ATTRIBUTE_DEPRECATED("this method is experimental and will disappear " "in a future release")</dt>
<dd><a class="anchor" id="_deprecated000002"></a>This method is experimental and will disappear in a future release. </dd>
<dt>Member <a class="el" href="classkudu_1_1client_1_1KuduTableCreator.html#ae12cc7c72da40f25b079273a6169faf9">kudu::client::KuduTableCreator::split_rows</a>  (const std::vector&lt; const KuduPartialRow * &gt; &amp;split_rows) ATTRIBUTE_DEPRECATED("use add_range_partition_split() instead")</dt>
<dd><a class="anchor" id="_deprecated000001"></a>Use <code><a class="el" href="classkudu_1_1client_1_1KuduTableCreator.html#adbdd2208d9ede696704fbecea15bea1f">add_range_partition_split()</a></code> instead.</dd>
</dl>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- 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>
