| <!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::KeyNormalizer 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 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 List</span></a></li> |
| <li><a href="classes.html"><span>Class Index</span></a></li> |
| <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> |
| <li><a href="functions.html"><span>Class 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_1KeyNormalizer.html','');}); |
| </script> |
| <div id="doc-content"> |
| <!-- window showing the filter options --> |
| <div id="MSearchSelectWindow" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| onkeydown="return searchBox.OnSearchSelectKey(event)"> |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a></div> |
| |
| <!-- iframe showing the search results (closed by default) --> |
| <div id="MSearchResultsWindow"> |
| <iframe src="javascript:void(0)" frameborder="0" |
| name="MSearchResults" id="MSearchResults"> |
| </iframe> |
| </div> |
| |
| <div class="header"> |
| <div class="summary"> |
| <a href="#pub-methods">Public Member Functions</a> | |
| <a href="#pri-static-methods">Static Private Member Functions</a> | |
| <a href="#pri-attribs">Private Attributes</a> | |
| <a href="classimpala_1_1KeyNormalizer-members.html">List of all members</a> </div> |
| <div class="headertitle"> |
| <div class="title">impala::KeyNormalizer Class Reference</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| |
| <p>Finally, we pad any remaining bytes of the key with zeroes. |
| <a href="classimpala_1_1KeyNormalizer.html#details">More...</a></p> |
| |
| <p><code>#include <<a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>></code></p> |
| <div class="dynheader"> |
| Collaboration diagram for impala::KeyNormalizer:</div> |
| <div class="dyncontent"> |
| <div class="center"><iframe scrolling="no" frameborder="0" src="classimpala_1_1KeyNormalizer__coll__graph.svg" width="414" height="360"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div> |
| </div> |
| <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:a125a433d8ee2bdd1e11cfb68ed733549"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a125a433d8ee2bdd1e11cfb68ed733549">KeyNormalizer</a> (const std::vector< <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * > &key_exprs_ctxs, int key_len, const std::vector< <a class="el" href="classbool.html">bool</a> > &is_asc, const std::vector< <a class="el" href="classbool.html">bool</a> > &nulls_first)</td></tr> |
| <tr class="separator:a125a433d8ee2bdd1e11cfb68ed733549"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ad0ce97bc9f4bfb471ebe79ef32cc9197"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#ad0ce97bc9f4bfb471ebe79ef32cc9197">NormalizeKey</a> (<a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> *tuple_row, uint8_t *dst, int *key_idx_over_budget=NULL)</td></tr> |
| <tr class="separator:ad0ce97bc9f4bfb471ebe79ef32cc9197"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a> |
| Static Private Member Functions</h2></td></tr> |
| <tr class="memitem:a8db6de85f03bb1ecaec8193369d51ee4"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classbool.html">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a8db6de85f03bb1ecaec8193369d51ee4">WriteNullBit</a> (uint8_t null_bit, uint8_t *value, uint8_t *dst, int *bytes_left)</td></tr> |
| <tr class="memdesc:a8db6de85f03bb1ecaec8193369d51ee4"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if we went over the max key size while writing the null bit. <a href="#a8db6de85f03bb1ecaec8193369d51ee4">More...</a><br/></td></tr> |
| <tr class="separator:a8db6de85f03bb1ecaec8193369d51ee4"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a82e411efcc94c6b2c084626c8766779b"><td class="memTemplParams" colspan="2">template<typename ValueType > </td></tr> |
| <tr class="memitem:a82e411efcc94c6b2c084626c8766779b"><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a82e411efcc94c6b2c084626c8766779b">StoreFinalValue</a> (ValueType value, void *dst, <a class="el" href="classbool.html">bool</a> is_asc)</td></tr> |
| <tr class="separator:a82e411efcc94c6b2c084626c8766779b"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aed63878c5f86a06660c1ae04d45dc742"><td class="memTemplParams" colspan="2">template<typename IntType > </td></tr> |
| <tr class="memitem:aed63878c5f86a06660c1ae04d45dc742"><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#aed63878c5f86a06660c1ae04d45dc742">NormalizeInt</a> (void *src, void *dst, <a class="el" href="classbool.html">bool</a> is_asc)</td></tr> |
| <tr class="separator:aed63878c5f86a06660c1ae04d45dc742"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a299b98981612f3a399968b960f193d41"><td class="memTemplParams" colspan="2">template<typename FloatType , typename ResultType > </td></tr> |
| <tr class="memitem:a299b98981612f3a399968b960f193d41"><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a299b98981612f3a399968b960f193d41">NormalizeFloat</a> (void *src, void *dst, <a class="el" href="classbool.html">bool</a> is_asc)</td></tr> |
| <tr class="separator:a299b98981612f3a399968b960f193d41"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ad7103efbfc559ca4cf3314ae0bac8580"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#ad7103efbfc559ca4cf3314ae0bac8580">NormalizeTimestamp</a> (uint8_t *src, uint8_t *dst, <a class="el" href="classbool.html">bool</a> is_asc)</td></tr> |
| <tr class="separator:ad7103efbfc559ca4cf3314ae0bac8580"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ae4ab20c3f2cf79585c668fe983ae6ad9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classbool.html">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#ae4ab20c3f2cf79585c668fe983ae6ad9">WriteNormalizedKey</a> (const <a class="el" href="structimpala_1_1ColumnType.html">ColumnType</a> &type, <a class="el" href="classbool.html">bool</a> is_asc, uint8_t *value, uint8_t *dst, int *bytes_left)</td></tr> |
| <tr class="separator:ae4ab20c3f2cf79585c668fe983ae6ad9"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aaebc77332d4588f39bc889ec531c394c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classbool.html">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#aaebc77332d4588f39bc889ec531c394c">NormalizeKeyColumn</a> (const <a class="el" href="structimpala_1_1ColumnType.html">ColumnType</a> &type, uint8_t null_bit, <a class="el" href="classbool.html">bool</a> is_asc, uint8_t *value, uint8_t *dst, int *bytes_left)</td></tr> |
| <tr class="separator:aaebc77332d4588f39bc889ec531c394c"><td class="memSeparator" colspan="2"> </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:a763ff10fa1628542020d7f307b05a3f6"><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a763ff10fa1628542020d7f307b05a3f6">key_expr_ctxs_</a></td></tr> |
| <tr class="separator:a763ff10fa1628542020d7f307b05a3f6"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a1c40c94d4e1649dc3cb1887aed415344"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a1c40c94d4e1649dc3cb1887aed415344">key_len_</a></td></tr> |
| <tr class="separator:a1c40c94d4e1649dc3cb1887aed415344"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ae0e6a42c569f3aa8812ac7d2f58e53eb"><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classbool.html">bool</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#ae0e6a42c569f3aa8812ac7d2f58e53eb">is_asc_</a></td></tr> |
| <tr class="separator:ae0e6a42c569f3aa8812ac7d2f58e53eb"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a2e67e7ade7cd588b614922839141468d"><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classbool.html">bool</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1KeyNormalizer.html#a2e67e7ade7cd588b614922839141468d">nulls_first_</a></td></tr> |
| <tr class="separator:a2e67e7ade7cd588b614922839141468d"><td class="memSeparator" colspan="2"> </td></tr> |
| </table> |
| <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> |
| <div class="textblock"><p>Finally, we pad any remaining bytes of the key with zeroes. </p> |
| <p>Provides support for normalizing Impala expr values into a memcmp-able, fixed-length format. To normalize a key, we first write a null byte (0 if nulls_first, 1 otw), followed by the normalized form of the key. We invert the bytes of the key (excluding the null byte) if the key should be sorted in descending order. Further, for any multi-byte data types, we ensure that the most significant byte is first by converting to big endian. In addition to inverting descending keys and converting to big endian, here is how we normalize specific types: Integers: Invert the sign bit. Floats: Write out the inverted sign bit, followed by the exponent, followed by the fraction. If the float is negative, though, we need to invert both the exponent and fraction (since smaller number means greater actual value when negative). Conveniently, IEEE floating point numbers are already in the correct order. Timestamps: 32 bits for date: 23 bits for year, 4 bits for month, and 5 bits for day. 64 bits for time of day in nanoseconds. All numbers assumed unsigned. Strings: Write one character at a time with a null byte at the end (inverted if sort descending). Unlike other data types, we may write partial strings. NOTE: This assumes strings do not contain null characters. Booleans/Nulls: Left as-is. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8h_source.html#l00052">52</a> of file <a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>.</p> |
| </div><h2 class="groupheader">Constructor & Destructor Documentation</h2> |
| <a class="anchor" id="a125a433d8ee2bdd1e11cfb68ed733549"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">impala::KeyNormalizer::KeyNormalizer </td> |
| <td>(</td> |
| <td class="paramtype">const std::vector< <a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a> * > & </td> |
| <td class="paramname"><em>key_exprs_ctxs</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int </td> |
| <td class="paramname"><em>key_len</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const std::vector< <a class="el" href="classbool.html">bool</a> > & </td> |
| <td class="paramname"><em>is_asc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">const std::vector< <a class="el" href="classbool.html">bool</a> > & </td> |
| <td class="paramname"><em>nulls_first</em> </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>Initializes the normalizer with the key exprs and length alloted to each normalized key. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8h_source.html#l00056">56</a> of file <a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>.</p> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Member Function Documentation</h2> |
| <a class="anchor" id="a299b98981612f3a399968b960f193d41"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename FloatType , typename ResultType > </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void impala::KeyNormalizer::NormalizeFloat </td> |
| <td>(</td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>src</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classbool.html">bool</a> </td> |
| <td class="paramname"><em>is_asc</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>ResultType should be an integer type of the same size as FloatType, used to examine the bytes of the float. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00056">56</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="aed63878c5f86a06660c1ae04d45dc742"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename IntType > </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void impala::KeyNormalizer::NormalizeInt </td> |
| <td>(</td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>src</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classbool.html">bool</a> </td> |
| <td class="paramname"><em>is_asc</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00046">46</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ad0ce97bc9f4bfb471ebe79ef32cc9197"></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::KeyNormalizer::NormalizeKey </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="classimpala_1_1TupleRow.html">TupleRow</a> * </td> |
| <td class="paramname"><em>tuple_row</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"><em>key_idx_over_budget</em> = <code>NULL</code> </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>Normalizes all keys and writes the value into dst. Returns true if we went over the max key size while writing the key. If the return value is true, then key_idx_over_budget will be set to the index of the key expr which went over. TODO: Handle non-nullable columns </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00162">162</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| <p>References <a class="el" href="key-normalizer_8h_source.html#l00102">is_asc_</a>, <a class="el" href="key-normalizer_8h_source.html#l00100">key_expr_ctxs_</a>, <a class="el" href="key-normalizer_8h_source.html#l00101">key_len_</a>, <a class="el" href="key-normalizer_8inline_8h_source.html#l00155">NormalizeKeyColumn()</a>, <a class="el" href="key-normalizer_8h_source.html#l00103">nulls_first_</a>, and <a class="el" href="partitioning-throughput-test_8cc_source.html#l00037">offset</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="aaebc77332d4588f39bc889ec531c394c"></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::KeyNormalizer::NormalizeKeyColumn </td> |
| <td>(</td> |
| <td class="paramtype">const <a class="el" href="structimpala_1_1ColumnType.html">ColumnType</a> & </td> |
| <td class="paramname"><em>type</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t </td> |
| <td class="paramname"><em>null_bit</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classbool.html">bool</a> </td> |
| <td class="paramname"><em>is_asc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>value</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"><em>bytes_left</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Normalizes a column by writing a NULL byte and then the normalized value. Updates bytes_left and returns true if we went over the max key size. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00155">155</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| <p>References <a class="el" href="key-normalizer_8inline_8h_source.html#l00086">WriteNormalizedKey()</a>, and <a class="el" href="key-normalizer_8inline_8h_source.html#l00029">WriteNullBit()</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00162">NormalizeKey()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ad7103efbfc559ca4cf3314ae0bac8580"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void impala::KeyNormalizer::NormalizeTimestamp </td> |
| <td>(</td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>src</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classbool.html">bool</a> </td> |
| <td class="paramname"><em>is_asc</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00073">73</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| <p>References <a class="el" href="timestamp-value_8h_source.html#l00189">impala::TimestampValue::date()</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00086">WriteNormalizedKey()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a82e411efcc94c6b2c084626c8766779b"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename ValueType > </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">void impala::KeyNormalizer::StoreFinalValue </td> |
| <td>(</td> |
| <td class="paramtype">ValueType </td> |
| <td class="paramname"><em>value</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">void * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classbool.html">bool</a> </td> |
| <td class="paramname"><em>is_asc</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Stores the given value in the memory address given by dst, after converting to big endian and inverting the value if the sort is descending. Copy of 'value' intentional, we don't want to modify original. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00039">39</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| <p>References <a class="el" href="bit-util_8h_source.html#l00199">impala::BitUtil::ToBigEndian()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ae4ab20c3f2cf79585c668fe983ae6ad9"></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::KeyNormalizer::WriteNormalizedKey </td> |
| <td>(</td> |
| <td class="paramtype">const <a class="el" href="structimpala_1_1ColumnType.html">ColumnType</a> & </td> |
| <td class="paramname"><em>type</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="classbool.html">bool</a> </td> |
| <td class="paramname"><em>is_asc</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>value</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"><em>bytes_left</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Normalizes a sort key value and writes it to dst. Updates bytes_left and returns true if we went over the max key size. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00086">86</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| <p>References <a class="el" href="types_8h_source.html#l00178">impala::ColumnType::GetByteSize()</a>, <a class="el" href="string-value_8h_source.html#l00038">impala::StringValue::len</a>, <a class="el" href="key-normalizer_8inline_8h_source.html#l00073">NormalizeTimestamp()</a>, <a class="el" href="string-value_8h_source.html#l00037">impala::StringValue::ptr</a>, <a class="el" href="types_8h_source.html#l00060">impala::ColumnType::type</a>, <a class="el" href="types_8h_source.html#l00034">impala::TYPE_BIGINT</a>, <a class="el" href="types_8h_source.html#l00030">impala::TYPE_BOOLEAN</a>, <a class="el" href="types_8h_source.html#l00036">impala::TYPE_DOUBLE</a>, <a class="el" href="types_8h_source.html#l00035">impala::TYPE_FLOAT</a>, <a class="el" href="types_8h_source.html#l00033">impala::TYPE_INT</a>, <a class="el" href="types_8h_source.html#l00029">impala::TYPE_NULL</a>, <a class="el" href="types_8h_source.html#l00032">impala::TYPE_SMALLINT</a>, <a class="el" href="types_8h_source.html#l00038">impala::TYPE_STRING</a>, <a class="el" href="types_8h_source.html#l00037">impala::TYPE_TIMESTAMP</a>, <a class="el" href="types_8h_source.html#l00031">impala::TYPE_TINYINT</a>, and <a class="el" href="types_8h_source.html#l00048">impala::TYPE_VARCHAR</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00155">NormalizeKeyColumn()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a8db6de85f03bb1ecaec8193369d51ee4"></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::KeyNormalizer::WriteNullBit </td> |
| <td>(</td> |
| <td class="paramtype">uint8_t </td> |
| <td class="paramname"><em>null_bit</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>value</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">uint8_t * </td> |
| <td class="paramname"><em>dst</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype">int * </td> |
| <td class="paramname"><em>bytes_left</em> </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">static</span><span class="mlabel">private</span></span> </td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Returns true if we went over the max key size while writing the null bit. </p> |
| |
| <p>Definition at line <a class="el" href="key-normalizer_8inline_8h_source.html#l00029">29</a> of file <a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.inline.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00155">NormalizeKeyColumn()</a>.</p> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Member Data Documentation</h2> |
| <a class="anchor" id="ae0e6a42c569f3aa8812ac7d2f58e53eb"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">std::vector<<a class="el" href="classbool.html">bool</a>> impala::KeyNormalizer::is_asc_</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="key-normalizer_8h_source.html#l00102">102</a> of file <a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00162">NormalizeKey()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a763ff10fa1628542020d7f307b05a3f6"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">std::vector<<a class="el" href="classimpala_1_1ExprContext.html">ExprContext</a>*> impala::KeyNormalizer::key_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="key-normalizer_8h_source.html#l00100">100</a> of file <a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00162">NormalizeKey()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a1c40c94d4e1649dc3cb1887aed415344"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">int impala::KeyNormalizer::key_len_</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="key-normalizer_8h_source.html#l00101">101</a> of file <a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00162">NormalizeKey()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a2e67e7ade7cd588b614922839141468d"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">std::vector<<a class="el" href="classbool.html">bool</a>> impala::KeyNormalizer::nulls_first_</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="key-normalizer_8h_source.html#l00103">103</a> of file <a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="key-normalizer_8inline_8h_source.html#l00162">NormalizeKey()</a>.</p> |
| |
| </div> |
| </div> |
| <hr/>The documentation for this class was generated from the following files:<ul> |
| <li>be/src/util/<a class="el" href="key-normalizer_8h_source.html">key-normalizer.h</a></li> |
| <li>be/src/util/<a class="el" href="key-normalizer_8inline_8h_source.html">key-normalizer.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_1KeyNormalizer.html">KeyNormalizer</a></li> |
| <li class="footer">Generated on Thu May 7 2015 16:10:50 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> |