http://git-wip-us.apache.org/repos/asf/incubator-trafodion-site/blob/2a3d8b6a/docs/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRInvocationInfo.html
----------------------------------------------------------------------
diff --git 
a/docs/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRInvocationInfo.html 
b/docs/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRInvocationInfo.html
new file mode 100644
index 0000000..6efac5b
--- /dev/null
+++ b/docs/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRInvocationInfo.html
@@ -0,0 +1,1362 @@
+<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
+<!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"/>
+<title>tmudr: tmudr::UDRInvocationInfo Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javaScript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body onload='searchBox.OnSelectItem(0);'>
+<!-- Generated by Doxygen 1.6.1 -->
+<script type="text/javascript"><!--
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+--></script>
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li class="current"><a 
href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <img id="MSearchSelect" src="search/search.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)"/>
+        <a id="MSearchClose" 
href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" 
border="0" src="search/close.png" alt=""/></a>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+  <div class="navpath"><b>tmudr</b>::<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a>
+  </div>
+</div>
+<div class="contents">
+<h1>tmudr::UDRInvocationInfo Class Reference</h1><!-- doxytag: 
class="tmudr::UDRInvocationInfo" --><!-- doxytag: 
inherits="tmudr::TMUDRSerializableObject" -->
+<p>Describes an invocation of a <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a>.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" 
href="sqludr_8h_source.html">sqludr.h</a>&gt;</code></p>
+
+<p>Inherits tmudr::TMUDRSerializableObject.</p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">FuncType</a>
 { <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a8dcb9100d5fc6499d3f46fdbabd30d71">GENERIC</a>,
 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26">MAPPER</a>,
 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408">REDUCER</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Type of a 
TMUDF: Generic, mapper or reducer. </p>
+ <a 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a5742766a2b3800bd06bbe486cafa0e0b">SQLAccessType</a>
 </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0dd8a181e55e743bb9ec39b747491e1e">SQLTransactionType</a>
 </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a7c38879b0268e3b20bf2cced998d93f2">SQLRightsType</a>
 </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab8f0c182949b86f0eb01e7dd5533496d">IsolationType</a>
 </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17775d1990732a2ac52bcc528c76e40b">CallPhase</a>
 </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>call phase for 
the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents 
the code associated with a UDR.">UDR</a> interface </p>
+ <a 
href="classtmudr_1_1UDRInvocationInfo.html#a17775d1990732a2ac52bcc528c76e40b">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361e">DebugFlags</a>
 { <br/>
+&nbsp;&nbsp;<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361eaf44eafcbd8faccd8c85725874380eaf3">DEBUG_INITIAL_RUN_TIME_LOOP_ONE</a>
 =  0x00000001, 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361eaffb9263b7a7c4d84b7e9af75f133b71a">DEBUG_INITIAL_RUN_TIME_LOOP_ALL</a>
 =  0x00000002, 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361ea8e0cbb0080167b8735e1bc6ea6dd884f">DEBUG_INITIAL_COMPILE_TIME_LOOP</a>
 =  0x00000004, 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361ea630511f4c789eb3f7ba27ee5a4e864df">DEBUG_LOAD_MSG_LOOP</a>
 =  0x00000008, 
+<br/>
+&nbsp;&nbsp;<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361ea5ee57a5f93619e910047e53cf5d1c9f0">TRACE_ROWS</a>
 =  0x00000010, 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361ea208a06e955c534acf2f2a4ff987bbd3c">PRINT_INVOCATION_INFO_INITIAL</a>
 =  0x00000020, 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361eaa3b4433164dcdb59c782867e25ec55cc">PRINT_INVOCATION_INFO_END_COMPILE</a>
 =  0x00000040, 
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361ea6b367b009643535ace09423ae914e549">PRINT_INVOCATION_INFO_AT_RUN_TIME</a>
 =  0x00000080, 
+<br/>
+&nbsp;&nbsp;<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361eaf15016f709fd2be11ebeae7a97ef3470">VALIDATE_WALLS</a>
 =  0x00000100
+<br/>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>values used for 
the UDR_DEBUG_FLAGS CQD </p>
+ <a 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361e">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a4fef718438b8d0f73c72960850e12f76">getUDRName</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a6c037fb917b24c9140966100583c4ddf">getNumTableInputs</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" 
href="classtmudr_1_1TableInfo.html">TableInfo</a> &amp;&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a8e8246083a145bfcf9771a915df70d2a">in</a>
 (int childNum=0) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" 
href="classtmudr_1_1TableInfo.html">TableInfo</a> &amp;&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#abccd0a12bb9f275f9b51d0b147bc238b">out</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17775d1990732a2ac52bcc528c76e40b">CallPhase</a>&nbsp;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a05e6cfdfe6353ff71bd9d788f2ad90a7">getCallPhase</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a4260a3d72362f6ef3fa058b7f4fc733e">getCurrentUser</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af6fe6a390c721a579d39f132b053e01e">getSessionUser</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a526a57461a964c44fa08333cfbe3e403">getCurrentRole</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a44281bb80ce0ddfc220f830603184bb6">isCompileTime</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae6454d983c0e219533fbedce92fdbb7e">isRunTime</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#abc2ae451673901fadcc4d468903dcb90">getDebugFlags</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">FuncType</a>&nbsp;</td><td
 class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a7ffc96813d89aaf680b69b17a9fd4efa">getFuncType</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" 
href="classtmudr_1_1ParameterListInfo.html">ParameterListInfo</a> 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a47c62b14380293ed12a99c23650938f8">getFormalParameters</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" 
href="classtmudr_1_1ParameterListInfo.html">ParameterListInfo</a> 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab311a6d5798704f36afc52a3603eeec9">par</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#abb1c5cae5193c0c736d534943ff6fd0a">getNumPredicates</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" 
href="classtmudr_1_1PredicateInfo.html">PredicateInfo</a> &amp;&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a862b4fc9c3041408c18b72fa456bc37b">getPredicate</a>
 (int i) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af56ae6e3b533811727c01ac0dd373b2a">isAComparisonPredicate</a>
 (int i) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" 
href="classtmudr_1_1ComparisonPredicateInfo.html">ComparisonPredicateInfo</a> 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ac7b36f50b9bc332b532325ef6d74fef0">getComparisonPredicate</a>
 (int i) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" 
href="classtmudr_1_1TableInfo.html">TableInfo</a> &amp;&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0e46b3318bf4e8c5f5a0953e851fbae5">out</a>
 ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae8ec687491875c1086660a237d936019">addFormalParameter</a>
 (const <a class="el" href="classtmudr_1_1ColumnInfo.html">ColumnInfo</a> 
&amp;param)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">setFuncType</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">FuncType</a>
 type)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae7274d94c79a78a4cd0976cbe572ab26">addPassThruColumns</a>
 (int inputTableNum=0, int startInputColNum=0, int endInputColNum=-1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ac2e13c982996e5e32f67cd157efce2fd">setChildPartitioning</a>
 (int inputTableNum, const <a class="el" 
href="classtmudr_1_1PartitionInfo.html">PartitionInfo</a> 
&amp;partInfo)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a9cf945532b68164df02ed59e56993dec">setChildOrdering</a>
 (int inputTableNum, const <a class="el" 
href="classtmudr_1_1OrderInfo.html">OrderInfo</a> &amp;orderInfo)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a165ce1b6a1e8430cc9ff8bc069c52403">setChildColumnUsage</a>
 (int inputTableNum, int inputColumnNum, <a class="el" 
href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">ColumnInfo::ColumnUseCode</a>
 usage)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17aa99c78b92c21bb7f165d6a525ee45">setUnusedPassthruColumns</a>
 ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a31ac324ce7cb12163be24b79eec1b416">setPredicateEvaluationCode</a>
 (int predicateNum, <a class="el" 
href="classtmudr_1_1PredicateInfo.html#aa2a53f51db2e8e56cf79fe8c28e54232">PredicateInfo::EvaluationCode</a>
 c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a08078fda7b63cea5e2f02546e04a9e1c">pushPredicatesOnPassthruColumns</a>
 (int startPredNum=0, int lastPredNum=-1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ac3c17d8d9c6efd94471179a052ca7ab7">propagateConstraintsFor1To1UDFs</a>
 (bool exactlyOneRowPerInput)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" 
href="classtmudr_1_1UDRWriterCompileTimeData.html">UDRWriterCompileTimeData</a> 
*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0f52f99de8bd5d268ad54b397037aaa4">getUDRWriterCompileTimeData</a>
 ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a62d8e083376c816dc66d1d7447869bee">setUDRWriterCompileTimeData</a>
 (<a class="el" 
href="classtmudr_1_1UDRWriterCompileTimeData.html">UDRWriterCompileTimeData</a> 
*compileTimeData)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a7af8ac157fb75e4d426e6243bb8a4e1e">copyPassThruData</a>
 (int inputTableNum=0, int startInputColNum=0, int endInputColNum=-1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const std::string 
&amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae743d98454eaf28158a14f7ff4e22908">getQueryId</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0fa7dbaa5449564569ac90579da6466f">getNumParallelInstances</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a8c4c9625a85c42534bb63324f78f1ba5">getMyInstanceNum</a>
 () const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a5f39c23ff94d54317d11cf87e4cc1102">print</a>
 ()</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Describes an invocation of a <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a>. </p>
+<p>This combines the description of the <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a>, its names and properties with the parameters, input and 
output table layouts and other information. An object of this class is passed 
to most methods defined by the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writer. 
It can be used to get input and parameter data and to set values of 
table-valued output columns. </p>
+<hr/><h2>Member Enumeration Documentation</h2>
+<a class="anchor" id="a17775d1990732a2ac52bcc528c76e40b"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::CallPhase" 
ref="a17775d1990732a2ac52bcc528c76e40b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17775d1990732a2ac52bcc528c76e40b">tmudr::UDRInvocationInfo::CallPhase</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>call phase for the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> interface </p>
+<p>This is of limited interest for <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writers 
and mostly used internally to ensure method calls are not done at the wrong 
time. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab6b34603b9cad093f862ff650aeb361e"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::DebugFlags" 
ref="ab6b34603b9cad093f862ff650aeb361e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361e">tmudr::UDRInvocationInfo::DebugFlags</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>values used for the UDR_DEBUG_FLAGS CQD </p>
+<p>use cqd UDR_DEBUG_FLAGS 'num' in SQL to set these, add up the flags (in 
decimal) that you want to set. See <a 
href="https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface#Tutorial:Theobject-orientedUDFinterface-DebuggingUDFcode";>https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface#Tutorial:Theobject-orientedUDFinterface-DebuggingUDFcode</a>
 for details. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" 
cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361eaf44eafcbd8faccd8c85725874380eaf3"></a><!--
 doxytag: member="DEBUG_INITIAL_RUN_TIME_LOOP_ONE" 
ref="ab6b34603b9cad093f862ff650aeb361eaf44eafcbd8faccd8c85725874380eaf3" 
args="" -->DEBUG_INITIAL_RUN_TIME_LOOP_ONE</em>&nbsp;</td><td>
+<p>1 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361eaffb9263b7a7c4d84b7e9af75f133b71a"></a><!--
 doxytag: member="DEBUG_INITIAL_RUN_TIME_LOOP_ALL" 
ref="ab6b34603b9cad093f862ff650aeb361eaffb9263b7a7c4d84b7e9af75f133b71a" 
args="" -->DEBUG_INITIAL_RUN_TIME_LOOP_ALL</em>&nbsp;</td><td>
+<p>2 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361ea8e0cbb0080167b8735e1bc6ea6dd884f"></a><!--
 doxytag: member="DEBUG_INITIAL_COMPILE_TIME_LOOP" 
ref="ab6b34603b9cad093f862ff650aeb361ea8e0cbb0080167b8735e1bc6ea6dd884f" 
args="" -->DEBUG_INITIAL_COMPILE_TIME_LOOP</em>&nbsp;</td><td>
+<p>4 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361ea630511f4c789eb3f7ba27ee5a4e864df"></a><!--
 doxytag: member="DEBUG_LOAD_MSG_LOOP" 
ref="ab6b34603b9cad093f862ff650aeb361ea630511f4c789eb3f7ba27ee5a4e864df" 
args="" -->DEBUG_LOAD_MSG_LOOP</em>&nbsp;</td><td>
+<p>8 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361ea5ee57a5f93619e910047e53cf5d1c9f0"></a><!--
 doxytag: member="TRACE_ROWS" 
ref="ab6b34603b9cad093f862ff650aeb361ea5ee57a5f93619e910047e53cf5d1c9f0" 
args="" -->TRACE_ROWS</em>&nbsp;</td><td>
+<p>16 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361ea208a06e955c534acf2f2a4ff987bbd3c"></a><!--
 doxytag: member="PRINT_INVOCATION_INFO_INITIAL" 
ref="ab6b34603b9cad093f862ff650aeb361ea208a06e955c534acf2f2a4ff987bbd3c" 
args="" -->PRINT_INVOCATION_INFO_INITIAL</em>&nbsp;</td><td>
+<p>32 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361eaa3b4433164dcdb59c782867e25ec55cc"></a><!--
 doxytag: member="PRINT_INVOCATION_INFO_END_COMPILE" 
ref="ab6b34603b9cad093f862ff650aeb361eaa3b4433164dcdb59c782867e25ec55cc" 
args="" -->PRINT_INVOCATION_INFO_END_COMPILE</em>&nbsp;</td><td>
+<p>64 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361ea6b367b009643535ace09423ae914e549"></a><!--
 doxytag: member="PRINT_INVOCATION_INFO_AT_RUN_TIME" 
ref="ab6b34603b9cad093f862ff650aeb361ea6b367b009643535ace09423ae914e549" 
args="" -->PRINT_INVOCATION_INFO_AT_RUN_TIME</em>&nbsp;</td><td>
+<p>128 </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="ab6b34603b9cad093f862ff650aeb361eaf15016f709fd2be11ebeae7a97ef3470"></a><!--
 doxytag: member="VALIDATE_WALLS" 
ref="ab6b34603b9cad093f862ff650aeb361eaf15016f709fd2be11ebeae7a97ef3470" 
args="" -->VALIDATE_WALLS</em>&nbsp;</td><td>
+<p>256 </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa1a5e7aa734a95a5478db3d785508234"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::FuncType" 
ref="aa1a5e7aa734a95a5478db3d785508234" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">tmudr::UDRInvocationInfo::FuncType</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Type of a TMUDF: Generic, mapper or reducer. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" 
cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" 
id="aa1a5e7aa734a95a5478db3d785508234a8dcb9100d5fc6499d3f46fdbabd30d71"></a><!--
 doxytag: member="GENERIC" 
ref="aa1a5e7aa734a95a5478db3d785508234a8dcb9100d5fc6499d3f46fdbabd30d71" 
args="" -->GENERIC</em>&nbsp;</td><td>
+<p>The Trafodion compiler will make only the most conservative assumptions 
about this type of UDF. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26"></a><!--
 doxytag: member="MAPPER" 
ref="aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26" 
args="" -->MAPPER</em>&nbsp;</td><td>
+<p>A UDF that behaves like a mapper. A mapper does not carry any state between 
rows it reads from its table-valued inputs. It produces zero or more output 
rows per input row. Because no state is kept between rows, the Trafodion 
compiler can automatically parallelize execution and push predicates down to 
the table-valued inputs. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" 
id="aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408"></a><!--
 doxytag: member="REDUCER" 
ref="aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408" 
args="" -->REDUCER</em>&nbsp;</td><td>
+<p>A reducer requires the data to be partitioned on a set of columns. The UDF 
does not carry any state between groups of rows with the same partition column 
values, but it may carry state within such groups. This allows the compiler to 
parallelize execution and to push predicates on the partitioning column(s) down 
to table-valued inputs. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab8f0c182949b86f0eb01e7dd5533496d"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::IsolationType" 
ref="ab8f0c182949b86f0eb01e7dd5533496d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab8f0c182949b86f0eb01e7dd5533496d">tmudr::UDRInvocationInfo::IsolationType</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Indicates whether this <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> is 
trusted or not </p>
+
+</div>
+</div>
+<a class="anchor" id="a5742766a2b3800bd06bbe486cafa0e0b"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::SQLAccessType" 
ref="a5742766a2b3800bd06bbe486cafa0e0b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a5742766a2b3800bd06bbe486cafa0e0b">tmudr::UDRInvocationInfo::SQLAccessType</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Type of SQL access allowed in this routine </p>
+
+</div>
+</div>
+<a class="anchor" id="a7c38879b0268e3b20bf2cced998d93f2"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::SQLRightsType" 
ref="a7c38879b0268e3b20bf2cced998d93f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a7c38879b0268e3b20bf2cced998d93f2">tmudr::UDRInvocationInfo::SQLRightsType</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Effective user ids for determining privileges</p>
+<p>This is meaningful only for UDRs that perform SQL operations, using the 
default connection. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0dd8a181e55e743bb9ec39b747491e1e"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::SQLTransactionType" 
ref="a0dd8a181e55e743bb9ec39b747491e1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0dd8a181e55e743bb9ec39b747491e1e">tmudr::UDRInvocationInfo::SQLTransactionType</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Type of transaction that is required, if any </p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ae8ec687491875c1086660a237d936019"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::addFormalParameter" 
ref="ae8ec687491875c1086660a237d936019" args="(const ColumnInfo &amp;param)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::addFormalParameter </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" 
href="classtmudr_1_1ColumnInfo.html">ColumnInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>param</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Add a formal parameter to match an actual parameter.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>
 method.</p>
+<dl class="see"><dt><b>See 
also:</b></dt><dd>describeParamsAndColumns()</dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>param</em>&nbsp;</td><td>Info with name and type of the formal 
parameter.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae7274d94c79a78a4cd0976cbe572ab26"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::addPassThruColumns" 
ref="ae7274d94c79a78a4cd0976cbe572ab26" args="(int inputTableNum=0, int 
startInputColNum=0, int endInputColNum=&#45;1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::addPassThruColumns </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>inputTableNum</em> = <code>0</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>startInputColNum</em> = <code>0</code>, 
</td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>endInputColNum</em> = 
<code>-1</code></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Add columns of table-valued inputs as output columns.</p>
+<p>Many TMUDFs make the column values of their table-valued inputs available 
as output columns. Such columns are called "pass-thru" columns. This method is 
an easy interface to create such pass-thru columns. Note that if a column is 
marked as pass-thru column, the UDF must copy the input value to the output 
(e.g. with the <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a7af8ac157fb75e4d426e6243bb8a4e1e">copyPassThruData()</a>
 method). If it fails to do that, incorrect results may occur, because the 
compiler makes the assumptions that these values are the same.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>
 </dd>
+<dd>
+<a class="el" href="classtmudr_1_1ProvenanceInfo.html" title="Describes where 
an output column is coming from.">ProvenanceInfo</a> </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1ColumnInfo.html#abd56e48603e02a2b65f383921a2c44a1">ColumnInfo::getProvenance()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>inputTableNum</em>&nbsp;</td><td>Index of table-valued input 
to add. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>startInputColNum</em>&nbsp;</td><td>First column of the 
table-valued input to add as an output column. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>endInputColNum</em>&nbsp;</td><td>Last column of the 
table-valued input to add as an output column (note this is inclusive) or -1 to 
add all remaining column. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7af8ac157fb75e4d426e6243bb8a4e1e"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::copyPassThruData" 
ref="a7af8ac157fb75e4d426e6243bb8a4e1e" args="(int inputTableNum=0, int 
startInputColNum=0, int endInputColNum=&#45;1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::copyPassThruData </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>inputTableNum</em> = <code>0</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>startInputColNum</em> = <code>0</code>, 
</td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>endInputColNum</em> = 
<code>-1</code></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Copy values of pass-thru columns from the input to the output table.</p>
+<p>This method is an easy way to set the values of the table-valued result row 
from their corresponding values in the table-valued inputs. Note that the <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> must set all the values of the pass-thru 
columns to the corresponsing values of the input tables. If it fails to do 
that, some optimizations done by Trafodion could lead to wrong results (e.g. 
some predicates could be applied incorrectly). Every TMUDF with table-valued 
inputs and pass-thru columns should call this method for every row it emits.</p>
+<p>This method can only be called from within <a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">UDR::processData()</a>.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae7274d94c79a78a4cd0976cbe572ab26">addPassThruColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">UDR::processData()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>inputTableNum</em>&nbsp;</td><td>Number of table-valued input 
to copy from. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>startInputColNum</em>&nbsp;</td><td>First column number in the 
input table to copy </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>endInputColNum</em>&nbsp;</td><td>Last column number in the 
input table to copy (inclusive) or -1 to copy all remaining columns </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a05e6cfdfe6353ff71bd9d788f2ad90a7"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getCallPhase" 
ref="a05e6cfdfe6353ff71bd9d788f2ad90a7" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17775d1990732a2ac52bcc528c76e40b">UDRInvocationInfo::CallPhase</a>
 UDRInvocationInfo::getCallPhase </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get call phase.</p>
+<p>This call is not normally needed, since we know which method of <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> we are in. However, in some cases where the <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> writer wants to use code in multiple call 
phases this might be useful.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Enum for the call phase we are 
in. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac7b36f50b9bc332b532325ef6d74fef0"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getComparisonPredicate" 
ref="ac7b36f50b9bc332b532325ef6d74fef0" args="(int i) const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" 
href="classtmudr_1_1ComparisonPredicateInfo.html">ComparisonPredicateInfo</a> 
&amp; UDRInvocationInfo::getComparisonPredicate </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get a comparison predicate</p>
+<p>Note: This will throw an exception if predicate i is not a comparison 
predicate. Use method <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af56ae6e3b533811727c01ac0dd373b2a">isAComparisonPredicate()</a>
 to make sure this is the case. Note also that the numbering scheme is the same 
as that for getPredicate, so if there is a mix of different predicate types, 
the numbers of comparison predicates are not contiguous.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a862b4fc9c3041408c18b72fa456bc37b">getPredicate()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af56ae6e3b533811727c01ac0dd373b2a">isAComparisonPredicate()</a>
 </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>i</em>&nbsp;</td><td>Number/ordinal of the predicate to 
retrieve. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Comparison predicate. </dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a526a57461a964c44fa08333cfbe3e403"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getCurrentRole" 
ref="a526a57461a964c44fa08333cfbe3e403" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; 
UDRInvocationInfo::getCurrentRole </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get current role.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Current role. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4260a3d72362f6ef3fa058b7f4fc733e"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getCurrentUser" 
ref="a4260a3d72362f6ef3fa058b7f4fc733e" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; 
UDRInvocationInfo::getCurrentUser </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get current user.</p>
+<p>Get the id of the current user, which is the effective user id at the time. 
This is usually the same as the session user, except when a view or <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> uses "definer
+  privileges", substituting the current user with the definer of the view or 
<a class="el" href="classtmudr_1_1UDR.html" title="This class represents the 
code associated with a UDR.">UDR</a>. In SQL, this value is called 
CURRENT_USER.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af6fe6a390c721a579d39f132b053e01e">getSessionUser()</a>
 </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Current user. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="abc2ae451673901fadcc4d468903dcb90"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getDebugFlags" 
ref="abc2ae451673901fadcc4d468903dcb90" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int UDRInvocationInfo::getDebugFlags </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get debugging flags, set via CONTROL QUERY DEFAULT.</p>
+<p>Debug flags are set via the UDR_DEBUG_FLAGS CONTROL QUERY DEFAULT at 
compile time. This returns the value of this CQD. Usually not needed.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Value the UDR_DEBUG_FLAGS CQD 
has or had at compile time. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a47c62b14380293ed12a99c23650938f8"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getFormalParameters" 
ref="a47c62b14380293ed12a99c23650938f8" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" 
href="classtmudr_1_1ParameterListInfo.html">ParameterListInfo</a> &amp; 
UDRInvocationInfo::getFormalParameters </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the formal parameters of the <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> invocation.</p>
+<p>Formal parameters are available only at compile time. They are either 
defined in the CREATE FUNCTION DDL or through the compile time interface. Note 
that number and types of formal and actual parameters must match, once we 
return from the describeParamsAndColumns() call, otherwise an error will be 
generated.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Formal parameter description. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a7ffc96813d89aaf680b69b17a9fd4efa"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getFuncType" 
ref="a7ffc96813d89aaf680b69b17a9fd4efa" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">UDRInvocationInfo::FuncType</a>
 UDRInvocationInfo::getFuncType </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the function type of this <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> 
invocation.</p>
+<p>Returns the function type that can be set by the <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer with the <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">setFuncType()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">setFuncType()</a></dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Enum of the function type. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8c4c9625a85c42534bb63324f78f1ba5"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getMyInstanceNum" 
ref="a8c4c9625a85c42534bb63324f78f1ba5" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int UDRInvocationInfo::getMyInstanceNum </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the instance number of this runtime process.</p>
+<p>Use this method to find out which of the parallel instances executing a <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> this process is.</p>
+<p>This method can only be called from within <a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">UDR::processData()</a>.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0fa7dbaa5449564569ac90579da6466f">getNumParallelInstances()</a>
 </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A number between 0 and <a 
class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0fa7dbaa5449564569ac90579da6466f">getNumParallelInstances()</a>
 - 1. </dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0fa7dbaa5449564569ac90579da6466f"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getNumParallelInstances" 
ref="a0fa7dbaa5449564569ac90579da6466f" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int UDRInvocationInfo::getNumParallelInstances 
</td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the number of parallel instances working on this <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> invocation.</p>
+<p>Use this method to find out how many parallel instances are executing this 
<a class="el" href="classtmudr_1_1UDR.html" title="This class represents the 
code associated with a UDR.">UDR</a>.</p>
+<p>This method can only be called from within <a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">UDR::processData()</a>.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a8c4c9625a85c42534bb63324f78f1ba5">getMyInstanceNum()</a>
 </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Number of parallel instances 
for this <a class="el" href="classtmudr_1_1UDR.html" title="This class 
represents the code associated with a UDR.">UDR</a> invocation. </dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abb1c5cae5193c0c736d534943ff6fd0a"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getNumPredicates" 
ref="abb1c5cae5193c0c736d534943ff6fd0a" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int UDRInvocationInfo::getNumPredicates </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Return number of predicates to be applied in the context of this UDF.</p>
+<p>Don't use this method from within <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>,
 since the predicates are not yet set up in that phase.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Number of predicates. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a6c037fb917b24c9140966100583c4ddf"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getNumTableInputs" 
ref="a6c037fb917b24c9140966100583c4ddf" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int UDRInvocationInfo::getNumTableInputs </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get number of table-valued inputs provided.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Number of table-valued inputs 
provided. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a862b4fc9c3041408c18b72fa456bc37b"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getPredicate" 
ref="a862b4fc9c3041408c18b72fa456bc37b" args="(int i) const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" 
href="classtmudr_1_1PredicateInfo.html">PredicateInfo</a> &amp; 
UDRInvocationInfo::getPredicate </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the description of a predicate to be applied.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Description of the 
predicate.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a31ac324ce7cb12163be24b79eec1b416">setPredicateEvaluationCode()</a>
 </dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae743d98454eaf28158a14f7ff4e22908"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getQueryId" 
ref="ae743d98454eaf28158a14f7ff4e22908" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; 
UDRInvocationInfo::getQueryId </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get query id.</p>
+<p>The query id is only available at runtime. It is an empty string at compile 
time.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Query id. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af6fe6a390c721a579d39f132b053e01e"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getSessionUser" 
ref="af6fe6a390c721a579d39f132b053e01e" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; 
UDRInvocationInfo::getSessionUser </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get session user.</p>
+<p>Get the id of the session user, which is the user who connected to the 
database. This is usually the same as the current user, except when a view or 
<a class="el" href="classtmudr_1_1UDR.html" title="This class represents the 
code associated with a UDR.">UDR</a> uses "definer
+  privileges", substituting the current user with the definer of the view or 
<a class="el" href="classtmudr_1_1UDR.html" title="This class represents the 
code associated with a UDR.">UDR</a>. In SQL, this value is called 
SESSION_USER.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a4260a3d72362f6ef3fa058b7f4fc733e">getCurrentUser()</a>
 </dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Session user. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4fef718438b8d0f73c72960850e12f76"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getUDRName" 
ref="a4fef718438b8d0f73c72960850e12f76" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; 
UDRInvocationInfo::getUDRName </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the <a class="el" href="classtmudr_1_1UDR.html" title="This class 
represents the code associated with a UDR.">UDR</a> name.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Fully qualified name 
(catalog.schema.name) of the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a>. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0f52f99de8bd5d268ad54b397037aaa4"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::getUDRWriterCompileTimeData" 
ref="a0f52f99de8bd5d268ad54b397037aaa4" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="classtmudr_1_1UDRWriterCompileTimeData.html">UDRWriterCompileTimeData</a> 
* UDRInvocationInfo::getUDRWriterCompileTimeData </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get data to persist between calls of the compile-time interface</p>
+<p>The <a class="el" href="classtmudr_1_1UDR.html" title="This class 
represents the code associated with a UDR.">UDR</a> writer must use a static or 
dynamic cast to get a pointer to the derived class.</p>
+<p>Only use this method at compile time.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a62d8e083376c816dc66d1d7447869bee">setUDRWriterCompileTimeData()</a></dd></dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer-specific data that was previously attached or NULL. 
</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8e8246083a145bfcf9771a915df70d2a"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::in" ref="a8e8246083a145bfcf9771a915df70d2a" 
args="(int childNum=0) const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" 
href="classtmudr_1_1TableInfo.html">TableInfo</a> &amp; UDRInvocationInfo::in 
</td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>childNum</em> = <code>0</code></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get description of a table-valued input.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" 
href="classtmudr_1_1TableInfo.html" title="Describes a table-valued input or a 
table-valued output.">TableInfo</a> reference for the table-valued input. 
</dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af56ae6e3b533811727c01ac0dd373b2a"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::isAComparisonPredicate" 
ref="af56ae6e3b533811727c01ac0dd373b2a" args="(int i) const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool UDRInvocationInfo::isAComparisonPredicate 
</td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>i</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Check whether a given predicate is a comparison predicate.</p>
+<p>This returns whether it is safe to use method <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ac7b36f50b9bc332b532325ef6d74fef0">getComparisonPredicate()</a>.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ac7b36f50b9bc332b532325ef6d74fef0">getComparisonPredicate()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>i</em>&nbsp;</td><td>Number/ordinal index of the predicate. 
</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>true if predcate i is a 
comparison predicate, false otherwise. </dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a44281bb80ce0ddfc220f830603184bb6"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::isCompileTime" 
ref="a44281bb80ce0ddfc220f830603184bb6" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool UDRInvocationInfo::isCompileTime </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Check whether we are in the compile time interface.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>true at compile time, false at 
run-time. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ae6454d983c0e219533fbedce92fdbb7e"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::isRunTime" 
ref="ae6454d983c0e219533fbedce92fdbb7e" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool UDRInvocationInfo::isRunTime </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Check whether we are in the run-time interface.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>false at compile time, true at 
run-time. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0e46b3318bf4e8c5f5a0953e851fbae5"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::out" ref="a0e46b3318bf4e8c5f5a0953e851fbae5" 
args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" 
href="classtmudr_1_1TableInfo.html">TableInfo</a> &amp; UDRInvocationInfo::out 
</td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Non-const method to get description of the table-valued result.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Non-const <a class="el" 
href="classtmudr_1_1TableInfo.html" title="Describes a table-valued input or a 
table-valued output.">TableInfo</a> reference for the table-valued output. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="abccd0a12bb9f275f9b51d0b147bc238b"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::out" ref="abccd0a12bb9f275f9b51d0b147bc238b" 
args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" 
href="classtmudr_1_1TableInfo.html">TableInfo</a> &amp; UDRInvocationInfo::out 
</td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get description of the table-valued result.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" 
href="classtmudr_1_1TableInfo.html" title="Describes a table-valued input or a 
table-valued output.">TableInfo</a> reference for the table-valued output. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab311a6d5798704f36afc52a3603eeec9"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::par" ref="ab311a6d5798704f36afc52a3603eeec9" 
args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" 
href="classtmudr_1_1ParameterListInfo.html">ParameterListInfo</a> &amp; 
UDRInvocationInfo::par </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get parameters of the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> 
invocation.</p>
+<p>These are the actual parameters. At compile time, if a constant has been 
used, the value of this constant is available, using getString(), getInt() etc. 
methods. The isAvailable() method indicates whether the parameter is indeed 
available at compile time. Parameters are always available at run-time.</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Parameter description. 
</dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a5f39c23ff94d54317d11cf87e4cc1102"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::print" 
ref="a5f39c23ff94d54317d11cf87e4cc1102" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::print </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Print the object, for use in debugging.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDR.html#a9a0d3501ad5d27d90ca85a8791c87409">UDR::debugLoop()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab6b34603b9cad093f862ff650aeb361ea6b367b009643535ace09423ae914e549"
 title="128">UDRInvocationInfo::PRINT_INVOCATION_INFO_AT_RUN_TIME</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac3c17d8d9c6efd94471179a052ca7ab7"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::propagateConstraintsFor1To1UDFs" 
ref="ac3c17d8d9c6efd94471179a052ca7ab7" args="(bool exactlyOneRowPerInput)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void 
UDRInvocationInfo::propagateConstraintsFor1To1UDFs </td>
+          <td>(</td>
+          <td class="paramtype">bool&nbsp;</td>
+          <td class="paramname"> <em>exactlyOneRowPerInput</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Propagate constraints for UDFs that return one result row for every input 
row.</p>
+<p>Use this method only if the UDF returns no more than one result row for 
every input row it reads from its single table-valued input. Note that it is ok 
for the UDF to return no result rows for some input rows. Wrong results may be 
returned by SQL statements involving this UDF if the UDF does at runtime not 
conform to the 1x1 relationship of rows.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#a83262ec6806c3811bf55b1704fea599d">UDR::describeConstraints()</a>
 method.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>exactlyOneRowPerInput</em>&nbsp;</td><td>Indicates whether the 
UDF returns exactly one output row (true) or at most one output row (false) for 
every input row. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a08078fda7b63cea5e2f02546e04a9e1c"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::pushPredicatesOnPassthruColumns" 
ref="a08078fda7b63cea5e2f02546e04a9e1c" args="(int startPredNum=0, int 
lastPredNum=&#45;1)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void 
UDRInvocationInfo::pushPredicatesOnPassthruColumns </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>startPredNum</em> = <code>0</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>lastPredNum</em> = 
<code>-1</code></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Push predicates on pass-thru columns to the table-valued input.</p>
+<p>Push one or more predicates to their corresponding table-valued input, if 
they reference only columns from that input, otherwise leave the predicate(s) 
unchanged.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a>
 method.</p>
+<dl class="see"><dt><b>See 
also:</b></dt><dd>PredicateInfo::setEvaluationCode() </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>startPredNum</em>&nbsp;</td><td>Number/index of first 
predicate to be pushed. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>lastPredNum</em>&nbsp;</td><td>Number/index of last predicate 
to be pushed (inclusive) or -1 to push all remaining predicates. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a165ce1b6a1e8430cc9ff8bc069c52403"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setChildColumnUsage" 
ref="a165ce1b6a1e8430cc9ff8bc069c52403" args="(int inputTableNum, int 
inputColumnNum, ColumnInfo::ColumnUseCode usage)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::setChildColumnUsage </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>inputTableNum</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>inputColumnNum</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">ColumnInfo::ColumnUseCode</a>&nbsp;</td>
+          <td class="paramname"> <em>usage</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the usage information for a column of a table-valued input</p>
+<p>This method allows the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writer to 
specify whether a given child column is needed or not.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17aa99c78b92c21bb7f165d6a525ee45">setUnusedPassthruColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>inputTableNum</em>&nbsp;</td><td>Number of table-valued input 
to set. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>inputColumnNum</em>&nbsp;</td><td>Column number for the column 
to set. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>usage</em>&nbsp;</td><td>New usage for this column. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9cf945532b68164df02ed59e56993dec"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setChildOrdering" 
ref="a9cf945532b68164df02ed59e56993dec" args="(int inputTableNum, const 
OrderInfo &amp;orderInfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::setChildOrdering </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>inputTableNum</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" 
href="classtmudr_1_1OrderInfo.html">OrderInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>orderInfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the ORDER BY info for a table-valued input.</p>
+<p>This method allows the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writer to 
override the ORDER BY syntax specified for a table-valued input in the query. 
Use it to change the required order.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd>getChildOrdering() </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>inputTableNum</em>&nbsp;</td><td>Number of table-valued input 
to set. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>orderInfo</em>&nbsp;</td><td>New information on required order 
for this input table. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac2e13c982996e5e32f67cd157efce2fd"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setChildPartitioning" 
ref="ac2e13c982996e5e32f67cd157efce2fd" args="(int inputTableNum, const 
PartitionInfo &amp;partInfo)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::setChildPartitioning 
</td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>inputTableNum</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" 
href="classtmudr_1_1PartitionInfo.html">PartitionInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>partInfo</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the PARTITION BY info for a table-valued input.</p>
+<p>This method allows the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writer to 
override the PARTITION BY syntax specified for a table-valued input in the 
query. Use it to change the required partitioning.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd>getChildPartitioning() </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>inputTableNum</em>&nbsp;</td><td>Number of table-valued input 
to set. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>partInfo</em>&nbsp;</td><td>New information on required 
partitioning for this input table. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af9fad0a00cccb776398083cf35aec4f9"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setFuncType" 
ref="af9fad0a00cccb776398083cf35aec4f9" args="(FuncType type)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::setFuncType </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234">FuncType</a>&nbsp;</td>
+          <td class="paramname"> <em>type</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set the function type of this <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> 
invocation.</p>
+<p>Use this simple method with some caution, since it has an effect on how 
predicates are pushed down through TMUDFs with table-valued inputs. See 
describeDataflowAndPredicates() for details. The function type also influences 
the default degree of parallelism for a TMUDF.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd>getFunctType() </dd>
+<dd>
+describeParamsAndColumns() </dd>
+<dd>
+describeDataflowAndPredicates() </dd>
+<dd>
+setDesiredDegreeOfParallelism()</dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>type</em>&nbsp;</td><td>Function type of this <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> invocation. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a31ac324ce7cb12163be24b79eec1b416"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setPredicateEvaluationCode" 
ref="a31ac324ce7cb12163be24b79eec1b416" args="(int predicateNum, 
PredicateInfo::EvaluationCode c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void 
UDRInvocationInfo::setPredicateEvaluationCode </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>predicateNum</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1PredicateInfo.html#aa2a53f51db2e8e56cf79fe8c28e54232">PredicateInfo::EvaluationCode</a>&nbsp;</td>
+          <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Decide where to evaluate a predicate.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a862b4fc9c3041408c18b72fa456bc37b">getPredicate()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>predicateNum</em>&nbsp;</td><td>Number/index of predicate 
returned by <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a862b4fc9c3041408c18b72fa456bc37b">getPredicate()</a>
 method. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>c</em>&nbsp;</td><td>Evaluation code for this predicate. 
</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a62d8e083376c816dc66d1d7447869bee"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setUDRWriterCompileTimeData" 
ref="a62d8e083376c816dc66d1d7447869bee" args="(UDRWriterCompileTimeData 
*compileTimeData)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void 
UDRInvocationInfo::setUDRWriterCompileTimeData </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRWriterCompileTimeData.html">UDRWriterCompileTimeData</a> 
*&nbsp;</td>
+          <td class="paramname"> <em>compileTimeData</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Set data to persist between calls of the compile-time interface</p>
+<p>This call can be used to attach an object derived from class <a class="el" 
href="classtmudr_1_1UDRWriterCompileTimeData.html" title="Compile time data 
owned by the UDR writer.">UDRWriterCompileTimeData</a> to the <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html" title="Describes an invocation of a 
UDR.">UDRInvocationInfo</a> object. Once attached, the data will be carried 
between the stages of the compiler interface and can be used to keep state. 
Note that this data will be deleted at the end of the compiler phase and will 
not persist until runtime.</p>
+<p>Only use this method at compile time.</p>
+<p>To keep state for specific plan alternatives, use the <a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#a9699b7abd3e69cb9ea15bc999f424cc0">UDRPlanInfo::setUDRWriterCompileTimeData()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0f52f99de8bd5d268ad54b397037aaa4">UDRInvocationInfo::getUDRWriterCompileTimeData()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#a9699b7abd3e69cb9ea15bc999f424cc0">UDRPlanInfo::setUDRWriterCompileTimeData()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0f52f99de8bd5d268ad54b397037aaa4">getUDRWriterCompileTimeData()</a></dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>compileTimeData</em>&nbsp;</td><td><a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer-defined compile-time data to attach. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a17aa99c78b92c21bb7f165d6a525ee45"></a><!-- doxytag: 
member="tmudr::UDRInvocationInfo::setUnusedPassthruColumns" 
ref="a17aa99c78b92c21bb7f165d6a525ee45" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDRInvocationInfo::setUnusedPassthruColumns 
</td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Mark any passthru columns that are not needed as unused.</p>
+<p>For any passthru columns that are marked as NOT_USED or NOT_PRODUCED in the 
table-valued result, set the corresponding input columns to NOT_USED as well. 
Note that this assumes that the UDF does not need these columns, either! The 
usage for the passthru column itself is also set to NOT_PRODUCED, since the UDF 
could not produce the column without having access to the corresponding input 
column.</p>
+<p>Only use this method from within the <a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae7274d94c79a78a4cd0976cbe572ab26">addPassThruColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a165ce1b6a1e8430cc9ff8bc069c52403">setChildColumnUsage()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a></dd></dl>
+<dl><dt><b>Exceptions:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em><a class="el" 
href="classtmudr_1_1UDRException.html" title="This is the exception to throw 
when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following 
files:<ul>
+<li><a class="el" href="sqludr_8h_source.html">sqludr.h</a></li>
+<li>sqludr.cpp</li>
+</ul>
+</div>
+<!--- 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">&nbsp;</span>All</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span 
class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span 
class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span 
class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" 
href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span 
class="SelectionMark">&nbsp;</span>Enumerator</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<hr size="1"/><address style="text-align: right;"><small>Generated on 31 Aug 
2016 for tmudr by&nbsp;
+<a href="http://www.doxygen.org/index.html";>
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 
</small></address>
+</body>
+</html>


Reply via email to