blob: 415a38bc8af34bef21c587c0630d694b7a6b2df6 [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/exchange-node.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('exchange-node_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">exchange-node.cc</div> </div>
</div><!--header-->
<div class="contents">
<a href="exchange-node_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 &quot;<a class="code" href="exchange-node_8h.html">exec/exchange-node.h</a>&quot;</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 &lt;boost/scoped_ptr.hpp&gt;</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="data-stream-mgr_8h.html">runtime/data-stream-mgr.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="data-stream-recvr_8h.html">runtime/data-stream-recvr.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="row-batch_8h.html">runtime/row-batch.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="debug-util_8h.html">util/debug-util.h</a>&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="runtime-profile_8h.html">util/runtime-profile.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;gen-cpp/PlanNodes_types.h&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="preprocessor">#include &quot;<a class="code" href="names_8h.html">common/names.h</a>&quot;</span></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">using namespace </span>impala;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<a class="code" href="namespaceimpala.html#aad7a37594ae12dd0bd87ca15f06b4ac8">DEFINE_int32</a>(exchg_node_buffer_size_bytes, 1024 * 1024 * 10,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="stringliteral">&quot;(Advanced) Maximum size of per-query receive-side buffer&quot;</span>);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#a0efe1f0ccace96919b5be4c5650bec8f"> 34</a></span>&#160;<a class="code" href="classimpala_1_1ExchangeNode.html#a0efe1f0ccace96919b5be4c5650bec8f">ExchangeNode::ExchangeNode</a>(</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classimpala_1_1ObjectPool.html">ObjectPool</a>* <a class="code" href="expr-benchmark_8cc.html#a3a5de7bd423fbc0afc4cf935c166ca6b">pool</a>, <span class="keyword">const</span> TPlanNode&amp; tnode, <span class="keyword">const</span> <a class="code" href="classimpala_1_1DescriptorTbl.html">DescriptorTbl</a>&amp; descs)</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; : <a class="code" href="classimpala_1_1ExecNode.html">ExecNode</a>(pool, tnode, descs),</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; num_senders_(0),</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; stream_recvr_(),</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; input_row_desc_(descs, tnode.exchange_node.input_row_tuples,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; vector&lt;<a class="code" href="classbool.html">bool</a>&gt;(</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; tnode.nullable_tuples.begin(),</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; tnode.nullable_tuples.begin() + tnode.exchange_node.input_row_tuples.size())),</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; next_row_idx_(0),</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; is_merging_(tnode.exchange_node.__isset.sort_info),</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; offset_(tnode.exchange_node.__isset.<a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> ? tnode.exchange_node.<a class="code" href="partitioning-throughput-test_8cc.html#ad172ecfd5c31c5df6282c2b4bc322bf7">offset</a> : 0),</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; num_rows_skipped_(0) {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; DCHECK_GE(<a class="code" href="classimpala_1_1ExchangeNode.html#a982d514a218085b276ee78d59cfc1aa3">offset_</a>, 0);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; DCHECK(<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a> || (<a class="code" href="classimpala_1_1ExchangeNode.html#a982d514a218085b276ee78d59cfc1aa3">offset_</a> == 0));</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#a714f3fbcd89d48499dafb851bb8d37db"> 51</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#a714f3fbcd89d48499dafb851bb8d37db">ExchangeNode::Init</a>(<span class="keyword">const</span> TPlanNode&amp; tnode) {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExecNode.html#a13f30c4259774ce6896fa5c1d5d86966">ExecNode::Init</a>(tnode));</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>) <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>.<a class="code" href="classimpala_1_1SortExecExprs.html#a842d9cfef9f9fabd50b273e09131759c">Init</a>(tnode.exchange_node.sort_info, <a class="code" href="classimpala_1_1ExecNode.html#ac55aaa21c7750fd5f8774aee1ac5211a">pool_</a>));</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a2ee636d5492c804bfd878441f5885942">is_asc_order_</a> = tnode.exchange_node.sort_info.is_asc_order;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a29a19b5745d1c93119c4bb1a37c91dfd">nulls_first_</a> = tnode.exchange_node.sort_info.nulls_first;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#ab8a478e988148394a18d9639dbebba8e"> 61</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#ab8a478e988148394a18d9639dbebba8e">ExchangeNode::Prepare</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state) {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExecNode.html#a0ae75733979977dbd9e7270359631b3e">ExecNode::Prepare</a>(state));</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#abafbc6f613a3b84dd877ab27c88d4574">convert_row_batch_timer_</a> = <a class="code" href="runtime-profile_8h.html#a8841ca205b2a05d608e82d443bad3a77">ADD_TIMER</a>(<a class="code" href="classimpala_1_1ExecNode.html#ad062f28c78add1a869fffdab9419b09d">runtime_profile</a>(), <span class="stringliteral">&quot;ConvertRowBatchTime&quot;</span>);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// TODO: figure out appropriate buffer size</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; DCHECK_GT(<a class="code" href="classimpala_1_1ExchangeNode.html#ac3def18ef1947129945892470a7b68d9">num_senders_</a>, 0);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a> = <a class="code" href="classimpala_1_1ExecEnv.html#af75aeec37f5b3b5eb9b531453af0c553">ExecEnv::GetInstance</a>()-&gt;<a class="code" href="classimpala_1_1ExecEnv.html#a776e198676e5f59f44d0f0f2b43cde68">stream_mgr</a>()-&gt;<a class="code" href="classimpala_1_1DataStreamMgr.html#ae55e553992518c85b403ef61d915278b">CreateRecvr</a>(state,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#adf3a126eaf26c989ca346cbfb5cf198c">input_row_desc_</a>, state-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#ac985744be040bdbe5b1d4d4967c9c0e0">fragment_instance_id</a>(), <a class="code" href="classimpala_1_1ExecNode.html#a2d543ec055a04199286b52d23a82280f">id_</a>, <a class="code" href="classimpala_1_1ExchangeNode.html#ac3def18ef1947129945892470a7b68d9">num_senders_</a>,</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; FLAGS_exchg_node_buffer_size_bytes, <a class="code" href="classimpala_1_1ExecNode.html#ad062f28c78add1a869fffdab9419b09d">runtime_profile</a>(), <a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>) {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>.<a class="code" href="classimpala_1_1SortExecExprs.html#af1a7a085f15e5ff923685b5477a08f4b">Prepare</a>(</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; state, <a class="code" href="classimpala_1_1ExecNode.html#a900a9e0a75e9839f9c6d4658518944b8">row_descriptor_</a>, <a class="code" href="classimpala_1_1ExecNode.html#a900a9e0a75e9839f9c6d4658518944b8">row_descriptor_</a>, <a class="code" href="classimpala_1_1ExecNode.html#abe940aa2d7da783c4e8c65f0af22ad8f">expr_mem_tracker</a>()));</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classimpala_1_1ExecNode.html#a19340582202dd61e0b028c28efa5490a">AddExprCtxsToFree</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>);</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"> 74</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="l00075"></a><span class="lineno"> 75</span>&#160;}</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#a3255675163929ed93f63c286cb47ba9b"> 77</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#a3255675163929ed93f63c286cb47ba9b">ExchangeNode::Open</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state) {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="runtime-profile_8h.html#aaa9a2971c6368e3ddd3f5140a0295eb7">SCOPED_TIMER</a>(<a class="code" href="classimpala_1_1ExecNode.html#a9cab4e45a94527ff97333c0f280036f8">runtime_profile_</a>-&gt;total_time_counter());</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExecNode.html#a0e9b5636a80c8fe8c2ab31990c84ff51">ExecNode::Open</a>(state));</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>) {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>.<a class="code" href="classimpala_1_1SortExecExprs.html#afcc9ae8c5039d8ca5a1d3ca34153d2b4">Open</a>(state));</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classimpala_1_1TupleRowComparator.html">TupleRowComparator</a> less_than(<a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>.<a class="code" href="classimpala_1_1SortExecExprs.html#ab4a2baca049389863f53516fe7ab3814">lhs_ordering_expr_ctxs</a>(),</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>.<a class="code" href="classimpala_1_1SortExecExprs.html#a866c6d0684b00f3aaa7b3da5e631092e">rhs_ordering_expr_ctxs</a>(), <a class="code" href="classimpala_1_1ExchangeNode.html#a2ee636d5492c804bfd878441f5885942">is_asc_order_</a>, <a class="code" href="classimpala_1_1ExchangeNode.html#a29a19b5745d1c93119c4bb1a37c91dfd">nulls_first_</a>);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// CreateMerger() will populate its merging heap with batches from the stream_recvr_,</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// so it is not necessary to call FillInputRowBatch().</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;CreateMerger(less_than);</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#a851443c198682c29029118c723c4f25f">FillInputRowBatch</a>(state));</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</span>&#160;}</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#ae9c04a8fb64f2f6049d82341d1a331fc"> 93</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#ae9c04a8fb64f2f6049d82341d1a331fc">ExchangeNode::Reset</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state) {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; DCHECK(<span class="keyword">false</span>) &lt;&lt; <span class="stringliteral">&quot;NYI&quot;</span>;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html">Status</a>(<span class="stringliteral">&quot;NYI&quot;</span>);</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;</div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#a626a1bf0f19e9ccd4be6d1db164fd912"> 98</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classimpala_1_1ExchangeNode.html#a626a1bf0f19e9ccd4be6d1db164fd912">ExchangeNode::Close</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state) {</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExecNode.html#a467751b7182365c83e867dc3d50b43e2">is_closed</a>()) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>) <a class="code" href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">sort_exec_exprs_</a>.<a class="code" href="classimpala_1_1SortExecExprs.html#adde96dd13657e14a69266ec370e3710a">Close</a>(state);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a> != NULL) <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;Close();</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>.reset();</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classimpala_1_1ExecNode.html#a726e2aca524ace8e4c043377e621285a">ExecNode::Close</a>(state);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#a851443c198682c29029118c723c4f25f"> 106</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#a851443c198682c29029118c723c4f25f">ExchangeNode::FillInputRowBatch</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state) {</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; DCHECK(!<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classimpala_1_1Status.html">Status</a> ret_status;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="runtime-profile_8h.html#aaa9a2971c6368e3ddd3f5140a0295eb7">SCOPED_TIMER</a>(state-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#a595deed31ab167c3033d839f98bc5b10">total_network_receive_timer</a>());</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; ret_status = <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;GetBatch(&amp;<a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a>);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="logging_8h.html#a0bdc3628c740982e847cd24114c07994">VLOG_FILE</a> &lt;&lt; <span class="stringliteral">&quot;exch: has batch=&quot;</span> &lt;&lt; (<a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a> == NULL ? <span class="stringliteral">&quot;false&quot;</span> : <span class="stringliteral">&quot;true&quot;</span>)</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; &lt;&lt; <span class="stringliteral">&quot; #rows=&quot;</span> &lt;&lt; (input_batch_ != NULL ? input_batch_-&gt;num_rows() : 0)</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is_cancelled=&quot;</span> &lt;&lt; (ret_status.<a class="code" href="classimpala_1_1Status.html#a327e57a4c61d1387f8b52fce20e89a34">IsCancelled</a>() ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>)</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; &lt;&lt; <span class="stringliteral">&quot; instance_id=&quot;</span> &lt;&lt; state-&gt;<a class="code" href="classimpala_1_1RuntimeState.html#ac985744be040bdbe5b1d4d4967c9c0e0">fragment_instance_id</a>();</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> ret_status;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#a868513c43837ef112a41d7895f6b9fb3"> 120</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#a868513c43837ef112a41d7895f6b9fb3">ExchangeNode::GetNext</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state, <a class="code" href="classimpala_1_1RowBatch.html">RowBatch</a>* output_batch, <span class="keywordtype">bool</span>* eos) {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExecNode.html#a310d3a6b28f5bb1046a90ef8995ffb12">ExecDebugAction</a>(TExecNodePhase::GETNEXT, state));</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="runtime-profile_8h.html#aaa9a2971c6368e3ddd3f5140a0295eb7">SCOPED_TIMER</a>(<a class="code" href="classimpala_1_1ExecNode.html#a9cab4e45a94527ff97333c0f280036f8">runtime_profile_</a>-&gt;total_time_counter());</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExecNode.html#a3ff26374466bc587eaa4c7d00b3e126a">ReachedLimit</a>()) {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;TransferAllResources(output_batch);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; *eos = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; *eos = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</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="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">is_merging_</a>) <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1ExchangeNode.html#aab275625e8dfa2a0f34c6af8406041de">GetNextMerging</a>(state, output_batch, eos);</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="runtime-profile_8h.html#aaa9a2971c6368e3ddd3f5140a0295eb7">SCOPED_TIMER</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#abafbc6f613a3b84dd877ab27c88d4574">convert_row_batch_timer_</a>);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="runtime-state_8h.html#a803877a2ce5ce5c0b4f311c9c7137ba1">RETURN_IF_CANCELLED</a>(state);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExecNode.html#ab8f2832c6a5487aa8168b2a7d65773ee">QueryMaintenance</a>(state));</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">// copy rows until we hit the limit/capacity or until we exhaust input_batch_</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">while</span> (!<a class="code" href="classimpala_1_1ExecNode.html#a3ff26374466bc587eaa4c7d00b3e126a">ReachedLimit</a>() &amp;&amp; !output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a040ced48537a518bd45a89e64f2e8281">AtCapacity</a>()</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; &amp;&amp; <a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a> != NULL &amp;&amp; <a class="code" href="classimpala_1_1ExchangeNode.html#af9e7c98850fb6e129d99978d9ff45939">next_row_idx_</a> &lt; <a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a>-&gt;<a class="code" href="classimpala_1_1RowBatch.html#ab171442ddcb3a1c3aab36991dbb511bb">capacity</a>()) {</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classimpala_1_1TupleRow.html">TupleRow</a>* src = <a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a>-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">GetRow</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#af9e7c98850fb6e129d99978d9ff45939">next_row_idx_</a>);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; ++<a class="code" href="classimpala_1_1ExchangeNode.html#af9e7c98850fb6e129d99978d9ff45939">next_row_idx_</a>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">int</span> j = output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a34b82362d8ad1e89c433e04999a6a0cb">AddRow</a>();</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classimpala_1_1TupleRow.html">TupleRow</a>* dest = output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">GetRow</a>(j);</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// if the input row is shorter than the output row, make sure not to leave</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// uninitialized Tuple* around</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#afc32ad19ee3a0cd456cd3da9be8f48da">ClearRow</a>(dest);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// this works as expected if rows from input_batch form a prefix of</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// rows in output_batch</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a>-&gt;<a class="code" href="classimpala_1_1RowBatch.html#af286af57396a4cb409a19ace07f87aff">CopyRow</a>(src, dest);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#aef978a61ab3f47c2b9e53e304eead853">CommitLastRow</a>();</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; ++<a class="code" href="classimpala_1_1ExecNode.html#a9789aeca3e98cda63998a8f47d355fd9">num_rows_returned_</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; <a class="code" href="runtime-profile_8h.html#a9e3d8174f6545ee9c4fd37c624ea58f7">COUNTER_SET</a>(<a class="code" href="classimpala_1_1ExecNode.html#a632a4cdd4c654f362f630936c5ecb29a">rows_returned_counter_</a>, <a class="code" href="classimpala_1_1ExecNode.html#a9789aeca3e98cda63998a8f47d355fd9">num_rows_returned_</a>);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExecNode.html#a3ff26374466bc587eaa4c7d00b3e126a">ReachedLimit</a>()) {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;TransferAllResources(output_batch);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; *eos = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</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="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a040ced48537a518bd45a89e64f2e8281">AtCapacity</a>()) <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// we need more rows</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;TransferAllResources(output_batch);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#a851443c198682c29029118c723c4f25f">FillInputRowBatch</a>(state));</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; *eos = (<a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a> == NULL);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span> (*eos) <span class="keywordflow">return</span> <a class="code" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#af9e7c98850fb6e129d99978d9ff45939">next_row_idx_</a> = 0;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; DCHECK(<a class="code" href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">input_batch_</a>-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a1879b7b9b72142d7a56d4846ad307bd9">row_desc</a>().<a class="code" href="classimpala_1_1RowDescriptor.html#a233c21a90d5fd5b2b2ee83edd26eda26">IsPrefixOf</a>(output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a1879b7b9b72142d7a56d4846ad307bd9">row_desc</a>()));</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#aab275625e8dfa2a0f34c6af8406041de"> 174</a></span>&#160;<a class="code" href="classimpala_1_1Status.html">Status</a> <a class="code" href="classimpala_1_1ExchangeNode.html#aab275625e8dfa2a0f34c6af8406041de">ExchangeNode::GetNextMerging</a>(<a class="code" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* state, <a class="code" href="classimpala_1_1RowBatch.html">RowBatch</a>* output_batch,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordtype">bool</span>* eos) {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; DCHECK_EQ(output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">num_rows</a>(), 0);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;GetNext(output_batch, eos));</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">while</span> ((<a class="code" href="classimpala_1_1ExchangeNode.html#a6467c220591ecae3d8fd0089c52f6cf9">num_rows_skipped_</a> &lt; <a class="code" href="classimpala_1_1ExchangeNode.html#a982d514a218085b276ee78d59cfc1aa3">offset_</a>)) {</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classimpala_1_1ExchangeNode.html#a6467c220591ecae3d8fd0089c52f6cf9">num_rows_skipped_</a> += output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">num_rows</a>();</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Throw away rows in the output batch until the offset is skipped.</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">int</span> rows_to_keep = <a class="code" href="classimpala_1_1ExchangeNode.html#a6467c220591ecae3d8fd0089c52f6cf9">num_rows_skipped_</a> - <a class="code" href="classimpala_1_1ExchangeNode.html#a982d514a218085b276ee78d59cfc1aa3">offset_</a>;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (rows_to_keep &gt; 0) {</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a7af92976c8501cce4620d6e0bb6ed4f4">CopyRows</a>(0, output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">num_rows</a>() - rows_to_keep, rows_to_keep);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a56893f5c0ac2f5831c85e8c87e838089">set_num_rows</a>(rows_to_keep);</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a56893f5c0ac2f5831c85e8c87e838089">set_num_rows</a>(0);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (rows_to_keep &gt; 0 || *eos || output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a040ced48537a518bd45a89e64f2e8281">AtCapacity</a>()) <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="status_8h.html#a85f7d0e774e15eb35b74f53264305e16">RETURN_IF_ERROR</a>(<a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;GetNext(output_batch, eos));</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</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; <a class="code" href="classimpala_1_1ExecNode.html#a9789aeca3e98cda63998a8f47d355fd9">num_rows_returned_</a> += output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">num_rows</a>();</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classimpala_1_1ExecNode.html#a3ff26374466bc587eaa4c7d00b3e126a">ReachedLimit</a>()) {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#a56893f5c0ac2f5831c85e8c87e838089">set_num_rows</a>(output_batch-&gt;<a class="code" href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">num_rows</a>() - (<a class="code" href="classimpala_1_1ExecNode.html#a9789aeca3e98cda63998a8f47d355fd9">num_rows_returned_</a> - <a class="code" href="classimpala_1_1ExecNode.html#ae41f912c39b004f60987b4d480e442b8">limit_</a>));</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; *eos = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</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; <span class="comment">// On eos, transfer all remaining resources from the input batches maintained</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// by the merger to the output batch.</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (*eos) <a class="code" href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">stream_recvr_</a>-&gt;TransferAllResources(output_batch);</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="runtime-profile_8h.html#a9e3d8174f6545ee9c4fd37c624ea58f7">COUNTER_SET</a>(<a class="code" href="classimpala_1_1ExecNode.html#a632a4cdd4c654f362f630936c5ecb29a">rows_returned_counter_</a>, <a class="code" href="classimpala_1_1ExecNode.html#a9789aeca3e98cda63998a8f47d355fd9">num_rows_returned_</a>);</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</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="l00205"></a><span class="lineno"> 205</span>&#160;}</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classimpala_1_1ExchangeNode.html#afd05f2fc49d1d3669cb38c72ed262ed4"> 207</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classimpala_1_1ExecNode.html#a56de50f3c92483ba38f6e42ab19cc0a2">ExchangeNode::DebugString</a>(<span class="keywordtype">int</span> indentation_level, stringstream* out)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; *out &lt;&lt; string(indentation_level * 2, <span class="charliteral">&#39; &#39;</span>);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; *out &lt;&lt; <span class="stringliteral">&quot;ExchangeNode(#senders=&quot;</span> &lt;&lt; <a class="code" href="classimpala_1_1ExchangeNode.html#ac3def18ef1947129945892470a7b68d9">num_senders_</a>;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classimpala_1_1ExecNode.html#a56de50f3c92483ba38f6e42ab19cc0a2">ExecNode::DebugString</a>(indentation_level, out);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; *out &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;}</div>
<div class="ttc" id="row-batch_8h_html"><div class="ttname"><a href="row-batch_8h.html">row-batch.h</a></div></div>
<div class="ttc" id="classimpala_1_1DescriptorTbl_html"><div class="ttname"><a href="classimpala_1_1DescriptorTbl.html">impala::DescriptorTbl</a></div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8h_source.html#l00338">descriptors.h:338</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_ac695df3b85ee416b3d99844813ae813d"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ac695df3b85ee416b3d99844813ae813d">impala::RowBatch::num_rows</a></div><div class="ttdeci">int num_rows() const </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00215">row-batch.h:215</a></div></div>
<div class="ttc" id="classimpala_1_1DataStreamMgr_html_ae55e553992518c85b403ef61d915278b"><div class="ttname"><a href="classimpala_1_1DataStreamMgr.html#ae55e553992518c85b403ef61d915278b">impala::DataStreamMgr::CreateRecvr</a></div><div class="ttdeci">boost::shared_ptr&lt; DataStreamRecvr &gt; CreateRecvr(RuntimeState *state, const RowDescriptor &amp;row_desc, const TUniqueId &amp;fragment_instance_id, PlanNodeId dest_node_id, int num_senders, int buffer_size, RuntimeProfile *profile, bool is_merging)</div><div class="ttdef"><b>Definition:</b> <a href="data-stream-mgr_8cc_source.html#l00046">data-stream-mgr.cc:46</a></div></div>
<div class="ttc" id="classimpala_1_1TupleRowComparator_html"><div class="ttname"><a href="classimpala_1_1TupleRowComparator.html">impala::TupleRowComparator</a></div><div class="ttdef"><b>Definition:</b> <a href="tuple-row-compare_8h_source.html#l00027">tuple-row-compare.h:27</a></div></div>
<div class="ttc" id="runtime-profile_8h_html"><div class="ttname"><a href="runtime-profile_8h.html">runtime-profile.h</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a1d8d3f10e9246001c948fa7092ddbe5c"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a1d8d3f10e9246001c948fa7092ddbe5c">impala::ExchangeNode::stream_recvr_</a></div><div class="ttdeci">boost::shared_ptr&lt; DataStreamRecvr &gt; stream_recvr_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00072">exchange-node.h:72</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a9789aeca3e98cda63998a8f47d355fd9"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a9789aeca3e98cda63998a8f47d355fd9">impala::ExecNode::num_rows_returned_</a></div><div class="ttdeci">int64_t num_rows_returned_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00223">exec-node.h:223</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_afc32ad19ee3a0cd456cd3da9be8f48da"><div class="ttname"><a href="classimpala_1_1RowBatch.html#afc32ad19ee3a0cd456cd3da9be8f48da">impala::RowBatch::ClearRow</a></div><div class="ttdeci">void ClearRow(TupleRow *row)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00187">row-batch.h:187</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a3255675163929ed93f63c286cb47ba9b"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a3255675163929ed93f63c286cb47ba9b">impala::ExchangeNode::Open</a></div><div class="ttdeci">virtual Status Open(RuntimeState *state)</div><div class="ttdoc">Blocks until the first batch is available for consumption via GetNext(). </div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00077">exchange-node.cc:77</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a6467c220591ecae3d8fd0089c52f6cf9"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a6467c220591ecae3d8fd0089c52f6cf9">impala::ExchangeNode::num_rows_skipped_</a></div><div class="ttdeci">int64_t num_rows_skipped_</div><div class="ttdoc">Number of rows skipped so far. </div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00103">exchange-node.h:103</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a9cab4e45a94527ff97333c0f280036f8"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a9cab4e45a94527ff97333c0f280036f8">impala::ExecNode::runtime_profile_</a></div><div class="ttdeci">boost::scoped_ptr&lt; RuntimeProfile &gt; runtime_profile_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00225">exec-node.h:225</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_a1879b7b9b72142d7a56d4846ad307bd9"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a1879b7b9b72142d7a56d4846ad307bd9">impala::RowBatch::row_desc</a></div><div class="ttdeci">const RowDescriptor &amp; row_desc() const </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00218">row-batch.h:218</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a714f3fbcd89d48499dafb851bb8d37db"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a714f3fbcd89d48499dafb851bb8d37db">impala::ExchangeNode::Init</a></div><div class="ttdeci">virtual Status Init(const TPlanNode &amp;tnode)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00051">exchange-node.cc:51</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="classimpala_1_1ExecNode_html_a13f30c4259774ce6896fa5c1d5d86966"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a13f30c4259774ce6896fa5c1d5d86966">impala::ExecNode::Init</a></div><div class="ttdeci">virtual Status Init(const TPlanNode &amp;tnode)</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00124">exec-node.cc:124</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_a9320ed986b0717ef26d73d871f3b3a42"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a9320ed986b0717ef26d73d871f3b3a42">impala::RowBatch::GetRow</a></div><div class="ttdeci">TupleRow * GetRow(int row_idx)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00140">row-batch.h:140</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_ab8a478e988148394a18d9639dbebba8e"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#ab8a478e988148394a18d9639dbebba8e">impala::ExchangeNode::Prepare</a></div><div class="ttdeci">virtual Status Prepare(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00061">exchange-node.cc:61</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a900a9e0a75e9839f9c6d4658518944b8"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a900a9e0a75e9839f9c6d4658518944b8">impala::ExecNode::row_descriptor_</a></div><div class="ttdeci">RowDescriptor row_descriptor_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00215">exec-node.h:215</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a2ee636d5492c804bfd878441f5885942"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a2ee636d5492c804bfd878441f5885942">impala::ExchangeNode::is_asc_order_</a></div><div class="ttdeci">std::vector&lt; bool &gt; is_asc_order_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00096">exchange-node.h:96</a></div></div>
<div class="ttc" id="runtime-profile_8h_html_a8841ca205b2a05d608e82d443bad3a77"><div class="ttname"><a href="runtime-profile_8h.html#a8841ca205b2a05d608e82d443bad3a77">ADD_TIMER</a></div><div class="ttdeci">#define ADD_TIMER(profile, name)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-profile_8h_source.html#l00050">runtime-profile.h:50</a></div></div>
<div class="ttc" id="data-stream-mgr_8h_html"><div class="ttname"><a href="data-stream-mgr_8h.html">data-stream-mgr.h</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_ad4911c694aaf694b2ef97a64fa87fb9f"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#ad4911c694aaf694b2ef97a64fa87fb9f">impala::ExchangeNode::is_merging_</a></div><div class="ttdeci">bool is_merging_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00092">exchange-node.h:92</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_adf3a126eaf26c989ca346cbfb5cf198c"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#adf3a126eaf26c989ca346cbfb5cf198c">impala::ExchangeNode::input_row_desc_</a></div><div class="ttdeci">RowDescriptor input_row_desc_</div><div class="ttdoc">our input rows are a prefix of the rows we produce </div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00075">exchange-node.h:75</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_a040ced48537a518bd45a89e64f2e8281"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a040ced48537a518bd45a89e64f2e8281">impala::RowBatch::AtCapacity</a></div><div class="ttdeci">bool AtCapacity()</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00120">row-batch.h:120</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_a7af92976c8501cce4620d6e0bb6ed4f4"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a7af92976c8501cce4620d6e0bb6ed4f4">impala::RowBatch::CopyRows</a></div><div class="ttdeci">void CopyRows(int dest, int src, int num_rows)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00179">row-batch.h:179</a></div></div>
<div class="ttc" id="classimpala_1_1ObjectPool_html"><div class="ttname"><a href="classimpala_1_1ObjectPool.html">impala::ObjectPool</a></div><div class="ttdef"><b>Definition:</b> <a href="object-pool_8h_source.html#l00030">object-pool.h:30</a></div></div>
<div class="ttc" id="classimpala_1_1TupleRow_html"><div class="ttname"><a href="classimpala_1_1TupleRow.html">impala::TupleRow</a></div><div class="ttdef"><b>Definition:</b> <a href="tuple-row_8h_source.html#l00028">tuple-row.h:28</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a310d3a6b28f5bb1046a90ef8995ffb12"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a310d3a6b28f5bb1046a90ef8995ffb12">impala::ExecNode::ExecDebugAction</a></div><div class="ttdeci">Status ExecDebugAction(TExecNodePhase::type phase, RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00378">exec-node.cc:378</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a3ff26374466bc587eaa4c7d00b3e126a"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a3ff26374466bc587eaa4c7d00b3e126a">impala::ExecNode::ReachedLimit</a></div><div class="ttdeci">bool ReachedLimit()</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00159">exec-node.h:159</a></div></div>
<div class="ttc" id="classimpala_1_1SortExecExprs_html_afcc9ae8c5039d8ca5a1d3ca34153d2b4"><div class="ttname"><a href="classimpala_1_1SortExecExprs.html#afcc9ae8c5039d8ca5a1d3ca34153d2b4">impala::SortExecExprs::Open</a></div><div class="ttdeci">Status Open(RuntimeState *state)</div><div class="ttdoc">Open all expressions used for sorting and tuple materialization. </div><div class="ttdef"><b>Definition:</b> <a href="sort-exec-exprs_8cc_source.html#l00053">sort-exec-exprs.cc:53</a></div></div>
<div class="ttc" id="runtime-profile_8h_html_aaa9a2971c6368e3ddd3f5140a0295eb7"><div class="ttname"><a href="runtime-profile_8h.html#aaa9a2971c6368e3ddd3f5140a0295eb7">SCOPED_TIMER</a></div><div class="ttdeci">#define SCOPED_TIMER(c)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-profile_8h_source.html#l00053">runtime-profile.h:53</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_ae41f912c39b004f60987b4d480e442b8"><div class="ttname"><a href="classimpala_1_1ExecNode.html#ae41f912c39b004f60987b4d480e442b8">impala::ExecNode::limit_</a></div><div class="ttdeci">int64_t limit_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00222">exec-node.h:222</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_1ExecNode_html_a56de50f3c92483ba38f6e42ab19cc0a2"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a56de50f3c92483ba38f6e42ab19cc0a2">impala::ExecNode::DebugString</a></div><div class="ttdeci">std::string DebugString() const </div><div class="ttdoc">Returns a string representation in DFS order of the plan rooted at this. </div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00345">exec-node.cc:345</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_abe940aa2d7da783c4e8c65f0af22ad8f"><div class="ttname"><a href="classimpala_1_1ExecNode.html#abe940aa2d7da783c4e8c65f0af22ad8f">impala::ExecNode::expr_mem_tracker</a></div><div class="ttdeci">MemTracker * expr_mem_tracker()</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00163">exec-node.h:163</a></div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html_a595deed31ab167c3033d839f98bc5b10"><div class="ttname"><a href="classimpala_1_1RuntimeState.html#a595deed31ab167c3033d839f98bc5b10">impala::RuntimeState::total_network_receive_timer</a></div><div class="ttdeci">RuntimeProfile::Counter * total_network_receive_timer()</div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00245">runtime-state.h:245</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_af9b737418f660e0531febce9131fdce1"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#af9b737418f660e0531febce9131fdce1">impala::ExchangeNode::sort_exec_exprs_</a></div><div class="ttdeci">SortExecExprs sort_exec_exprs_</div><div class="ttdoc">Sort expressions and parameters passed to the merging receiver.. </div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00095">exchange-node.h:95</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a851443c198682c29029118c723c4f25f"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a851443c198682c29029118c723c4f25f">impala::ExchangeNode::FillInputRowBatch</a></div><div class="ttdeci">Status FillInputRowBatch(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00106">exchange-node.cc:106</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a0efe1f0ccace96919b5be4c5650bec8f"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a0efe1f0ccace96919b5be4c5650bec8f">impala::ExchangeNode::ExchangeNode</a></div><div class="ttdeci">ExchangeNode(ObjectPool *pool, const TPlanNode &amp;tnode, const DescriptorTbl &amp;descs)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00034">exchange-node.cc:34</a></div></div>
<div class="ttc" id="classimpala_1_1RowDescriptor_html_a233c21a90d5fd5b2b2ee83edd26eda26"><div class="ttname"><a href="classimpala_1_1RowDescriptor.html#a233c21a90d5fd5b2b2ee83edd26eda26">impala::RowDescriptor::IsPrefixOf</a></div><div class="ttdeci">bool IsPrefixOf(const RowDescriptor &amp;other_desc) const </div><div class="ttdef"><b>Definition:</b> <a href="descriptors_8cc_source.html#l00352">descriptors.cc:352</a></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_1RowBatch_html_a56893f5c0ac2f5831c85e8c87e838089"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a56893f5c0ac2f5831c85e8c87e838089">impala::RowBatch::set_num_rows</a></div><div class="ttdeci">void set_num_rows(int num_rows)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00113">row-batch.h:113</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_ac3def18ef1947129945892470a7b68d9"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#ac3def18ef1947129945892470a7b68d9">impala::ExchangeNode::num_senders_</a></div><div class="ttdeci">int num_senders_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00067">exchange-node.h:67</a></div></div>
<div class="ttc" id="debug-util_8h_html"><div class="ttname"><a href="debug-util_8h.html">debug-util.h</a></div></div>
<div class="ttc" id="runtime-state_8h_html_a803877a2ce5ce5c0b4f311c9c7137ba1"><div class="ttname"><a href="runtime-state_8h.html#a803877a2ce5ce5c0b4f311c9c7137ba1">RETURN_IF_CANCELLED</a></div><div class="ttdeci">#define RETURN_IF_CANCELLED(state)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00384">runtime-state.h:384</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_ae9c04a8fb64f2f6049d82341d1a331fc"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#ae9c04a8fb64f2f6049d82341d1a331fc">impala::ExchangeNode::Reset</a></div><div class="ttdeci">virtual Status Reset(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00093">exchange-node.cc:93</a></div></div>
<div class="ttc" id="expr-benchmark_8cc_html_a3a5de7bd423fbc0afc4cf935c166ca6b"><div class="ttname"><a href="expr-benchmark_8cc.html#a3a5de7bd423fbc0afc4cf935c166ca6b">pool</a></div><div class="ttdeci">ObjectPool pool</div><div class="ttdef"><b>Definition:</b> <a href="expr-benchmark_8cc_source.html#l00089">expr-benchmark.cc:89</a></div></div>
<div class="ttc" id="classimpala_1_1SortExecExprs_html_a842d9cfef9f9fabd50b273e09131759c"><div class="ttname"><a href="classimpala_1_1SortExecExprs.html#a842d9cfef9f9fabd50b273e09131759c">impala::SortExecExprs::Init</a></div><div class="ttdeci">Status Init(const TSortInfo &amp;sort_info, ObjectPool *pool)</div><div class="ttdoc">Initialize the expressions from a TSortInfo using the specified pool. </div><div class="ttdef"><b>Definition:</b> <a href="sort-exec-exprs_8cc_source.html#l00021">sort-exec-exprs.cc:21</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a0ae75733979977dbd9e7270359631b3e"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a0ae75733979977dbd9e7270359631b3e">impala::ExecNode::Prepare</a></div><div class="ttdeci">virtual Status Prepare(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00130">exec-node.cc:130</a></div></div>
<div class="ttc" id="classimpala_1_1SortExecExprs_html_ab4a2baca049389863f53516fe7ab3814"><div class="ttname"><a href="classimpala_1_1SortExecExprs.html#ab4a2baca049389863f53516fe7ab3814">impala::SortExecExprs::lhs_ordering_expr_ctxs</a></div><div class="ttdeci">const std::vector&lt; ExprContext * &gt; &amp; lhs_ordering_expr_ctxs() const </div><div class="ttdoc">Can only be used after calling Prepare() </div><div class="ttdef"><b>Definition:</b> <a href="sort-exec-exprs_8h_source.html#l00055">sort-exec-exprs.h:55</a></div></div>
<div class="ttc" id="classimpala_1_1RuntimeState_html_ac985744be040bdbe5b1d4d4967c9c0e0"><div class="ttname"><a href="classimpala_1_1RuntimeState.html#ac985744be040bdbe5b1d4d4967c9c0e0">impala::RuntimeState::fragment_instance_id</a></div><div class="ttdeci">const TUniqueId &amp; fragment_instance_id() const </div><div class="ttdef"><b>Definition:</b> <a href="runtime-state_8h_source.html#l00126">runtime-state.h:126</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_abafbc6f613a3b84dd877ab27c88d4574"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#abafbc6f613a3b84dd877ab27c88d4574">impala::ExchangeNode::convert_row_batch_timer_</a></div><div class="ttdeci">RuntimeProfile::Counter * convert_row_batch_timer_</div><div class="ttdoc">time spent reconstructing received rows </div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00088">exchange-node.h:88</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a19340582202dd61e0b028c28efa5490a"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a19340582202dd61e0b028c28efa5490a">impala::ExecNode::AddExprCtxsToFree</a></div><div class="ttdeci">void AddExprCtxsToFree(const std::vector&lt; ExprContext * &gt; &amp;ctxs)</div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_ab8f2832c6a5487aa8168b2a7d65773ee"><div class="ttname"><a href="classimpala_1_1ExecNode.html#ab8f2832c6a5487aa8168b2a7d65773ee">impala::ExecNode::QueryMaintenance</a></div><div class="ttdeci">virtual Status QueryMaintenance(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00401">exec-node.cc:401</a></div></div>
<div class="ttc" id="data-stream-recvr_8h_html"><div class="ttname"><a href="data-stream-recvr_8h.html">data-stream-recvr.h</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a467751b7182365c83e867dc3d50b43e2"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a467751b7182365c83e867dc3d50b43e2">impala::ExecNode::is_closed</a></div><div class="ttdeci">bool is_closed()</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00242">exec-node.h:242</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_aef978a61ab3f47c2b9e53e304eead853"><div class="ttname"><a href="classimpala_1_1RowBatch.html#aef978a61ab3f47c2b9e53e304eead853">impala::RowBatch::CommitLastRow</a></div><div class="ttdeci">void CommitLastRow()</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00109">row-batch.h:109</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_1RowBatch_html"><div class="ttname"><a href="classimpala_1_1RowBatch.html">impala::RowBatch</a></div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00066">row-batch.h:66</a></div></div>
<div class="ttc" id="runtime-profile_8h_html_a9e3d8174f6545ee9c4fd37c624ea58f7"><div class="ttname"><a href="runtime-profile_8h.html#a9e3d8174f6545ee9c4fd37c624ea58f7">COUNTER_SET</a></div><div class="ttdeci">#define COUNTER_SET(c, v)</div><div class="ttdef"><b>Definition:</b> <a href="runtime-profile_8h_source.html#l00056">runtime-profile.h:56</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a632a4cdd4c654f362f630936c5ecb29a"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a632a4cdd4c654f362f630936c5ecb29a">impala::ExecNode::rows_returned_counter_</a></div><div class="ttdeci">RuntimeProfile::Counter * rows_returned_counter_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00226">exec-node.h:226</a></div></div>
<div class="ttc" id="classimpala_1_1ExecEnv_html_af75aeec37f5b3b5eb9b531453af0c553"><div class="ttname"><a href="classimpala_1_1ExecEnv.html#af75aeec37f5b3b5eb9b531453af0c553">impala::ExecEnv::GetInstance</a></div><div class="ttdeci">static ExecEnv * GetInstance()</div><div class="ttdef"><b>Definition:</b> <a href="exec-env_8h_source.html#l00063">exec-env.h:63</a></div></div>
<div class="ttc" id="exchange-node_8h_html"><div class="ttname"><a href="exchange-node_8h.html">exchange-node.h</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_ab171442ddcb3a1c3aab36991dbb511bb"><div class="ttname"><a href="classimpala_1_1RowBatch.html#ab171442ddcb3a1c3aab36991dbb511bb">impala::RowBatch::capacity</a></div><div class="ttdeci">int capacity() const </div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00216">row-batch.h:216</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_a34b82362d8ad1e89c433e04999a6a0cb"><div class="ttname"><a href="classimpala_1_1RowBatch.html#a34b82362d8ad1e89c433e04999a6a0cb">impala::RowBatch::AddRow</a></div><div class="ttdeci">int AddRow()</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00100">row-batch.h:100</a></div></div>
<div class="ttc" id="classimpala_1_1RowBatch_html_af286af57396a4cb409a19ace07f87aff"><div class="ttname"><a href="classimpala_1_1RowBatch.html#af286af57396a4cb409a19ace07f87aff">impala::RowBatch::CopyRow</a></div><div class="ttdeci">void CopyRow(TupleRow *src, TupleRow *dest)</div><div class="ttdef"><b>Definition:</b> <a href="row-batch_8h_source.html#l00173">row-batch.h:173</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_1ExecNode_html_ac55aaa21c7750fd5f8774aee1ac5211a"><div class="ttname"><a href="classimpala_1_1ExecNode.html#ac55aaa21c7750fd5f8774aee1ac5211a">impala::ExecNode::pool_</a></div><div class="ttdeci">ObjectPool * pool_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00211">exec-node.h:211</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_af9e7c98850fb6e129d99978d9ff45939"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#af9e7c98850fb6e129d99978d9ff45939">impala::ExchangeNode::next_row_idx_</a></div><div class="ttdeci">int next_row_idx_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00085">exchange-node.h:85</a></div></div>
<div class="ttc" id="classbool_html"><div class="ttname"><a href="classbool.html">bool</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="classimpala_1_1ExecEnv_html_a776e198676e5f59f44d0f0f2b43cde68"><div class="ttname"><a href="classimpala_1_1ExecEnv.html#a776e198676e5f59f44d0f0f2b43cde68">impala::ExecEnv::stream_mgr</a></div><div class="ttdeci">DataStreamMgr * stream_mgr()</div><div class="ttdef"><b>Definition:</b> <a href="exec-env_8h_source.html#l00075">exec-env.h:75</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_1SortExecExprs_html_af1a7a085f15e5ff923685b5477a08f4b"><div class="ttname"><a href="classimpala_1_1SortExecExprs.html#af1a7a085f15e5ff923685b5477a08f4b">impala::SortExecExprs::Prepare</a></div><div class="ttdeci">Status Prepare(RuntimeState *state, const RowDescriptor &amp;child_row_desc, const RowDescriptor &amp;output_row_desc, MemTracker *expr_mem_tracker)</div><div class="ttdoc">Prepare all expressions used for sorting and tuple materialization. </div><div class="ttdef"><b>Definition:</b> <a href="sort-exec-exprs_8cc_source.html#l00042">sort-exec-exprs.cc:42</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html"><div class="ttname"><a href="classimpala_1_1ExecNode.html">impala::ExecNode</a></div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00046">exec-node.h:46</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_aab275625e8dfa2a0f34c6af8406041de"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#aab275625e8dfa2a0f34c6af8406041de">impala::ExchangeNode::GetNextMerging</a></div><div class="ttdeci">Status GetNextMerging(RuntimeState *state, RowBatch *output_batch, bool *eos)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00174">exchange-node.cc:174</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="namespaceimpala_html_aad7a37594ae12dd0bd87ca15f06b4ac8"><div class="ttname"><a href="namespaceimpala.html#aad7a37594ae12dd0bd87ca15f06b4ac8">impala::DEFINE_int32</a></div><div class="ttdeci">DEFINE_int32(periodic_counter_update_period_ms, 500,&quot;Period to update rate counters and&quot;&quot; sampling counters in ms&quot;)</div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a0e9b5636a80c8fe8c2ab31990c84ff51"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a0e9b5636a80c8fe8c2ab31990c84ff51">impala::ExecNode::Open</a></div><div class="ttdeci">virtual Status Open(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00154">exec-node.cc:154</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_aaed96d6d694bb187b9f116982b02e279"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#aaed96d6d694bb187b9f116982b02e279">impala::ExchangeNode::input_batch_</a></div><div class="ttdeci">RowBatch * input_batch_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00080">exchange-node.h:80</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a982d514a218085b276ee78d59cfc1aa3"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a982d514a218085b276ee78d59cfc1aa3">impala::ExchangeNode::offset_</a></div><div class="ttdeci">int64_t offset_</div><div class="ttdoc">Offset specifying number of rows to skip. </div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00100">exchange-node.h:100</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a2d543ec055a04199286b52d23a82280f"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a2d543ec055a04199286b52d23a82280f">impala::ExecNode::id_</a></div><div class="ttdeci">int id_</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8h_source.html#l00209">exec-node.h:209</a></div></div>
<div class="ttc" id="classimpala_1_1ExecNode_html_a726e2aca524ace8e4c043377e621285a"><div class="ttname"><a href="classimpala_1_1ExecNode.html#a726e2aca524ace8e4c043377e621285a">impala::ExecNode::Close</a></div><div class="ttdeci">virtual void Close(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exec-node_8cc_source.html#l00166">exec-node.cc:166</a></div></div>
<div class="ttc" id="classimpala_1_1SortExecExprs_html_adde96dd13657e14a69266ec370e3710a"><div class="ttname"><a href="classimpala_1_1SortExecExprs.html#adde96dd13657e14a69266ec370e3710a">impala::SortExecExprs::Close</a></div><div class="ttdeci">void Close(RuntimeState *state)</div><div class="ttdoc">Close all expressions used for sorting and tuple materialization. </div><div class="ttdef"><b>Definition:</b> <a href="sort-exec-exprs_8cc_source.html#l00062">sort-exec-exprs.cc:62</a></div></div>
<div class="ttc" id="classimpala_1_1SortExecExprs_html_a866c6d0684b00f3aaa7b3da5e631092e"><div class="ttname"><a href="classimpala_1_1SortExecExprs.html#a866c6d0684b00f3aaa7b3da5e631092e">impala::SortExecExprs::rhs_ordering_expr_ctxs</a></div><div class="ttdeci">const std::vector&lt; ExprContext * &gt; &amp; rhs_ordering_expr_ctxs() const </div><div class="ttdoc">Can only be used after calling Open() </div><div class="ttdef"><b>Definition:</b> <a href="sort-exec-exprs_8h_source.html#l00059">sort-exec-exprs.h:59</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a29a19b5745d1c93119c4bb1a37c91dfd"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a29a19b5745d1c93119c4bb1a37c91dfd">impala::ExchangeNode::nulls_first_</a></div><div class="ttdeci">std::vector&lt; bool &gt; nulls_first_</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8h_source.html#l00097">exchange-node.h:97</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a868513c43837ef112a41d7895f6b9fb3"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a868513c43837ef112a41d7895f6b9fb3">impala::ExchangeNode::GetNext</a></div><div class="ttdeci">virtual Status GetNext(RuntimeState *state, RowBatch *row_batch, bool *eos)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00120">exchange-node.cc:120</a></div></div>
<div class="ttc" id="classimpala_1_1ExchangeNode_html_a626a1bf0f19e9ccd4be6d1db164fd912"><div class="ttname"><a href="classimpala_1_1ExchangeNode.html#a626a1bf0f19e9ccd4be6d1db164fd912">impala::ExchangeNode::Close</a></div><div class="ttdeci">virtual void Close(RuntimeState *state)</div><div class="ttdef"><b>Definition:</b> <a href="exchange-node_8cc_source.html#l00098">exchange-node.cc:98</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><!-- 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="exchange-node_8cc.html">exchange-node.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>