| <!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_udf Namespace 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 class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> |
| <li><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="namespaces.html"><span>Namespace List</span></a></li> |
| <li><a href="namespacemembers.html"><span>Namespace 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('namespaceimpala__udf.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="#nested-classes">Classes</a> | |
| <a href="#typedef-members">Typedefs</a> | |
| <a href="#enum-members">Enumerations</a> | |
| <a href="#func-members">Functions</a> </div> |
| <div class="headertitle"> |
| <div class="title">impala_udf Namespace Reference</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| <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">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdaTestHarnessUtil.html">UdaTestHarnessUtil</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdaTestHarnessBase.html">UdaTestHarnessBase</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdaTestHarness.html">UdaTestHarness</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdaTestHarness2.html">UdaTestHarness2</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdaTestHarness3.html">UdaTestHarness3</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdaTestHarness4.html">UdaTestHarness4</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1UdfTestHarness.html">UdfTestHarness</a></td></tr> |
| <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Utility class to help test UDFs. <a href="classimpala__udf_1_1UdfTestHarness.html#details">More...</a><br/></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1BooleanVal.html">BooleanVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1TinyIntVal.html">TinyIntVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1SmallIntVal.html">SmallIntVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1IntVal.html">IntVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1BigIntVal.html">BigIntVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1FloatVal.html">FloatVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1DoubleVal.html">DoubleVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1TimestampVal.html">TimestampVal</a></td></tr> |
| <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This object has a compatible storage format with boost::ptime. <a href="structimpala__udf_1_1TimestampVal.html#details">More...</a><br/></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1StringVal.html">StringVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala__udf_1_1DecimalVal.html">DecimalVal</a></td></tr> |
| <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> |
| Typedefs</h2></td></tr> |
| <tr class="memitem:ab05bfbc0c5d86014f7b0e5cd071fb83c"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#ab05bfbc0c5d86014f7b0e5cd071fb83c">UdfPrepare</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, <a class="el" href="classimpala__udf_1_1FunctionContext.html#a1e9662a1bbb78daa9923b47412347ffc">FunctionContext::FunctionStateScope</a> scope)</td></tr> |
| <tr class="separator:ab05bfbc0c5d86014f7b0e5cd071fb83c"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a45df1904d83f03004b8d063935db510f"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a45df1904d83f03004b8d063935db510f">UdfClose</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, <a class="el" href="classimpala__udf_1_1FunctionContext.html#a1e9662a1bbb78daa9923b47412347ffc">FunctionContext::FunctionStateScope</a> scope)</td></tr> |
| <tr class="separator:a45df1904d83f03004b8d063935db510f"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a70f531abe01686232d651eb0379adbed"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a70f531abe01686232d651eb0379adbed">InputType</a></td></tr> |
| <tr class="separator:a70f531abe01686232d651eb0379adbed"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:aa0f12bd5a6b46fa5867f4b66f033b0a7"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#aa0f12bd5a6b46fa5867f4b66f033b0a7">InputType2</a></td></tr> |
| <tr class="separator:aa0f12bd5a6b46fa5867f4b66f033b0a7"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a004bbbb7c1fdc4292c1d9b1efcb0d1e7"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a004bbbb7c1fdc4292c1d9b1efcb0d1e7">ResultType</a></td></tr> |
| <tr class="separator:a004bbbb7c1fdc4292c1d9b1efcb0d1e7"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ad28e9b82bf0f5fb3f5ac42d0b9efa2f6"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a></td></tr> |
| <tr class="separator:ad28e9b82bf0f5fb3f5ac42d0b9efa2f6"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a8ffcdc2aff214e2aa93105950239e0b6"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a8ffcdc2aff214e2aa93105950239e0b6">UdaInit</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *result)</td></tr> |
| <tr class="separator:a8ffcdc2aff214e2aa93105950239e0b6"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ab5d87883698404754452254445e45faf"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#ab5d87883698404754452254445e45faf">UdaUpdate</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#a70f531abe01686232d651eb0379adbed">InputType</a> &input, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *result)</td></tr> |
| <tr class="separator:ab5d87883698404754452254445e45faf"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a5f3f111ecb9f523e5b4c0e71db022742"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a5f3f111ecb9f523e5b4c0e71db022742">UdaUpdate2</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#a70f531abe01686232d651eb0379adbed">InputType</a> &input, const <a class="el" href="namespaceimpala__udf.html#aa0f12bd5a6b46fa5867f4b66f033b0a7">InputType2</a> &input2, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *result)</td></tr> |
| <tr class="separator:a5f3f111ecb9f523e5b4c0e71db022742"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ad2781014c214f8b5f1c9e0c17e9d7b62"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#ad2781014c214f8b5f1c9e0c17e9d7b62">UdaMerge</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> &src, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *dst)</td></tr> |
| <tr class="memdesc:ad2781014c214f8b5f1c9e0c17e9d7b62"><td class="mdescLeft"> </td><td class="mdescRight">Merge an intermediate result 'src' into 'dst'. <a href="#ad2781014c214f8b5f1c9e0c17e9d7b62">More...</a><br/></td></tr> |
| <tr class="separator:ad2781014c214f8b5f1c9e0c17e9d7b62"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a74e12e43f36b5487abfd402f2bd1d093"><td class="memItemLeft" align="right" valign="top">typedef const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a>(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a74e12e43f36b5487abfd402f2bd1d093">UdaSerialize</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> &type)</td></tr> |
| <tr class="separator:a74e12e43f36b5487abfd402f2bd1d093"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a601552155654936ea9a5e9c3d2ff2bd5"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceimpala__udf.html#a004bbbb7c1fdc4292c1d9b1efcb0d1e7">ResultType</a>(* </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a601552155654936ea9a5e9c3d2ff2bd5">UdaFinalize</a> )(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> &v)</td></tr> |
| <tr class="separator:a601552155654936ea9a5e9c3d2ff2bd5"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:a233587ab404d9304f392b1eda6826ea5"><td class="memItemLeft" align="right" valign="top">typedef uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a233587ab404d9304f392b1eda6826ea5">BufferVal</a></td></tr> |
| <tr class="separator:a233587ab404d9304f392b1eda6826ea5"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> |
| Enumerations</h2></td></tr> |
| <tr class="memitem:a790d3383266c2a2ac837719b434b6d4a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#a790d3383266c2a2ac837719b434b6d4a">UdaExecutionMode</a> { <a class="el" href="namespaceimpala__udf.html#a790d3383266c2a2ac837719b434b6d4aa32f9ddb062393a118b7dd138f71a3ff0">ALL</a> = 0, |
| <a class="el" href="namespaceimpala__udf.html#a790d3383266c2a2ac837719b434b6d4aabbca6134956fa9cf18ab0d25d13a1e19">SINGLE_NODE</a> = 1, |
| <a class="el" href="namespaceimpala__udf.html#a790d3383266c2a2ac837719b434b6d4aa8fa9b27dd5eb6454561d62949e561974">ONE_LEVEL</a> = 2, |
| <a class="el" href="namespaceimpala__udf.html#a790d3383266c2a2ac837719b434b6d4aaaa25768a9a20280201cf7e52245bac94">TWO_LEVEL</a> = 3 |
| }</td></tr> |
| <tr class="separator:a790d3383266c2a2ac837719b434b6d4a"><td class="memSeparator" colspan="2"> </td></tr> |
| </table><table class="memberdecls"> |
| <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> |
| Functions</h2></td></tr> |
| <tr class="memitem:aa263bafd77b9eb6acc16458d70d160a4"><td class="memTemplParams" colspan="2">template<typename T > </td></tr> |
| <tr class="memitem:aa263bafd77b9eb6acc16458d70d160a4"><td class="memTemplItemLeft" align="right" valign="top">std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#aa263bafd77b9eb6acc16458d70d160a4">DebugString</a> (const T &val)</td></tr> |
| <tr class="separator:aa263bafd77b9eb6acc16458d70d160a4"><td class="memSeparator" colspan="2"> </td></tr> |
| <tr class="memitem:ab2b984c1448988689f18fbca1095840c"><td class="memTemplParams" colspan="2">template<> </td></tr> |
| <tr class="memitem:ab2b984c1448988689f18fbca1095840c"><td class="memTemplItemLeft" align="right" valign="top">std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceimpala__udf.html#ab2b984c1448988689f18fbca1095840c">DebugString</a> (const <a class="el" href="structimpala__udf_1_1StringVal.html">StringVal</a> &val)</td></tr> |
| <tr class="separator:ab2b984c1448988689f18fbca1095840c"><td class="memSeparator" colspan="2"> </td></tr> |
| </table> |
| <h2 class="groupheader">Typedef Documentation</h2> |
| <a class="anchor" id="a233587ab404d9304f392b1eda6826ea5"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef uint8_t* <a class="el" href="namespaceimpala__udf.html#a233587ab404d9304f392b1eda6826ea5">impala_udf::BufferVal</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00600">600</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a70f531abe01686232d651eb0379adbed"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> <a class="el" href="namespaceimpala__udf.html#a70f531abe01686232d651eb0379adbed">impala_udf::InputType</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>The UDA execution is broken up into a few steps. The general calling pattern is one of these: 1) Init(), Update() (repeatedly), Serialize() 2) Init(), Update() (repeatedly), Finalize() 3) Init(), Merge() (repeatedly), Serialize() 4) Init(), Merge() (repeatedly), Finalize() The UDA is registered with three types: the result type, the input type and the intermediate type. If the UDA needs a fixed byte width intermediate buffer, the type should be TYPE_FIXED_BUFFER and Impala will allocate the buffer. If the UDA needs an unknown sized buffer, it should use TYPE_STRING and allocate it from the <a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> manually. For UDAs that need a complex data structure as the intermediate state, the intermediate type should be string and the UDA can cast the ptr to the structure it is using. Memory Management: For allocations that are not returned to Impala, the UDA should use the <a class="el" href="classimpala__udf_1_1FunctionContext.html#a24a7e63aa708e54ea3c8c9572a00ede2">FunctionContext::Allocate()</a>/Free() methods. In general, Allocate() is called in Init(), and then Free() must be called in both Serialize() and Finalize(), since either of these functions may be called to clean up the state. For <a class="el" href="structimpala__udf_1_1StringVal.html">StringVal</a> allocations returned to Impala (e.g. returned by <a class="el" href="namespaceimpala__udf.html#a74e12e43f36b5487abfd402f2bd1d093">UdaSerialize()</a>), the UDA should allocate the result via StringVal(FunctionContext*, int) ctor and Impala will automatically handle freeing it. For clarity in documenting the UDA interface, the various types will be typedefed here. The actual execution resolves all the types at runtime and none of these types should actually be used. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00322">322</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="aa0f12bd5a6b46fa5867f4b66f033b0a7"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> <a class="el" href="namespaceimpala__udf.html#aa0f12bd5a6b46fa5867f4b66f033b0a7">impala_udf::InputType2</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00323">323</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ad28e9b82bf0f5fb3f5ac42d0b9efa2f6"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">impala_udf::IntermediateType</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00325">325</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a004bbbb7c1fdc4292c1d9b1efcb0d1e7"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef <a class="el" href="structimpala__udf_1_1AnyVal.html">AnyVal</a> <a class="el" href="namespaceimpala__udf.html#a004bbbb7c1fdc4292c1d9b1efcb0d1e7">impala_udf::ResultType</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00324">324</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a601552155654936ea9a5e9c3d2ff2bd5"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef <a class="el" href="namespaceimpala__udf.html#a004bbbb7c1fdc4292c1d9b1efcb0d1e7">ResultType</a>(* impala_udf::UdaFinalize)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> &v)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Called once at the end to return the final value for this UDA. No additional functions will be called with this <a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> object and the UDA should do final clean (e.g. Free()) here. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00353">353</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a8ffcdc2aff214e2aa93105950239e0b6"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef void(* impala_udf::UdaInit)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *result)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>UdaInit is called once for each aggregate group before calls to any of the other functions below. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00329">329</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ad2781014c214f8b5f1c9e0c17e9d7b62"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef void(* impala_udf::UdaMerge)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> &src, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *dst)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Merge an intermediate result 'src' into 'dst'. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00340">340</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a74e12e43f36b5487abfd402f2bd1d093"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a>(* impala_udf::UdaSerialize)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> &type)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>Serialize the intermediate type. The serialized data is then sent across the wire. No additional functions will be called with this <a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> object and the UDA should do final clean (e.g. Free()) here. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00347">347</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ab5d87883698404754452254445e45faf"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef void(* impala_udf::UdaUpdate)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#a70f531abe01686232d651eb0379adbed">InputType</a> &input, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *result)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>This is called for each input value. The UDA should update result based on the input value. The update function can take any number of input arguments. Here are some examples: </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00334">334</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a5f3f111ecb9f523e5b4c0e71db022742"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef void(* impala_udf::UdaUpdate2)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, const <a class="el" href="namespaceimpala__udf.html#a70f531abe01686232d651eb0379adbed">InputType</a> &input, const <a class="el" href="namespaceimpala__udf.html#aa0f12bd5a6b46fa5867f4b66f033b0a7">InputType2</a> &input2, <a class="el" href="namespaceimpala__udf.html#ad28e9b82bf0f5fb3f5ac42d0b9efa2f6">IntermediateType</a> *result)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00336">336</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="a45df1904d83f03004b8d063935db510f"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef void(* impala_udf::UdfClose)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, <a class="el" href="classimpala__udf_1_1FunctionContext.html#a1e9662a1bbb78daa9923b47412347ffc">FunctionContext::FunctionStateScope</a> scope)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>The UDF can also optionally include a close function, specified in the "CREATE |
| FUNCTION" statement using "close_fn=<close function symbol>". The close function is called after all calls to the UDF have completed. This is the appropriate time for the UDF to deallocate any shared data structures that are not needed to maintain the results. If there is an error, this function should call <a class="el" href="classimpala__udf_1_1FunctionContext.html#aa29186643c6b873f95e361b74e54a715">FunctionContext::SetError()</a>/ <a class="el" href="classimpala__udf_1_1FunctionContext.html#a228cf1a119cfe039dbfb1646fa2566f7">FunctionContext::AddWarning()</a>. The close function is called multiple times with different FunctionStateScopes. It will be called once per fragment with 'scope' set to FRAGMENT_LOCAL, and once per execution thread with 'scope' set to THREAD_LOCAL. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00288">288</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ab05bfbc0c5d86014f7b0e5cd071fb83c"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">typedef void(* impala_udf::UdfPrepare)(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> *context, <a class="el" href="classimpala__udf_1_1FunctionContext.html#a1e9662a1bbb78daa9923b47412347ffc">FunctionContext::FunctionStateScope</a> scope)</td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <p>The UDF must implement this function prototype. This is not a typedef as the actual UDF's signature varies from UDF to UDF. typedef <<em>Val> Evaluate(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a></em> context, <const Val& arg>); The UDF must return one of the <em>Val structs. The UDF must accept a pointer to a <a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> object and then a const reference for each of the input arguments. Examples of valid Udf signatures are: 1) <a class="el" href="structimpala__udf_1_1DoubleVal.html">DoubleVal</a> Example1(<a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a></em> context); 2) <a class="el" href="structimpala__udf_1_1IntVal.html">IntVal</a> Example2(FunctionContext* context, const IntVal& a1, const DoubleVal& a2); UDFs can be variadic. The variable arguments must all come at the end and must be the same type. A example signature is: <a class="el" href="structimpala__udf_1_1StringVal.html">StringVal</a> Concat(FunctionContext* context, const <a class="el" href="structimpala__udf_1_1StringVal.html">StringVal</a>& separator, int num_var_args, const StringVal* args); In this case args[0] is the first variable argument and args[num_var_args - 1] is </p> |
| <h2>the last. -—— Memory Management -—— </h2> |
| <p>The UDF can assume that memory from input arguments will have the same lifetime as results for the UDF. In other words, the UDF can return memory from input arguments without making copies. For example, a function like substring will not need to allocate and copy the smaller string. Any state needed across calls must be stored and accessed via <a class="el" href="classimpala__udf_1_1FunctionContext.html#aba396e394b1f685d4453f6afb37959dc">FunctionContext::SetFunctionState()</a> and <a class="el" href="classimpala__udf_1_1FunctionContext.html#a9f06f92e1567f5de30969ec17bea757d">FunctionContext::GetFunctionState()</a>. The UDF should not maintain any other state across calls since there is no guarantee on how </p> |
| <h2>the execution is multithreaded or distributed. –—— Execution Model –—— </h2> |
| <p>Execution model: For each UDF use occurring in a given query, at least one <a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a> will be created. For a given <a class="el" href="classimpala__udf_1_1FunctionContext.html">FunctionContext</a>, the UDF's functions are never called concurrently and therefore do not need to be thread-safe. State shared across UDF invocations should be initialized and cleaned up using prepare and close functions (described below). Note that a single UDF use may produce multiple FunctionContexts for that UDF (this is so the UDF can be executed concurrently in different threads). For example, the query "select * from tbl where my_udf(x) > 0" may produce multiple FunctionContexts for 'my_udf', each of which may concurrently be passed to 'my_udf's prepare, close, and </p> |
| <h2>UDF functions. — Prepare / Close Functions — </h2> |
| <p>The UDF can optionally include a prepare function, specified in the "CREATE FUNCTION" statement using "prepare_fn=<prepare function symbol>". The prepare function is called before any calls to the UDF to evaluate values. This is the appropriate time for the UDF to initialize any shared data structures, validate versions, etc. If there is an error, this function should call <a class="el" href="classimpala__udf_1_1FunctionContext.html#aa29186643c6b873f95e361b74e54a715">FunctionContext::SetError()</a>/ <a class="el" href="classimpala__udf_1_1FunctionContext.html#a228cf1a119cfe039dbfb1646fa2566f7">FunctionContext::AddWarning()</a>. The prepare function is called multiple times with different FunctionStateScopes. It will be called once per fragment with 'scope' set to FRAGMENT_LOCAL, and once per execution thread with 'scope' set to THREAD_LOCAL. </p> |
| |
| <p>Definition at line <a class="el" href="udf_8h_source.html#l00275">275</a> of file <a class="el" href="udf_8h_source.html">udf.h</a>.</p> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Enumeration Type Documentation</h2> |
| <a class="anchor" id="a790d3383266c2a2ac837719b434b6d4a"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">enum <a class="el" href="namespaceimpala__udf.html#a790d3383266c2a2ac837719b434b6d4a">impala_udf::UdaExecutionMode</a></td> |
| </tr> |
| </table> |
| </div><div class="memdoc"> |
| <table class="fieldtable"> |
| <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a790d3383266c2a2ac837719b434b6d4aa32f9ddb062393a118b7dd138f71a3ff0"></a>ALL</em> </td><td class="fielddoc"> |
| </td></tr> |
| <tr><td class="fieldname"><em><a class="anchor" id="a790d3383266c2a2ac837719b434b6d4aabbca6134956fa9cf18ab0d25d13a1e19"></a>SINGLE_NODE</em> </td><td class="fielddoc"> |
| </td></tr> |
| <tr><td class="fieldname"><em><a class="anchor" id="a790d3383266c2a2ac837719b434b6d4aa8fa9b27dd5eb6454561d62949e561974"></a>ONE_LEVEL</em> </td><td class="fielddoc"> |
| </td></tr> |
| <tr><td class="fieldname"><em><a class="anchor" id="a790d3383266c2a2ac837719b434b6d4aaaa25768a9a20280201cf7e52245bac94"></a>TWO_LEVEL</em> </td><td class="fielddoc"> |
| </td></tr> |
| </table> |
| |
| <p>Definition at line <a class="el" href="uda-test-harness_8h_source.html#l00032">32</a> of file <a class="el" href="uda-test-harness_8h_source.html">uda-test-harness.h</a>.</p> |
| |
| </div> |
| </div> |
| <h2 class="groupheader">Function Documentation</h2> |
| <a class="anchor" id="aa263bafd77b9eb6acc16458d70d160a4"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<typename T > </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">std::string impala_udf::DebugString </td> |
| <td>(</td> |
| <td class="paramtype">const T & </td> |
| <td class="paramname"><em>val</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>Definition at line <a class="el" href="udf-debug_8h_source.html#l00027">27</a> of file <a class="el" href="udf-debug_8h_source.html">udf-debug.h</a>.</p> |
| |
| <p>Referenced by <a class="el" href="null-literal_8cc_source.html#l00107">impala::NullLiteral::DebugString()</a>, <a class="el" href="compound-predicates_8h_source.html#l00050">impala::AndPredicate::DebugString()</a>, <a class="el" href="compound-predicates_8h_source.html#l00073">impala::OrPredicate::DebugString()</a>, <a class="el" href="conditional-functions_8h_source.html#l00074">impala::IsNullExpr::DebugString()</a>, <a class="el" href="conditional-functions_8h_source.html#l00095">impala::NullIfExpr::DebugString()</a>, <a class="el" href="conditional-functions_8h_source.html#l00116">impala::IfExpr::DebugString()</a>, <a class="el" href="conditional-functions_8h_source.html#l00136">impala::CoalesceExpr::DebugString()</a>, <a class="el" href="expr_8h_source.html#l00332">impala::Expr::DebugString()</a>, <a class="el" href="query-exec-state_8cc_source.html#l00489">impala::ImpalaServer::QueryExecState::Done()</a>, <a class="el" href="uda-test-harness-impl_8h_source.html#l00094">impala_udf::UdaTestHarnessBase< RESULT, INTERMEDIATE >::Execute()</a>, <a class="el" href="impala-server_8cc_source.html#l01555">impala::ImpalaServer::ExpireQueries()</a>, <a class="el" href="impala-server_8cc_source.html#l00226">impala::ImpalaServer::ImpalaServer()</a>, <a class="el" href="init_8cc_source.html#l00122">impala::InitCommonRuntime()</a>, <a class="el" href="impala-server_8cc_source.html#l00769">impala::ImpalaServer::PrepareQueryContext()</a>, <a class="el" href="query-exec-state_8cc_source.html#l00057">impala::ImpalaServer::QueryExecState::QueryExecState()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00211">impala::StatestoreSubscriber::RecoveryModeChecker()</a>, <a class="el" href="webserver_8cc_source.html#l00156">impala::Webserver::RootHandler()</a>, <a class="el" href="timestamp-test_8cc_source.html#l00225">impala::TEST()</a>, <a class="el" href="types_8cc_source.html#l00120">impala::ColumnType::ToHs2Type()</a>, and <a class="el" href="udf-test-harness_8h_source.html#l00289">impala_udf::UdfTestHarness::Validate()</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ab2b984c1448988689f18fbca1095840c"></a> |
| <div class="memitem"> |
| <div class="memproto"> |
| <div class="memtemplate"> |
| template<> </div> |
| <table class="mlabels"> |
| <tr> |
| <td class="mlabels-left"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">std::string impala_udf::DebugString </td> |
| <td>(</td> |
| <td class="paramtype">const StringVal & </td> |
| <td class="paramname"><em>val</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>Definition at line <a class="el" href="udf-debug_8h_source.html#l00035">35</a> of file <a class="el" href="udf-debug_8h_source.html">udf-debug.h</a>.</p> |
| |
| <p>References <a class="el" href="udf_8h_source.html#l00359">impala_udf::AnyVal::is_null</a>, <a class="el" href="udf_8h_source.html#l00522">impala_udf::StringVal::len</a>, and <a class="el" href="udf_8h_source.html#l00523">impala_udf::StringVal::ptr</a>.</p> |
| |
| </div> |
| </div> |
| </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__udf.html">impala_udf</a></li> |
| <li class="footer">Generated on Thu May 7 2015 16:10:51 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> |