http://git-wip-us.apache.org/repos/asf/incubator-trafodion-site/blob/02a9fa60/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDR.html
----------------------------------------------------------------------
diff --git a/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDR.html 
b/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDR.html
new file mode 100644
index 0000000..e8a7a1f
--- /dev/null
+++ b/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDR.html
@@ -0,0 +1,727 @@
+<!-- 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::UDR 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_1UDR.html">UDR</a>
+  </div>
+</div>
+<div class="contents">
+<h1>tmudr::UDR Class Reference</h1><!-- doxytag: class="tmudr::UDR" -->
+<p>This class represents the code associated with 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>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#aaa1036a39bef55877bc953b02f9c58da">UDR</a> 
()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a73ff8a47de39f0482c6a4178e3b82e36">~UDR</a> 
()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">describeParamsAndColumns</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;info)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">describeDataflowAndPredicates</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;info)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a83262ec6806c3811bf55b1704fea599d">describeConstraints</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;info)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a371a0c6d1dce6857f10b171099d67fdf">describeStatistics</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;info)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#ae7bc614d12d011fc5f6d799abcc91935">describeDesiredDegreeOfParallelism</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> &amp;info, <a 
class="el" href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> 
&amp;plan)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a925cb57fc5adfa0c2d1ff90217a90e14">describePlanProperties</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> &amp;info, <a 
class="el" href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> 
&amp;plan)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a36eaba4ea82ca80b2f3c25c7bdee871f">completeDescription</a>
 (<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> &amp;info, <a 
class="el" href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> 
&amp;plan)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">processData</a> 
(<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> &amp;info, <a 
class="el" href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> 
&amp;plan)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a335761df017a0569aa0b90e942c2f056">getNextRow</a> 
(<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> &amp;info, 
int tableIndex=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a671ad46ac7fef32fc5ce1c6971f7f807">emitRow</a> (<a 
class="el" href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;info)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#a9a0d3501ad5d27d90ca85a8791c87409">debugLoop</a> 
()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">virtual 
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDR.html#ab0ca9f90d691f298b56ec11807326394">getFeaturesSupportedByUDF</a>
 ()</td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>This class represents the code associated with a <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a>. </p>
+<p><a class="el" href="classtmudr_1_1UDR.html" title="This class represents 
the code associated with a UDR.">UDR</a> writers can create a derived class and 
implement these methods for their specific <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a>. The base class also has default methods for all but the 
runtime call. See <a 
href="https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface";>https://cwiki.apache.org/confluence/display/TRAFODION/Tutorial%3A+The+object-oriented+UDF+interface</a>
 for examples.</p>
+<p>To use this interface, the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writer 
must provide a function of type CreateInterfaceObjectFunc with a name that's 
the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents 
the code associated with a UDR.">UDR</a> external name, and it must have "C" 
linkage. Example, assuming the external name of the UDF is MYUDF:</p>
+<div class="fragment"><pre class="fragment">  <span class="comment">// define 
a class that is derived from UDR</span>
+  <span class="keyword">class </span>MyUDFInterface : <span 
class="keyword">public</span> <a class="code" 
href="classtmudr_1_1UDR.html#aaa1036a39bef55877bc953b02f9c58da">UDR</a>
+  {
+    <span class="comment">// Override any virtual methods where the UDF author 
would</span>
+    <span class="comment">// like to change the default behavior. It is fine 
to add</span>
+    <span class="comment">// other methods and data members, just make sure to 
free</span>
+    <span class="comment">// up all resources in the destructor.</span>
+    ...
+  };
+  <span class="comment">// define a &quot;factory&quot; function to return an 
object of this class</span>
+  <span class="keyword">extern</span> <span 
class="stringliteral">&quot;C&quot;</span>
+  SQLUDR_LIBFUNC <a class="code" 
href="classtmudr_1_1UDR.html#aaa1036a39bef55877bc953b02f9c58da">UDR</a> * 
MYUDF()
+  {
+    <span class="keywordflow">return</span> <span class="keyword">new</span> 
MyUDFInterface;
+  }
+</pre></div><ul>
+<li>If the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">describeParamsAndColumns()</a>
 interface is not used, all parameters and result table columns must be 
declared in the CREATE TABLE MAPPING FUNCTION DDL. </li>
+<li>When using the <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">describeParamsAndColumns()</a>
 interface, additional parameters and all output columns can be defined at 
compile time. </li>
+<li>A <a class="el" href="classtmudr_1_1UDR.html" title="This class represents 
the code associated with a UDR.">UDR</a> writer can decide to override none, 
some or all of the virtual methods in the compiler interface. The run-time 
interface, <a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">processData()</a>,
 must always be provided. </li>
+<li>See file sqludr.cpp for the default implementation of these methods. </li>
+<li>When overriding methods, the <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> writer 
has the option to call the default method to do part of the work, and then to 
implement additional logic. </li>
+<li>Multiple UDRs could share the same subclass of <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a>. The <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> name is 
passed in <a class="el" href="classtmudr_1_1UDRInvocationInfo.html" 
title="Describes an invocation of a UDR.">UDRInvocationInfo</a>, so the logic 
can depend on the name. </li>
+<li>A single query may invoke the same <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> more than once. A different <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html" title="Describes an invocation of a 
UDR.">UDRInvocationInfo</a> object will be passed for each such invocation. 
</li>
+<li>The <a class="el" href="classtmudr_1_1UDR.html" title="This class 
represents the code associated with a UDR.">UDR</a> object or the object of its 
derived class may be reused for multiple queries, so its life time can exceed 
that of a <a class="el" href="classtmudr_1_1UDRInvocationInfo.html" 
title="Describes an invocation of a UDR.">UDRInvocationInfo</a> object. </li>
+<li>Different instances of <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> (or 
derived class) objects will be created in the processes that compile and 
execute a query. </li>
+<li>Based on the previous three bullets, <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writers should not store state that relates to a <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> invocation in a <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> (or derived) object. There are special classes to do that. 
It is ok to use the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> derived class to 
store resources that are shared between <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> invocations, such as connections to server processes etc. 
These need to be cleaned up by overloading the destructor. </li>
+<li>The optimizer may try different execution plans for a <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> invocation, e.g. with different partitioning and ordering 
of input and/or output data. These alternative plans share the same <a 
class="el" href="classtmudr_1_1UDRInvocationInfo.html" title="Describes an 
invocation of a UDR.">UDRInvocationInfo</a> object but they will use different 
<a class="el" href="classtmudr_1_1UDRPlanInfo.html" title="Describes the query 
plan used for a UDR invocation.">UDRPlanInfo</a> objects. </li>
+</ul>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="aaa1036a39bef55877bc953b02f9c58da"></a><!-- doxytag: 
member="tmudr::UDR::UDR" ref="aaa1036a39bef55877bc953b02f9c58da" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">UDR::UDR </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Default constructor.</p>
+<p>Use this in the constructor of a derived class. </p>
+
+</div>
+</div>
+<a class="anchor" id="a73ff8a47de39f0482c6a4178e3b82e36"></a><!-- doxytag: 
member="tmudr::UDR::~UDR" ref="a73ff8a47de39f0482c6a4178e3b82e36" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">UDR::~UDR </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Virtual Destructor.</p>
+<p>Override this destructor and deallocate any resources of a derived class, 
if necessary. Note that a <a class="el" href="classtmudr_1_1UDR.html" 
title="This class represents the code associated with a UDR.">UDR</a> object 
may be used for several <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> invocations, 
sometimes at the same time, in one or more queries. Therefore, this class is 
for storing resources that can be shared among multiple invocations. Note also 
that compile time and run time may happen in different processes, so it is not 
possible to carry state from compile time to run time calls for invocations 
with this class. See below for how to carry invocation-related information 
between the different phases.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a62d8e083376c816dc66d1d7447869bee">UDRInvocationInfo::setUDRWriterCompileTimeData()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#a9699b7abd3e69cb9ea15bc999f424cc0">UDRPlanInfo::setUDRWriterCompileTimeData()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#ac95f99f26ba311d31875a87c1bc75672">UDRPlanInfo::addPlanData()</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/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a36eaba4ea82ca80b2f3c25c7bdee871f"></a><!-- doxytag: 
member="tmudr::UDR::completeDescription" 
ref="a36eaba4ea82ca80b2f3c25c7bdee871f" args="(UDRInvocationInfo &amp;info, 
UDRPlanInfo &amp;plan)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::completeDescription </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>plan</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Seventh and final method of the compiler interface for TMUDFs 
(optional).</p>
+<p>This final compile time call gives the UDF writer the opportunity to 
examine the chosen query plan, to pass information on to the runtime method, 
using <a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#ac95f99f26ba311d31875a87c1bc75672">UDRPlanInfo::addPlanData()</a>,
 and to clean up any resources related to the compile phase of a particular 
TMUDF invocation.</p>
+<p>The default implementation does nothing.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#ac95f99f26ba311d31875a87c1bc75672">UDRPlanInfo::addPlanData()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#a73487ea5456ec8a53d52a66813589976">UDRPlanInfo::getUDRWriterCompileTimeData()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a0f52f99de8bd5d268ad54b397037aaa4">UDRInvocationInfo::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>info</em>&nbsp;</td><td>A 
description of the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> invocation. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>plan</em>&nbsp;</td><td>Plan-related description of the <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="a9a0d3501ad5d27d90ca85a8791c87409"></a><!-- doxytag: 
member="tmudr::UDR::debugLoop" ref="a9a0d3501ad5d27d90ca85a8791c87409" 
args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::debugLoop </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Debugging hook for UDRs.</p>
+<p>This method is called in debug Trafodion builds when certain flags are set 
in the UDR_DEBUG_FLAGS CQD (CONTROL QUERY DEFAULT). 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>
+<p>The default implementation prints out the process id and then goes into an 
endless loop. The UDF writer can then attach a debugger, set breakpoints and 
force the execution out of the loop.</p>
+<p>Note that the printout of the pid may not always be displayed on a 
terminal, for example if the process is executing on a different node. </p>
+
+</div>
+</div>
+<a class="anchor" id="a83262ec6806c3811bf55b1704fea599d"></a><!-- doxytag: 
member="tmudr::UDR::describeConstraints" 
ref="a83262ec6806c3811bf55b1704fea599d" args="(UDRInvocationInfo &amp;info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::describeConstraints </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Third method of the compiler interface (optional).</p>
+<p>Set up logical constraints on the UDF result table.</p>
+<p>When the compiler calls this method, it will have synthesized constraints 
on the table-valued inputs, if any. The <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer can now indicate constraints on the table-valued 
result.</p>
+<p>The default implementation does nothing.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1TableInfo.html#a5b6c9eef3fad9673888dd34103052bd9">TableInfo::getNumConstraints()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TableInfo.html#a145117852f07eade23dc0a9eaaf22847">TableInfo::getConstraint()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TableInfo.html#a7076d7e7f07e59a06d698c77c2bfa1d7">TableInfo::addCardinalityConstraint()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TableInfo.html#aa87fcee592d9fb0cf1afbac9aa703e72">TableInfo::addUniquenessConstraint()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ac3c17d8d9c6efd94471179a052ca7ab7">UDRInvocationInfo::propagateConstraintsFor1To1UDFs()</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>info</em>&nbsp;</td><td>A 
description of the <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="abbfc60e9c860f3c02dc4262ffc1c9939"></a><!-- doxytag: 
member="tmudr::UDR::describeDataflowAndPredicates" 
ref="abbfc60e9c860f3c02dc4262ffc1c9939" args="(UDRInvocationInfo &amp;info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::describeDataflowAndPredicates </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Second method of the compiler interface (optional).</p>
+<p>Eliminate unneeded columns and decide where to execute predicates.</p>
+<p>This is the second call in the compiler interface, after <a class="el" 
href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">describeParamsAndColumns()</a>.
 When the compiler calls this, it will have marked the UDF result columns with 
a usage code, indicating any output columns that are not required for this 
particular query. It will also have created a list of predicates that need to 
be evaluated.</p>
+<p>This method should do three things: </p>
+<ul>
+<li>Mark columns of the table-valued inputs as not used, based on the result 
column usage and internal needs of the UDF. Such input columns will later be 
eliminated. </li>
+<li>Mark output columns that are not used and that can be easily suppressed by 
the UDF as NOT_PRODUCED. Such columns will be eliminated as well. </li>
+<li>Decide where to evaluate each predicate, a) on the UDF result (default), 
b) inside the UDF by code written by the UDF writer, or c) in the table-valued 
inputs.</li>
+</ul>
+<p>The default implementation does not mark any of the table-valued input 
columns as NOT_USED. It also does not mark any output columns as NOT_PRODUCED. 
Predicate handling in the default implementation depends on the function type: 
</p>
+<ul>
+<li><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a8dcb9100d5fc6499d3f46fdbabd30d71">UDRInvocationInfo::GENERIC</a>:
 No predicates are pushed down, because the compiler does not know whether any 
of the eliminated rows might have altered the output of the UDF. One example is 
the "sessionize" UDF, where eliminated rows can lead to differences in session 
ids. </li>
+<li><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26">UDRInvocationInfo::MAPPER</a>:
 All predicates on pass-thru columns are pushed down to table-valued inputs. 
Since the UDF carries no state between the input rows it sees, eliminating any 
input rows will not alter any results for other rows. </li>
+<li><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408">UDRInvocationInfo::REDUCER</a>:
 Only predicates on the PARTITION BY columns will be pushed to table-valued 
inputs. These predicates may eliminate entire groups of rows (partitions), and 
since no state is carried between such groups that is valid.</li>
+</ul>
+<p>NOTE: When eliminating columns from the table-valued inputs or the 
table-valued result, column numbers may change in the next call, as these 
columns are actually removed from the lists. If the UDF carries state between 
calls and if that state refers to column numbers, they will need to be updated. 
This is best done in this <a class="el" 
href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">describeDataflowAndPredicates()</a>
 call.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1ColumnInfo.html#a6bbc5eac8f191243281e44ceaced86be">ColumnInfo::getUsage()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1ColumnInfo.html#a6769703f19c5edbbb8d758ac21443f89">ColumnInfo::setUsage()</a>
 (to mark output columns as NOT_PRODUCED) </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">UDRInvocationInfo::setFuncType()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a165ce1b6a1e8430cc9ff8bc069c52403">UDRInvocationInfo::setChildColumnUsage()</a>
 (to mark unused input columns) </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a17aa99c78b92c21bb7f165d6a525ee45">UDRInvocationInfo::setUnusedPassthruColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a08078fda7b63cea5e2f02546e04a9e1c">UDRInvocationInfo::pushPredicatesOnPassthruColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a31ac324ce7cb12163be24b79eec1b416">UDRInvocationInfo::setPredicateEvaluationCode()</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>info</em>&nbsp;</td><td>A 
description of the <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="ae7bc614d12d011fc5f6d799abcc91935"></a><!-- doxytag: 
member="tmudr::UDR::describeDesiredDegreeOfParallelism" 
ref="ae7bc614d12d011fc5f6d799abcc91935" args="(UDRInvocationInfo &amp;info, 
UDRPlanInfo &amp;plan)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::describeDesiredDegreeOfParallelism 
</td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>plan</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Fifth method of the compiler interface (optional).</p>
+<p>Describe the desired parallelism 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 method can be used to specify a desired degree of parallelism, either 
in absolute or relative terms.</p>
+<p>The default behavior is to allow any degree of parallelism for TMUDFs of 
function type <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26">UDRInvocationInfo::MAPPER</a>
 or <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408">UDRInvocationInfo::REDUCER</a>
 that have exactly one table-valued input. The default behavior forces serial 
execution in all other cases. The reason is that for a single table-valued 
input, there is a natural way to parallelize the function by parallelizing its 
input a la MapReduce. In all other cases, parallel execution requires active 
participation by the UDF, which is why the UDF needs to signal explicitly that 
it can handle such flavors of parallelism.</p>
+<p>Default implementation: </p>
+<div class="fragment"><pre class="fragment">  <span 
class="keywordflow">if</span> (info.getNumTableInputs() == 1 &amp;&amp;
+      (info.getFuncType() == <a class="code" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26">UDRInvocationInfo::MAPPER</a>
 ||
+       info.getFuncType() == <a class="code" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408">UDRInvocationInfo::REDUCER</a>))
+    plan.setDesiredDegreeOfParallelism(<a class="code" 
href="classtmudr_1_1UDRPlanInfo.html#ac65dd2b236e8f48c00c9b69efed78d19ad2a2dc16a27a8570ae00f68ea6126f42"
 title="Optimizer decides DoP.">UDRPlanInfo::ANY_DEGREE_OF_PARALLELISM</a>);
+  <span class="keywordflow">else</span>
+    plan.setDesiredDegreeOfParallelism(1); <span class="comment">// serial 
execution</span>
+</pre></div><dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRPlanInfo.html#a2c04c1d3f7f28bd58b163d85deb02d3d">UDRPlanInfo::setDesiredDegreeOfParallelism()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">UDRInvocationInfo::setFuncType()</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>info</em>&nbsp;</td><td>A 
description of the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> invocation. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>plan</em>&nbsp;</td><td>Plan-related description of the <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="a795387c54b27b667ae73b668f606595c"></a><!-- doxytag: 
member="tmudr::UDR::describeParamsAndColumns" 
ref="a795387c54b27b667ae73b668f606595c" args="(UDRInvocationInfo &amp;info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::describeParamsAndColumns </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>First method of the compiler interface (optional).</p>
+<p>Describe the output columns of a TMUDF, based on a description of its 
parameters (including parameter values that are specified as a constant) and 
the description of the table-valued input columns.</p>
+<p>When the compiler calls this, it will have set up the formal and actual 
parameter descriptions as well as an output column description containing all 
the output parameters defined in the CREATE FUNCTION DDL (if any).</p>
+<p>This method should do a general check of things it expects that can be 
validated at this time. Things to check: </p>
+<ul>
+<li>Number, types and values of actual parameters. </li>
+<li>Number of table-valued inputs and columns of these inputs. </li>
+<li>PARTITION BY and ORDER BY clause specified for input tables. </li>
+<li>Other things like user ids, etc.</li>
+</ul>
+<p>Setting the function type with the <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">UDRInvocationInfo::setFuncType()</a>
 method will help the compiler generate more efficient code,</p>
+<p>The method should then generate a description of the table-valued output 
columns, if applicable and if the columns provided at DDL time are not 
sufficient. The "See also" section points to methods to set these values.</p>
+<p>Columns of the table-valued output can be declard as "pass-thru" columns to 
make many optimizations simpler.</p>
+<p>This method must also add to or alter the formal parameter list to match 
the list of actual parameters.</p>
+<p>The default implementation does nothing.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ab311a6d5798704f36afc52a3603eeec9">UDRInvocationInfo::par()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a6c037fb917b24c9140966100583c4ddf">UDRInvocationInfo::getNumTableInputs()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a8e8246083a145bfcf9771a915df70d2a">UDRInvocationInfo::in()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">UDRInvocationInfo::setFuncType()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae8ec687491875c1086660a237d936019">UDRInvocationInfo::addFormalParameter()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#ae7274d94c79a78a4cd0976cbe572ab26">UDRInvocationInfo::addPassThruColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a597bb78ac5815850d014e1ad3d1340eb">TupleInfo::addColumn()</a>
 </dd>
+<dd>
+TupleInfo::addIntegerColumn() </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a9f4c7996f9eefca3ebe9823dcec89607">TupleInfo::addLongColumn()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a8952e96505708cbde4ff3f611fdaf613">TupleInfo::addCharColumn()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#ad8be3c967e7dabf8b80a8ee6366736b1">TupleInfo::addVarCharColumn()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a8aedec53dff3ec91f2b71ce30c5aa6ae">TupleInfo::addColumns()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a5e340f907ceaa51373508ff192078980">TupleInfo::addColumnAt()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#aef3d85a827d91f938648856b7b08768b">TupleInfo::deleteColumn(int)</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#af8b0d51c40f855dd38fc7ddd94f39d11">TupleInfo::deleteColumn(const
 std::string &amp;)</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>info</em>&nbsp;</td><td>A 
description of the <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="a925cb57fc5adfa0c2d1ff90217a90e14"></a><!-- doxytag: 
member="tmudr::UDR::describePlanProperties" 
ref="a925cb57fc5adfa0c2d1ff90217a90e14" args="(UDRInvocationInfo &amp;info, 
UDRPlanInfo &amp;plan)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::describePlanProperties </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>plan</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Sixth method of the compiler interface (optional).</p>
+<p>The query optimizer calls this method once for every plan alternative 
considered for a <a class="el" href="classtmudr_1_1UDR.html" title="This class 
represents the code associated with a UDR.">UDR</a> invocation. It provides the 
required partitioning and ordering of the result. The <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer can decide whether these requirements are 
acceptable to the <a class="el" href="classtmudr_1_1UDR.html" title="This class 
represents the code associated with a UDR.">UDR</a> and whether any 
partitioning or ordering of the table-valued inputs is required to produce the 
required result properties.</p>
+<p>TBD: Default behavior.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>A 
description of the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> invocation. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>plan</em>&nbsp;</td><td>Plan-related description of the <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="a371a0c6d1dce6857f10b171099d67fdf"></a><!-- doxytag: 
member="tmudr::UDR::describeStatistics" ref="a371a0c6d1dce6857f10b171099d67fdf" 
args="(UDRInvocationInfo &amp;info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::describeStatistics </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Fourth method of the compiler interface (optional).</p>
+<p>Set up statistics for the table-valued result.</p>
+<p>When the optimizer calls this method, it will have synthesized some 
statistics for the table-valued inputs, if any. The <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer can now indicate the estimated row count for the 
table-valued result and estimated number of unique values for the output 
columns.</p>
+<p>The default implementation does nothing. If no estimated cardinality is set 
for the output table and no estimated number of unique values is set for output 
columns, the optimizer will make default assumptions. Here are some of these 
default assumptions: </p>
+<ul>
+<li>
+UDRs of type <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a280bc2ccb82ecc8f20e75f05f0ab8e26">UDRInvocationInfo::MAPPER</a>
 return one output row for each row in their largest input table. </li>
+<li>
+UDRs of type <a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#aa1a5e7aa734a95a5478db3d785508234a94b5e63a173450993e7723c9609e0408">UDRInvocationInfo::REDUCER</a>
 return one output row for every partition in their largest partitioned input 
table. </li>
+<li>
+For output columns that are passthru columns, the estimated unique entries are 
the same as for the underlying column in the table-valued input. </li>
+<li>
+Other default cardinality and unique entry counts can be influenced with 
defaults (CONTROL QUERY DEFAULT) in Trafodion SQL. </li>
+</ul>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#af9fad0a00cccb776398083cf35aec4f9">UDRInvocationInfo::setFuncType()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1ColumnInfo.html#aad773b195be34ee3fb471fcfb19d71d8">ColumnInfo::getEstimatedUniqueEntries()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1ColumnInfo.html#adc6ef72793f0f293ea7370a46764080d">ColumnInfo::setEstimatedUniqueEntries()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TableInfo.html#a9e63ae35e6b9c81665b135cc72cad148">TableInfo::getEstimatedNumRows()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TableInfo.html#ac86e1dbb500b697715cab5bf6369c87a">TableInfo::setEstimatedNumRows()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TableInfo.html#a556051776b5923cfea52d31fbad0488d">TableInfo::getEstimatedNumPartitions()</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>info</em>&nbsp;</td><td>A 
description of the <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="a671ad46ac7fef32fc5ce1c6971f7f807"></a><!-- doxytag: 
member="tmudr::UDR::emitRow" ref="a671ad46ac7fef32fc5ce1c6971f7f807" 
args="(UDRInvocationInfo &amp;info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::emitRow </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Emit a row of the table-valued result.</p>
+<p>This method can only be called from within <a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">processData()</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>A 
description of the <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="ab0ca9f90d691f298b56ec11807326394"></a><!-- doxytag: 
member="tmudr::UDR::getFeaturesSupportedByUDF" 
ref="ab0ca9f90d691f298b56ec11807326394" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int UDR::getFeaturesSupportedByUDF </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>For versioning, return features supported by the <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writer.</p>
+<p>This method can be used in the future to facilitate changes in the <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> interface. <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a> writers will be able to indicte through this method 
whether they support new features.</p>
+<p>The default implementation returns 0 (no extra features are supported).</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A yet to be determined set of 
bit flags or codes for supported features. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a335761df017a0569aa0b90e942c2f056"></a><!-- doxytag: 
member="tmudr::UDR::getNextRow" ref="a335761df017a0569aa0b90e942c2f056" 
args="(UDRInvocationInfo &amp;info, int tableIndex=0)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool UDR::getNextRow </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>tableIndex</em> = 
<code>0</code></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Read a row of a table-value input.</p>
+<p>This method can only be called from within <a class="el" 
href="classtmudr_1_1UDR.html#aac3ba2f5c48f11b7913d460cb22e3dc1">processData()</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>A 
description of the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> invocation. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>tableIndex</em>&nbsp;</td><td>Indicator for which table-valued 
input to read data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>true if another row could be 
read, false if it reached end of data. </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="aac3ba2f5c48f11b7913d460cb22e3dc1"></a><!-- doxytag: 
member="tmudr::UDR::processData" ref="aac3ba2f5c48f11b7913d460cb22e3dc1" 
args="(UDRInvocationInfo &amp;info, UDRPlanInfo &amp;plan)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void UDR::processData </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html">UDRInvocationInfo</a> 
&amp;&nbsp;</td>
+          <td class="paramname"> <em>info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" 
href="classtmudr_1_1UDRPlanInfo.html">UDRPlanInfo</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>plan</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td><code> [virtual]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Runtime code for UDRs (required).</p>
+<p>This is the only method that is mandatory in the implementation of a <a 
class="el" href="classtmudr_1_1UDR.html" title="This class represents the code 
associated with a UDR.">UDR</a> (in addition to the factory method).</p>
+<p>This method needs to set the output column values and emit rows by calling 
the emitRows() method. It can read rows from table-valued inputs, using the <a 
class="el" 
href="classtmudr_1_1UDR.html#a335761df017a0569aa0b90e942c2f056">getNextRow()</a>
 method.</p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 
href="classtmudr_1_1TupleInfo.html#a57ef5a6d63c758726572e0f920a59165">TupleInfo::setInt()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a206b6845bcbfa47de0843447142199c1">TupleInfo::setString()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#a671ad46ac7fef32fc5ce1c6971f7f807">emitRow()</a> 
</dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDR.html#a335761df017a0569aa0b90e942c2f056">getNextRow()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#afb5f2131ce96a7cfb541d1147b025e76">TupleInfo::getInt()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1TupleInfo.html#a84e1379f2809a1cf6adef8dccbcba836">TupleInfo::getString()</a>
 </dd>
+<dd>
+<a class="el" 
href="classtmudr_1_1UDRInvocationInfo.html#a7af8ac157fb75e4d426e6243bb8a4e1e">UDRInvocationInfo::copyPassThruData()</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>info</em>&nbsp;</td><td>A 
description of the <a class="el" href="classtmudr_1_1UDR.html" title="This 
class represents the code associated with a UDR.">UDR</a> invocation. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>plan</em>&nbsp;</td><td>Plan-related description of the <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>
+<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>

http://git-wip-us.apache.org/repos/asf/incubator-trafodion-site/blob/02a9fa60/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRException.html
----------------------------------------------------------------------
diff --git a/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRException.html 
b/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRException.html
new file mode 100644
index 0000000..fe8a270
--- /dev/null
+++ b/apidocs/2.0.1/tmudr_doxygen/html/classtmudr_1_1UDRException.html
@@ -0,0 +1,231 @@
+<!-- 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::UDRException 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_1UDRException.html">UDRException</a>
+  </div>
+</div>
+<div class="contents">
+<h1>tmudr::UDRException Class Reference</h1><!-- doxytag: 
class="tmudr::UDRException" -->
+<p>This is the exception to throw when an error occurs in 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>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRException.html#a4a0892baa3b4746b0310339a24a1219b">UDRException</a>
 (int sqlState, const char *printf_format,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td 
class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRException.html#a1d565a22c7a46717c688de64ab56f755">UDRException</a>
 (const char *sqlState, const char *printf_format,...)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char 
*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" 
href="classtmudr_1_1UDRException.html#ab72a1a01900f1cc7f0ac28cba5b2092d">getSQLState</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_1UDRException.html#aa9d80f9be4771b873ca0ef2044e63306">getMessage</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_1UDRException.html#a1fbcd51c04fd8253403bef5c7d5b0879">getText</a>
 () const </td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>This is the exception to throw when an error occurs in a <a class="el" 
href="classtmudr_1_1UDR.html" title="This class represents the code associated 
with a UDR.">UDR</a>. </p>
+<p>The SQLState value must be a value between 38000 and 38999, since the SQL 
standard reserves SQLState class 38 for user-written code. SQLState values 
38950 to 38999 are reserved for use by Trafodion code. Trafodion will produce 
SQL error code -11252 when this exception is thrown. </p>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a4a0892baa3b4746b0310339a24a1219b"></a><!-- doxytag: 
member="tmudr::UDRException::UDRException" 
ref="a4a0892baa3b4746b0310339a24a1219b" args="(int sqlState, const char 
*printf_format,...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">UDRException::UDRException </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>sqlState</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>printf_format</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&nbsp;</td>
+          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Constructor with an integer value for SQLSTATE</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>sqlState</em>&nbsp;</td><td>ISO/ANSI SQLSTATE value to produce 
for this error. According to the standard, this must be a value in the range of 
38000 - 38999 (note that since we use an integer, non-numeric SQLSTATE values 
cannot be generated. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>printf_format</em>&nbsp;</td><td>a format string like it is 
used in printf, with a variable list of arguments to be substituted. Example: 
new <a class="el" href="classtmudr_1_1UDRException.html" title="This is the 
exception to throw when an error occurs in a UDR.">UDRException</a>(38001, "num 
%d, string %s", 1, "a"); </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1d565a22c7a46717c688de64ab56f755"></a><!-- doxytag: 
member="tmudr::UDRException::UDRException" 
ref="a1d565a22c7a46717c688de64ab56f755" args="(const char *sqlState, const char 
*printf_format,...)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">UDRException::UDRException </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>sqlState</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>printf_format</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&nbsp;</td>
+          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Constructor with a string value for SQLSTATE</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td 
valign="top"><em>sqlState</em>&nbsp;</td><td>ISO/ANSI SQLSTATE value to produce 
for this error. According to the standard, this must be a value of the form 
38xxx, with the xxx being digits or upper case letters. </td></tr>
+    <tr><td valign="top"></td><td 
valign="top"><em>printf_format</em>&nbsp;</td><td>a format string like it is 
used in printf, with a variable list of arguments to be substituted. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa9d80f9be4771b873ca0ef2044e63306"></a><!-- doxytag: 
member="tmudr::UDRException::getMessage" 
ref="aa9d80f9be4771b873ca0ef2044e63306" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; UDRException::getMessage 
</td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the error message associated with this exception</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string, representing the 
error message, including any substituted text with the additional arguments in 
the constructor. Note that this is a reference to a data member, it lives only 
as long as the <a class="el" href="classtmudr_1_1UDRException.html" title="This 
is the exception to throw when an error occurs in a UDR.">UDRException</a> 
object. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab72a1a01900f1cc7f0ac28cba5b2092d"></a><!-- doxytag: 
member="tmudr::UDRException::getSQLState" 
ref="ab72a1a01900f1cc7f0ac28cba5b2092d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char * UDRException::getSQLState </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the SQSTATE value for this exception</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string, representing the 
SQLSTATE. Note that this is a pointer to a data member, the buffer lives only 
as long as the <a class="el" href="classtmudr_1_1UDRException.html" title="This 
is the exception to throw when an error occurs in a UDR.">UDRException</a> 
object. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a1fbcd51c04fd8253403bef5c7d5b0879"></a><!-- doxytag: 
member="tmudr::UDRException::getText" ref="a1fbcd51c04fd8253403bef5c7d5b0879" 
args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const std::string &amp; UDRException::getText 
</td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Get the error message associated with this exception</p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Same as <a class="el" 
href="classtmudr_1_1UDRException.html#aa9d80f9be4771b873ca0ef2044e63306">getMessage()</a>.</dd></dl>
+<dl class="deprecated"><dt><b><a class="el" 
href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Use <a 
class="el" 
href="classtmudr_1_1UDRException.html#aa9d80f9be4771b873ca0ef2044e63306">getMessage()</a>
 instead, in Java that is the standard method. </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