<!-- 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::ColumnInfo 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_1ColumnInfo.html">ColumnInfo</a>
  </div>
</div>
<div class="contents">
<h1>tmudr::ColumnInfo Class Reference</h1><!-- doxytag: class="tmudr::ColumnInfo" --><!-- doxytag: inherits="tmudr::TMUDRSerializableObject" -->
<p>Describes a column in an input or output table or a parameter.  
<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_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">ColumnUseCode</a> { <a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4af932bad37d6a82ef028b8d259a5f0093">UNKNOWN</a>, 
<a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4a6a27f51d940992abb9864cdf20bbb700">USED</a>, 
<a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4ac936626753ec183cf722c48004a8faa9">NOT_USED</a>, 
<a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4af61516911abc37e459106df016cf7653">NOT_PRODUCED</a>
 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Info on whether a table-valued input or output column is used. </p>
 <a href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">More...</a><br/></td></tr>
<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_1ColumnInfo.html#a12b2dd59f7b6c13008291c3ef03ba7f4">ColumnInfo</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#aadabdd4abc75c72824055d63dbf6a4c4">ColumnInfo</a> (const char *name, const <a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp;type)</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_1ColumnInfo.html#ada100933d6c988677ed46b925fe0670b">getColName</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#a26bbd74a3e645ea2202bb0bf82ae04ed">getType</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#aad773b195be34ee3fb471fcfb19d71d8">getEstimatedUniqueEntries</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">ColumnUseCode</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#a6bbc5eac8f191243281e44ceaced86be">getUsage</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classtmudr_1_1ProvenanceInfo.html">ProvenanceInfo</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#abd56e48603e02a2b65f383921a2c44a1">getProvenance</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#abb967aeb5787c79e5407d3c721e63b81">getType</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_1ColumnInfo.html#a4c221aafe4e3733dceee16437ec34749">setColName</a> (const char *name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#a77d0bd16eee7845a734a8637c8fe7e16">setType</a> (<a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp;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_1ColumnInfo.html#adc6ef72793f0f293ea7370a46764080d">setEstimatedUniqueEntries</a> (long uniqueEntries)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ColumnInfo.html#a6769703f19c5edbbb8d758ac21443f89">setUsage</a> (<a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">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_1ColumnInfo.html#a361ed635eeb56e2262a41aded487ccf7">setProvenance</a> (const <a class="el" href="classtmudr_1_1ProvenanceInfo.html">ProvenanceInfo</a> &amp;provenance)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Describes a column in an input or output table or a parameter. </p>
<p>This describes a column or parameter value that is passed through the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> interface, either as a value read from an input table, a value produced in an output table or a parameter. </p>
<hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="acd91858abc45772d55f3310d789271b4"></a><!-- doxytag: member="tmudr::ColumnInfo::ColumnUseCode" ref="acd91858abc45772d55f3310d789271b4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">tmudr::ColumnInfo::ColumnUseCode</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Info on whether a table-valued input or output column is used. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="acd91858abc45772d55f3310d789271b4af932bad37d6a82ef028b8d259a5f0093"></a><!-- doxytag: member="UNKNOWN" ref="acd91858abc45772d55f3310d789271b4af932bad37d6a82ef028b8d259a5f0093" args="" -->UNKNOWN</em>&nbsp;</td><td>
<p>Column usage is not yet determined. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="acd91858abc45772d55f3310d789271b4a6a27f51d940992abb9864cdf20bbb700"></a><!-- doxytag: member="USED" ref="acd91858abc45772d55f3310d789271b4a6a27f51d940992abb9864cdf20bbb700" args="" -->USED</em>&nbsp;</td><td>
<p>For an input, it’s needed by the UDF, for an output it’s needed by the SQL Engine </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="acd91858abc45772d55f3310d789271b4ac936626753ec183cf722c48004a8faa9"></a><!-- doxytag: member="NOT_USED" ref="acd91858abc45772d55f3310d789271b4ac936626753ec183cf722c48004a8faa9" args="" -->NOT_USED</em>&nbsp;</td><td>
<p>Input or output is not needed. Input will be removed after the describeDataflowAndPredicates() call. Output will be retained to avoid errors at runtime when the UDF tries to set this column value. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="acd91858abc45772d55f3310d789271b4af61516911abc37e459106df016cf7653"></a><!-- doxytag: member="NOT_PRODUCED" ref="acd91858abc45772d55f3310d789271b4af61516911abc37e459106df016cf7653" args="" -->NOT_PRODUCED</em>&nbsp;</td><td>
<p>Output is not needed and will be removed after the describeDataflowAndPredicates() call. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a12b2dd59f7b6c13008291c3ef03ba7f4"></a><!-- doxytag: member="tmudr::ColumnInfo::ColumnInfo" ref="a12b2dd59f7b6c13008291c3ef03ba7f4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ColumnInfo::ColumnInfo </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default constructor </p>

</div>
</div>
<a class="anchor" id="aadabdd4abc75c72824055d63dbf6a4c4"></a><!-- doxytag: member="tmudr::ColumnInfo::ColumnInfo" ref="aadabdd4abc75c72824055d63dbf6a4c4" args="(const char *name, const TypeInfo &amp;type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ColumnInfo::ColumnInfo </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>type</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, specifying a name and a type</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of the column to add. Use UPPER CASE letters, digits and underscore, otherwise you will need to use delimited column names with matching case in Trafodion. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>Type of the column to add. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ada100933d6c988677ed46b925fe0670b"></a><!-- doxytag: member="tmudr::ColumnInfo::getColName" ref="ada100933d6c988677ed46b925fe0670b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string &amp; ColumnInfo::getColName </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the name of the column.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Name of the column in UTF-8. </dd></dl>

</div>
</div>
<a class="anchor" id="aad773b195be34ee3fb471fcfb19d71d8"></a><!-- doxytag: member="tmudr::ColumnInfo::getEstimatedUniqueEntries" ref="aad773b195be34ee3fb471fcfb19d71d8" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long ColumnInfo::getEstimatedUniqueEntries </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the estimated number of unique entries.</p>
<p>This returns an estimate for the number of unique values for this column in the table. For example, a column containing the names of US states would have approximately 50 distinct values, assuming that most or all states are represented. This estimate can be provided by the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> writer, through the setUniqueEntries() method, or in some cases it can also be provided by the Trafodion compiler.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classtmudr_1_1ColumnInfo.html#adc6ef72793f0f293ea7370a46764080d">ColumnInfo::setEstimatedUniqueEntries()</a></dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Estimated number of unique entries or -1 if there is no estimate. </dd></dl>

</div>
</div>
<a class="anchor" id="abd56e48603e02a2b65f383921a2c44a1"></a><!-- doxytag: member="tmudr::ColumnInfo::getProvenance" ref="abd56e48603e02a2b65f383921a2c44a1" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classtmudr_1_1ProvenanceInfo.html">ProvenanceInfo</a> &amp; ColumnInfo::getProvenance </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get provenance info for an output column.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Provenance of the column. </dd></dl>

</div>
</div>
<a class="anchor" id="abb967aeb5787c79e5407d3c721e63b81"></a><!-- doxytag: member="tmudr::ColumnInfo::getType" ref="abb967aeb5787c79e5407d3c721e63b81" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp; ColumnInfo::getType </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 the type.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Non-const type of the column. Note that the types of parameters and output columns can only be changed from the <a class="el" href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a> call. </dd></dl>

</div>
</div>
<a class="anchor" id="a26bbd74a3e645ea2202bb0bf82ae04ed"></a><!-- doxytag: member="tmudr::ColumnInfo::getType" ref="a26bbd74a3e645ea2202bb0bf82ae04ed" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp; ColumnInfo::getType </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the type of the column.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Type of the column. </dd></dl>

</div>
</div>
<a class="anchor" id="a6bbc5eac8f191243281e44ceaced86be"></a><!-- doxytag: member="tmudr::ColumnInfo::getUsage" ref="a6bbc5eac8f191243281e44ceaced86be" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">ColumnInfo::ColumnUseCode</a> ColumnInfo::getUsage </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the usage of an input or output column.</p>
<p>This usage may be set in the <a class="el" href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a> method, set automatically by Trafodion for certain situations with passthru columns, or left at the default of USED.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Usage enum value for the column. </dd></dl>

</div>
</div>
<a class="anchor" id="a4c221aafe4e3733dceee16437ec34749"></a><!-- doxytag: member="tmudr::ColumnInfo::setColName" ref="a4c221aafe4e3733dceee16437ec34749" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ColumnInfo::setColName </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>colName</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the name of the column.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>colName</em>&nbsp;</td><td>Name of the column (in UTF-8). There is a length limit of 256 bytes for the column name. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="adc6ef72793f0f293ea7370a46764080d"></a><!-- doxytag: member="tmudr::ColumnInfo::setEstimatedUniqueEntries" ref="adc6ef72793f0f293ea7370a46764080d" args="(long uniqueEntries)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ColumnInfo::setEstimatedUniqueEntries </td>
          <td>(</td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>uniqueEntries</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Provide an estimate for the number of unique values of a column.</p>
<p>Only use this method from within the following methods: </p>
<ul>
<li><a class="el" href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a> </li>
<li><a class="el" href="classtmudr_1_1UDR.html#abbfc60e9c860f3c02dc4262ffc1c9939">UDR::describeDataflowAndPredicates()</a> </li>
<li><a class="el" href="classtmudr_1_1UDR.html#a83262ec6806c3811bf55b1704fea599d">UDR::describeConstraints()</a> </li>
<li><a class="el" href="classtmudr_1_1UDR.html#a371a0c6d1dce6857f10b171099d67fdf">UDR::describeStatistics()</a></li>
</ul>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classtmudr_1_1ColumnInfo.html#aad773b195be34ee3fb471fcfb19d71d8">ColumnInfo::getEstimatedUniqueEntries()</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>uniqueEntries</em>&nbsp;</td><td>Estimate of the number of unique entries or -1 if there is no estimate. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a361ed635eeb56e2262a41aded487ccf7"></a><!-- doxytag: member="tmudr::ColumnInfo::setProvenance" ref="a361ed635eeb56e2262a41aded487ccf7" args="(const ProvenanceInfo &amp;provenance)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ColumnInfo::setProvenance </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classtmudr_1_1ProvenanceInfo.html">ProvenanceInfo</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>provenance</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the provenance of an output column.</p>
<p>This defines a relationship between an output column and a column of a table-valued input from which the output value is copied. Such columns are called pass-thru columns. See class <a class="el" href="classtmudr_1_1ProvenanceInfo.html" title="Describes where an output column is coming from.">ProvenanceInfo</a> for more information.</p>
<p>Only use this method from within the following method: </p>
<ul>
<li><a class="el" href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a></li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>provenance</em>&nbsp;</td><td>The provenance information. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a77d0bd16eee7845a734a8637c8fe7e16"></a><!-- doxytag: member="tmudr::ColumnInfo::setType" ref="a77d0bd16eee7845a734a8637c8fe7e16" args="(TypeInfo &amp;type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ColumnInfo::setType </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtmudr_1_1TypeInfo.html">TypeInfo</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>type</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the type of the column.</p>
<p>This is done by constructing a <a class="el" href="classtmudr_1_1TypeInfo.html" title="Data types in the UDR interface.">TypeInfo</a> object and passing it to this 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>type</em>&nbsp;</td><td>Type of the column. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6769703f19c5edbbb8d758ac21443f89"></a><!-- doxytag: member="tmudr::ColumnInfo::setUsage" ref="a6769703f19c5edbbb8d758ac21443f89" args="(ColumnUseCode usage)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ColumnInfo::setUsage </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classtmudr_1_1ColumnInfo.html#acd91858abc45772d55f3310d789271b4">ColumnUseCode</a>&nbsp;</td>
          <td class="paramname"> <em>usage</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the usage of the column.</p>
<p>See the ColumnInfo::COLUMN_USE enum for different options.</p>
<p>Only use this method from within the following method: </p>
<ul>
<li><a class="el" href="classtmudr_1_1UDR.html#a795387c54b27b667ae73b668f606595c">UDR::describeParamsAndColumns()</a></li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>usage</em>&nbsp;</td><td>Usage enum value of the column. </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 3 Mar 2017 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>
