blob: 97b2d579dab84dad105019f45e48b1adcd78f56b [file]
<!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: impala::OldHashTable Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="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 class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><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="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#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('classimpala_1_1OldHashTable.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="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classimpala_1_1OldHashTable-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">impala::OldHashTable Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>The hash table does not support removes. The hash table is not thread safe.
<a href="classimpala_1_1OldHashTable.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for impala::OldHashTable:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1OldHashTable__coll__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">stl-like iterator interface. <a href="classimpala_1_1OldHashTable_1_1Iterator.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae7ab138094dbe3e18c1d2774789df776"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ae7ab138094dbe3e18c1d2774789df776">OldHashTable</a> (<a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *state, const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;build_expr_ctxs, const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;probe_expr_ctxs, int num_build_tuples, <a class="el" href="classbool.html">bool</a> stores_nulls, <a class="el" href="classbool.html">bool</a> finds_nulls, int32_t initial_seed, <a class="el" href="classimpala_1_1MemTracker.html">MemTracker</a> *mem_tracker, <a class="el" href="classbool.html">bool</a> stores_tuples=false, int64_t <a class="el" href="classimpala_1_1OldHashTable.html#ae932f8eb70ebdd75b83d840d16e58f1c">num_buckets</a>=1024)</td></tr>
<tr class="separator:ae7ab138094dbe3e18c1d2774789df776"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46d49aa9acfabed1bf1790a82f2bc5bb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a46d49aa9acfabed1bf1790a82f2bc5bb">Close</a> ()</td></tr>
<tr class="memdesc:a46d49aa9acfabed1bf1790a82f2bc5bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call to cleanup any resources. Must be called once. <a href="#a46d49aa9acfabed1bf1790a82f2bc5bb">More...</a><br/></td></tr>
<tr class="separator:a46d49aa9acfabed1bf1790a82f2bc5bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5489ce25a7ade119085e9d4bf6aba6f9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a5489ce25a7ade119085e9d4bf6aba6f9">Insert</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *row)</td></tr>
<tr class="separator:a5489ce25a7ade119085e9d4bf6aba6f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686a71049373b4bf377e94c029d07e43"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a686a71049373b4bf377e94c029d07e43">Insert</a> (<a class="el" href="classimpala_1_1Tuple.html">Tuple</a> *tuple)</td></tr>
<tr class="separator:a686a71049373b4bf377e94c029d07e43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae6f63d2ef72a16e9072263aeb927095"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#aae6f63d2ef72a16e9072263aeb927095">EvalAndHashBuild</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *row, uint32_t *<a class="el" href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">hash</a>)</td></tr>
<tr class="separator:aae6f63d2ef72a16e9072263aeb927095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbb141e9ecb7d66f79e903b9390da326"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#afbb141e9ecb7d66f79e903b9390da326">EvalAndHashProbe</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *row, uint32_t *<a class="el" href="namespaceimpala.html#a50b59c9628eedf49aa82643ce601967d">hash</a>)</td></tr>
<tr class="separator:afbb141e9ecb7d66f79e903b9390da326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dc2dc91abd3307e9d58b497a7473624"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *probe_row)</td></tr>
<tr class="separator:a0dc2dc91abd3307e9d58b497a7473624"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2c67b89b0f75637382c2bcc2ce17e96"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ae2c67b89b0f75637382c2bcc2ce17e96">size</a> () const </td></tr>
<tr class="memdesc:ae2c67b89b0f75637382c2bcc2ce17e96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns number of elements in the hash table. <a href="#ae2c67b89b0f75637382c2bcc2ce17e96">More...</a><br/></td></tr>
<tr class="separator:ae2c67b89b0f75637382c2bcc2ce17e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae932f8eb70ebdd75b83d840d16e58f1c"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ae932f8eb70ebdd75b83d840d16e58f1c">num_buckets</a> () const </td></tr>
<tr class="memdesc:ae932f8eb70ebdd75b83d840d16e58f1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of buckets. <a href="#ae932f8eb70ebdd75b83d840d16e58f1c">More...</a><br/></td></tr>
<tr class="separator:ae932f8eb70ebdd75b83d840d16e58f1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6fb8dcd6c7d56cfea01dfee602c3595"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ae6fb8dcd6c7d56cfea01dfee602c3595">load_factor</a> () const </td></tr>
<tr class="memdesc:ae6fb8dcd6c7d56cfea01dfee602c3595"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the load factor (the number of non-empty buckets) <a href="#ae6fb8dcd6c7d56cfea01dfee602c3595">More...</a><br/></td></tr>
<tr class="separator:ae6fb8dcd6c7d56cfea01dfee602c3595"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af91c3a3cc6fcff2de86c9dec54bc37e9"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#af91c3a3cc6fcff2de86c9dec54bc37e9">byte_size</a> () const </td></tr>
<tr class="memdesc:af91c3a3cc6fcff2de86c9dec54bc37e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bytes allocated to the hash table. <a href="#af91c3a3cc6fcff2de86c9dec54bc37e9">More...</a><br/></td></tr>
<tr class="separator:af91c3a3cc6fcff2de86c9dec54bc37e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87df4f7d3fe12412c3f744695094caa8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a87df4f7d3fe12412c3f744695094caa8">mem_limit_exceeded</a> () const </td></tr>
<tr class="separator:a87df4f7d3fe12412c3f744695094caa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17c7f777e02391eebc6c2dfafc254628"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a17c7f777e02391eebc6c2dfafc254628">last_expr_value</a> (int expr_idx) const </td></tr>
<tr class="separator:a17c7f777e02391eebc6c2dfafc254628"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8380f63d906480c88bdd0c9a84353cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ae8380f63d906480c88bdd0c9a84353cb">last_expr_value_null</a> (int expr_idx) const </td></tr>
<tr class="memdesc:ae8380f63d906480c88bdd0c9a84353cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns if the expr at 'expr_idx' evaluated to NULL for the last row. <a href="#ae8380f63d906480c88bdd0c9a84353cb">More...</a><br/></td></tr>
<tr class="separator:ae8380f63d906480c88bdd0c9a84353cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d39464f19cbdeed4202fcfdf8908dbf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a1d39464f19cbdeed4202fcfdf8908dbf">AddBitmapFilters</a> ()</td></tr>
<tr class="separator:a1d39464f19cbdeed4202fcfdf8908dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a751cdb2e9561124603d773abd47fba58"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a751cdb2e9561124603d773abd47fba58">Begin</a> ()</td></tr>
<tr class="separator:a751cdb2e9561124603d773abd47fba58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84fb3f2096e01b0eec4c3d6c19a4df9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a84fb3f2096e01b0eec4c3d6c19a4df9f">FirstUnmatched</a> ()</td></tr>
<tr class="separator:a84fb3f2096e01b0eec4c3d6c19a4df9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34fdf4c8a112114a64b9587dcb96fee8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a34fdf4c8a112114a64b9587dcb96fee8">End</a> ()</td></tr>
<tr class="memdesc:a34fdf4c8a112114a64b9587dcb96fee8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns end marker. <a href="#a34fdf4c8a112114a64b9587dcb96fee8">More...</a><br/></td></tr>
<tr class="separator:a34fdf4c8a112114a64b9587dcb96fee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31c384a28f316038c131870a96323aa9"><td class="memItemLeft" align="right" valign="top">llvm::Function *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a31c384a28f316038c131870a96323aa9">CodegenEvalTupleRow</a> (<a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *state, <a class="el" href="classbool.html">bool</a> build_row)</td></tr>
<tr class="separator:a31c384a28f316038c131870a96323aa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27b8b8b1c1c3a237efeb75f0bbebe7f5"><td class="memItemLeft" align="right" valign="top">llvm::Function *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a27b8b8b1c1c3a237efeb75f0bbebe7f5">CodegenHashCurrentRow</a> (<a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *state)</td></tr>
<tr class="separator:a27b8b8b1c1c3a237efeb75f0bbebe7f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fbd193bd0cdc05ec1d57f3c6abc1a67"><td class="memItemLeft" align="right" valign="top">llvm::Function *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a5fbd193bd0cdc05ec1d57f3c6abc1a67">CodegenEquals</a> (<a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *state)</td></tr>
<tr class="separator:a5fbd193bd0cdc05ec1d57f3c6abc1a67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59605a3058e5e40d57034ab9f78447ad"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a59605a3058e5e40d57034ab9f78447ad">DebugString</a> (<a class="el" href="classbool.html">bool</a> skip_empty, <a class="el" href="classbool.html">bool</a> show_match, const <a class="el" href="classimpala_1_1RowDescriptor.html">RowDescriptor</a> *build_desc)</td></tr>
<tr class="separator:a59605a3058e5e40d57034ab9f78447ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:af0c1dd2271b703915a231791389b9ab9"><td class="memItemLeft" align="right" valign="top">static int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#af0c1dd2271b703915a231791389b9ab9">EstimateSize</a> (int64_t num_rows)</td></tr>
<tr class="separator:af0c1dd2271b703915a231791389b9ab9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a7fa7d9075a758439a46e250be3ce04fa"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a7fa7d9075a758439a46e250be3ce04fa">LLVM_CLASS_NAME</a> = &quot;class.impala::OldHashTable&quot;</td></tr>
<tr class="separator:a7fa7d9075a758439a46e250be3ce04fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a92dd7df15d4a19000c78d44c0c58d181"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a92dd7df15d4a19000c78d44c0c58d181">NextBucket</a> (int64_t *bucket_idx)</td></tr>
<tr class="separator:a92dd7df15d4a19000c78d44c0c58d181"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82d6bfe01c155e9c91eb999875436758"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a82d6bfe01c155e9c91eb999875436758">ResizeBuckets</a> (int64_t <a class="el" href="classimpala_1_1OldHashTable.html#ae932f8eb70ebdd75b83d840d16e58f1c">num_buckets</a>)</td></tr>
<tr class="memdesc:a82d6bfe01c155e9c91eb999875436758"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resize the hash table to 'num_buckets'. <a href="#a82d6bfe01c155e9c91eb999875436758">More...</a><br/></td></tr>
<tr class="separator:a82d6bfe01c155e9c91eb999875436758"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43d25c6703851873145af87d320d3bc9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a43d25c6703851873145af87d320d3bc9">InsertImpl</a> (void *data)</td></tr>
<tr class="memdesc:a43d25c6703851873145af87d320d3bc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert row into the hash table. <a href="#a43d25c6703851873145af87d320d3bc9">More...</a><br/></td></tr>
<tr class="separator:a43d25c6703851873145af87d320d3bc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15748803e25a94b72e16665d5ad8d609"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a15748803e25a94b72e16665d5ad8d609">AddToBucket</a> (<a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *bucket, <a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *node)</td></tr>
<tr class="separator:a15748803e25a94b72e16665d5ad8d609"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c6e6c881a973621ea74c6bd82b6c2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a82c6e6c881a973621ea74c6bd82b6c2d">MoveNode</a> (<a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *from_bucket, <a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *to_bucket, <a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *node, <a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *previous_node)</td></tr>
<tr class="separator:a82c6e6c881a973621ea74c6bd82b6c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe75204e31fafe1698f4b17f9700f0ba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#afe75204e31fafe1698f4b17f9700f0ba">EvalRow</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *row, const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;ctxs)</td></tr>
<tr class="separator:afe75204e31fafe1698f4b17f9700f0ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d8883d693e7a5035453965ce3fd0dd5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#aa2f1cf984a158c22088f777a379be0f2">IR_NO_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a3d8883d693e7a5035453965ce3fd0dd5">EvalBuildRow</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *row)</td></tr>
<tr class="separator:a3d8883d693e7a5035453965ce3fd0dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34a1a4cdbeabf53e7aacce27bcde3890"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#aa2f1cf984a158c22088f777a379be0f2">IR_NO_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a34a1a4cdbeabf53e7aacce27bcde3890">EvalProbeRow</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *row)</td></tr>
<tr class="separator:a34a1a4cdbeabf53e7aacce27bcde3890"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c4efc4a084cdc4cd78c7117b2981064"><td class="memItemLeft" align="right" valign="top">uint32_t <a class="el" href="impala-ir_8h.html#aa2f1cf984a158c22088f777a379be0f2">IR_NO_INLINE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a1c4efc4a084cdc4cd78c7117b2981064">HashCurrentRow</a> ()</td></tr>
<tr class="separator:a1c4efc4a084cdc4cd78c7117b2981064"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cf954b79777dcd73df31476b7b06e5d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a9cf954b79777dcd73df31476b7b06e5d">GetRow</a> (<a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *node) const </td></tr>
<tr class="separator:a9cf954b79777dcd73df31476b7b06e5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbecdd336c37ad5c4ee5c4f40bb8d41d"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#adbecdd336c37ad5c4ee5c4f40bb8d41d">HashVariableLenRow</a> ()</td></tr>
<tr class="separator:adbecdd336c37ad5c4ee5c4f40bb8d41d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d19ab9277a7261b75dc77adcdfe822d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a9d19ab9277a7261b75dc77adcdfe822d">Equals</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *build_row)</td></tr>
<tr class="separator:a9d19ab9277a7261b75dc77adcdfe822d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41c900f83424dfb6586389ef4933cea4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a41c900f83424dfb6586389ef4933cea4">GrowNodeArray</a> ()</td></tr>
<tr class="memdesc:a41c900f83424dfb6586389ef4933cea4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Grow the node array. <a href="#a41c900f83424dfb6586389ef4933cea4">More...</a><br/></td></tr>
<tr class="separator:a41c900f83424dfb6586389ef4933cea4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa59b7b4eeffac5a34c28423bbfb84cf8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#aa59b7b4eeffac5a34c28423bbfb84cf8">MemLimitExceeded</a> (int64_t allocation_size)</td></tr>
<tr class="separator:aa59b7b4eeffac5a34c28423bbfb84cf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:acc1dfcd3947dd46a3d9b41f94620c7c4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#acc1dfcd3947dd46a3d9b41f94620c7c4">state_</a></td></tr>
<tr class="separator:acc1dfcd3947dd46a3d9b41f94620c7c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a144a03a1a9aa5679af671b2654abf534"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a144a03a1a9aa5679af671b2654abf534">build_expr_ctxs_</a></td></tr>
<tr class="separator:a144a03a1a9aa5679af671b2654abf534"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5d2c63f8fa0e15c2a8061b4b8a876a8"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#aa5d2c63f8fa0e15c2a8061b4b8a876a8">probe_expr_ctxs_</a></td></tr>
<tr class="separator:aa5d2c63f8fa0e15c2a8061b4b8a876a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57fa0894ab90a1f4effc06acaf8b7ff4"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a57fa0894ab90a1f4effc06acaf8b7ff4">num_build_tuples_</a></td></tr>
<tr class="memdesc:a57fa0894ab90a1f4effc06acaf8b7ff4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of Tuple* in the build tuple row. <a href="#a57fa0894ab90a1f4effc06acaf8b7ff4">More...</a><br/></td></tr>
<tr class="separator:a57fa0894ab90a1f4effc06acaf8b7ff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb8be846cac5cfcb72b71aca9a59508d"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#adb8be846cac5cfcb72b71aca9a59508d">stores_nulls_</a></td></tr>
<tr class="separator:adb8be846cac5cfcb72b71aca9a59508d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7aadc722391111a506a51f645ad9aaac"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a7aadc722391111a506a51f645ad9aaac">finds_nulls_</a></td></tr>
<tr class="separator:a7aadc722391111a506a51f645ad9aaac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0d3e2f6fc811177247ec8b032fb20ce"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ab0d3e2f6fc811177247ec8b032fb20ce">stores_tuples_</a></td></tr>
<tr class="separator:ab0d3e2f6fc811177247ec8b032fb20ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d0e5e04e5cb22ee1ac12a1867e06a87"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a5d0e5e04e5cb22ee1ac12a1867e06a87">initial_seed_</a></td></tr>
<tr class="separator:a5d0e5e04e5cb22ee1ac12a1867e06a87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04e1f3ce808501a9a00d4f194e259d41"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a04e1f3ce808501a9a00d4f194e259d41">num_filled_buckets_</a></td></tr>
<tr class="memdesc:a04e1f3ce808501a9a00d4f194e259d41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of non-empty buckets. Used to determine when to grow and rehash. <a href="#a04e1f3ce808501a9a00d4f194e259d41">More...</a><br/></td></tr>
<tr class="separator:a04e1f3ce808501a9a00d4f194e259d41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbc80cd4eb1a7163055ced5a12f3bef9"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#acbc80cd4eb1a7163055ced5a12f3bef9">num_nodes_</a></td></tr>
<tr class="memdesc:acbc80cd4eb1a7163055ced5a12f3bef9"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of nodes stored (i.e. size of hash table) <a href="#acbc80cd4eb1a7163055ced5a12f3bef9">More...</a><br/></td></tr>
<tr class="separator:acbc80cd4eb1a7163055ced5a12f3bef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb2eff3257668fb19570190d2ea87343"><td class="memItemLeft" align="right" valign="top">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1MemPool.html">MemPool</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#afb2eff3257668fb19570190d2ea87343">mem_pool_</a></td></tr>
<tr class="memdesc:afb2eff3257668fb19570190d2ea87343"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> used to allocate data pages. <a href="#afb2eff3257668fb19570190d2ea87343">More...</a><br/></td></tr>
<tr class="separator:afb2eff3257668fb19570190d2ea87343"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7d4bf24f6460a8217a62f71fe097096"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#aa7d4bf24f6460a8217a62f71fe097096">num_data_pages_</a></td></tr>
<tr class="memdesc:aa7d4bf24f6460a8217a62f71fe097096"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of data pages for nodes. <a href="#aa7d4bf24f6460a8217a62f71fe097096">More...</a><br/></td></tr>
<tr class="separator:aa7d4bf24f6460a8217a62f71fe097096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a355272a6dbecb7f2cf6cdf8a05b4ab12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a355272a6dbecb7f2cf6cdf8a05b4ab12">next_node_</a></td></tr>
<tr class="memdesc:a355272a6dbecb7f2cf6cdf8a05b4ab12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Next node to insert. <a href="#a355272a6dbecb7f2cf6cdf8a05b4ab12">More...</a><br/></td></tr>
<tr class="separator:a355272a6dbecb7f2cf6cdf8a05b4ab12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c09c00fe722ba4f37235aa8a54b6b1c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a4c09c00fe722ba4f37235aa8a54b6b1c">node_remaining_current_page_</a></td></tr>
<tr class="memdesc:a4c09c00fe722ba4f37235aa8a54b6b1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of nodes left in the current page. <a href="#a4c09c00fe722ba4f37235aa8a54b6b1c">More...</a><br/></td></tr>
<tr class="separator:a4c09c00fe722ba4f37235aa8a54b6b1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcfe2b69e9cf0dfeb85f903da3f36cb7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1MemTracker.html">MemTracker</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#abcfe2b69e9cf0dfeb85f903da3f36cb7">mem_tracker_</a></td></tr>
<tr class="separator:abcfe2b69e9cf0dfeb85f903da3f36cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95494a89d4c694a503cd5b74a2c3a233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a95494a89d4c694a503cd5b74a2c3a233">mem_limit_exceeded_</a></td></tr>
<tr class="separator:a95494a89d4c694a503cd5b74a2c3a233"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a887e78a6ac049d00163bf9e328f2dda8"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a887e78a6ac049d00163bf9e328f2dda8">buckets_</a></td></tr>
<tr class="separator:a887e78a6ac049d00163bf9e328f2dda8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e6476b6787b537cc82062d63ed3d976"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a4e6476b6787b537cc82062d63ed3d976">num_buckets_</a></td></tr>
<tr class="memdesc:a4e6476b6787b537cc82062d63ed3d976"><td class="mdescLeft">&#160;</td><td class="mdescRight">equal to buckets_.size() but more efficient than the size function <a href="#a4e6476b6787b537cc82062d63ed3d976">More...</a><br/></td></tr>
<tr class="separator:a4e6476b6787b537cc82062d63ed3d976"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a278b257656474d6da0c25cf2b12fb8d7"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a278b257656474d6da0c25cf2b12fb8d7">num_buckets_till_resize_</a></td></tr>
<tr class="memdesc:a278b257656474d6da0c25cf2b12fb8d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of filled buckets to trigger a resize. This is cached for efficiency. <a href="#a278b257656474d6da0c25cf2b12fb8d7">More...</a><br/></td></tr>
<tr class="separator:a278b257656474d6da0c25cf2b12fb8d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaddf7ce100e5c22c002a276e095dfb2b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#aaddf7ce100e5c22c002a276e095dfb2b">expr_values_buffer_offsets_</a></td></tr>
<tr class="separator:aaddf7ce100e5c22c002a276e095dfb2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dfec107513dec417fbe50f3fb904d45"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a6dfec107513dec417fbe50f3fb904d45">var_result_begin_</a></td></tr>
<tr class="memdesc:a6dfec107513dec417fbe50f3fb904d45"><td class="mdescLeft">&#160;</td><td class="mdescRight">byte offset into expr_values_buffer_ that begins the variable length results <a href="#a6dfec107513dec417fbe50f3fb904d45">More...</a><br/></td></tr>
<tr class="separator:a6dfec107513dec417fbe50f3fb904d45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab76a65fb772f9f76bde072dc79da95e4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#ab76a65fb772f9f76bde072dc79da95e4">results_buffer_size_</a></td></tr>
<tr class="memdesc:ab76a65fb772f9f76bde072dc79da95e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">byte size of 'expr_values_buffer_' <a href="#ab76a65fb772f9f76bde072dc79da95e4">More...</a><br/></td></tr>
<tr class="separator:ab76a65fb772f9f76bde072dc79da95e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a273b6d65c45ccfcaf4f388a8390fbd"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a9a273b6d65c45ccfcaf4f388a8390fbd">expr_values_buffer_</a></td></tr>
<tr class="separator:a9a273b6d65c45ccfcaf4f388a8390fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62f594413a0377811f07fcdddaecfd22"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a62f594413a0377811f07fcdddaecfd22">expr_value_null_bits_</a></td></tr>
<tr class="separator:a62f594413a0377811f07fcdddaecfd22"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr class="memitem:a597475de6dfb3de05842ab1a33bacc16"><td class="memItemLeft" align="right" valign="top">static const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a597475de6dfb3de05842ab1a33bacc16">MAX_BUCKET_OCCUPANCY_FRACTION</a> = 0.75f</td></tr>
<tr class="separator:a597475de6dfb3de05842ab1a33bacc16"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a9830fc407400559db7e7783cc10a9394"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#a9830fc407400559db7e7783cc10a9394">Iterator</a></td></tr>
<tr class="separator:a9830fc407400559db7e7783cc10a9394"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accf5cac09a1c657b664f1f6428a01515"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1OldHashTable.html#accf5cac09a1c657b664f1f6428a01515">OldHashTableTest</a></td></tr>
<tr class="separator:accf5cac09a1c657b664f1f6428a01515"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The hash table does not support removes. The hash table is not thread safe. </p>
<p>TODO: Temporarily moving the old <a class="el" href="classimpala_1_1HashTable.html">HashTable</a> implementation to make it work with the non-partitioned versions of HJ and AGG. It should be removed once we remove those non-partitioned versions. Hash table implementation designed for hash aggregation and hash joins. This is not templatized and is tailored to the usage pattern for aggregation and joins. The hash table store TupleRows and allows for different exprs for insertions and finds. This is the pattern we use for joins and aggregation where the input/build tuple row descriptor is different from the find/probe descriptor. The table is optimized for the query engine's use case as much as possible and is not intended to be a generic hash table implementation. The API loosely mimics the std::hashset API. The hash table stores evaluated expr results for the current row being processed when possible into a contiguous memory buffer. This allows for very efficient computation for hashing. The implementation is also designed to allow codegen for some paths.The implementation is based on the boost multiset. The hashtable is implemented by two data structures: a vector of buckets and a vector of nodes. Inserted values are stored as nodes (in the order they are inserted). The buckets (indexed by the mod of the hash) contain pointers to the node vector. Nodes that fall in the same bucket are linked together (the bucket pointer gets you the head of that linked list). When growing the hash table, the number of buckets is doubled, and nodes from a particular bucket either stay in place or move to an analogous bucket in the second half of buckets. This behavior allows us to avoid moving about half the nodes each time, and maintains good cache properties by only accessing 2 buckets at a time. The node vector is modified in place. Due to the doubling nature of the buckets, we require that the number of buckets is a power of 2. This allows us to determine if a node needs to move by simply checking a single bit, and further allows us to initially hash nodes using a bitmask. TODO: this is not a fancy hash table in terms of memory access patterns (cuckoo-hashing or something that spills to disk). We will likely want to invest more time into this. TODO: hash-join and aggregation have very different access patterns. Joins insert all the rows and then calls scan to find them. Aggregation interleaves <a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find()</a> and Inserts(). We can want to optimize joins more heavily for Inserts() (in particular growing). TODO: batched interface for inserts and finds. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00084">84</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae7ab138094dbe3e18c1d2774789df776"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">OldHashTable::OldHashTable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>build_expr_ctxs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>probe_expr_ctxs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_build_tuples</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>stores_nulls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>finds_nulls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>initial_seed</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classimpala_1_1MemTracker.html">MemTracker</a> *&#160;</td>
<td class="paramname"><em>mem_tracker</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>stores_tuples</em> = <code>false</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>num_buckets</em> = <code>1024</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a hash table.</p>
<ul>
<li>build_exprs are the exprs that should be used to evaluate rows during <a class="el" href="classimpala_1_1OldHashTable.html#a5489ce25a7ade119085e9d4bf6aba6f9">Insert()</a>.</li>
<li>probe_exprs are used during <a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find()</a></li>
<li>num_build_tuples: number of Tuples in the build tuple row</li>
<li>stores_nulls: if false, TupleRows with nulls are ignored during Insert</li>
<li>finds_nulls: if false, <a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find()</a> returns <a class="el" href="classimpala_1_1OldHashTable.html#a34fdf4c8a112114a64b9587dcb96fee8" title="Returns end marker. ">End()</a> for TupleRows with nulls even if stores_nulls is true</li>
<li>num_buckets: number of buckets that the hash table should be initialized to</li>
<li>mem_tracker: if non-empty, all memory allocations for nodes and for buckets are tracked; the tracker must be valid until the d'tor is called</li>
<li>initial_seed: Initial seed value to use when computing hashes for rows</li>
<li>stores_tuples: If true, the hash table stores tuples, otherwise it stores tuple rows. </li>
</ul>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00054">54</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="classimpala_1_1Expr.html#a153fedc59ca9f5b5cf350b815381b999">impala::Expr::ComputeResultsLayout()</a>, <a class="el" href="mem-tracker_8h_source.html#l00118">impala::MemTracker::Consume()</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>, <a class="el" href="old-hash-table_8h_source.html#l00424">MAX_BUCKET_OCCUPANCY_FRACTION</a>, <a class="el" href="old-hash-table_8h_source.html#l00461">mem_tracker_</a>, <a class="el" href="old-hash-table_8h_source.html#l00169">num_buckets()</a>, <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00473">num_buckets_till_resize_</a>, <a class="el" href="old-hash-table_8h_source.html#l00429">probe_expr_ctxs_</a>, <a class="el" href="old-hash-table_8h_source.html#l00483">results_buffer_size_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00480">var_result_begin_</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a1d39464f19cbdeed4202fcfdf8908dbf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OldHashTable::AddBitmapFilters </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Can be called after all insert calls to add bitmap filters for the probe side values. For each probe_expr_ that is a slot ref, generate a bitmap filter on that slot. These filters are added to the runtime state. The bitmap filter is similar to a Bloom filter in that has no false negatives but will have false positives. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00128">128</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="runtime-state_8cc_source.html#l00294">impala::RuntimeState::AddBitmapFilter()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00038">Begin()</a>, <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="old-hash-table_8h_source.html#l00223">End()</a>, <a class="el" href="raw-value_8h_source.html#l00168">impala::RawValue::GetHashValue()</a>, <a class="el" href="old-hash-table_8h_source.html#l00265">impala::OldHashTable::Iterator::GetRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00441">initial_seed_</a>, <a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html#a172454c4c6e375b8029a249839e6552e">impala::OldHashTable::Iterator::Next()</a>, <a class="el" href="old-hash-table_8h_source.html#l00429">probe_expr_ctxs_</a>, <a class="el" href="runtime-state_8h_source.html#l00159">impala::RuntimeState::slot_filter_bitmap_size()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00426">state_</a>.</p>
</div>
</div>
<a class="anchor" id="a15748803e25a94b72e16665d5ad8d609"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::OldHashTable::AddToBucket </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *&#160;</td>
<td class="paramname"><em>bucket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *&#160;</td>
<td class="paramname"><em>node</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Chains the node at 'node_idx' to 'bucket'. Nodes in a bucket are chained as a linked list; this places the new node at the beginning of the list. </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00090">90</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00337">impala::OldHashTable::Node::next</a>, <a class="el" href="old-hash-table_8h_source.html#l00342">impala::OldHashTable::Bucket::node</a>, and <a class="el" href="old-hash-table_8h_source.html#l00444">num_filled_buckets_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00110">MoveNode()</a>.</p>
</div>
</div>
<a class="anchor" id="a751cdb2e9561124603d773abd47fba58"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">OldHashTable::Iterator</a> impala::OldHashTable::Begin </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an iterator at the beginning of the hash table. Advancing this iterator will traverse all elements. </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00038">38</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00223">End()</a>, <a class="el" href="old-hash-table_8h_source.html#l00323">Iterator</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00063">NextBucket()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00342">impala::OldHashTable::Bucket::node</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00128">AddBitmapFilters()</a>, and <a class="el" href="old-hash-table-test_8cc_source.html#l00095">impala::OldHashTableTest::FullScan()</a>.</p>
</div>
</div>
<a class="anchor" id="af91c3a3cc6fcff2de86c9dec54bc37e9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::byte_size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of bytes allocated to the hash table. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00185">185</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00459">node_remaining_current_page_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00447">num_nodes_</a>.</p>
</div>
</div>
<a class="anchor" id="a46d49aa9acfabed1bf1790a82f2bc5bb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OldHashTable::Close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Call to cleanup any resources. Must be called once. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00093">93</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="impalad-metrics_8h_source.html#l00126">impala::ImpaladMetrics::HASH_TABLE_TOTAL_BYTES</a>, <a class="el" href="old-hash-table_8h_source.html#l00450">mem_pool_</a>, <a class="el" href="old-hash-table_8h_source.html#l00461">mem_tracker_</a>, <a class="el" href="old-hash-table_8h_source.html#l00453">num_data_pages_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00038">PAGE_SIZE</a>, and <a class="el" href="mem-tracker_8h_source.html#l00209">impala::MemTracker::Release()</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table-test_8cc_source.html#l00184">impala::TEST_F()</a>.</p>
</div>
</div>
<a class="anchor" id="a5fbd193bd0cdc05ec1d57f3c6abc1a67"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Function * OldHashTable::CodegenEquals </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Codegen for evaluating a <a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> and comparing equality against 'expr_values_buffer_'. Function signature matches <a class="el" href="classimpala_1_1OldHashTable.html#a9d19ab9277a7261b75dc77adcdfe822d">OldHashTable::Equals()</a> </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00576">576</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="llvm-codegen_8h_source.html#l00171">impala::LlvmCodeGen::FnPrototype::AddArgument()</a>, <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00366">impala::LlvmCodeGen::CastPtrToLlvmPtr()</a>, <a class="el" href="llvm-codegen_8h_source.html#l00214">impala::LlvmCodeGen::context()</a>, <a class="el" href="codegen-anyval_8cc_source.html#l00148">impala::CodegenAnyVal::CreateCallWrapped()</a>, <a class="el" href="codegen-anyval_8cc_source.html#l00582">impala::CodegenAnyVal::EqToNativePtr()</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, <a class="el" href="llvm-codegen_8h_source.html#l00381">impala::LlvmCodeGen::false_value()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00596">impala::LlvmCodeGen::FinalizeFunction()</a>, <a class="el" href="runtime-state_8cc_source.html#l00312">impala::RuntimeState::GetCodegen()</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00371">impala::LlvmCodeGen::GetIntConstant()</a>, <a class="el" href="codegen-anyval_8cc_source.html#l00171">impala::CodegenAnyVal::GetIsNull()</a>, <a class="el" href="classimpala_1_1LlvmCodeGen.html#a5766c2be69b2d39dbcdbbd5669ab3310">impala::LlvmCodeGen::GetPtrType()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00312">impala::LlvmCodeGen::GetType()</a>, <a class="el" href="tuple-row_8h_source.html#l00076">impala::TupleRow::LLVM_CLASS_NAME</a>, <a class="el" href="expr-context_8h_source.html#l00126">impala::ExprContext::LLVM_CLASS_NAME</a>, <a class="el" href="old-hash-table_8h_source.html#l00238">LLVM_CLASS_NAME</a>, <a class="el" href="runtime-state_8cc_source.html#l00224">impala::RuntimeState::LogError()</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="llvm-codegen_8h_source.html#l00393">impala::LlvmCodeGen::ptr_type()</a>, <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>, <a class="el" href="llvm-codegen_8h_source.html#l00380">impala::LlvmCodeGen::true_value()</a>, <a class="el" href="types_8h_source.html#l00030">impala::TYPE_BOOLEAN</a>, <a class="el" href="types_8h_source.html#l00047">impala::TYPE_CHAR</a>, and <a class="el" href="types_8h_source.html#l00031">impala::TYPE_TINYINT</a>.</p>
</div>
</div>
<a class="anchor" id="a31c384a28f316038c131870a96323aa9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Function * OldHashTable::CodegenEvalTupleRow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *&#160;</td>
<td class="paramname"><em>state</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>build_row</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Codegen for evaluating a tuple row. Codegen'd function matches the signature for EvalBuildRow and EvalTupleRow. if build_row is true, the codegen uses the build_exprs, otherwise the probe_exprs </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00242">242</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="llvm-codegen_8h_source.html#l00171">impala::LlvmCodeGen::FnPrototype::AddArgument()</a>, <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00366">impala::LlvmCodeGen::CastPtrToLlvmPtr()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00169">CodegenAssignNullValue()</a>, <a class="el" href="llvm-codegen_8h_source.html#l00214">impala::LlvmCodeGen::context()</a>, <a class="el" href="codegen-anyval_8cc_source.html#l00148">impala::CodegenAnyVal::CreateCallWrapped()</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, <a class="el" href="llvm-codegen_8h_source.html#l00381">impala::LlvmCodeGen::false_value()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00596">impala::LlvmCodeGen::FinalizeFunction()</a>, <a class="el" href="runtime-state_8cc_source.html#l00312">impala::RuntimeState::GetCodegen()</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="codegen-anyval_8cc_source.html#l00171">impala::CodegenAnyVal::GetIsNull()</a>, <a class="el" href="classimpala_1_1LlvmCodeGen.html#a5766c2be69b2d39dbcdbbd5669ab3310">impala::LlvmCodeGen::GetPtrType()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00312">impala::LlvmCodeGen::GetType()</a>, <a class="el" href="tuple-row_8h_source.html#l00076">impala::TupleRow::LLVM_CLASS_NAME</a>, <a class="el" href="expr-context_8h_source.html#l00126">impala::ExprContext::LLVM_CLASS_NAME</a>, <a class="el" href="old-hash-table_8h_source.html#l00238">LLVM_CLASS_NAME</a>, <a class="el" href="runtime-state_8cc_source.html#l00224">impala::RuntimeState::LogError()</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="old-hash-table_8h_source.html#l00429">probe_expr_ctxs_</a>, <a class="el" href="llvm-codegen_8h_source.html#l00393">impala::LlvmCodeGen::ptr_type()</a>, <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>, <a class="el" href="codegen-anyval_8cc_source.html#l00547">impala::CodegenAnyVal::ToNativePtr()</a>, <a class="el" href="llvm-codegen_8h_source.html#l00380">impala::LlvmCodeGen::true_value()</a>, <a class="el" href="types_8h_source.html#l00030">impala::TYPE_BOOLEAN</a>, <a class="el" href="types_8h_source.html#l00047">impala::TYPE_CHAR</a>, <a class="el" href="types_8h_source.html#l00042">impala::TYPE_DECIMAL</a>, <a class="el" href="types_8h_source.html#l00037">impala::TYPE_TIMESTAMP</a>, and <a class="el" href="types_8h_source.html#l00031">impala::TYPE_TINYINT</a>.</p>
</div>
</div>
<a class="anchor" id="a27b8b8b1c1c3a237efeb75f0bbebe7f5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Function * OldHashTable::CodegenHashCurrentRow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a> *&#160;</td>
<td class="paramname"><em>state</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Codegen for hashing the expr values in 'expr_values_buffer_'. Function prototype matches HashCurrentRow identically. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00397">397</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="llvm-codegen_8h_source.html#l00171">impala::LlvmCodeGen::FnPrototype::AddArgument()</a>, <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00366">impala::LlvmCodeGen::CastPtrToLlvmPtr()</a>, <a class="el" href="llvm-codegen_8h_source.html#l00214">impala::LlvmCodeGen::context()</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00596">impala::LlvmCodeGen::FinalizeFunction()</a>, <a class="el" href="runtime-state_8cc_source.html#l00312">impala::RuntimeState::GetCodegen()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00985">impala::LlvmCodeGen::GetHashFunction()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00371">impala::LlvmCodeGen::GetIntConstant()</a>, <a class="el" href="classimpala_1_1LlvmCodeGen.html#a5766c2be69b2d39dbcdbbd5669ab3310">impala::LlvmCodeGen::GetPtrType()</a>, <a class="el" href="llvm-codegen_8cc_source.html#l00312">impala::LlvmCodeGen::GetType()</a>, <a class="el" href="old-hash-table_8h_source.html#l00441">initial_seed_</a>, <a class="el" href="old-hash-table_8h_source.html#l00238">LLVM_CLASS_NAME</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="llvm-codegen_8h_source.html#l00393">impala::LlvmCodeGen::ptr_type()</a>, <a class="el" href="old-hash-table_8h_source.html#l00483">results_buffer_size_</a>, <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>, <a class="el" href="types_8h_source.html#l00047">impala::TYPE_CHAR</a>, <a class="el" href="types_8h_source.html#l00033">impala::TYPE_INT</a>, <a class="el" href="types_8h_source.html#l00038">impala::TYPE_STRING</a>, <a class="el" href="types_8h_source.html#l00031">impala::TYPE_TINYINT</a>, <a class="el" href="types_8h_source.html#l00048">impala::TYPE_VARCHAR</a>, and <a class="el" href="old-hash-table_8h_source.html#l00480">var_result_begin_</a>.</p>
</div>
</div>
<a class="anchor" id="a59605a3058e5e40d57034ab9f78447ad"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">string OldHashTable::DebugString </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>skip_empty</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>show_match</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classimpala_1_1RowDescriptor.html">RowDescriptor</a> *&#160;</td>
<td class="paramname"><em>build_desc</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dump out the entire hash table to string. If skip_empty, empty buckets are skipped. If show_match, it also prints the matched flag of each node. If build_desc is non-null, the build rows will be output. Otherwise just the build row addresses. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00747">747</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00338">impala::OldHashTable::Node::data</a>, <a class="el" href="old-hash-table_8h_source.html#l00397">GetRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00334">impala::OldHashTable::Node::matched</a>, <a class="el" href="old-hash-table_8h_source.html#l00337">impala::OldHashTable::Node::next</a>, and <a class="el" href="debug-util_8cc_source.html#l00192">impala::PrintRow()</a>.</p>
</div>
</div>
<a class="anchor" id="a34fdf4c8a112114a64b9587dcb96fee8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a> impala::OldHashTable::End </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns end marker. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00223">223</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00323">Iterator</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00128">AddBitmapFilters()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00038">Begin()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00045">FirstUnmatched()</a>, <a class="el" href="old-hash-table-test_8cc_source.html#l00095">impala::OldHashTableTest::FullScan()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00123">impala::OldHashTable::Iterator::Next()</a>, <a class="el" href="old-hash-table-test_8cc_source.html#l00126">impala::OldHashTableTest::ProbeTest()</a>, and <a class="el" href="old-hash-table-test_8cc_source.html#l00285">impala::TEST_F()</a>.</p>
</div>
</div>
<a class="anchor" id="a9d19ab9277a7261b75dc77adcdfe822d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> OldHashTable::Equals </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>build_row</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the values of build_exprs evaluated over 'build_row' equal the values cached in expr_values_buffer_ This will be replaced by codegen. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00507">507</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="raw-value_8h_source.html#l00106">impala::RawValue::Eq()</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00123">impala::OldHashTable::Iterator::Next()</a>.</p>
</div>
</div>
<a class="anchor" id="af0c1dd2271b703915a231791389b9ab9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int64_t impala::OldHashTable::EstimateSize </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>num_rows</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an estimate of the number of bytes needed to build the hash table structure for 'num_rows'. </p>
<p>Assume 50% fill factor. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00178">178</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00169">num_buckets()</a>.</p>
</div>
</div>
<a class="anchor" id="aae6f63d2ef72a16e9072263aeb927095"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::OldHashTable::EvalAndHashBuild </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>row</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>hash</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate and hash the build/probe row, returning in *hash. Returns false if this row should be rejected (doesn't need to be processed further) because it contains NULL. These need to be inlined in the IR module so we can find and replace the calls to <a class="el" href="classimpala_1_1OldHashTable.html#a3d8883d693e7a5035453965ce3fd0dd5">EvalBuildRow()</a>/EvalProbeRow(). </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00096">96</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00374">EvalBuildRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>.</p>
</div>
</div>
<a class="anchor" id="afbb141e9ecb7d66f79e903b9390da326"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::OldHashTable::EvalAndHashProbe </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>row</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>hash</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00103">103</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00380">EvalProbeRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00438">finds_nulls_</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>.</p>
</div>
</div>
<a class="anchor" id="a3d8883d693e7a5035453965ce3fd0dd5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#aa2f1cf984a158c22088f777a379be0f2">IR_NO_INLINE</a> impala::OldHashTable::EvalBuildRow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>row</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate 'row' over build exprs caching the results in 'expr_values_buffer_' This will be replaced by codegen. We do not want this function inlined when cross compiled because we need to be able to differentiate between EvalBuildRow and EvalProbeRow by name and the build/probe exprs are baked into the codegen'd function. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00374">374</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00096">EvalAndHashBuild()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>.</p>
</div>
</div>
<a class="anchor" id="a34a1a4cdbeabf53e7aacce27bcde3890"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#aa2f1cf984a158c22088f777a379be0f2">IR_NO_INLINE</a> impala::OldHashTable::EvalProbeRow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>row</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate 'row' over probe exprs caching the results in 'expr_values_buffer_' This will be replaced by codegen. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00380">380</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00429">probe_expr_ctxs_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00103">EvalAndHashProbe()</a>.</p>
</div>
</div>
<a class="anchor" id="afe75204e31fafe1698f4b17f9700f0ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> OldHashTable::EvalRow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>row</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>ctxs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate the exprs over row and cache the results in 'expr_values_buffer_'. Returns whether any expr evaluated to NULL This will be replaced by codegen </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00107">107</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00045">NULL_VALUE</a>, <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>, and <a class="el" href="raw-value_8cc_source.html#l00303">impala::RawValue::Write()</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00374">EvalBuildRow()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00380">EvalProbeRow()</a>.</p>
</div>
</div>
<a class="anchor" id="a0dc2dc91abd3307e9d58b497a7473624"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">OldHashTable::Iterator</a> impala::OldHashTable::Find </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>probe_row</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the start iterator for all rows that match 'probe_row'. 'probe_row' is evaluated with probe exprs. The iterator can be iterated until <a class="el" href="classimpala_1_1OldHashTable.html#a34fdf4c8a112114a64b9587dcb96fee8" title="Returns end marker. ">OldHashTable::End()</a> to find all the matching rows. Only one scan can be in progress at any time (i.e. it is not legal to call <a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find()</a>, begin iterating through all the matches, call another <a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find()</a>, and continuing iterator from the first scan iterator). Advancing the returned iterator will go to the next matching row. The matching rows are evaluated lazily (i.e. computed as the <a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html" title="stl-like iterator interface. ">Iterator</a> is moved). Returns <a class="el" href="classimpala_1_1OldHashTable.html#a34fdf4c8a112114a64b9587dcb96fee8" title="Returns end marker. ">OldHashTable::End()</a> if there is no match. </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">23</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00223">End()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00507">Equals()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00103">EvalAndHashProbe()</a>, <a class="el" href="old-hash-table_8h_source.html#l00397">GetRow()</a>, <a class="el" href="url-parser_8cc_source.html#l00041">impala::hash</a>, <a class="el" href="old-hash-table_8h_source.html#l00336">impala::OldHashTable::Node::hash</a>, <a class="el" href="old-hash-table_8h_source.html#l00323">Iterator</a>, <a class="el" href="old-hash-table_8h_source.html#l00337">impala::OldHashTable::Node::next</a>, and <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table-test_8cc_source.html#l00126">impala::OldHashTableTest::ProbeTest()</a>, and <a class="el" href="old-hash-table-test_8cc_source.html#l00285">impala::TEST_F()</a>.</p>
</div>
</div>
<a class="anchor" id="a84fb3f2096e01b0eec4c3d6c19a4df9f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">OldHashTable::Iterator</a> impala::OldHashTable::FirstUnmatched </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return an iterator pointing to the first element in the hash table that does not have its matched flag set. Used in right-outer and full-outer joins. </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00045">45</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00223">End()</a>, <a class="el" href="old-hash-table_8h_source.html#l00323">Iterator</a>, <a class="el" href="old-hash-table_8h_source.html#l00334">impala::OldHashTable::Node::matched</a>, <a class="el" href="old-hash-table_8h_source.html#l00337">impala::OldHashTable::Node::next</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00063">NextBucket()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00342">impala::OldHashTable::Bucket::node</a>.</p>
</div>
</div>
<a class="anchor" id="a9cf954b79777dcd73df31476b7b06e5d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a>* impala::OldHashTable::GetRow </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00397">397</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00338">impala::OldHashTable::Node::data</a>, and <a class="el" href="old-hash-table_8h_source.html#l00439">stores_tuples_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00747">DebugString()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00123">impala::OldHashTable::Iterator::Next()</a>.</p>
</div>
</div>
<a class="anchor" id="a41c900f83424dfb6586389ef4933cea4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void OldHashTable::GrowNodeArray </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Grow the node array. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00732">732</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="impalad-metrics_8h_source.html#l00126">impala::ImpaladMetrics::HASH_TABLE_TOTAL_BYTES</a>, <a class="el" href="mem-tracker_8h_source.html#l00257">impala::MemTracker::LimitExceeded()</a>, <a class="el" href="old-hash-table_8h_source.html#l00450">mem_pool_</a>, <a class="el" href="old-hash-table_8h_source.html#l00461">mem_tracker_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00742">MemLimitExceeded()</a>, <a class="el" href="old-hash-table_8h_source.html#l00456">next_node_</a>, <a class="el" href="old-hash-table_8h_source.html#l00459">node_remaining_current_page_</a>, <a class="el" href="old-hash-table_8h_source.html#l00453">num_data_pages_</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00038">PAGE_SIZE</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="a1c4efc4a084cdc4cd78c7117b2981064"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t <a class="el" href="impala-ir_8h.html#aa2f1cf984a158c22088f777a379be0f2">IR_NO_INLINE</a> impala::OldHashTable::HashCurrentRow </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the hash of the values in expr_values_buffer_. This will be replaced by codegen. We don't want this inlined for replacing with codegen'd functions so the function name does not change. </p>
<p>This handles NULLs implicitly since a constant seed value was put into results buffer for nulls. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00387">387</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="hash-util_8h_source.html#l00135">impala::HashUtil::Hash()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00441">initial_seed_</a>, <a class="el" href="old-hash-table_8h_source.html#l00483">results_buffer_size_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00480">var_result_begin_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00096">EvalAndHashBuild()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00103">EvalAndHashProbe()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>.</p>
</div>
</div>
<a class="anchor" id="adbecdd336c37ad5c4ee5c4f40bb8d41d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t OldHashTable::HashVariableLenRow </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the hash of the values in expr_values_buffer_ for rows with variable length fields (e.g. strings) </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00344">344</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00428">build_expr_ctxs_</a>, <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>, <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>, <a class="el" href="url-parser_8cc_source.html#l00041">impala::hash</a>, <a class="el" href="hash-util_8h_source.html#l00135">impala::HashUtil::Hash()</a>, <a class="el" href="old-hash-table_8h_source.html#l00441">initial_seed_</a>, <a class="el" href="string-value_8h_source.html#l00038">impala::StringValue::len</a>, <a class="el" href="string-value_8h_source.html#l00037">impala::StringValue::ptr</a>, <a class="el" href="types_8h_source.html#l00038">impala::TYPE_STRING</a>, <a class="el" href="types_8h_source.html#l00048">impala::TYPE_VARCHAR</a>, and <a class="el" href="old-hash-table_8h_source.html#l00480">var_result_begin_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>.</p>
</div>
</div>
<a class="anchor" id="a5489ce25a7ade119085e9d4bf6aba6f9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a> impala::OldHashTable::Insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *&#160;</td>
<td class="paramname"><em>row</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert row into the hash table. Row will be evaluated over build exprs. This will grow the hash table if necessary. If the hash table has or needs to go over the mem limit, the Insert will be ignored. The caller is assumed to periodically (e.g. per row batch) check the limits to identify this case. The 'row' is not copied by the hash table and the caller must guarantee it stays in memory. Returns false if there was not enough memory to insert the row. </p>
<p>TODO: next prime instead of double? </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00120">120</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00374">EvalBuildRow()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, <a class="el" href="old-hash-table_8h_source.html#l00465">mem_limit_exceeded_</a>, <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00473">num_buckets_till_resize_</a>, <a class="el" href="old-hash-table_8h_source.html#l00444">num_filled_buckets_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>, <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>, and <a class="el" href="compiler-util_8h_source.html#l00033">UNLIKELY</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table-test_8cc_source.html#l00184">impala::TEST_F()</a>.</p>
</div>
</div>
<a class="anchor" id="a686a71049373b4bf377e94c029d07e43"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> <a class="el" href="impala-ir_8h.html#af2b653018219cda8c9a2d9efc0ce3f44">IR_ALWAYS_INLINE</a> impala::OldHashTable::Insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1Tuple.html">Tuple</a> *&#160;</td>
<td class="paramname"><em>tuple</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO: next prime instead of double? </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00133">133</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00374">EvalBuildRow()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, <a class="el" href="old-hash-table_8h_source.html#l00465">mem_limit_exceeded_</a>, <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00473">num_buckets_till_resize_</a>, <a class="el" href="old-hash-table_8h_source.html#l00444">num_filled_buckets_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>, <a class="el" href="old-hash-table_8h_source.html#l00437">stores_nulls_</a>, and <a class="el" href="compiler-util_8h_source.html#l00033">UNLIKELY</a>.</p>
</div>
</div>
<a class="anchor" id="a43d25c6703851873145af87d320d3bc9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::OldHashTable::InsertImpl </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Insert row into the hash table. </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">72</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8inline_8h_source.html#l00090">AddToBucket()</a>, <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00338">impala::OldHashTable::Node::data</a>, <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>, <a class="el" href="url-parser_8cc_source.html#l00041">impala::hash</a>, <a class="el" href="old-hash-table_8h_source.html#l00336">impala::OldHashTable::Node::hash</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00334">impala::OldHashTable::Node::matched</a>, <a class="el" href="old-hash-table_8h_source.html#l00465">mem_limit_exceeded_</a>, <a class="el" href="old-hash-table_8h_source.html#l00456">next_node_</a>, <a class="el" href="old-hash-table_8h_source.html#l00459">node_remaining_current_page_</a>, <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00447">num_nodes_</a>, and <a class="el" href="compiler-util_8h_source.html#l00033">UNLIKELY</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>.</p>
</div>
</div>
<a class="anchor" id="a17c7f777e02391eebc6c2dfafc254628"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void* impala::OldHashTable::last_expr_value </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>expr_idx</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the results of the exprs at 'expr_idx' evaluated over the last row processed by the <a class="el" href="classimpala_1_1OldHashTable.html" title="The hash table does not support removes. The hash table is not thread safe. ">OldHashTable</a>. This value is invalid if the expr evaluated to NULL. TODO: this is an awkward abstraction but aggregation node can take advantage of it and save some expr evaluation calls. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00197">197</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00487">expr_values_buffer_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00477">expr_values_buffer_offsets_</a>.</p>
</div>
</div>
<a class="anchor" id="ae8380f63d906480c88bdd0c9a84353cb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::OldHashTable::last_expr_value_null </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>expr_idx</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns if the expr at 'expr_idx' evaluated to NULL for the last row. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00202">202</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00491">expr_value_null_bits_</a>.</p>
</div>
</div>
<a class="anchor" id="ae6fb8dcd6c7d56cfea01dfee602c3595"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float impala::OldHashTable::load_factor </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the load factor (the number of non-empty buckets) </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00172">172</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00444">num_filled_buckets_</a>.</p>
</div>
</div>
<a class="anchor" id="a87df4f7d3fe12412c3f744695094caa8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::OldHashTable::mem_limit_exceeded </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00190">190</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00465">mem_limit_exceeded_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table-test_8cc_source.html#l00285">impala::TEST_F()</a>.</p>
</div>
</div>
<a class="anchor" id="aa59b7b4eeffac5a34c28423bbfb84cf8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void OldHashTable::MemLimitExceeded </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>allocation_size</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets mem_limit_exceeded_ to true and MEM_LIMIT_EXCEEDED for the query. allocation_size is the attempted size of the allocation that would have brought us over the mem limit. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00742">742</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00465">mem_limit_exceeded_</a>, <a class="el" href="old-hash-table_8h_source.html#l00461">mem_tracker_</a>, <a class="el" href="runtime-state_8cc_source.html#l00247">impala::RuntimeState::SetMemLimitExceeded()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00426">state_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a82c6e6c881a973621ea74c6bd82b6c2d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::OldHashTable::MoveNode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *&#160;</td>
<td class="paramname"><em>from_bucket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a> *&#160;</td>
<td class="paramname"><em>to_bucket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a> *&#160;</td>
<td class="paramname"><em>previous_node</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Moves a node from one bucket to another. 'previous_node' refers to the node (if any) that's chained before this node in from_bucket's linked list. </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00110">110</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8inline_8h_source.html#l00090">AddToBucket()</a>, <a class="el" href="old-hash-table_8h_source.html#l00337">impala::OldHashTable::Node::next</a>, <a class="el" href="old-hash-table_8h_source.html#l00342">impala::OldHashTable::Bucket::node</a>, and <a class="el" href="old-hash-table_8h_source.html#l00444">num_filled_buckets_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a92dd7df15d4a19000c78d44c0c58d181"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">OldHashTable::Bucket</a> * impala::OldHashTable::NextBucket </td>
<td>(</td>
<td class="paramtype">int64_t *&#160;</td>
<td class="paramname"><em>bucket_idx</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the next non-empty bucket and updates idx to be the index of that bucket. If there are no more buckets, returns NULL and sets idx to -1 </p>
<p>Definition at line <a class="el" href="old-hash-table_8inline_8h_source.html#l00063">63</a> of file <a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, and <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00038">Begin()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00045">FirstUnmatched()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00123">impala::OldHashTable::Iterator::Next()</a>.</p>
</div>
</div>
<a class="anchor" id="ae932f8eb70ebdd75b83d840d16e58f1c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::num_buckets </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of buckets. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00169">169</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00178">EstimateSize()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>, and <a class="el" href="old-hash-table-test_8cc_source.html#l00184">impala::TEST_F()</a>.</p>
</div>
</div>
<a class="anchor" id="a82d6bfe01c155e9c91eb999875436758"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void OldHashTable::ResizeBuckets </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>num_buckets</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Resize the hash table to 'num_buckets'. </p>
<p>Definition at line <a class="el" href="old-hash-table_8cc_source.html#l00678">678</a> of file <a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00467">buckets_</a>, <a class="el" href="url-parser_8cc_source.html#l00041">impala::hash</a>, <a class="el" href="old-hash-table_8h_source.html#l00336">impala::OldHashTable::Node::hash</a>, <a class="el" href="old-hash-table_8h_source.html#l00424">MAX_BUCKET_OCCUPANCY_FRACTION</a>, <a class="el" href="old-hash-table_8h_source.html#l00461">mem_tracker_</a>, <a class="el" href="old-hash-table_8cc_source.html#l00742">MemLimitExceeded()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00110">MoveNode()</a>, <a class="el" href="old-hash-table_8h_source.html#l00337">impala::OldHashTable::Node::next</a>, <a class="el" href="old-hash-table_8h_source.html#l00342">impala::OldHashTable::Bucket::node</a>, <a class="el" href="old-hash-table_8h_source.html#l00169">num_buckets()</a>, <a class="el" href="old-hash-table_8h_source.html#l00470">num_buckets_</a>, <a class="el" href="old-hash-table_8h_source.html#l00473">num_buckets_till_resize_</a>, and <a class="el" href="mem-tracker_8h_source.html#l00163">impala::MemTracker::TryConsume()</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>, and <a class="el" href="old-hash-table-test_8cc_source.html#l00087">impala::OldHashTableTest::ResizeTable()</a>.</p>
</div>
</div>
<a class="anchor" id="ae2c67b89b0f75637382c2bcc2ce17e96"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns number of elements in the hash table. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00166">166</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>References <a class="el" href="old-hash-table_8h_source.html#l00447">num_nodes_</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table-test_8cc_source.html#l00184">impala::TEST_F()</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="a9830fc407400559db7e7783cc10a9394"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classimpala_1_1OldHashTable_1_1Iterator.html">Iterator</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00323">323</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00038">Begin()</a>, <a class="el" href="old-hash-table_8h_source.html#l00223">End()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00045">FirstUnmatched()</a>.</p>
</div>
</div>
<a class="anchor" id="accf5cac09a1c657b664f1f6428a01515"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classimpala_1_1OldHashTableTest.html">OldHashTableTest</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00324">324</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a887e78a6ac049d00163bf9e328f2dda8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="structimpala_1_1OldHashTable_1_1Bucket.html">Bucket</a>&gt; impala::OldHashTable::buckets_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00467">467</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00185">byte_size()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00093">Close()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00747">DebugString()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, <a class="el" href="old-hash-table_8h_source.html#l00172">load_factor()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00063">NextBucket()</a>, <a class="el" href="old-hash-table_8h_source.html#l00169">num_buckets()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a144a03a1a9aa5679af671b2654abf534"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt;<a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a>*&gt;&amp; impala::OldHashTable::build_expr_ctxs_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00428">428</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00128">AddBitmapFilters()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00576">CodegenEquals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00507">Equals()</a>, <a class="el" href="old-hash-table_8h_source.html#l00374">EvalBuildRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="a62f594413a0377811f07fcdddaecfd22"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t* impala::OldHashTable::expr_value_null_bits_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Use bytes instead of bools to be compatible with llvm. This address must not change once allocated. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00491">491</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00093">Close()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00576">CodegenEquals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00507">Equals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00202">last_expr_value_null()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="a9a273b6d65c45ccfcaf4f388a8390fbd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t* impala::OldHashTable::expr_values_buffer_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>buffer to store evaluated expr results. This address must not change once allocated since the address is baked into the codegen </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00487">487</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00093">Close()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00576">CodegenEquals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00507">Equals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00197">last_expr_value()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="aaddf7ce100e5c22c002a276e095dfb2b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; impala::OldHashTable::expr_values_buffer_offsets_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Cache of exprs values for the current row being evaluated. This can either be a build row (during <a class="el" href="classimpala_1_1OldHashTable.html#a5489ce25a7ade119085e9d4bf6aba6f9">Insert()</a>) or probe row (during <a class="el" href="classimpala_1_1OldHashTable.html#a0dc2dc91abd3307e9d58b497a7473624">Find()</a>). </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00477">477</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00576">CodegenEquals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00507">Equals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00197">last_expr_value()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="a7aadc722391111a506a51f645ad9aaac"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classbool.html">bool</a> impala::OldHashTable::finds_nulls_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00438">438</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00103">EvalAndHashProbe()</a>.</p>
</div>
</div>
<a class="anchor" id="a5d0e5e04e5cb22ee1ac12a1867e06a87"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int32_t impala::OldHashTable::initial_seed_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00441">441</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00128">AddBitmapFilters()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>.</p>
</div>
</div>
<a class="anchor" id="a7fa7d9075a758439a46e250be3ce04fa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const char * OldHashTable::LLVM_CLASS_NAME = &quot;class.impala::OldHashTable&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00238">238</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00576">CodegenEquals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>.</p>
</div>
</div>
<a class="anchor" id="a597475de6dfb3de05842ab1a33bacc16"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const float OldHashTable::MAX_BUCKET_OCCUPANCY_FRACTION = 0.75f</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Load factor that will trigger growing the hash table on insert. This is defined as the number of non-empty buckets / total_buckets </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00424">424</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a95494a89d4c694a503cd5b74a2c3a233"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::OldHashTable::mem_limit_exceeded_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set to true if the hash table exceeds the memory limit. If this is set, subsequent calls to <a class="el" href="classimpala_1_1OldHashTable.html#a5489ce25a7ade119085e9d4bf6aba6f9">Insert()</a> will be ignored. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00465">465</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, <a class="el" href="old-hash-table_8h_source.html#l00190">mem_limit_exceeded()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00742">MemLimitExceeded()</a>.</p>
</div>
</div>
<a class="anchor" id="afb2eff3257668fb19570190d2ea87343"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::scoped_ptr&lt;<a class="el" href="classimpala_1_1MemPool.html">MemPool</a>&gt; impala::OldHashTable::mem_pool_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> used to allocate data pages. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00450">450</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00093">Close()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>.</p>
</div>
</div>
<a class="anchor" id="abcfe2b69e9cf0dfeb85f903da3f36cb7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1MemTracker.html">MemTracker</a>* impala::OldHashTable::mem_tracker_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00461">461</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00093">Close()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00742">MemLimitExceeded()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a355272a6dbecb7f2cf6cdf8a05b4ab12"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structimpala_1_1OldHashTable_1_1Node.html">Node</a>* impala::OldHashTable::next_node_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Next node to insert. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00456">456</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>.</p>
</div>
</div>
<a class="anchor" id="a4c09c00fe722ba4f37235aa8a54b6b1c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int impala::OldHashTable::node_remaining_current_page_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of nodes left in the current page. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00459">459</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00185">byte_size()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>.</p>
</div>
</div>
<a class="anchor" id="a4e6476b6787b537cc82062d63ed3d976"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::num_buckets_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>equal to buckets_.size() but more efficient than the size function </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00470">470</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00023">Find()</a>, <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00063">NextBucket()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a278b257656474d6da0c25cf2b12fb8d7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::num_buckets_till_resize_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The number of filled buckets to trigger a resize. This is cached for efficiency. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00473">473</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00678">ResizeBuckets()</a>.</p>
</div>
</div>
<a class="anchor" id="a57fa0894ab90a1f4effc06acaf8b7ff4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int impala::OldHashTable::num_build_tuples_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of Tuple* in the build tuple row. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00432">432</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa7d4bf24f6460a8217a62f71fe097096"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int impala::OldHashTable::num_data_pages_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of data pages for nodes. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00453">453</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00093">Close()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00732">GrowNodeArray()</a>.</p>
</div>
</div>
<a class="anchor" id="a04e1f3ce808501a9a00d4f194e259d41"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::num_filled_buckets_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of non-empty buckets. Used to determine when to grow and rehash. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00444">444</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8inline_8h_source.html#l00090">AddToBucket()</a>, <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>, <a class="el" href="old-hash-table_8h_source.html#l00172">load_factor()</a>, and <a class="el" href="old-hash-table_8inline_8h_source.html#l00110">MoveNode()</a>.</p>
</div>
</div>
<a class="anchor" id="acbc80cd4eb1a7163055ced5a12f3bef9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::OldHashTable::num_nodes_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>number of nodes stored (i.e. size of hash table) </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00447">447</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00185">byte_size()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00072">InsertImpl()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00166">size()</a>.</p>
</div>
</div>
<a class="anchor" id="aa5d2c63f8fa0e15c2a8061b4b8a876a8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt;<a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a>*&gt;&amp; impala::OldHashTable::probe_expr_ctxs_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00429">429</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00128">AddBitmapFilters()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00380">EvalProbeRow()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="ab76a65fb772f9f76bde072dc79da95e4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int impala::OldHashTable::results_buffer_size_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>byte size of 'expr_values_buffer_' </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00483">483</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<a class="anchor" id="acc1dfcd3947dd46a3d9b41f94620c7c4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1RuntimeState.html">RuntimeState</a>* impala::OldHashTable::state_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00426">426</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00128">AddBitmapFilters()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00742">MemLimitExceeded()</a>.</p>
</div>
</div>
<a class="anchor" id="adb8be846cac5cfcb72b71aca9a59508d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classbool.html">bool</a> impala::OldHashTable::stores_nulls_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constants on how the hash table should behave. Joins and aggs have slightly different behavior. TODO: these constants are an ideal candidate to be removed with codegen. </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00437">437</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00576">CodegenEquals()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00242">CodegenEvalTupleRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00507">Equals()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00096">EvalAndHashBuild()</a>, <a class="el" href="old-hash-table_8inline_8h_source.html#l00103">EvalAndHashProbe()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00107">EvalRow()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00120">Insert()</a>.</p>
</div>
</div>
<a class="anchor" id="ab0d3e2f6fc811177247ec8b032fb20ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classbool.html">bool</a> impala::OldHashTable::stores_tuples_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00439">439</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8h_source.html#l00265">impala::OldHashTable::Iterator::GetRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00397">GetRow()</a>, and <a class="el" href="old-hash-table_8h_source.html#l00271">impala::OldHashTable::Iterator::GetTuple()</a>.</p>
</div>
</div>
<a class="anchor" id="a6dfec107513dec417fbe50f3fb904d45"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int impala::OldHashTable::var_result_begin_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>byte offset into expr_values_buffer_ that begins the variable length results </p>
<p>Definition at line <a class="el" href="old-hash-table_8h_source.html#l00480">480</a> of file <a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a>.</p>
<p>Referenced by <a class="el" href="old-hash-table_8cc_source.html#l00397">CodegenHashCurrentRow()</a>, <a class="el" href="old-hash-table_8h_source.html#l00387">HashCurrentRow()</a>, <a class="el" href="old-hash-table_8cc_source.html#l00344">HashVariableLenRow()</a>, and <a class="el" href="old-hash-table_8cc_source.html#l00054">OldHashTable()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>be/src/exec/<a class="el" href="old-hash-table_8h_source.html">old-hash-table.h</a></li>
<li>be/src/exec/<a class="el" href="old-hash-table_8cc_source.html">old-hash-table.cc</a></li>
<li>be/src/exec/<a class="el" href="old-hash-table_8inline_8h_source.html">old-hash-table.inline.h</a></li>
</ul>
</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="namespaceimpala.html">impala</a></li><li class="navelem"><a class="el" href="classimpala_1_1OldHashTable.html">OldHashTable</a></li>
<li class="footer">Generated on Thu May 7 2015 16:10:47 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>