blob: be0ab9f3aad396a2f256171352632974fbc63e45 [file] [log] [blame]
<!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/exec/base-sequence-scanner.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&#160;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&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;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('base-sequence-scanner_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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</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">base-sequence-scanner.cc</div> </div>
</div><!--header-->
<div class="contents">
<a href="base-sequence-scanner_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>&#160;<span class="comment">// Copyright 2012 Cloudera Inc.</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<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>&#160;<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>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<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>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<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>&#160;<span class="comment">// distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<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>&#160;<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>&#160;<span class="comment">// limitations under the License.</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;boost/bind.hpp&gt;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="base-sequence-scanner_8h.html">exec/base-sequence-scanner.h</a>&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="hdfs-scan-node_8h.html">exec/hdfs-scan-node.h</a>&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="scanner-context_8inline_8h.html">exec/scanner-context.inline.h</a>&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="runtime-state_8h.html">runtime/runtime-state.h</a>&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="string-search_8h.html">runtime/string-search.h</a>&quot;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="codec_8h.html">util/codec.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="names_8h.html">common/names.h</a>&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">using namespace </span>impala;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac62358e62350918ee1a0c429cd74fd5c">BaseSequenceScanner::HEADER_SIZE</a> = 1024;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ae3d4eec40706fa6d653246a19d17e006">BaseSequenceScanner::SYNC_MARKER</a> = -1;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// Constants used in ReadPastSize()</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="base-sequence-scanner_8cc.html#ac5a0880457028b83916eadd56b9dcf20"> 33</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="base-sequence-scanner_8cc.html#ac5a0880457028b83916eadd56b9dcf20">BLOCK_SIZE_PADDING_PERCENT</a> = 0.1;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="base-sequence-scanner_8cc.html#a4fd070e0de326e5cfa25a3bf0a8747e7"> 34</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="base-sequence-scanner_8cc.html#a4fd070e0de326e5cfa25a3bf0a8747e7">REMAINING_BLOCK_SIZE_GUESS</a> = 100 * 1024; <span class="comment">// bytes</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="base-sequence-scanner_8cc.html#a3286d10cafc052ea336a292d9d9ab686"> 35</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="base-sequence-scanner_8cc.html#a3286d10cafc052ea336a292d9d9ab686">MIN_SYNC_READ_SIZE</a> = 10 * 1024; <span class="comment">// bytes</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// Macro to convert between SerdeUtil errors to Status returns.</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565"> 38</a></span>&#160;<span class="preprocessor">#define RETURN_IF_FALSE(x) if (UNLIKELY(!(x))) return parse_status_</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#a6b84385660f88ed592fd61ac62c15793"> 40</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a6b84385660f88ed592fd61ac62c15793">BaseSequenceScanner::IssueInitialRanges</a>(<a class="code" href="classimpala_1_1HdfsScanNode.html">HdfsScanNode</a>* scan_node,</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> vector&lt;HdfsFileDesc*&gt;&amp; files) {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Issue just the header range for each file. When the header is complete,</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// we&#39;ll issue the splits for that file. Splits cannot be processed until the</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// header is parsed (the header object is then shared across splits for that file).</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; vector&lt;DiskIoMgr::ScanRange*&gt; header_ranges;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; files.size(); ++i) {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="structimpala_1_1ScanRangeMetadata.html">ScanRangeMetadata</a>* metadata =</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="structimpala_1_1ScanRangeMetadata.html">ScanRangeMetadata</a>*<span class="keyword">&gt;</span>(files[i]-&gt;splits[0]-&gt;meta_data());</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; int64_t header_size = min(static_cast&lt;int64_t&gt;(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac62358e62350918ee1a0c429cd74fd5c">HEADER_SIZE</a>), files[i]-&gt;file_length);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// The header is almost always a remote read. Set the disk id to -1 and indicate</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// it is not cached.</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// TODO: add remote disk id and plumb that through to the io mgr. It should have</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// 1 queue for each NIC as well?</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classimpala_1_1DiskIoMgr_1_1ScanRange.html">DiskIoMgr::ScanRange</a>* header_range = scan_node-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#a5314b840efa7625e54ce930ee1986bb1">AllocateScanRange</a>(</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; files[i]-&gt;fs, files[i]-&gt;filename.c_str(), header_size, 0, metadata-&gt;<a class="code" href="structimpala_1_1ScanRangeMetadata.html#a7a7171d1dc269bea3f3dd5636e4bb774">partition_id</a>,</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; -1, <span class="keyword">false</span>, <span class="keyword">false</span>, files[i]-&gt;mtime);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; header_ranges.push_back(header_range);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(scan_node-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#afe9bc42ad3846bde9f7113e5f1c133dc">AddDiskIoRanges</a>(header_ranges));</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#a240e63ad0129c83cb784f96031ad9f6d"> 63</a></span>&#160;<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a240e63ad0129c83cb784f96031ad9f6d">BaseSequenceScanner::BaseSequenceScanner</a>(<a class="code" href="classimpala_1_1HdfsScanNode.html">HdfsScanNode</a>* node, <a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; : <a class="code" href="classimpala_1_1HdfsScanner.html">HdfsScanner</a>(node, state),</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; header_(NULL),</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; block_start_(0),</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; total_block_size_(0),</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; num_syncs_(0) {</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#aae0d5cf9f400c07db437b4fa94b6be8a"> 71</a></span>&#160;<a class="code" href="classimpala_1_1BaseSequenceScanner.html#aae0d5cf9f400c07db437b4fa94b6be8a">BaseSequenceScanner::~BaseSequenceScanner</a>() {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#acc3c090b8b5e1c282c828be221697d5b"> 74</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#acc3c090b8b5e1c282c828be221697d5b">BaseSequenceScanner::Prepare</a>(<a class="code" href="classimpala_1_1ScannerContext.html">ScannerContext</a>* context) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#a99165297c6e6546edbee741a54dfd194">HdfsScanner::Prepare</a>(context));</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#acb22ac5214eff45da580c5be90c4d08f">set_read_past_size_cb</a>(bind(&amp;<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a9586fc33865674ed488abbbd0d7e2003">BaseSequenceScanner::ReadPastSize</a>, <span class="keyword">this</span>, _1));</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a393b2ff9306ac4becc7ae3838099a4c7">bytes_skipped_counter_</a> = <a class="code" href="runtime-profile_8h.html#aac035c52016117af399543521f069c51">ADD_COUNTER</a>(</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1ExecNode.html#ad062f28c78add1a869fffdab9419b09d">runtime_profile</a>(), <span class="stringliteral">&quot;BytesSkipped&quot;</span>, TUnit::BYTES);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#a1a37621b600b55d162832e8744fc6a17"> 82</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a1a37621b600b55d162832e8744fc6a17">BaseSequenceScanner::Close</a>() {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="logging_8h.html#a0bdc3628c740982e847cd24114c07994">VLOG_FILE</a> &lt;&lt; <span class="stringliteral">&quot;Bytes read past scan range: &quot;</span> &lt;&lt; -<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a48c8ea0f83bb58e810e5148e0addccb0">bytes_left</a>();</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="logging_8h.html#a0bdc3628c740982e847cd24114c07994">VLOG_FILE</a> &lt;&lt; <span class="stringliteral">&quot;Average block size: &quot;</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; &lt;&lt; (<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">num_syncs_</a> &gt; 1 ? <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a4e114262860e1f844d498c802336973c">total_block_size_</a> / (<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">num_syncs_</a> - 1) : 0);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Need to close the decompressor before releasing the resources at AddFinalRowBatch(),</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// because in some cases there is memory allocated in decompressor_&#39;s temp_memory_pool_.</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1HdfsScanner.html#a8d995c8326def52de037ecf074fc2654">decompressor_</a>.get() != NULL) {</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a8d995c8326def52de037ecf074fc2654">decompressor_</a>-&gt;Close();</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a8d995c8326def52de037ecf074fc2654">decompressor_</a>.reset(NULL);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a94b437624601d6e7626e9b3d59cd87da">AttachPool</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#ae86f3019c271de0d0593204003ee1653">data_buffer_pool_</a>.get(), <span class="keyword">false</span>);</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a36e661fbaff23879b78f53cdc1a56552">AddFinalRowBatch</a>();</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a0184e49248bc243ed45c77b8fb7aeac4">only_parsing_header_</a>) {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#a6193af89a13de0a3b8d45bc0e5cd288c">RangeComplete</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3ac35eed32d440edbd401600d9ee0c4">file_format</a>(), <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a394cc7bb9ae9309bce7f4d9167b083fc">compression_type</a>);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a61d4a073305f6befe9f12bad12f9de48">HdfsScanner::Close</a>();</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#acc59a2d650453eb5c12670519342c846"> 100</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#acc59a2d650453eb5c12670519342c846">BaseSequenceScanner::ProcessSplit</a>() {</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a> = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html">FileHeader</a>*<span class="keyword">&gt;</span>(</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#adab35319d4dbff9af621387591a32c2c">GetFileMetadata</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">filename</a>()));</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a> == NULL) {</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// This is the initial scan range just to parse the header</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a0184e49248bc243ed45c77b8fb7aeac4">only_parsing_header_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a> = <a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#a4c01f227dc12d859d5824e7c91d6d1aa">obj_pool</a>()-&gt;<a class="code" href="classimpala_1_1ObjectPool.html#ab191078c99825682a0a9915ca1e0c05c">Add</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a519c086c9914fa0c9e2a2f608814a46b">AllocateFileHeader</a>());</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classimpala_1_1Status.html">Status</a> status = <a class="code" href="classimpala_1_1BaseSequenceScanner.html#af924a2719c3aedb31c17bd3f0bd80af3">ReadFileHeader</a>();</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (!status.<a class="code" href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">ok</a>()) {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#ad449a8708ed26241be77b023c95ac7f0">abort_on_error</a>()) <span class="keywordflow">return</span> status;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#aaf076b1879d9e712b08ba3a6e24607b9">LogError</a>(status.<a class="code" href="classimpala_1_1Status.html#afe14635279d3cd633d08ecbadee51019">msg</a>());</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// We need to complete the ranges for this file.</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#adff67c7bd7dd6522b6db5682deefcdfe">CloseFileRanges</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">filename</a>());</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Header is parsed, set the metadata in the scan node and issue more ranges</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#a3405cd6d94586c152efae17e6cfbd787">SetFileMetadata</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">filename</a>(), <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="structimpala_1_1HdfsFileDesc.html">HdfsFileDesc</a>* desc = <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#a0521140f7c60d795fb7bd2f44c42c9bf">GetFileDesc</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">filename</a>());</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#afe9bc42ad3846bde9f7113e5f1c133dc">AddDiskIoRanges</a>(desc);</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// Initialize state for new scan range</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// If the file is compressed, the buffers in the stream_ are not used directly.</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a17899a9d57bf0246139d62029d40a7a3">is_compressed</a>) <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a53b77f52ccee137fbe9a39083bac3488">set_contains_tuple_data</a>(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#a542176620ff5194866253070a539134a">InitNewRange</a>());</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classimpala_1_1Status.html">Status</a> status = <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// Skip to the first record</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>() &lt; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a87d5f2145212f3a762255c4713357965">header_size</a>) {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// If the scan range starts within the header, skip to the end of the header so we</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// don&#39;t accidentally skip to an extra sync within the header</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565">RETURN_IF_FALSE</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac1bae8ae5208e9d2c2547bc0a7efddd6">SkipBytes</a>(</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a87d5f2145212f3a762255c4713357965">header_size</a> - <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>(), &amp;<a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a>));</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac583e95bbd1397d0ecbe526e7a35a445">SkipToSync</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#ab57f8bf94e3f23b8e9ed076b786d7a23">sync</a>, <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a>));</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">// Process Range.</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">while</span> (!<a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a>) {</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; status = <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a7fb6c7a9e0bdf14e594d412f7e1bc600">ProcessRange</a>();</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (status.<a class="code" href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">ok</a>()) <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (status.<a class="code" href="classimpala_1_1Status.html#a327e57a4c61d1387f8b52fce20e89a34">IsCancelled</a>() || status.<a class="code" href="classimpala_1_1Status.html#a39b7bde73a8803e2ceaf3b97d0fe94eb">IsMemLimitExceeded</a>()) <span class="keywordflow">return</span> status;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// Log error from file format parsing.</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#aaf076b1879d9e712b08ba3a6e24607b9">LogError</a>(<a class="code" href="classimpala_1_1ErrorMsg.html">ErrorMsg</a>(TErrorCode::SEQUENCE_SCANNER_PARSE_ERROR,</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">filename</a>(), <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>(),</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; (<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a1a423b75d11aaf04deb06633355bfb08">eof</a>() ? <span class="stringliteral">&quot;(EOF)&quot;</span> : <span class="stringliteral">&quot;&quot;</span>)));</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Make sure errors specified in the status are logged as well</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#aaf076b1879d9e712b08ba3a6e24607b9">LogError</a>(status.<a class="code" href="classimpala_1_1Status.html#afe14635279d3cd633d08ecbadee51019">msg</a>());</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// If abort on error then return, otherwise try to recover.</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#ad449a8708ed26241be77b023c95ac7f0">abort_on_error</a>()) <span class="keywordflow">return</span> status;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// Recover by skipping to the next sync.</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a> = <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; int64_t error_offset = <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>();</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; status = <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac583e95bbd1397d0ecbe526e7a35a445">SkipToSync</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#ab57f8bf94e3f23b8e9ed076b786d7a23">sync</a>, <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a>);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="runtime-profile_8h.html#a0842f330c18b3e4e53e13655add0310a">COUNTER_ADD</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a393b2ff9306ac4becc7ae3838099a4c7">bytes_skipped_counter_</a>, <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>() - error_offset);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(status);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; DCHECK(<a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a>.<a class="code" href="classimpala_1_1Status.html#a95ba859e42fe93445b340533220836ac">ok</a>());</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// All done with this scan range.</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#a38bb92ef6416325aefafbcaed8f5010c"> 170</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a38bb92ef6416325aefafbcaed8f5010c">BaseSequenceScanner::ReadSync</a>() {</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="comment">// We are finished when we read a sync marker occurring completely in the next</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// scan range</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a> = <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a0f3599f41ee84455e186a3d1b02fcbb7">eosr</a>();</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; uint8_t* <a class="code" href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">hash</a>;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; int64_t out_len;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565">RETURN_IF_FALSE</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#acfded8cb494dbda9eb700d32295e87be">GetBytes</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a>, &amp;hash, &amp;out_len, &amp;<a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a>));</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (out_len != <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a> || memcmp(hash, <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#ab57f8bf94e3f23b8e9ed076b786d7a23">sync</a>, <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a>)) {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; stringstream ss;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;Bad synchronization marker&quot;</span> &lt;&lt; endl</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; &lt;&lt; <span class="stringliteral">&quot; Expected: &#39;&quot;</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; &lt;&lt; <a class="code" href="classimpala_1_1ReadWriteUtil.html#a9c6a8fcabb5a5edb77de5866d5a4f7f4">ReadWriteUtil::HexDump</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">header_</a>-&gt;<a class="code" href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#ab57f8bf94e3f23b8e9ed076b786d7a23">sync</a>, <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a>) &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span> &lt;&lt; endl</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; &lt;&lt; <span class="stringliteral">&quot; Actual: &#39;&quot;</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; &lt;&lt; <a class="code" href="classimpala_1_1ReadWriteUtil.html#a9c6a8fcabb5a5edb77de5866d5a4f7f4">ReadWriteUtil::HexDump</a>(hash, <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">SYNC_HASH_SIZE</a>) &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html">Status</a>(ss.str());</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a> |= <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a1a423b75d11aaf04deb06633355bfb08">eof</a>();</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a4e114262860e1f844d498c802336973c">total_block_size_</a> += <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>() - <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5c06eddcf4b24c054328e7eeb28c5f1b">block_start_</a>;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5c06eddcf4b24c054328e7eeb28c5f1b">block_start_</a> = <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>();</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; ++<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">num_syncs_</a>;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;}</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#a92d958bf8e7eaee48dad0398def2589d"> 194</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a92d958bf8e7eaee48dad0398def2589d">BaseSequenceScanner::FindSyncBlock</a>(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">int</span> buffer_len,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">const</span> uint8_t* sync, <span class="keywordtype">int</span> sync_len) {</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">char</span>* sync_str = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">const_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(sync));</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="structimpala_1_1StringValue.html">StringValue</a> needle = <a class="code" href="structimpala_1_1StringValue.html">StringValue</a>(sync_str, sync_len);</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="structimpala_1_1StringValue.html">StringValue</a> haystack(</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; const_cast&lt;char*&gt;(reinterpret_cast&lt;const char*&gt;(buffer)), buffer_len);</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="classimpala_1_1StringSearch.html">StringSearch</a> search(&amp;needle);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">int</span> <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> = search.<a class="code" href="classimpala_1_1StringSearch.html#a4ab30c893cd9036d6ae5684e91b19012">Search</a>(&amp;haystack);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span> (offset != -1) {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Advance offset past sync</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; offset += sync_len;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">return</span> <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a>;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#ac583e95bbd1397d0ecbe526e7a35a445"> 212</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#ac583e95bbd1397d0ecbe526e7a35a445">BaseSequenceScanner::SkipToSync</a>(<span class="keyword">const</span> uint8_t* sync, <span class="keywordtype">int</span> sync_size) {</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// offset into current buffer of end of sync (once found, -1 until then)</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">int</span> <a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> = -1;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; uint8_t* buffer;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; int64_t buffer_len;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="classimpala_1_1Status.html">Status</a> status;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Read buffers until we find a sync or reach the end of the scan range. If we read all</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// the buffers remaining in the scan range and none of them contain a sync (including a</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">// sync that starts at the end of this scan range and continues into the next one), then</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// there are no more syncs in this scan range and we&#39;re finished.</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">while</span> (!<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a0f3599f41ee84455e186a3d1b02fcbb7">eosr</a>()) {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// Check if there&#39;s a sync fully contained in the current buffer</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a92a40b73fc3be37a22db492f1bd9071b">GetBuffer</a>(<span class="keyword">true</span>, &amp;buffer, &amp;buffer_len));</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; offset = <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a92d958bf8e7eaee48dad0398def2589d">FindSyncBlock</a>(buffer, buffer_len, sync, sync_size);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; DCHECK_LE(offset, buffer_len);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (offset != -1) <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// No sync found in the current buffer, so check if there&#39;s a sync spanning the</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// current buffer and the next. First we skip so there are sync_size - 1 bytes left,</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// then we read these bytes plus the first sync_size - 1 bytes of the next buffer.</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// This guarantees that we find any syncs that start in the current buffer and end in</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// the next buffer.</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; int64_t to_skip = max(static_cast&lt;int64_t&gt;(0), buffer_len - (sync_size - 1));</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565">RETURN_IF_FALSE</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac1bae8ae5208e9d2c2547bc0a7efddd6">SkipBytes</a>(to_skip, &amp;<a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a>));</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// Peek so we don&#39;t advance stream_ into the next buffer. If we don&#39;t find a sync here</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// then we&#39;ll need to check all of the next buffer, including the first sync_size -1</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// bytes.</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565">RETURN_IF_FALSE</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#acfded8cb494dbda9eb700d32295e87be">GetBytes</a>(</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; (sync_size - 1) * 2, &amp;buffer, &amp;buffer_len, &amp;<a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a>, <span class="keyword">true</span>));</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; offset = <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a92d958bf8e7eaee48dad0398def2589d">FindSyncBlock</a>(buffer, buffer_len, sync, sync_size);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; DCHECK_LE(offset, buffer_len);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (offset != -1) <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// No sync starting in this buffer, so advance stream_ to the beginning of the next</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// buffer.</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a92a40b73fc3be37a22db492f1bd9071b">GetBuffer</a>(<span class="keyword">false</span>, &amp;buffer, &amp;buffer_len));</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (offset == -1) {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// No more syncs in this scan range</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; DCHECK(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a0f3599f41ee84455e186a3d1b02fcbb7">eosr</a>());</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; DCHECK_GE(offset, sync_size);</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="comment">// Make sure sync starts in our scan range</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (offset - sync_size &gt;= <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a48c8ea0f83bb58e810e5148e0addccb0">bytes_left</a>()) {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565">RETURN_IF_FALSE</a>(<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac1bae8ae5208e9d2c2547bc0a7efddd6">SkipBytes</a>(offset, &amp;<a class="code" href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">parse_status_</a>));</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="logging_8h.html#a0bdc3628c740982e847cd24114c07994">VLOG_FILE</a> &lt;&lt; <span class="stringliteral">&quot;Found sync for: &quot;</span> &lt;&lt; <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">filename</a>()</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; &lt;&lt; <span class="stringliteral">&quot; at &quot;</span> &lt;&lt; <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>() - sync_size;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#a1a423b75d11aaf04deb06633355bfb08">eof</a>()) <a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">finished_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5c06eddcf4b24c054328e7eeb28c5f1b">block_start_</a> = <a class="code" href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">stream_</a>-&gt;<a class="code" href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">file_offset</a>();</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; ++<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">num_syncs_</a>;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;}</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
<div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#adff67c7bd7dd6522b6db5682deefcdfe"> 274</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#adff67c7bd7dd6522b6db5682deefcdfe">BaseSequenceScanner::CloseFileRanges</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; DCHECK(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a0184e49248bc243ed45c77b8fb7aeac4">only_parsing_header_</a>);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="structimpala_1_1HdfsFileDesc.html">HdfsFileDesc</a>* desc = <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#a0521140f7c60d795fb7bd2f44c42c9bf">GetFileDesc</a>(filename);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">const</span> vector&lt;DiskIoMgr::ScanRange*&gt;&amp; splits = desc-&gt;<a class="code" href="structimpala_1_1HdfsFileDesc.html#a513879a3999adaee5fbde411757e3703">splits</a>;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; splits.size(); ++i) {</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="runtime-profile_8h.html#a0842f330c18b3e4e53e13655add0310a">COUNTER_ADD</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a393b2ff9306ac4becc7ae3838099a4c7">bytes_skipped_counter_</a>, splits[i]-&gt;len());</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">scan_node_</a>-&gt;<a class="code" href="classimpala_1_1HdfsScanNode.html#a6193af89a13de0a3b8d45bc0e5cd288c">RangeComplete</a>(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#aa3ac35eed32d440edbd401600d9ee0c4">file_format</a>(), THdfsCompression::NONE);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;}</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classimpala_1_1BaseSequenceScanner.html#a9586fc33865674ed488abbbd0d7e2003"> 284</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a9586fc33865674ed488abbbd0d7e2003">BaseSequenceScanner::ReadPastSize</a>(int64_t file_offset) {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; DCHECK_GE(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a4e114262860e1f844d498c802336973c">total_block_size_</a>, 0);</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a4e114262860e1f844d498c802336973c">total_block_size_</a> == 0) {</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// This scan range didn&#39;t include a complete block, so we have no idea how many bytes</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// remain in the block. Guess.</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> <a class="code" href="base-sequence-scanner_8cc.html#a4fd070e0de326e5cfa25a3bf0a8747e7">REMAINING_BLOCK_SIZE_GUESS</a>;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; DCHECK_GE(<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">num_syncs_</a>, 2);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordtype">int</span> average_block_size = <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a4e114262860e1f844d498c802336973c">total_block_size_</a> / (<a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">num_syncs_</a> - 1);</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// Number of bytes read in the current block</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">int</span> block_bytes_read = file_offset - <a class="code" href="classimpala_1_1BaseSequenceScanner.html#a5c06eddcf4b24c054328e7eeb28c5f1b">block_start_</a>;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; DCHECK_GE(block_bytes_read, 0);</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">int</span> bytes_left = max(average_block_size - block_bytes_read, 0);</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// Include some padding</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; bytes_left += average_block_size * <a class="code" href="base-sequence-scanner_8cc.html#ac5a0880457028b83916eadd56b9dcf20">BLOCK_SIZE_PADDING_PERCENT</a>;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordtype">int</span> max_read_size = <a class="code" href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">state_</a>-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#a5e664a4e409bd8e13916e138a9b6e4a9">io_mgr</a>()-&gt;<a class="code" href="classimpala_1_1DiskIoMgr.html#a4d68607c8cf8f9003f47891af6627103">max_read_buffer_size</a>();</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> min(max(bytes_left, <a class="code" href="base-sequence-scanner_8cc.html#a3286d10cafc052ea336a292d9d9ab686">MIN_SYNC_READ_SIZE</a>), max_read_size);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;}</div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a6b84385660f88ed592fd61ac62c15793"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a6b84385660f88ed592fd61ac62c15793">impala::BaseSequenceScanner::IssueInitialRanges</a></div><div class="ttdeci">static Status IssueInitialRanges(HdfsScanNode *scan_node, const std::vector&lt; HdfsFileDesc * &gt; &amp;files)</div><div class="ttdoc">Issue the initial ranges for all sequence container files. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00040">base-sequence-scanner.cc:40</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_acb22ac5214eff45da580c5be90c4d08f"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#acb22ac5214eff45da580c5be90c4d08f">impala::ScannerContext::Stream::set_read_past_size_cb</a></div><div class="ttdeci">void set_read_past_size_cb(ReadPastSizeCallback cb)</div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00106">scanner-context.h:106</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a8d995c8326def52de037ecf074fc2654"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a8d995c8326def52de037ecf074fc2654">impala::HdfsScanner::decompressor_</a></div><div class="ttdeci">boost::scoped_ptr&lt; Codec &gt; decompressor_</div><div class="ttdoc">Decompressor class to use, if any. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00198">hdfs-scanner.h:198</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a542176620ff5194866253070a539134a"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a542176620ff5194866253070a539134a">impala::HdfsScanner::InitNewRange</a></div><div class="ttdeci">virtual Status InitNewRange()=0</div><div class="ttdoc">Reset internal state for a new scan range. </div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a1b361d5cc69ef26b606349a26c1a8415"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a1b361d5cc69ef26b606349a26c1a8415">impala::HdfsScanner::scan_node_</a></div><div class="ttdeci">HdfsScanNode * scan_node_</div><div class="ttdoc">The scan node that started this scanner. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00141">hdfs-scanner.h:141</a></div></div>
<div class="ttc" id="hdfs-scan-node_8h_html"><div class="ttname"><a href="hdfs-scan-node_8h.html">hdfs-scan-node.h</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_a92a40b73fc3be37a22db492f1bd9071b"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#a92a40b73fc3be37a22db492f1bd9071b">impala::ScannerContext::Stream::GetBuffer</a></div><div class="ttdeci">Status GetBuffer(bool peek, uint8_t **buffer, int64_t *out_len)</div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8cc_source.html#l00171">scanner-context.cc:171</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a0184e49248bc243ed45c77b8fb7aeac4"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a0184e49248bc243ed45c77b8fb7aeac4">impala::BaseSequenceScanner::only_parsing_header_</a></div><div class="ttdeci">bool only_parsing_header_</div><div class="ttdoc">If true, this scanner object is only for processing the header. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00130">base-sequence-scanner.h:130</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_ac7f1cf14b61ed091ee80c4f2dbadba4c"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#ac7f1cf14b61ed091ee80c4f2dbadba4c">impala::BaseSequenceScanner::header_</a></div><div class="ttdeci">FileHeader * header_</div><div class="ttdoc">File header for this scan range. This is not owned by the parent scan node. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00127">base-sequence-scanner.h:127</a></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_1ScannerContext_1_1Stream_html_a0f3599f41ee84455e186a3d1b02fcbb7"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#a0f3599f41ee84455e186a3d1b02fcbb7">impala::ScannerContext::Stream::eosr</a></div><div class="ttdeci">bool eosr() const </div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00113">scanner-context.h:113</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_a48c8ea0f83bb58e810e5148e0addccb0"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#a48c8ea0f83bb58e810e5148e0addccb0">impala::ScannerContext::Stream::bytes_left</a></div><div class="ttdeci">int64_t bytes_left()</div><div class="ttdoc">Return the number of bytes left in the range for this stream. </div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00109">scanner-context.h:109</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_ae86f3019c271de0d0593204003ee1653"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#ae86f3019c271de0d0593204003ee1653">impala::HdfsScanner::data_buffer_pool_</a></div><div class="ttdeci">boost::scoped_ptr&lt; MemPool &gt; data_buffer_pool_</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00205">hdfs-scanner.h:205</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a5814338e23714b1d66022f75bbb48c5b"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a5814338e23714b1d66022f75bbb48c5b">impala::BaseSequenceScanner::SYNC_HASH_SIZE</a></div><div class="ttdeci">static const int SYNC_HASH_SIZE</div><div class="ttdoc">Size of the sync hash field. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00049">base-sequence-scanner.h:49</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a7fb6c7a9e0bdf14e594d412f7e1bc600"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a7fb6c7a9e0bdf14e594d412f7e1bc600">impala::BaseSequenceScanner::ProcessRange</a></div><div class="ttdeci">virtual Status ProcessRange()=0</div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_ac583e95bbd1397d0ecbe526e7a35a445"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#ac583e95bbd1397d0ecbe526e7a35a445">impala::BaseSequenceScanner::SkipToSync</a></div><div class="ttdeci">Status SkipToSync(const uint8_t *sync, int sync_size)</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00212">base-sequence-scanner.cc:212</a></div></div>
<div class="ttc" id="classimpala_1_1StringSearch_html_a4ab30c893cd9036d6ae5684e91b19012"><div class="ttname"><a href="classimpala_1_1StringSearch.html#a4ab30c893cd9036d6ae5684e91b19012">impala::StringSearch::Search</a></div><div class="ttdeci">int Search(const StringValue *str) const </div><div class="ttdef"><b>Definition:</b> <a href="string-search_8h_source.html#l00110">string-search.h:110</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a8196c5dc7e842622df7ab43b8cd68397"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a8196c5dc7e842622df7ab43b8cd68397">impala::HdfsScanner::parse_status_</a></div><div class="ttdeci">Status parse_status_</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00195">hdfs-scanner.h:195</a></div></div>
<div class="ttc" id="namespaceimpala_html_a50b59c9628eedf49aa82643ce601967d"><div class="ttname"><a href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">impala::hash</a></div><div class="ttdeci">const StringSearch UrlParser::hash_search &amp; hash</div><div class="ttdef"><b>Definition:</b> <a href="url-parser_8cc_source.html#l00041">url-parser.cc:41</a></div></div>
<div class="ttc" id="status_8h_html_a85f7d0e774e15eb35b74f53264305e16"><div class="ttname"><a href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a></div><div class="ttdeci">#define RETURN_IF_ERROR(stmt)</div><div class="ttdoc">some generally useful macros </div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00242">status.h:242</a></div></div>
<div class="ttc" id="structimpala_1_1ScanRangeMetadata_html"><div class="ttname"><a href="structimpala_1_1ScanRangeMetadata.html">impala::ScanRangeMetadata</a></div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8h_source.html#l00078">hdfs-scan-node.h:78</a></div></div>
<div class="ttc" id="classimpala_1_1StringSearch_html"><div class="ttname"><a href="classimpala_1_1StringSearch.html">impala::StringSearch</a></div><div class="ttdef"><b>Definition:</b> <a href="string-search_8h_source.html#l00083">string-search.h:83</a></div></div>
<div class="ttc" id="codec_8h_html"><div class="ttname"><a href="codec_8h.html">codec.h</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a36e661fbaff23879b78f53cdc1a56552"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a36e661fbaff23879b78f53cdc1a56552">impala::HdfsScanner::AddFinalRowBatch</a></div><div class="ttdeci">void AddFinalRowBatch()</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8cc_source.html#l00145">hdfs-scanner.cc:145</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a5c06eddcf4b24c054328e7eeb28c5f1b"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a5c06eddcf4b24c054328e7eeb28c5f1b">impala::BaseSequenceScanner::block_start_</a></div><div class="ttdeci">int64_t block_start_</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00150">base-sequence-scanner.h:150</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html_a3405cd6d94586c152efae17e6cfbd787"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html#a3405cd6d94586c152efae17e6cfbd787">impala::HdfsScanNode::SetFileMetadata</a></div><div class="ttdeci">void SetFileMetadata(const std::string &amp;filename, void *metadata)</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8cc_source.html#l00211">hdfs-scan-node.cc:211</a></div></div>
<div class="ttc" id="structimpala_1_1BaseSequenceScanner_1_1FileHeader_html_a87d5f2145212f3a762255c4713357965"><div class="ttname"><a href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a87d5f2145212f3a762255c4713357965">impala::BaseSequenceScanner::FileHeader::header_size</a></div><div class="ttdeci">int64_t header_size</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00070">base-sequence-scanner.h:70</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html_adab35319d4dbff9af621387591a32c2c"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html#adab35319d4dbff9af621387591a32c2c">impala::HdfsScanNode::GetFileMetadata</a></div><div class="ttdeci">void * GetFileMetadata(const std::string &amp;filename)</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8cc_source.html#l00217">hdfs-scan-node.cc:217</a></div></div>
<div class="ttc" id="string-search_8h_html"><div class="ttname"><a href="string-search_8h.html">string-search.h</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_html"><div class="ttname"><a href="classimpala_1_1ScannerContext.html">impala::ScannerContext</a></div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00055">scanner-context.h:55</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_acc3c090b8b5e1c282c828be221697d5b"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#acc3c090b8b5e1c282c828be221697d5b">impala::BaseSequenceScanner::Prepare</a></div><div class="ttdeci">virtual Status Prepare(ScannerContext *context)</div><div class="ttdoc">One-time initialisation of state that is constant across scan ranges. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00074">base-sequence-scanner.cc:74</a></div></div>
<div class="ttc" id="runtime-profile_8h_html_a0842f330c18b3e4e53e13655add0310a"><div class="ttname"><a href="runtime-profile_8h.html#a0842f330c18b3e4e53e13655add0310a">COUNTER_ADD</a></div><div class="ttdeci">#define COUNTER_ADD(c, v)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-profile_8h_source.html#l00055">runtime-profile.h:55</a></div></div>
<div class="ttc" id="structimpala_1_1ScanRangeMetadata_html_a7a7171d1dc269bea3f3dd5636e4bb774"><div class="ttname"><a href="structimpala_1_1ScanRangeMetadata.html#a7a7171d1dc269bea3f3dd5636e4bb774">impala::ScanRangeMetadata::partition_id</a></div><div class="ttdeci">int64_t partition_id</div><div class="ttdoc">The partition id that this range is part of. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8h_source.html#l00080">hdfs-scan-node.h:80</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_ac50f8d6efde3334ce557e19e9b2ab7f9"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#ac50f8d6efde3334ce557e19e9b2ab7f9">impala::ScannerContext::Stream::file_offset</a></div><div class="ttdeci">int64_t file_offset() const </div><div class="ttdoc">Returns the buffer&#39;s current offset in the file. </div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00123">scanner-context.h:123</a></div></div>
<div class="ttc" id="structimpala_1_1BaseSequenceScanner_1_1FileHeader_html_a394cc7bb9ae9309bce7f4d9167b083fc"><div class="ttname"><a href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a394cc7bb9ae9309bce7f4d9167b083fc">impala::BaseSequenceScanner::FileHeader::compression_type</a></div><div class="ttdeci">THdfsCompression::type compression_type</div><div class="ttdoc">Enum for compression type. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00066">base-sequence-scanner.h:66</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html_a6193af89a13de0a3b8d45bc0e5cd288c"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html#a6193af89a13de0a3b8d45bc0e5cd288c">impala::HdfsScanNode::RangeComplete</a></div><div class="ttdeci">void RangeComplete(const THdfsFileFormat::type &amp;file_type, const THdfsCompression::type &amp;compression_type)</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8cc_source.html#l00924">hdfs-scan-node.cc:924</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_a8e06eee6a1aae5aa71b936be43d6aee4"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#a8e06eee6a1aae5aa71b936be43d6aee4">impala::ScannerContext::Stream::filename</a></div><div class="ttdeci">const char * filename()</div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00118">scanner-context.h:118</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a61d4a073305f6befe9f12bad12f9de48"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a61d4a073305f6befe9f12bad12f9de48">impala::HdfsScanner::Close</a></div><div class="ttdeci">virtual void Close()</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8cc_source.html#l00082">hdfs-scanner.cc:82</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_acfded8cb494dbda9eb700d32295e87be"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#acfded8cb494dbda9eb700d32295e87be">impala::ScannerContext::Stream::GetBytes</a></div><div class="ttdeci">bool GetBytes(int64_t requested_len, uint8_t **buffer, int64_t *out_len, Status *status, bool peek=false)</div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8inline_8h_source.html#l00031">scanner-context.inline.h:31</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_1HdfsScanner_html_a8d1c8ea0d46e9378c6db2c24395a3f78"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a8d1c8ea0d46e9378c6db2c24395a3f78">impala::HdfsScanner::state_</a></div><div class="ttdeci">RuntimeState * state_</div><div class="ttdoc">RuntimeState for error reporting. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00144">hdfs-scanner.h:144</a></div></div>
<div class="ttc" id="base-sequence-scanner_8cc_html_a4fd070e0de326e5cfa25a3bf0a8747e7"><div class="ttname"><a href="base-sequence-scanner_8cc.html#a4fd070e0de326e5cfa25a3bf0a8747e7">REMAINING_BLOCK_SIZE_GUESS</a></div><div class="ttdeci">static const int REMAINING_BLOCK_SIZE_GUESS</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00034">base-sequence-scanner.cc:34</a></div></div>
<div class="ttc" id="base-sequence-scanner_8cc_html_a2a5a24ebaf26175881d20696ab510565"><div class="ttname"><a href="base-sequence-scanner_8cc.html#a2a5a24ebaf26175881d20696ab510565">RETURN_IF_FALSE</a></div><div class="ttdeci">#define RETURN_IF_FALSE(x)</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00038">base-sequence-scanner.cc:38</a></div></div>
<div class="ttc" id="base-sequence-scanner_8cc_html_a3286d10cafc052ea336a292d9d9ab686"><div class="ttname"><a href="base-sequence-scanner_8cc.html#a3286d10cafc052ea336a292d9d9ab686">MIN_SYNC_READ_SIZE</a></div><div class="ttdeci">static const int MIN_SYNC_READ_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00035">base-sequence-scanner.cc:35</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_af924a2719c3aedb31c17bd3f0bd80af3"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#af924a2719c3aedb31c17bd3f0bd80af3">impala::BaseSequenceScanner::ReadFileHeader</a></div><div class="ttdeci">virtual Status ReadFileHeader()=0</div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_acc59a2d650453eb5c12670519342c846"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#acc59a2d650453eb5c12670519342c846">impala::BaseSequenceScanner::ProcessSplit</a></div><div class="ttdeci">virtual Status ProcessSplit()</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00100">base-sequence-scanner.cc:100</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a38bb92ef6416325aefafbcaed8f5010c"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a38bb92ef6416325aefafbcaed8f5010c">impala::BaseSequenceScanner::ReadSync</a></div><div class="ttdeci">Status ReadSync()</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00170">base-sequence-scanner.cc:170</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a9586fc33865674ed488abbbd0d7e2003"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a9586fc33865674ed488abbbd0d7e2003">impala::BaseSequenceScanner::ReadPastSize</a></div><div class="ttdeci">int ReadPastSize(int64_t file_offset)</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00284">base-sequence-scanner.cc:284</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html_a0521140f7c60d795fb7bd2f44c42c9bf"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html#a0521140f7c60d795fb7bd2f44c42c9bf">impala::HdfsScanNode::GetFileDesc</a></div><div class="ttdeci">HdfsFileDesc * GetFileDesc(const std::string &amp;filename)</div><div class="ttdoc">Returns the file desc for &#39;filename&#39;. Returns NULL if filename is invalid. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8cc_source.html#l00206">hdfs-scan-node.cc:206</a></div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html_aaf076b1879d9e712b08ba3a6e24607b9"><div class="ttname"><a href="classimpala_1_1RuntimeState.html#aaf076b1879d9e712b08ba3a6e24607b9">impala::RuntimeState::LogError</a></div><div class="ttdeci">bool LogError(const ErrorMsg &amp;msg)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8cc_source.html#l00224">runtime-state.cc:224</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html_afe9bc42ad3846bde9f7113e5f1c133dc"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html#afe9bc42ad3846bde9f7113e5f1c133dc">impala::HdfsScanNode::AddDiskIoRanges</a></div><div class="ttdeci">Status AddDiskIoRanges(const std::vector&lt; DiskIoMgr::ScanRange * &gt; &amp;ranges)</div><div class="ttdoc">Adds ranges to the io mgr queue and starts up new scanner threads if possible. </div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html"><div class="ttname"><a href="classimpala_1_1RuntimeState.html">impala::RuntimeState</a></div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00069">runtime-state.h:69</a></div></div>
<div class="ttc" id="classimpala_1_1Status_html_a327e57a4c61d1387f8b52fce20e89a34"><div class="ttname"><a href="classimpala_1_1Status.html#a327e57a4c61d1387f8b52fce20e89a34">impala::Status::IsCancelled</a></div><div class="ttdeci">bool IsCancelled() const </div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00174">status.h:174</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_a1a423b75d11aaf04deb06633355bfb08"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#a1a423b75d11aaf04deb06633355bfb08">impala::ScannerContext::Stream::eof</a></div><div class="ttdeci">bool eof() const </div><div class="ttdoc">If true, the stream has reached the end of the file. </div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00116">scanner-context.h:116</a></div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html_a4c01f227dc12d859d5824e7c91d6d1aa"><div class="ttname"><a href="classimpala_1_1RuntimeState.html#a4c01f227dc12d859d5824e7c91d6d1aa">impala::RuntimeState::obj_pool</a></div><div class="ttdeci">ObjectPool * obj_pool() const </div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00092">runtime-state.h:92</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a5be274fb82550166b716199805307992"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a5be274fb82550166b716199805307992">impala::BaseSequenceScanner::num_syncs_</a></div><div class="ttdeci">int num_syncs_</div><div class="ttdoc">The number of syncs seen by this scanner so far. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00157">base-sequence-scanner.h:157</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_aae0d5cf9f400c07db437b4fa94b6be8a"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#aae0d5cf9f400c07db437b4fa94b6be8a">impala::BaseSequenceScanner::~BaseSequenceScanner</a></div><div class="ttdeci">virtual ~BaseSequenceScanner()</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00071">base-sequence-scanner.cc:71</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_ac1bae8ae5208e9d2c2547bc0a7efddd6"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#ac1bae8ae5208e9d2c2547bc0a7efddd6">impala::ScannerContext::Stream::SkipBytes</a></div><div class="ttdeci">bool SkipBytes(int64_t length, Status *)</div><div class="ttdoc">Skip over the next length bytes in the specified HDFS file. </div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8inline_8h_source.html#l00070">scanner-context.inline.h:70</a></div></div>
<div class="ttc" id="runtime-profile_8h_html_aac035c52016117af399543521f069c51"><div class="ttname"><a href="runtime-profile_8h.html#aac035c52016117af399543521f069c51">ADD_COUNTER</a></div><div class="ttdeci">#define ADD_COUNTER(profile, name, unit)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-profile_8h_source.html#l00047">runtime-profile.h:47</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a393b2ff9306ac4becc7ae3838099a4c7"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a393b2ff9306ac4becc7ae3838099a4c7">impala::BaseSequenceScanner::bytes_skipped_counter_</a></div><div class="ttdeci">RuntimeProfile::Counter * bytes_skipped_counter_</div><div class="ttdoc">Number of bytes skipped when advancing to next sync on error. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00174">base-sequence-scanner.h:174</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html">impala::HdfsScanNode</a></div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8h_source.html#l00104">hdfs-scan-node.h:104</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a1a37621b600b55d162832e8744fc6a17"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a1a37621b600b55d162832e8744fc6a17">impala::BaseSequenceScanner::Close</a></div><div class="ttdeci">virtual void Close()</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00082">base-sequence-scanner.cc:82</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_ae3d4eec40706fa6d653246a19d17e006"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#ae3d4eec40706fa6d653246a19d17e006">impala::BaseSequenceScanner::SYNC_MARKER</a></div><div class="ttdeci">static const int SYNC_MARKER</div><div class="ttdoc">Sync indicator. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00124">base-sequence-scanner.h:124</a></div></div>
<div class="ttc" id="runtime-state_8h_html"><div class="ttname"><a href="runtime-state_8h.html">runtime-state.h</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_aa3ac35eed32d440edbd401600d9ee0c4"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#aa3ac35eed32d440edbd401600d9ee0c4">impala::BaseSequenceScanner::file_format</a></div><div class="ttdeci">virtual THdfsFileFormat::type file_format() const =0</div><div class="ttdoc">Returns type of scanner: e.g. rcfile, seqfile. </div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a94b437624601d6e7626e9b3d59cd87da"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a94b437624601d6e7626e9b3d59cd87da">impala::HdfsScanner::AttachPool</a></div><div class="ttdeci">void AttachPool(MemPool *pool, bool commit_batch)</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00256">hdfs-scanner.h:256</a></div></div>
<div class="ttc" id="classimpala_1_1ErrorMsg_html"><div class="ttname"><a href="classimpala_1_1ErrorMsg.html">impala::ErrorMsg</a></div><div class="ttdef"><b>Definition:</b> <a href="error-util_8h_source.html#l00047">error-util.h:47</a></div></div>
<div class="ttc" id="scanner-context_8inline_8h_html"><div class="ttname"><a href="scanner-context_8inline_8h.html">scanner-context.inline.h</a></div></div>
<div class="ttc" id="structimpala_1_1BaseSequenceScanner_1_1FileHeader_html"><div class="ttname"><a href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html">impala::BaseSequenceScanner::FileHeader</a></div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00053">base-sequence-scanner.h:53</a></div></div>
<div class="ttc" id="base-sequence-scanner_8cc_html_ac5a0880457028b83916eadd56b9dcf20"><div class="ttname"><a href="base-sequence-scanner_8cc.html#ac5a0880457028b83916eadd56b9dcf20">BLOCK_SIZE_PADDING_PERCENT</a></div><div class="ttdeci">static const double BLOCK_SIZE_PADDING_PERCENT</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00033">base-sequence-scanner.cc:33</a></div></div>
<div class="ttc" id="structimpala_1_1BaseSequenceScanner_1_1FileHeader_html_ab57f8bf94e3f23b8e9ed076b786d7a23"><div class="ttname"><a href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#ab57f8bf94e3f23b8e9ed076b786d7a23">impala::BaseSequenceScanner::FileHeader::sync</a></div><div class="ttdeci">uint8_t sync[SYNC_HASH_SIZE]</div><div class="ttdoc">The sync hash for this file. </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00057">base-sequence-scanner.h:57</a></div></div>
<div class="ttc" id="structimpala_1_1HdfsFileDesc_html_a513879a3999adaee5fbde411757e3703"><div class="ttname"><a href="structimpala_1_1HdfsFileDesc.html#a513879a3999adaee5fbde411757e3703">impala::HdfsFileDesc::splits</a></div><div class="ttdeci">std::vector&lt; DiskIoMgr::ScanRange * &gt; splits</div><div class="ttdoc">Splits (i.e. raw byte ranges) for this file, assigned to this scan node. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8h_source.html#l00070">hdfs-scan-node.h:70</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanNode_html_a5314b840efa7625e54ce930ee1986bb1"><div class="ttname"><a href="classimpala_1_1HdfsScanNode.html#a5314b840efa7625e54ce930ee1986bb1">impala::HdfsScanNode::AllocateScanRange</a></div><div class="ttdeci">DiskIoMgr::ScanRange * AllocateScanRange(hdfsFS fs, const char *file, int64_t len, int64_t offset, int64_t partition_id, int disk_id, bool try_cache, bool expected_local, int64_t mtime)</div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8cc_source.html#l00183">hdfs-scan-node.cc:183</a></div></div>
<div class="ttc" id="classimpala_1_1Status_html_a580565665ea944eb64f3f495b1bee1e0"><div class="ttname"><a href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">impala::Status::OK</a></div><div class="ttdeci">static const Status OK</div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00087">status.h:87</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html">impala::HdfsScanner</a></div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00091">hdfs-scanner.h:91</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_1ObjectPool_html_ab191078c99825682a0a9915ca1e0c05c"><div class="ttname"><a href="classimpala_1_1ObjectPool.html#ab191078c99825682a0a9915ca1e0c05c">impala::ObjectPool::Add</a></div><div class="ttdeci">T * Add(T *t)</div><div class="ttdef"><b>Definition:</b> <a href="object-pool_8h_source.html#l00042">object-pool.h:42</a></div></div>
<div class="ttc" id="classimpala_1_1ReadWriteUtil_html_a9c6a8fcabb5a5edb77de5866d5a4f7f4"><div class="ttname"><a href="classimpala_1_1ReadWriteUtil.html#a9c6a8fcabb5a5edb77de5866d5a4f7f4">impala::ReadWriteUtil::HexDump</a></div><div class="ttdeci">static std::string HexDump(const uint8_t *buf, int64_t length)</div><div class="ttdoc">Dump the first length bytes of buf to a Hex string. </div><div class="ttdef"><b>Definition:</b> <a href="read-write-util_8cc_source.html#l00072">read-write-util.cc:72</a></div></div>
<div class="ttc" id="classimpala_1_1Status_html_afe14635279d3cd633d08ecbadee51019"><div class="ttname"><a href="classimpala_1_1Status.html#afe14635279d3cd633d08ecbadee51019">impala::Status::msg</a></div><div class="ttdeci">const ErrorMsg &amp; msg() const </div><div class="ttdoc">Returns the error message associated with a non-successful status. </div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00189">status.h:189</a></div></div>
<div class="ttc" id="logging_8h_html_a0bdc3628c740982e847cd24114c07994"><div class="ttname"><a href="logging_8h.html#a0bdc3628c740982e847cd24114c07994">VLOG_FILE</a></div><div class="ttdeci">#define VLOG_FILE</div><div class="ttdef"><b>Definition:</b> <a href="logging_8h_source.html#l00058">logging.h:58</a></div></div>
<div class="ttc" id="classimpala_1_1DiskIoMgr_html_a4d68607c8cf8f9003f47891af6627103"><div class="ttname"><a href="classimpala_1_1DiskIoMgr.html#a4d68607c8cf8f9003f47891af6627103">impala::DiskIoMgr::max_read_buffer_size</a></div><div class="ttdeci">int max_read_buffer_size() const </div><div class="ttdoc">Returns the maximum read buffer size. </div><div class="ttdef"><b>Definition:</b> <a href="disk-io-mgr_8h_source.html#l00590">disk-io-mgr.h:590</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a92d958bf8e7eaee48dad0398def2589d"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a92d958bf8e7eaee48dad0398def2589d">impala::BaseSequenceScanner::FindSyncBlock</a></div><div class="ttdeci">int FindSyncBlock(const uint8_t *buffer, int buffer_len, const uint8_t *sync, int sync_len)</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00194">base-sequence-scanner.cc:194</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a4e114262860e1f844d498c802336973c"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a4e114262860e1f844d498c802336973c">impala::BaseSequenceScanner::total_block_size_</a></div><div class="ttdeci">int total_block_size_</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00154">base-sequence-scanner.h:154</a></div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html_ad449a8708ed26241be77b023c95ac7f0"><div class="ttname"><a href="classimpala_1_1RuntimeState.html#ad449a8708ed26241be77b023c95ac7f0">impala::RuntimeState::abort_on_error</a></div><div class="ttdeci">bool abort_on_error() const </div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00099">runtime-state.h:99</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="base-sequence-scanner_8h_html"><div class="ttname"><a href="base-sequence-scanner_8h.html">base-sequence-scanner.h</a></div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html_a5e664a4e409bd8e13916e138a9b6e4a9"><div class="ttname"><a href="classimpala_1_1RuntimeState.html#a5e664a4e409bd8e13916e138a9b6e4a9">impala::RuntimeState::io_mgr</a></div><div class="ttdeci">DiskIoMgr * io_mgr()</div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00139">runtime-state.h:139</a></div></div>
<div class="ttc" id="structimpala_1_1BaseSequenceScanner_1_1FileHeader_html_a17899a9d57bf0246139d62029d40a7a3"><div class="ttname"><a href="structimpala_1_1BaseSequenceScanner_1_1FileHeader.html#a17899a9d57bf0246139d62029d40a7a3">impala::BaseSequenceScanner::FileHeader::is_compressed</a></div><div class="ttdeci">bool is_compressed</div><div class="ttdoc">true if the file is compressed </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00060">base-sequence-scanner.h:60</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_ac62358e62350918ee1a0c429cd74fd5c"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#ac62358e62350918ee1a0c429cd74fd5c">impala::BaseSequenceScanner::HEADER_SIZE</a></div><div class="ttdeci">static const int HEADER_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00121">base-sequence-scanner.h:121</a></div></div>
<div class="ttc" id="classimpala_1_1DiskIoMgr_1_1ScanRange_html"><div class="ttname"><a href="classimpala_1_1DiskIoMgr_1_1ScanRange.html">impala::DiskIoMgr::ScanRange</a></div><div class="ttdef"><b>Definition:</b> <a href="disk-io-mgr_8h_source.html#l00295">disk-io-mgr.h:295</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_aa539050780939fc85267c63e9f262e05"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#aa539050780939fc85267c63e9f262e05">impala::HdfsScanner::stream_</a></div><div class="ttdeci">ScannerContext::Stream * stream_</div><div class="ttdoc">The first stream for context_. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8h_source.html#l00150">hdfs-scanner.h:150</a></div></div>
<div class="ttc" id="classimpala_1_1ScannerContext_1_1Stream_html_a53b77f52ccee137fbe9a39083bac3488"><div class="ttname"><a href="classimpala_1_1ScannerContext_1_1Stream.html#a53b77f52ccee137fbe9a39083bac3488">impala::ScannerContext::Stream::set_contains_tuple_data</a></div><div class="ttdeci">void set_contains_tuple_data(bool v)</div><div class="ttdef"><b>Definition:</b> <a href="scanner-context_8h_source.html#l00097">scanner-context.h:97</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_aa3430957bf7a888fddda01ac950ea46b"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#aa3430957bf7a888fddda01ac950ea46b">impala::BaseSequenceScanner::finished_</a></div><div class="ttdeci">bool finished_</div><div class="ttdoc">finished_ is set by ReadSync() and SkipToSync(). </div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8h_source.html#l00146">base-sequence-scanner.h:146</a></div></div>
<div class="ttc" id="classimpala_1_1Status_html_a39b7bde73a8803e2ceaf3b97d0fe94eb"><div class="ttname"><a href="classimpala_1_1Status.html#a39b7bde73a8803e2ceaf3b97d0fe94eb">impala::Status::IsMemLimitExceeded</a></div><div class="ttdeci">bool IsMemLimitExceeded() const </div><div class="ttdef"><b>Definition:</b> <a href="status_8h_source.html#l00178">status.h:178</a></div></div>
<div class="ttc" id="classimpala_1_1HdfsScanner_html_a99165297c6e6546edbee741a54dfd194"><div class="ttname"><a href="classimpala_1_1HdfsScanner.html#a99165297c6e6546edbee741a54dfd194">impala::HdfsScanner::Prepare</a></div><div class="ttdeci">virtual Status Prepare(ScannerContext *context)</div><div class="ttdoc">One-time initialisation of state that is constant across scan ranges. </div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scanner_8cc_source.html#l00071">hdfs-scanner.cc:71</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_adff67c7bd7dd6522b6db5682deefcdfe"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#adff67c7bd7dd6522b6db5682deefcdfe">impala::BaseSequenceScanner::CloseFileRanges</a></div><div class="ttdeci">void CloseFileRanges(const char *file)</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00274">base-sequence-scanner.cc:274</a></div></div>
<div class="ttc" id="structimpala_1_1HdfsFileDesc_html"><div class="ttname"><a href="structimpala_1_1HdfsFileDesc.html">impala::HdfsFileDesc</a></div><div class="ttdef"><b>Definition:</b> <a href="hdfs-scan-node_8h_source.html#l00053">hdfs-scan-node.h:53</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_ad062f28c78add1a869fffdab9419b09d"><div class="ttname"><a href="classimpala_1_1ExecNode.html#ad062f28c78add1a869fffdab9419b09d">impala::ExecNode::runtime_profile</a></div><div class="ttdeci">RuntimeProfile * runtime_profile()</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00161">exec-node.h:161</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a240e63ad0129c83cb784f96031ad9f6d"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a240e63ad0129c83cb784f96031ad9f6d">impala::BaseSequenceScanner::BaseSequenceScanner</a></div><div class="ttdeci">BaseSequenceScanner(HdfsScanNode *, RuntimeState *)</div><div class="ttdef"><b>Definition:</b> <a href="base-sequence-scanner_8cc_source.html#l00063">base-sequence-scanner.cc:63</a></div></div>
<div class="ttc" id="classimpala_1_1BaseSequenceScanner_html_a519c086c9914fa0c9e2a2f608814a46b"><div class="ttname"><a href="classimpala_1_1BaseSequenceScanner.html#a519c086c9914fa0c9e2a2f608814a46b">impala::BaseSequenceScanner::AllocateFileHeader</a></div><div class="ttdeci">virtual FileHeader * AllocateFileHeader()=0</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_479336c0a15f2c0737bcafcf969f884c.html">exec</a></li><li class="navelem"><a class="el" href="base-sequence-scanner_8cc.html">base-sequence-scanner.cc</a></li>
<li class="footer">Generated on Thu May 7 2015 16:10:35 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>