| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.6"/> |
| <title>Impala: be/src/runtime/row-batch.cc Source File</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="navtree.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="resize.js"></script> |
| <script type="text/javascript" src="navtree.js"></script> |
| <script type="text/javascript"> |
| $(document).ready(initResizable); |
| $(window).load(resizeHeight); |
| </script> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="search/search.js"></script> |
| <script type="text/javascript"> |
| $(document).ready(function() { searchBox.OnSelectItem(0); }); |
| </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 style="padding-left: 0.5em;"> |
| <div id="projectname">Impala |
| </div> |
| <div id="projectbrief">Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.6 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <div id="navrow1" class="tabs"> |
| <ul class="tablist"> |
| <li><a href="index.html"><span>Main Page</span></a></li> |
| <li><a href="namespaces.html"><span>Namespaces</span></a></li> |
| <li><a href="annotated.html"><span>Classes</span></a></li> |
| <li class="current"><a href="files.html"><span>Files</span></a></li> |
| <li> |
| <div id="MSearchBox" class="MSearchBoxInactive"> |
| <span class="left"> |
| <img id="MSearchSelect" src="search/mag_sel.png" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| alt=""/> |
| <input type="text" id="MSearchField" value="Search" accesskey="S" |
| onfocus="searchBox.OnSearchFieldFocus(true)" |
| onblur="searchBox.OnSearchFieldFocus(false)" |
| onkeyup="searchBox.OnSearchFieldChange(event)"/> |
| </span><span class="right"> |
| <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> |
| </span> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div id="navrow2" class="tabs2"> |
| <ul class="tablist"> |
| <li><a href="files.html"><span>File List</span></a></li> |
| <li><a href="globals.html"><span>File Members</span></a></li> |
| </ul> |
| </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"> |
| $(document).ready(function(){initNavTree('row-batch_8cc_source.html','');}); |
| </script> |
| <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)"> |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a></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 class="header"> |
| <div class="headertitle"> |
| <div class="title">row-batch.cc</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| <a href="row-batch_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Copyright 2012 Cloudera Inc.</span></div> |
| <div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div> |
| <div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div> |
| <div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div> |
| <div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// You may obtain a copy of the License at</span></div> |
| <div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div> |
| <div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div> |
| <div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> |
| <div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div> |
| <div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div> |
| <div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div> |
| <div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// See the License for the specific language governing permissions and</span></div> |
| <div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// limitations under the License.</span></div> |
| <div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div> |
| <div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "<a class="code" href="row-batch_8h.html">runtime/row-batch.h</a>"</span></div> |
| <div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div> |
| <div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdint.h></span> <span class="comment">// for intptr_t</span></div> |
| <div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <boost/scoped_ptr.hpp></span></div> |
| <div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div> |
| <div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="buffered-tuple-stream_8h.html">runtime/buffered-tuple-stream.h</a>"</span></div> |
| <div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="mem-tracker_8h.html">runtime/mem-tracker.h</a>"</span></div> |
| <div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="string-value_8h.html">runtime/string-value.h</a>"</span></div> |
| <div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="tuple-row_8h.html">runtime/tuple-row.h</a>"</span></div> |
| <div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="compress_8h.html">util/compress.h</a>"</span></div> |
| <div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="decompress_8h.html">util/decompress.h</a>"</span></div> |
| <div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "gen-cpp/Results_types.h"</span></div> |
| <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> |
| <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="names_8h.html">common/names.h</a>"</span></div> |
| <div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div> |
| <div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span>impala {</div> |
| <div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div> |
| <div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1RowBatch.html#aa56ff8061d406e2414d5031e5a464b73">RowBatch::AT_CAPACITY_MEM_USAGE</a> = 8 * 1024 * 1024;</div> |
| <div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> |
| <div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a741f4d17857e60858cd23de4f7461460"> 34</a></span> <a class="code" href="classimpala_1_1RowBatch.html#a741f4d17857e60858cd23de4f7461460">RowBatch::RowBatch</a>(<span class="keyword">const</span> <a class="code" href="classimpala_1_1RowDescriptor.html">RowDescriptor</a>& <a class="code" href="namespaceimpala.html#aa98447566dd6700a2faaaaf3059f4d95">row_desc</a>, <span class="keywordtype">int</span> capacity,</div> |
| <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="classimpala_1_1MemTracker.html">MemTracker</a>* mem_tracker)</div> |
| <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  : mem_tracker_(mem_tracker),</div> |
| <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  has_in_flight_row_(false),</div> |
| <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  num_rows_(0),</div> |
| <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  capacity_(capacity),</div> |
| <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  num_tuples_per_row_(row_desc.tuple_descriptors().size()),</div> |
| <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="namespaceimpala.html#ad393a2093952c5b6f3a61bd3e1302e61">row_desc_</a>(row_desc),</div> |
| <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  auxiliary_mem_usage_(0),</div> |
| <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  need_to_return_(false),</div> |
| <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  tuple_data_pool_(new <a class="code" href="classimpala_1_1MemPool.html">MemPool</a>(mem_tracker_)) {</div> |
| <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DCHECK(<a class="code" href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">mem_tracker_</a> != NULL);</div> |
| <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  DCHECK_GT(capacity, 0);</div> |
| <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a> = <a class="code" href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">capacity_</a> * <a class="code" href="classimpala_1_1RowBatch.html#a0ce83c6a849963c05d27dbc76e68520a">num_tuples_per_row_</a> * <span class="keyword">sizeof</span>(<a class="code" href="classimpala_1_1Tuple.html">Tuple</a>*);</div> |
| <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a> = <span class="keyword">reinterpret_cast<</span><a class="code" href="classimpala_1_1Tuple.html">Tuple</a>**<span class="keyword">></span>(<a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->Allocate(<a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>));</div> |
| <div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div> |
| <div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div> |
| <div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// TODO: we want our input_batch's tuple_data to come from our (not yet implemented)</span></div> |
| <div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// global runtime memory segment; how do we get thrift to allocate it from there?</span></div> |
| <div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// maybe change line (in Data_types.cc generated from Data.thrift)</span></div> |
| <div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// xfer += iprot->readString(this->tuple_data[_i9]);</span></div> |
| <div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// to allocated string data in special mempool</span></div> |
| <div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// (change via python script that runs over Data_types.cc)</span></div> |
| <div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#aa5b6ef67054cc6b7ad61bff2465286f4"> 57</a></span> <a class="code" href="classimpala_1_1RowBatch.html#a741f4d17857e60858cd23de4f7461460">RowBatch::RowBatch</a>(<span class="keyword">const</span> <a class="code" href="classimpala_1_1RowDescriptor.html">RowDescriptor</a>& <a class="code" href="namespaceimpala.html#aa98447566dd6700a2faaaaf3059f4d95">row_desc</a>, <span class="keyword">const</span> TRowBatch& input_batch,</div> |
| <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="classimpala_1_1MemTracker.html">MemTracker</a>* mem_tracker)</div> |
| <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  : mem_tracker_(mem_tracker),</div> |
| <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  has_in_flight_row_(false),</div> |
| <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  num_rows_(input_batch.num_rows),</div> |
| <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  capacity_(num_rows_),</div> |
| <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  num_tuples_per_row_(input_batch.row_tuples.size()),</div> |
| <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="namespaceimpala.html#ad393a2093952c5b6f3a61bd3e1302e61">row_desc_</a>(row_desc),</div> |
| <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  auxiliary_mem_usage_(0),</div> |
| <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  tuple_data_pool_(new <a class="code" href="classimpala_1_1MemPool.html">MemPool</a>(mem_tracker)) {</div> |
| <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  DCHECK(<a class="code" href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">mem_tracker_</a> != NULL);</div> |
| <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a> = <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a> * input_batch.row_tuples.size() * <span class="keyword">sizeof</span>(<a class="code" href="classimpala_1_1Tuple.html">Tuple</a>*);</div> |
| <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a> = <span class="keyword">reinterpret_cast<</span><a class="code" href="classimpala_1_1Tuple.html">Tuple</a>**<span class="keyword">></span>(<a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->Allocate(<a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>));</div> |
| <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (input_batch.compression_type != THdfsCompression::NONE) {</div> |
| <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Decompress tuple data into data pool</span></div> |
| <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  uint8_t* compressed_data = (uint8_t*)input_batch.tuple_data.c_str();</div> |
| <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">size_t</span> compressed_size = input_batch.tuple_data.size();</div> |
| <div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> |
| <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  scoped_ptr<Codec> decompressor;</div> |
| <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classimpala_1_1Status.html">Status</a> status = <a class="code" href="classimpala_1_1Codec.html#a0d8e74ac086a91c1cc7dbd7fe166f307">Codec::CreateDecompressor</a>(NULL, <span class="keyword">false</span>, input_batch.compression_type,</div> |
| <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  &decompressor);</div> |
| <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  DCHECK(status.<a class="code" href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">ok</a>()) << status.<a class="code" href="classimpala_1_1Status.html#adf1a3ee82776f6102bfe873925183159">GetDetail</a>();</div> |
| <div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div> |
| <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  int64_t uncompressed_size = input_batch.uncompressed_size;</div> |
| <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  DCHECK_NE(uncompressed_size, -1) << <span class="stringliteral">"RowBatch decompression failed"</span>;</div> |
| <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  uint8_t* data = <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->Allocate(uncompressed_size);</div> |
| <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  status = decompressor->ProcessBlock(<span class="keyword">true</span>, compressed_size, compressed_data,</div> |
| <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  &uncompressed_size, &data);</div> |
| <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  DCHECK(status.<a class="code" href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">ok</a>()) << <span class="stringliteral">"RowBatch decompression failed."</span>;</div> |
| <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  decompressor->Close();</div> |
| <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Tuple data uncompressed, copy directly into data pool</span></div> |
| <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  uint8_t* data = <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->Allocate(input_batch.tuple_data.size());</div> |
| <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  memcpy(data, input_batch.tuple_data.c_str(), input_batch.tuple_data.size());</div> |
| <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div> |
| <div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> |
| <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// convert input_batch.tuple_offsets into pointers</span></div> |
| <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">int</span> tuple_idx = 0;</div> |
| <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">for</span> (vector<int32_t>::const_iterator <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> = input_batch.tuple_offsets.begin();</div> |
| <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> != input_batch.tuple_offsets.end(); ++<a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a>) {</div> |
| <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (*<a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> == -1) {</div> |
| <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a>[tuple_idx++] = NULL;</div> |
| <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  } <span class="keywordflow">else</span> {</div> |
| <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a>[tuple_idx++] = <span class="keyword">reinterpret_cast<</span><a class="code" href="classimpala_1_1Tuple.html">Tuple</a>*<span class="keyword">></span>(</div> |
| <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->GetDataPtr(*<a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> + <a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>));</div> |
| <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div> |
| <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div> |
| <div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div> |
| <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// check whether we have string slots</span></div> |
| <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// TODO: do that during setup (part of RowDescriptor c'tor?)</span></div> |
| <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">bool</span> has_string_slots = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> vector<TupleDescriptor*>& tuple_descs = <a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>.<a class="code" href="classimpala_1_1RowDescriptor.html#a3d57439c68d08fe374c33370529a855c">tuple_descriptors</a>();</div> |
| <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < tuple_descs.size(); ++i) {</div> |
| <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (!tuple_descs[i]->string_slots().empty()) {</div> |
| <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  has_string_slots = <span class="keyword">true</span>;</div> |
| <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">break</span>;</div> |
| <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div> |
| <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div> |
| <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (!has_string_slots) <span class="keywordflow">return</span>;</div> |
| <div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div> |
| <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// convert string offsets contained in tuple data into pointers</span></div> |
| <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a>; ++i) {</div> |
| <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classimpala_1_1TupleRow.html">TupleRow</a>* row = <a class="code" href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">GetRow</a>(i);</div> |
| <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  vector<TupleDescriptor*>::const_iterator desc = tuple_descs.begin();</div> |
| <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; desc != tuple_descs.end(); ++desc, ++j) {</div> |
| <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> ((*desc)->string_slots().empty()) <span class="keywordflow">continue</span>;</div> |
| <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classimpala_1_1Tuple.html">Tuple</a>* t = row-><a class="code" href="classimpala_1_1TupleRow.html#aed3092e531291470b27fc48afa901600">GetTuple</a>(j);</div> |
| <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (t == NULL) <span class="keywordflow">continue</span>;</div> |
| <div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div> |
| <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  vector<SlotDescriptor*>::const_iterator slot = (*desc)->string_slots().begin();</div> |
| <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">for</span> (; slot != (*desc)->string_slots().end(); ++slot) {</div> |
| <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  DCHECK((*slot)->type().IsVarLen());</div> |
| <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="structimpala_1_1StringValue.html">StringValue</a>* string_val = t-><a class="code" href="classimpala_1_1Tuple.html#ad0d1cf8a3eca6b49fe7bd4d337758f56">GetStringSlot</a>((*slot)->tuple_offset());</div> |
| <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">int</span> <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> = <span class="keyword">reinterpret_cast<</span>intptr_t<span class="keyword">></span>(string_val->ptr) + <a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>;</div> |
| <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  string_val->ptr = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(<a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->GetDataPtr(offset));</div> |
| <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div> |
| <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div> |
| <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div> |
| <div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div> |
| <div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div> |
| <div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#ad2d33305d7a6c7effe46910fc02bcf99"> 137</a></span> <a class="code" href="classimpala_1_1RowBatch.html#ad2d33305d7a6c7effe46910fc02bcf99">RowBatch::~RowBatch</a>() {</div> |
| <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->FreeAll();</div> |
| <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>[i]->Return();</div> |
| <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div> |
| <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>[i]->Close();</div> |
| <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div> |
| <div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div> |
| <div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div> |
| <div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a5a7ff7bf9d6bd28990eedab985477390"> 147</a></span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1RowBatch.html#a5a7ff7bf9d6bd28990eedab985477390">RowBatch::Serialize</a>(TRowBatch* output_batch) {</div> |
| <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// why does Thrift not generate a Clear() function?</span></div> |
| <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  output_batch->row_tuples.clear();</div> |
| <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  output_batch->tuple_offsets.clear();</div> |
| <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  output_batch->compression_type = THdfsCompression::NONE;</div> |
| <div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div> |
| <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  output_batch->num_rows = <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a>;</div> |
| <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>.<a class="code" href="classimpala_1_1RowDescriptor.html#ae5777d88c2ab166f11a76db9e828d32e">ToThrift</a>(&output_batch->row_tuples);</div> |
| <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  output_batch->tuple_offsets.reserve(<a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a> * <a class="code" href="classimpala_1_1RowBatch.html#a0ce83c6a849963c05d27dbc76e68520a">num_tuples_per_row_</a>);</div> |
| <div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div> |
| <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">int</span> size = <a class="code" href="classimpala_1_1RowBatch.html#aa748c2de46658330f617535567cae744">TotalByteSize</a>();</div> |
| <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  output_batch->tuple_data.resize(size);</div> |
| <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  output_batch->uncompressed_size = size;</div> |
| <div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div> |
| <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// Copy tuple data, including strings, into output_batch (converting string</span></div> |
| <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// pointers into offsets in the process)</span></div> |
| <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">int</span> <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> = 0; <span class="comment">// current offset into output_batch->tuple_data</span></div> |
| <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">char</span>* tuple_data = <span class="keyword">const_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(output_batch->tuple_data.c_str());</div> |
| <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a>; ++i) {</div> |
| <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classimpala_1_1TupleRow.html">TupleRow</a>* row = <a class="code" href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">GetRow</a>(i);</div> |
| <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">const</span> vector<TupleDescriptor*>& tuple_descs = <a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>.<a class="code" href="classimpala_1_1RowDescriptor.html#a3d57439c68d08fe374c33370529a855c">tuple_descriptors</a>();</div> |
| <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  vector<TupleDescriptor*>::const_iterator desc = tuple_descs.begin();</div> |
| <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; desc != tuple_descs.end(); ++desc, ++j) {</div> |
| <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (row-><a class="code" href="classimpala_1_1TupleRow.html#aed3092e531291470b27fc48afa901600">GetTuple</a>(j) == NULL) {</div> |
| <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// NULLs are encoded as -1</span></div> |
| <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  output_batch->tuple_offsets.push_back(-1);</div> |
| <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">continue</span>;</div> |
| <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div> |
| <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Record offset before creating copy (which increments offset and tuple_data)</span></div> |
| <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  output_batch->tuple_offsets.push_back(offset);</div> |
| <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  row-><a class="code" href="classimpala_1_1TupleRow.html#aed3092e531291470b27fc48afa901600">GetTuple</a>(j)-><a class="code" href="classimpala_1_1Tuple.html#a7bd61a6c3fe36dc122b94d5f1f2ecac4">DeepCopy</a>(**desc, &tuple_data, &offset, <span class="comment">/* convert_ptrs */</span> <span class="keyword">true</span>);</div> |
| <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  DCHECK_LE(offset, size);</div> |
| <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div> |
| <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div> |
| <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  DCHECK_EQ(offset, size);</div> |
| <div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div> |
| <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (size > 0) {</div> |
| <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Try compressing tuple_data to compression_scratch_, swap if compressed data is</span></div> |
| <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// smaller</span></div> |
| <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  scoped_ptr<Codec> compressor;</div> |
| <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classimpala_1_1Status.html">Status</a> status = <a class="code" href="classimpala_1_1Codec.html#a18854cd2e08266b09600a6e559c7c6e1">Codec::CreateCompressor</a>(NULL, <span class="keyword">false</span>, THdfsCompression::LZ4,</div> |
| <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  &compressor);</div> |
| <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  DCHECK(status.<a class="code" href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">ok</a>()) << status.<a class="code" href="classimpala_1_1Status.html#adf1a3ee82776f6102bfe873925183159">GetDetail</a>();</div> |
| <div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div> |
| <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  int64_t compressed_size = compressor->MaxOutputLen(size);</div> |
| <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1RowBatch.html#ad98a31acb80884902c234dc19f38ee3a">compression_scratch_</a>.size() < compressed_size) {</div> |
| <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classimpala_1_1RowBatch.html#ad98a31acb80884902c234dc19f38ee3a">compression_scratch_</a>.resize(compressed_size);</div> |
| <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div> |
| <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  uint8_t* input = (uint8_t*)output_batch->tuple_data.c_str();</div> |
| <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  uint8_t* compressed_output = (uint8_t*)<a class="code" href="classimpala_1_1RowBatch.html#ad98a31acb80884902c234dc19f38ee3a">compression_scratch_</a>.c_str();</div> |
| <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  compressor->ProcessBlock(<span class="keyword">true</span>, size, input, &compressed_size, &compressed_output);</div> |
| <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (<a class="code" href="compiler-util_8h.html#a262afcfe437f4addb13fb1b47a6a7086">LIKELY</a>(compressed_size < size)) {</div> |
| <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classimpala_1_1RowBatch.html#ad98a31acb80884902c234dc19f38ee3a">compression_scratch_</a>.resize(compressed_size);</div> |
| <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  output_batch->tuple_data.swap(<a class="code" href="classimpala_1_1RowBatch.html#ad98a31acb80884902c234dc19f38ee3a">compression_scratch_</a>);</div> |
| <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  output_batch->compression_type = THdfsCompression::LZ4;</div> |
| <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div> |
| <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="logging_8h.html#a6ccc2106c47622db4e52a401a415fc58">VLOG_ROW</a> << <span class="stringliteral">"uncompressed size: "</span> << size << <span class="stringliteral">", compressed size: "</span> << compressed_size;</div> |
| <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div> |
| <div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div> |
| <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// The size output_batch would be if we didn't compress tuple_data (will be equal to</span></div> |
| <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// actual batch size if tuple_data isn't compressed)</span></div> |
| <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1RowBatch.html#af12857237879012707070a5deb7a529f">GetBatchSize</a>(*output_batch) - output_batch->tuple_data.size() + size;</div> |
| <div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div> |
| <div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div> |
| <div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a494923883448c2b78786d391465107ce"> 211</a></span> <span class="keywordtype">void</span> <a class="code" href="classimpala_1_1RowBatch.html#a494923883448c2b78786d391465107ce">RowBatch::AddIoBuffer</a>(<a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html">DiskIoMgr::BufferDescriptor</a>* buffer) {</div> |
| <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  DCHECK(buffer != NULL);</div> |
| <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.push_back(buffer);</div> |
| <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += buffer-><a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#aae839241cba91ebc6774fc4e2bc384e0">buffer_len</a>();</div> |
| <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  buffer-><a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#a434c70e0f6a34982c92eb1deaae3bc2c">SetMemTracker</a>(<a class="code" href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">mem_tracker_</a>);</div> |
| <div class="line"><a name="l00216"></a><span class="lineno"> 216</span> }</div> |
| <div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div> |
| <div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a923a9f1e331245092d6d5ae4141cbbb7"> 218</a></span> <span class="keywordtype">void</span> <a class="code" href="classimpala_1_1RowBatch.html#a923a9f1e331245092d6d5ae4141cbbb7">RowBatch::AddTupleStream</a>(<a class="code" href="classimpala_1_1BufferedTupleStream.html">BufferedTupleStream</a>* stream) {</div> |
| <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  DCHECK(stream != NULL);</div> |
| <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.push_back(stream);</div> |
| <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += stream-><a class="code" href="classimpala_1_1BufferedTupleStream.html#a6846f309cc28f0d6b6d6caebd033cdec">byte_size</a>();</div> |
| <div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div> |
| <div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div> |
| <div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#ac351eaf211eb53882564b604db07b824"> 224</a></span> <span class="keywordtype">void</span> <a class="code" href="classimpala_1_1RowBatch.html#ac351eaf211eb53882564b604db07b824">RowBatch::Reset</a>() {</div> |
| <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  DCHECK(<a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>.get() != NULL);</div> |
| <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a> = 0;</div> |
| <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classimpala_1_1RowBatch.html#ab3e3801fac98885c9c6a8c9e45ad30d9">has_in_flight_row_</a> = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->FreeAll();</div> |
| <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>.reset(<span class="keyword">new</span> <a class="code" href="classimpala_1_1MemPool.html">MemPool</a>(<a class="code" href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">mem_tracker_</a>));</div> |
| <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>[i]->Return();</div> |
| <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div> |
| <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.clear();</div> |
| <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>[i]->Close();</div> |
| <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div> |
| <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.clear();</div> |
| <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> = 0;</div> |
| <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a> = <span class="keyword">reinterpret_cast<</span><a class="code" href="classimpala_1_1Tuple.html">Tuple</a>**<span class="keyword">></span>(<a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->Allocate(<a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>));</div> |
| <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="classimpala_1_1RowBatch.html#af1a96984d6d3124cce3d7d25486500a8">need_to_return_</a> = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div> |
| <div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div> |
| <div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a2890c318601bac6712e469335940a1e2"> 243</a></span> <span class="keywordtype">void</span> <a class="code" href="classimpala_1_1RowBatch.html#a2890c318601bac6712e469335940a1e2">RowBatch::TransferResourceOwnership</a>(<a class="code" href="classimpala_1_1RowBatch.html">RowBatch</a>* dest) {</div> |
| <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->total_allocated_bytes();</div> |
| <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->AcquireData(<a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>.get(), <span class="keyword">false</span>);</div> |
| <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html">DiskIoMgr::BufferDescriptor</a>* buffer = <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>[i];</div> |
| <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.push_back(buffer);</div> |
| <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += buffer-><a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#aae839241cba91ebc6774fc4e2bc384e0">buffer_len</a>();</div> |
| <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  buffer-><a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#a434c70e0f6a34982c92eb1deaae3bc2c">SetMemTracker</a>(dest-><a class="code" href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">mem_tracker_</a>);</div> |
| <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div> |
| <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.clear();</div> |
| <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.push_back(<a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>[i]);</div> |
| <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>[i]->byte_size();</div> |
| <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div> |
| <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.clear();</div> |
| <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  dest-><a class="code" href="classimpala_1_1RowBatch.html#af1a96984d6d3124cce3d7d25486500a8">need_to_return_</a> |= <a class="code" href="classimpala_1_1RowBatch.html#af1a96984d6d3124cce3d7d25486500a8">need_to_return_</a>;</div> |
| <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> = 0;</div> |
| <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a> = NULL;</div> |
| <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="classimpala_1_1RowBatch.html#ac351eaf211eb53882564b604db07b824">Reset</a>();</div> |
| <div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div> |
| <div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div> |
| <div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#af12857237879012707070a5deb7a529f"> 264</a></span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1RowBatch.html#af12857237879012707070a5deb7a529f">RowBatch::GetBatchSize</a>(<span class="keyword">const</span> TRowBatch& batch) {</div> |
| <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">int</span> result = batch.tuple_data.size();</div> |
| <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  result += batch.row_tuples.size() * <span class="keyword">sizeof</span>(TTupleId);</div> |
| <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  result += batch.tuple_offsets.size() * <span class="keyword">sizeof</span>(int32_t);</div> |
| <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> result;</div> |
| <div class="line"><a name="l00269"></a><span class="lineno"> 269</span> }</div> |
| <div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div> |
| <div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a2f777637e6f27003960633011c7d1605"> 271</a></span> <span class="keywordtype">void</span> <a class="code" href="classimpala_1_1RowBatch.html#a2f777637e6f27003960633011c7d1605">RowBatch::AcquireState</a>(<a class="code" href="classimpala_1_1RowBatch.html">RowBatch</a>* src) {</div> |
| <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  DCHECK(<a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>.<a class="code" href="classimpala_1_1RowDescriptor.html#a4463849ca0e85e78f7d1a9554a1594fe">Equals</a>(src-><a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>));</div> |
| <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  DCHECK_EQ(<a class="code" href="classimpala_1_1RowBatch.html#a0ce83c6a849963c05d27dbc76e68520a">num_tuples_per_row_</a>, src-><a class="code" href="classimpala_1_1RowBatch.html#a0ce83c6a849963c05d27dbc76e68520a">num_tuples_per_row_</a>);</div> |
| <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  DCHECK_EQ(<a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>, src-><a class="code" href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">tuple_ptrs_size_</a>);</div> |
| <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  DCHECK_EQ(<a class="code" href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">capacity_</a>, src-><a class="code" href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">capacity_</a>);</div> |
| <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  DCHECK_EQ(<a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a>, 0);</div> |
| <div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div> |
| <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// The destination row batch should be empty.</span></div> |
| <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  DCHECK(!<a class="code" href="classimpala_1_1RowBatch.html#ab3e3801fac98885c9c6a8c9e45ad30d9">has_in_flight_row_</a>);</div> |
| <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  DCHECK_EQ(<a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a>, 0);</div> |
| <div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div> |
| <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < src-><a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.size(); ++i) {</div> |
| <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html">DiskIoMgr::BufferDescriptor</a>* buffer = src-><a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>[i];</div> |
| <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.push_back(buffer);</div> |
| <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += buffer-><a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#aae839241cba91ebc6774fc4e2bc384e0">buffer_len</a>();</div> |
| <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  buffer-><a class="code" href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#a434c70e0f6a34982c92eb1deaae3bc2c">SetMemTracker</a>(<a class="code" href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">mem_tracker_</a>);</div> |
| <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div> |
| <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  src-><a class="code" href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">io_buffers_</a>.clear();</div> |
| <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  src-><a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> = 0;</div> |
| <div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div> |
| <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  DCHECK(src-><a class="code" href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">tuple_streams_</a>.empty());</div> |
| <div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div> |
| <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="classimpala_1_1RowBatch.html#ab3e3801fac98885c9c6a8c9e45ad30d9">has_in_flight_row_</a> = src-><a class="code" href="classimpala_1_1RowBatch.html#ab3e3801fac98885c9c6a8c9e45ad30d9">has_in_flight_row_</a>;</div> |
| <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a> = src-><a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a>;</div> |
| <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">capacity_</a> = src-><a class="code" href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">capacity_</a>;</div> |
| <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classimpala_1_1RowBatch.html#af1a96984d6d3124cce3d7d25486500a8">need_to_return_</a> = src-><a class="code" href="classimpala_1_1RowBatch.html#af1a96984d6d3124cce3d7d25486500a8">need_to_return_</a>;</div> |
| <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  std::swap(<a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a>, src-><a class="code" href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">tuple_ptrs_</a>);</div> |
| <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->AcquireData(src-><a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>.get(), <span class="keyword">false</span>);</div> |
| <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">auxiliary_mem_usage_</a> += src-><a class="code" href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">tuple_data_pool_</a>->total_allocated_bytes();</div> |
| <div class="line"><a name="l00300"></a><span class="lineno"> 300</span> }</div> |
| <div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div> |
| <div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment">// TODO: consider computing size of batches as they are built up</span></div> |
| <div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#aa748c2de46658330f617535567cae744"> 303</a></span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1RowBatch.html#aa748c2de46658330f617535567cae744">RowBatch::TotalByteSize</a>() {</div> |
| <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">int</span> result = 0;</div> |
| <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < <a class="code" href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">num_rows_</a>; ++i) {</div> |
| <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classimpala_1_1TupleRow.html">TupleRow</a>* row = <a class="code" href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">GetRow</a>(i);</div> |
| <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> vector<TupleDescriptor*>& tuple_descs = <a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>.<a class="code" href="classimpala_1_1RowDescriptor.html#a3d57439c68d08fe374c33370529a855c">tuple_descriptors</a>();</div> |
| <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  vector<TupleDescriptor*>::const_iterator desc = tuple_descs.begin();</div> |
| <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; desc != tuple_descs.end(); ++desc, ++j) {</div> |
| <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classimpala_1_1Tuple.html">Tuple</a>* tuple = row-><a class="code" href="classimpala_1_1TupleRow.html#aed3092e531291470b27fc48afa901600">GetTuple</a>(j);</div> |
| <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">if</span> (tuple == NULL) <span class="keywordflow">continue</span>;</div> |
| <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  result += (*desc)->byte_size();</div> |
| <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  vector<SlotDescriptor*>::const_iterator slot = (*desc)->string_slots().begin();</div> |
| <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">for</span> (; slot != (*desc)->string_slots().end(); ++slot) {</div> |
| <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  DCHECK((*slot)->type().IsVarLen());</div> |
| <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> (tuple-><a class="code" href="classimpala_1_1Tuple.html#ace4b7ea4cc159a2d2686e2a61c406413">IsNull</a>((*slot)->null_indicator_offset())) <span class="keywordflow">continue</span>;</div> |
| <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="structimpala_1_1StringValue.html">StringValue</a>* string_val = tuple-><a class="code" href="classimpala_1_1Tuple.html#ad0d1cf8a3eca6b49fe7bd4d337758f56">GetStringSlot</a>((*slot)->tuple_offset());</div> |
| <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  result += string_val-><a class="code" href="structimpala_1_1StringValue.html#ab71e42890598d9b239cac64485db276d">len</a>;</div> |
| <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div> |
| <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div> |
| <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div> |
| <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">return</span> result;</div> |
| <div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div> |
| <div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div> |
| <div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classimpala_1_1RowBatch.html#a602415d7e138ddbd21dbccb0c7689543"> 325</a></span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1RowBatch.html#a602415d7e138ddbd21dbccb0c7689543">RowBatch::MaxTupleBufferSize</a>() {</div> |
| <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordtype">int</span> row_size = <a class="code" href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">row_desc_</a>.<a class="code" href="classimpala_1_1RowDescriptor.html#acc6beec42c710b65f958cf91981cb4b9">GetRowSize</a>();</div> |
| <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (row_size > <a class="code" href="classimpala_1_1RowBatch.html#aa56ff8061d406e2414d5031e5a464b73">AT_CAPACITY_MEM_USAGE</a>) <span class="keywordflow">return</span> row_size;</div> |
| <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">num_rows</a> = 0;</div> |
| <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span> (row_size != 0) {</div> |
| <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  num_rows = std::min(<a class="code" href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">capacity_</a>, <a class="code" href="classimpala_1_1RowBatch.html#aa56ff8061d406e2414d5031e5a464b73">AT_CAPACITY_MEM_USAGE</a> / row_size);</div> |
| <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div> |
| <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">int</span> tuple_buffer_size = num_rows * row_size;</div> |
| <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  DCHECK_LE(tuple_buffer_size, <a class="code" href="classimpala_1_1RowBatch.html#aa56ff8061d406e2414d5031e5a464b73">AT_CAPACITY_MEM_USAGE</a>);</div> |
| <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> tuple_buffer_size;</div> |
| <div class="line"><a name="l00335"></a><span class="lineno"> 335</span> }</div> |
| <div class="line"><a name="l00336"></a><span class="lineno"> 336</span> }</div> |
| <div class="ttc" id="row-batch_8h_html"><div class="ttname"><a href="row-batch_8h.html">row-batch.h</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a68a13b04ab3dd529abaef833f99bd6cb"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a68a13b04ab3dd529abaef833f99bd6cb">impala::RowBatch::tuple_ptrs_size_</a></div><div class="ttdeci">int tuple_ptrs_size_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00242">row-batch.h:242</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a00462d96ac7b595312fc6bd3916f5bd8"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a00462d96ac7b595312fc6bd3916f5bd8">impala::RowBatch::tuple_ptrs_</a></div><div class="ttdeci">Tuple ** tuple_ptrs_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00241">row-batch.h:241</a></div></div> |
| <div class="ttc" id="classimpala_1_1BufferedTupleStream_html"><div class="ttname"><a href="classimpala_1_1BufferedTupleStream.html">impala::BufferedTupleStream</a></div><div class="ttdoc">The underlying memory management is done by the BufferedBlockMgr. </div><div class="ttdef"><b>Definition:</b> <a href="buffered-tuple-stream_8h_source.html#l00109">buffered-tuple-stream.h:109</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowDescriptor_html_acc6beec42c710b65f958cf91981cb4b9"><div class="ttname"><a href="classimpala_1_1RowDescriptor.html#acc6beec42c710b65f958cf91981cb4b9">impala::RowDescriptor::GetRowSize</a></div><div class="ttdeci">int GetRowSize() const </div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8cc_source.html#l00320">descriptors.cc:320</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ac695df3b85ee416b3d99844813ae813d"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">impala::RowBatch::num_rows</a></div><div class="ttdeci">int num_rows() const </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00215">row-batch.h:215</a></div></div> |
| <div class="ttc" id="classimpala_1_1Status_html_adf1a3ee82776f6102bfe873925183159"><div class="ttname"><a href="classimpala_1_1Status.html#adf1a3ee82776f6102bfe873925183159">impala::Status::GetDetail</a></div><div class="ttdeci">const std::string GetDetail() const </div><div class="ttdef"><b>Definition:</b> <a href="status_8cc_source.html#l00184">status.cc:184</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a741f4d17857e60858cd23de4f7461460"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a741f4d17857e60858cd23de4f7461460">impala::RowBatch::RowBatch</a></div><div class="ttdeci">RowBatch(const RowDescriptor &row_desc, int capacity, MemTracker *tracker)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00034">row-batch.cc:34</a></div></div> |
| <div class="ttc" id="classimpala_1_1Codec_html_a18854cd2e08266b09600a6e559c7c6e1"><div class="ttname"><a href="classimpala_1_1Codec.html#a18854cd2e08266b09600a6e559c7c6e1">impala::Codec::CreateCompressor</a></div><div class="ttdeci">static Status CreateCompressor(MemPool *mem_pool, bool reuse, THdfsCompression::type format, boost::scoped_ptr< Codec > *compressor)</div></div> |
| <div class="ttc" id="structimpala_1_1StringValue_html"><div class="ttname"><a href="structimpala_1_1StringValue.html">impala::StringValue</a></div><div class="ttdef"><b>Definition:</b> <a href="string-value_8h_source.html#l00033">string-value.h:33</a></div></div> |
| <div class="ttc" id="classimpala_1_1TupleRow_html_aed3092e531291470b27fc48afa901600"><div class="ttname"><a href="classimpala_1_1TupleRow.html#aed3092e531291470b27fc48afa901600">impala::TupleRow::GetTuple</a></div><div class="ttdeci">Tuple * GetTuple(int tuple_idx)</div><div class="ttdef"><b>Definition:</b> <a href="tuple-row_8h_source.html#l00030">tuple-row.h:30</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_aa748c2de46658330f617535567cae744"><div class="ttname"><a href="classimpala_1_1RowBatch.html#aa748c2de46658330f617535567cae744">impala::RowBatch::TotalByteSize</a></div><div class="ttdeci">int TotalByteSize()</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00303">row-batch.cc:303</a></div></div> |
| <div class="ttc" id="classimpala_1_1Codec_html_a0d8e74ac086a91c1cc7dbd7fe166f307"><div class="ttname"><a href="classimpala_1_1Codec.html#a0d8e74ac086a91c1cc7dbd7fe166f307">impala::Codec::CreateDecompressor</a></div><div class="ttdeci">static Status CreateDecompressor(MemPool *mem_pool, bool reuse, THdfsCompression::type format, boost::scoped_ptr< Codec > *decompressor)</div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_acadf4399bff08e054ab81d3f24990d11"><div class="ttname"><a href="classimpala_1_1RowBatch.html#acadf4399bff08e054ab81d3f24990d11">impala::RowBatch::row_desc_</a></div><div class="ttdeci">RowDescriptor row_desc_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00237">row-batch.h:237</a></div></div> |
| <div class="ttc" id="classimpala_1_1Tuple_html"><div class="ttname"><a href="classimpala_1_1Tuple.html">impala::Tuple</a></div><div class="ttdoc">A tuple with 0 materialised slots is represented as NULL. </div><div class="ttdef"><b>Definition:</b> <a href="tuple_8h_source.html#l00048">tuple.h:48</a></div></div> |
| <div class="ttc" id="compress_8h_html"><div class="ttname"><a href="compress_8h.html">compress.h</a></div></div> |
| <div class="ttc" id="structimpala_1_1StringValue_html_ab71e42890598d9b239cac64485db276d"><div class="ttname"><a href="structimpala_1_1StringValue.html#ab71e42890598d9b239cac64485db276d">impala::StringValue::len</a></div><div class="ttdeci">int len</div><div class="ttdef"><b>Definition:</b> <a href="string-value_8h_source.html#l00038">string-value.h:38</a></div></div> |
| <div class="ttc" id="mem-tracker_8h_html"><div class="ttname"><a href="mem-tracker_8h.html">mem-tracker.h</a></div></div> |
| <div class="ttc" id="buffered-tuple-stream_8h_html"><div class="ttname"><a href="buffered-tuple-stream_8h.html">buffered-tuple-stream.h</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a9320ed986b0717ef26d73d871f3b3a42"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">impala::RowBatch::GetRow</a></div><div class="ttdeci">TupleRow * GetRow(int row_idx)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00140">row-batch.h:140</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a2f777637e6f27003960633011c7d1605"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a2f777637e6f27003960633011c7d1605">impala::RowBatch::AcquireState</a></div><div class="ttdeci">void AcquireState(RowBatch *src)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00271">row-batch.cc:271</a></div></div> |
| <div class="ttc" id="classimpala_1_1DiskIoMgr_1_1BufferDescriptor_html"><div class="ttname"><a href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html">impala::DiskIoMgr::BufferDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="disk-io-mgr_8h_source.html#l00196">disk-io-mgr.h:196</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowDescriptor_html"><div class="ttname"><a href="classimpala_1_1RowDescriptor.html">impala::RowDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8h_source.html#l00373">descriptors.h:373</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a8981be17945dfb4c46eb7e9021807718"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a8981be17945dfb4c46eb7e9021807718">impala::RowBatch::io_buffers_</a></div><div class="ttdeci">std::vector< DiskIoMgr::BufferDescriptor * > io_buffers_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00258">row-batch.h:258</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a47dd4b36f95c28e10adbda8d249babb1"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a47dd4b36f95c28e10adbda8d249babb1">impala::RowBatch::num_rows_</a></div><div class="ttdeci">int num_rows_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00233">row-batch.h:233</a></div></div> |
| <div class="ttc" id="classimpala_1_1TupleRow_html"><div class="ttname"><a href="classimpala_1_1TupleRow.html">impala::TupleRow</a></div><div class="ttdef"><b>Definition:</b> <a href="tuple-row_8h_source.html#l00028">tuple-row.h:28</a></div></div> |
| <div class="ttc" id="classimpala_1_1BufferedTupleStream_html_a6846f309cc28f0d6b6d6caebd033cdec"><div class="ttname"><a href="classimpala_1_1BufferedTupleStream.html#a6846f309cc28f0d6b6d6caebd033cdec">impala::BufferedTupleStream::byte_size</a></div><div class="ttdeci">int64_t byte_size() const </div><div class="ttdoc">Returns the byte size necessary to store the entire stream in memory. </div><div class="ttdef"><b>Definition:</b> <a href="buffered-tuple-stream_8h_source.html#l00237">buffered-tuple-stream.h:237</a></div></div> |
| <div class="ttc" id="classimpala_1_1Tuple_html_a7bd61a6c3fe36dc122b94d5f1f2ecac4"><div class="ttname"><a href="classimpala_1_1Tuple.html#a7bd61a6c3fe36dc122b94d5f1f2ecac4">impala::Tuple::DeepCopy</a></div><div class="ttdeci">Tuple * DeepCopy(const TupleDescriptor &desc, MemPool *pool, bool convert_ptrs=false)</div><div class="ttdef"><b>Definition:</b> <a href="tuple_8cc_source.html#l00034">tuple.cc:34</a></div></div> |
| <div class="ttc" id="classimpala_1_1Tuple_html_ace4b7ea4cc159a2d2686e2a61c406413"><div class="ttname"><a href="classimpala_1_1Tuple.html#ace4b7ea4cc159a2d2686e2a61c406413">impala::Tuple::IsNull</a></div><div class="ttdeci">bool IsNull(const NullIndicatorOffset &offset) const </div><div class="ttdef"><b>Definition:</b> <a href="tuple_8h_source.html#l00112">tuple.h:112</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ab3e3801fac98885c9c6a8c9e45ad30d9"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ab3e3801fac98885c9c6a8c9e45ad30d9">impala::RowBatch::has_in_flight_row_</a></div><div class="ttdeci">bool has_in_flight_row_</div><div class="ttdoc">All members below need to be handled in RowBatch::AcquireState() </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00232">row-batch.h:232</a></div></div> |
| <div class="ttc" id="decompress_8h_html"><div class="ttname"><a href="decompress_8h.html">decompress.h</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a923a9f1e331245092d6d5ae4141cbbb7"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a923a9f1e331245092d6d5ae4141cbbb7">impala::RowBatch::AddTupleStream</a></div><div class="ttdeci">void AddTupleStream(BufferedTupleStream *stream)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00218">row-batch.cc:218</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a5043c148c238bb62d9e1cb7680db7f01"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a5043c148c238bb62d9e1cb7680db7f01">impala::RowBatch::auxiliary_mem_usage_</a></div><div class="ttdeci">int64_t auxiliary_mem_usage_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00246">row-batch.h:246</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_adecf4adfaa8817a5a762554831b184b0"><div class="ttname"><a href="classimpala_1_1RowBatch.html#adecf4adfaa8817a5a762554831b184b0">impala::RowBatch::capacity_</a></div><div class="ttdeci">int capacity_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00234">row-batch.h:234</a></div></div> |
| <div class="ttc" id="classimpala_1_1Status_html"><div class="ttname"><a href="classimpala_1_1Status.html">impala::Status</a></div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00081">status.h:81</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_aa56ff8061d406e2414d5031e5a464b73"><div class="ttname"><a href="classimpala_1_1RowBatch.html#aa56ff8061d406e2414d5031e5a464b73">impala::RowBatch::AT_CAPACITY_MEM_USAGE</a></div><div class="ttdeci">static const int AT_CAPACITY_MEM_USAGE</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00222">row-batch.h:222</a></div></div> |
| <div class="ttc" id="classimpala_1_1MemPool_html"><div class="ttname"><a href="classimpala_1_1MemPool.html">impala::MemPool</a></div><div class="ttdef"><b>Definition:</b> <a href="mem-pool_8h_source.html#l00077">mem-pool.h:77</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ac351eaf211eb53882564b604db07b824"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ac351eaf211eb53882564b604db07b824">impala::RowBatch::Reset</a></div><div class="ttdeci">void Reset()</div><div class="ttdoc">Resets the row batch, returning all resources it has accumulated. </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00224">row-batch.cc:224</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a494923883448c2b78786d391465107ce"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a494923883448c2b78786d391465107ce">impala::RowBatch::AddIoBuffer</a></div><div class="ttdeci">void AddIoBuffer(DiskIoMgr::BufferDescriptor *buffer)</div><div class="ttdoc">Add io buffer to this row batch. </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00211">row-batch.cc:211</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a0ce83c6a849963c05d27dbc76e68520a"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a0ce83c6a849963c05d27dbc76e68520a">impala::RowBatch::num_tuples_per_row_</a></div><div class="ttdeci">int num_tuples_per_row_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00236">row-batch.h:236</a></div></div> |
| <div class="ttc" id="classimpala_1_1DiskIoMgr_1_1BufferDescriptor_html_a434c70e0f6a34982c92eb1deaae3bc2c"><div class="ttname"><a href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#a434c70e0f6a34982c92eb1deaae3bc2c">impala::DiskIoMgr::BufferDescriptor::SetMemTracker</a></div><div class="ttdeci">void SetMemTracker(MemTracker *tracker)</div><div class="ttdef"><b>Definition:</b> <a href="disk-io-mgr_8cc_source.html#l00187">disk-io-mgr.cc:187</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowDescriptor_html_a4463849ca0e85e78f7d1a9554a1594fe"><div class="ttname"><a href="classimpala_1_1RowDescriptor.html#a4463849ca0e85e78f7d1a9554a1594fe">impala::RowDescriptor::Equals</a></div><div class="ttdeci">bool Equals(const RowDescriptor &other_desc) const </div><div class="ttdoc">Return true if the tuple ids of this descriptor match tuple ids of other desc. </div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8cc_source.html#l00361">descriptors.cc:361</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowDescriptor_html_ae5777d88c2ab166f11a76db9e828d32e"><div class="ttname"><a href="classimpala_1_1RowDescriptor.html#ae5777d88c2ab166f11a76db9e828d32e">impala::RowDescriptor::ToThrift</a></div><div class="ttdeci">void ToThrift(std::vector< TTupleId > *row_tuple_ids)</div><div class="ttdoc">Populate row_tuple_ids with our ids. </div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8cc_source.html#l00345">descriptors.cc:345</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_af12857237879012707070a5deb7a529f"><div class="ttname"><a href="classimpala_1_1RowBatch.html#af12857237879012707070a5deb7a529f">impala::RowBatch::GetBatchSize</a></div><div class="ttdeci">static int GetBatchSize(const TRowBatch &batch)</div><div class="ttdoc">Utility function: returns total size of batch. </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00264">row-batch.cc:264</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_af1a96984d6d3124cce3d7d25486500a8"><div class="ttname"><a href="classimpala_1_1RowBatch.html#af1a96984d6d3124cce3d7d25486500a8">impala::RowBatch::need_to_return_</a></div><div class="ttdeci">bool need_to_return_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00250">row-batch.h:250</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a2890c318601bac6712e469335940a1e2"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a2890c318601bac6712e469335940a1e2">impala::RowBatch::TransferResourceOwnership</a></div><div class="ttdeci">void TransferResourceOwnership(RowBatch *dest)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00243">row-batch.cc:243</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a489e04dce7c6b9f47543e11b1aedfe52"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a489e04dce7c6b9f47543e11b1aedfe52">impala::RowBatch::mem_tracker_</a></div><div class="ttdeci">MemTracker * mem_tracker_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00228">row-batch.h:228</a></div></div> |
| <div class="ttc" id="logging_8h_html_a6ccc2106c47622db4e52a401a415fc58"><div class="ttname"><a href="logging_8h.html#a6ccc2106c47622db4e52a401a415fc58">VLOG_ROW</a></div><div class="ttdeci">#define VLOG_ROW</div><div class="ttdef"><b>Definition:</b> <a href="logging_8h_source.html#l00059">logging.h:59</a></div></div> |
| <div class="ttc" id="classimpala_1_1MemTracker_html"><div class="ttname"><a href="classimpala_1_1MemTracker.html">impala::MemTracker</a></div><div class="ttdoc">This class is thread-safe. </div><div class="ttdef"><b>Definition:</b> <a href="mem-tracker_8h_source.html#l00061">mem-tracker.h:61</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ad98a31acb80884902c234dc19f38ee3a"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ad98a31acb80884902c234dc19f38ee3a">impala::RowBatch::compression_scratch_</a></div><div class="ttdeci">std::string compression_scratch_</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00270">row-batch.h:270</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html"><div class="ttname"><a href="classimpala_1_1RowBatch.html">impala::RowBatch</a></div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00066">row-batch.h:66</a></div></div> |
| <div class="ttc" id="namespaceimpala_html_aa98447566dd6700a2faaaaf3059f4d95"><div class="ttname"><a href="namespaceimpala.html#aa98447566dd6700a2faaaaf3059f4d95">impala::row_desc</a></div><div class="ttdeci">const RowDescriptor & row_desc() const </div></div> |
| <div class="ttc" id="classimpala_1_1RowDescriptor_html_a3d57439c68d08fe374c33370529a855c"><div class="ttname"><a href="classimpala_1_1RowDescriptor.html#a3d57439c68d08fe374c33370529a855c">impala::RowDescriptor::tuple_descriptors</a></div><div class="ttdeci">const std::vector< TupleDescriptor * > & tuple_descriptors() const </div><div class="ttdoc">Return descriptors for all tuples in this row, in order of appearance. </div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8h_source.html#l00412">descriptors.h:412</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a5a7ff7bf9d6bd28990eedab985477390"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a5a7ff7bf9d6bd28990eedab985477390">impala::RowBatch::Serialize</a></div><div class="ttdeci">int Serialize(TRowBatch *output_batch)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00147">row-batch.cc:147</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ae1353020bd518877fe6dbab694ee63b2"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ae1353020bd518877fe6dbab694ee63b2">impala::RowBatch::tuple_streams_</a></div><div class="ttdeci">std::vector< BufferedTupleStream * > tuple_streams_</div><div class="ttdoc">Tuple streams currently owned by this row batch. </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00261">row-batch.h:261</a></div></div> |
| <div class="ttc" id="classimpala_1_1Tuple_html_ad0d1cf8a3eca6b49fe7bd4d337758f56"><div class="ttname"><a href="classimpala_1_1Tuple.html#ad0d1cf8a3eca6b49fe7bd4d337758f56">impala::Tuple::GetStringSlot</a></div><div class="ttdeci">StringValue * GetStringSlot(int offset)</div><div class="ttdef"><b>Definition:</b> <a href="tuple_8h_source.html#l00128">tuple.h:128</a></div></div> |
| <div class="ttc" id="compiler-util_8h_html_a262afcfe437f4addb13fb1b47a6a7086"><div class="ttname"><a href="compiler-util_8h.html#a262afcfe437f4addb13fb1b47a6a7086">LIKELY</a></div><div class="ttdeci">#define LIKELY(expr)</div><div class="ttdef"><b>Definition:</b> <a href="compiler-util_8h_source.html#l00032">compiler-util.h:32</a></div></div> |
| <div class="ttc" id="namespaceimpala_html_ad393a2093952c5b6f3a61bd3e1302e61"><div class="ttname"><a href="namespaceimpala.html#ad393a2093952c5b6f3a61bd3e1302e61">impala::row_desc_</a></div><div class="ttdeci">const RowDescriptor * row_desc_</div><div class="ttdoc">owned by plan root, which resides in runtime_state_'s pool </div><div class="ttdef"><b>Definition:</b> <a href="coordinator_8h_source.html#l00255">coordinator.h:255</a></div></div> |
| <div class="ttc" id="classimpala_1_1DiskIoMgr_1_1BufferDescriptor_html_aae839241cba91ebc6774fc4e2bc384e0"><div class="ttname"><a href="classimpala_1_1DiskIoMgr_1_1BufferDescriptor.html#aae839241cba91ebc6774fc4e2bc384e0">impala::DiskIoMgr::BufferDescriptor::buffer_len</a></div><div class="ttdeci">int64_t buffer_len()</div><div class="ttdef"><b>Definition:</b> <a href="disk-io-mgr_8h_source.html#l00200">disk-io-mgr.h:200</a></div></div> |
| <div class="ttc" id="partitioning-throughput-test_8cc_html_ad172ecfd5c31c5df6282c2b4bc322bf7"><div class="ttname"><a href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a></div><div class="ttdeci">uint8_t offset[7 *64-sizeof(uint64_t)]</div><div class="ttdef"><b>Definition:</b> <a href="partitioning-throughput-test_8cc_source.html#l00037">partitioning-throughput-test.cc:37</a></div></div> |
| <div class="ttc" id="names_8h_html"><div class="ttname"><a href="names_8h.html">names.h</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_a602415d7e138ddbd21dbccb0c7689543"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a602415d7e138ddbd21dbccb0c7689543">impala::RowBatch::MaxTupleBufferSize</a></div><div class="ttdeci">int MaxTupleBufferSize()</div><div class="ttdoc">Computes the maximum size needed to store tuple data for this row batch. </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00325">row-batch.cc:325</a></div></div> |
| <div class="ttc" id="tuple-row_8h_html"><div class="ttname"><a href="tuple-row_8h.html">tuple-row.h</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ad2d33305d7a6c7effe46910fc02bcf99"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ad2d33305d7a6c7effe46910fc02bcf99">impala::RowBatch::~RowBatch</a></div><div class="ttdeci">~RowBatch()</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8cc_source.html#l00137">row-batch.cc:137</a></div></div> |
| <div class="ttc" id="classimpala_1_1Status_html_a95ba859e42fe93445b340533220836ac"><div class="ttname"><a href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">impala::Status::ok</a></div><div class="ttdeci">bool ok() const </div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00172">status.h:172</a></div></div> |
| <div class="ttc" id="string-value_8h_html"><div class="ttname"><a href="string-value_8h.html">string-value.h</a></div></div> |
| <div class="ttc" id="classimpala_1_1RowBatch_html_ae5dbdbb04a9bba3c0c6d375e0013513b"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ae5dbdbb04a9bba3c0c6d375e0013513b">impala::RowBatch::tuple_data_pool_</a></div><div class="ttdeci">boost::scoped_ptr< MemPool > tuple_data_pool_</div><div class="ttdoc">holding (some of the) data referenced by rows </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00253">row-batch.h:253</a></div></div> |
| </div><!-- fragment --></div><!-- contents --> |
| </div><!-- doc-content --> |
| <!-- start footer part --> |
| <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> |
| <ul> |
| <li class="navelem"><a class="el" href="dir_e5d120be6b5e8a44336cbfd013b25604.html">be</a></li><li class="navelem"><a class="el" href="dir_68cf7cafb51a962d5bc4848b83cab0de.html">src</a></li><li class="navelem"><a class="el" href="dir_1ef28ab5153adb64262182d038c65543.html">runtime</a></li><li class="navelem"><a class="el" href="row-batch_8cc.html">row-batch.cc</a></li> |
| <li class="footer">Generated on Thu May 7 2015 16:10:37 for Impala by |
| <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li> |
| </ul> |
| </div> |
| </body> |
| </html> |