blob: cf56e016f6004fd288c1a7a696e86c297774781d [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.8.19"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: kudu::client::KuduColumnarScanBatch 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.8.19 -->
<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');
/* @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_1KuduColumnarScanBatch.html">KuduColumnarScanBatch</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classkudu_1_1client_1_1KuduColumnarScanBatch-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">kudu::client::KuduColumnarScanBatch Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A batch of columnar data returned from a scanner.
<a href="classkudu_1_1client_1_1KuduColumnarScanBatch.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="columnar__scan__batch_8h_source.html">columnar_scan_batch.h</a>&gt;</code></p>
<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:acd1c9a1f894dc35fdb3e9e04ecb100e7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1client_1_1KuduColumnarScanBatch.html#acd1c9a1f894dc35fdb3e9e04ecb100e7">NumRows</a> () const</td></tr>
<tr class="separator:acd1c9a1f894dc35fdb3e9e04ecb100e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a407f9f0dfe0e7f489ef015a422055300"><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_1KuduColumnarScanBatch.html#a407f9f0dfe0e7f489ef015a422055300">GetFixedLengthColumn</a> (int idx, <a class="el" href="classkudu_1_1Slice.html">Slice</a> *data) const</td></tr>
<tr class="separator:a407f9f0dfe0e7f489ef015a422055300"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36907b80d801e8f55fc7136e21973ed1"><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_1KuduColumnarScanBatch.html#a36907b80d801e8f55fc7136e21973ed1">GetVariableLengthColumn</a> (int idx, <a class="el" href="classkudu_1_1Slice.html">Slice</a> *offsets, <a class="el" href="classkudu_1_1Slice.html">Slice</a> *data) const</td></tr>
<tr class="separator:a36907b80d801e8f55fc7136e21973ed1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeab3521399ba6aa8672cc9fa6e626312"><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_1KuduColumnarScanBatch.html#aeab3521399ba6aa8672cc9fa6e626312">GetNonNullBitmapForColumn</a> (int idx, <a class="el" href="classkudu_1_1Slice.html">Slice</a> *data) const</td></tr>
<tr class="separator:aeab3521399ba6aa8672cc9fa6e626312"><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 batch of columnar data returned from a scanner. </p>
<p>Similar to <a class="el" href="classkudu_1_1client_1_1KuduScanBatch.html" title="A batch of zero or more rows returned by a scan operation.">KuduScanBatch</a>, this contains a batch of rows returned from a scanner. This type of batch is used if the <a class="el" href="classkudu_1_1client_1_1KuduScanner.html#ac524332b8cfac93065b1006847b16f10">KuduScanner::COLUMNAR_LAYOUT</a> row format flag is enabled.</p>
<p>Retrieving rows in columnar layout can be significantly more efficient. It saves some CPU cycles on the Kudu cluster and can also enable faster processing of the returned data in certain client applications.</p>
<p>The columnar data retrieved by this class matches the columnar encoding described by Apache Arrow[1], but without the alignment and padding guarantees that are made by the Arrow IPC serialization.</p>
<p>[1] <a href="https://arrow.apache.org/docs/format/Columnar.html">https://arrow.apache.org/docs/format/Columnar.html</a></p>
<p>NOTE: this class is not thread-safe. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a407f9f0dfe0e7f489ef015a422055300"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a407f9f0dfe0e7f489ef015a422055300">&#9670;&nbsp;</a></span>GetFixedLengthColumn()</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::KuduColumnarScanBatch::GetFixedLengthColumn </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classkudu_1_1Slice.html">Slice</a> *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the raw columnar data corresponding to the primitive-typed column with index 'idx'.</p>
<p>For variable-length (e.g. STRING, BINARY, VARCHAR) columns, use GetVariableLengthColumn instead.</p>
<dl class="section note"><dt>Note</dt><dd>The <a class="el" href="classkudu_1_1Slice.html" title="A wrapper around externally allocated data.">Slice</a> returned is only valid for the lifetime of the <a class="el" href="classkudu_1_1client_1_1KuduColumnarScanBatch.html" title="A batch of columnar data returned from a scanner.">KuduColumnarScanBatch</a>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>The column index. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>The data is in little-endian packed array format. No alignment or padding is guaranteed. Space is reserved for all cells regardless of whether they might be null. The data stored in a null cell may or may not be zeroed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="aeab3521399ba6aa8672cc9fa6e626312"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeab3521399ba6aa8672cc9fa6e626312">&#9670;&nbsp;</a></span>GetNonNullBitmapForColumn()</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::KuduColumnarScanBatch::GetNonNullBitmapForColumn </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classkudu_1_1Slice.html">Slice</a> *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a bitmap corresponding to the non-null status of the cells in the given column.</p>
<p>It is an error to call this function on a column which is not marked as nullable in the schema.</p>
<dl class="section note"><dt>Note</dt><dd>The <a class="el" href="classkudu_1_1Slice.html" title="A wrapper around externally allocated data.">Slice</a> returned is only valid for the lifetime of the <a class="el" href="classkudu_1_1client_1_1KuduColumnarScanBatch.html" title="A batch of columnar data returned from a scanner.">KuduColumnarScanBatch</a>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>The column index. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>The bitmap corresponding to the non-null status of the cells in the given column. A set bit indicates a non-null cell. If the number of rows is not a multiple of 8, the state of the trailing bits in the bitmap is undefined. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="a36907b80d801e8f55fc7136e21973ed1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a36907b80d801e8f55fc7136e21973ed1">&#9670;&nbsp;</a></span>GetVariableLengthColumn()</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::KuduColumnarScanBatch::GetVariableLengthColumn </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classkudu_1_1Slice.html">Slice</a> *&#160;</td>
<td class="paramname"><em>offsets</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classkudu_1_1Slice.html">Slice</a> *&#160;</td>
<td class="paramname"><em>data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the variable-length data for the variable-length-typed column with index 'idx'.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>The column index. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">offsets</td><td>If <a class="el" href="classkudu_1_1client_1_1KuduColumnarScanBatch.html#acd1c9a1f894dc35fdb3e9e04ecb100e7">NumRows()</a> is 0, the 'offsets' array will have length 0. Otherwise, this array will contain <a class="el" href="classkudu_1_1client_1_1KuduColumnarScanBatch.html#acd1c9a1f894dc35fdb3e9e04ecb100e7">NumRows()</a> + 1 entries, each indicating an offset within the variable-length data array returned in 'data'. For each cell with index 'n', offsets[n] indicates the starting offset of that cell, and offsets[n+1] indicates the ending offset of that cell. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>The variable-length data. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Operation result status. </dd></dl>
</div>
</div>
<a id="acd1c9a1f894dc35fdb3e9e04ecb100e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd1c9a1f894dc35fdb3e9e04ecb100e7">&#9670;&nbsp;</a></span>NumRows()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int kudu::client::KuduColumnarScanBatch::NumRows </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>The number of rows in this batch. </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="columnar__scan__batch_8h_source.html">columnar_scan_batch.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
<small>Generated for Kudu version 1.13.0 on Fri Sep 18 2020 15:03:20 by Doxygen 1.8.19</small>
<br>
<small>Copyright © 2020 The Apache Software Foundation.</small>
</address>
</body>
</html>