Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-testing > by-pkgid > 91128064e1b251eab84e1c0e3ea0dd7a > files > 204

lib64mysql-devel-5.0.51a-8mdv2008.1.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>NdbError Struct Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="contents">
<h1>NdbError Struct Reference</h1><!-- doxytag: class="NdbError" --><code>#include &lt;NdbError.hpp&gt;</code>
<p>

<p>
<a href="structNdbError-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
Contains error information. 
<p>
A <a class="el" href="structNdbError.html" title="Contains error information.">NdbError</a> consists of five parts:<ol type=1>
<li>Error status : Application impact</li><li>Error classification : Logical error group</li><li>Error code : Internal error code</li><li>Error message : Context independent description of error</li><li>Error details : Context dependent information (not always available)</li></ol>
<p>
<em>Error status</em> is usually used for programming against errors. If more detailed error control is needed, it is possible to use the <em>error classification</em>.<p>
It is not recommended to write application programs dependent on specific <em>error codes</em>.<p>
The <em>error messages</em> and <em>error details</em> may change without notice.<p>
For example of use, see <a class="el" href="ndbapi_retries.cpp.html">ndbapi_retries.cpp</a>. <h2>Public Types</h2>
<ul>
<li>enum <a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618">Status</a> { <a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618eda60d921a6f3415692bc163084cc326">Success</a> =  ndberror_st_success, 
<a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad4586189d6a4af4ffaf1aed83fdf29ef2c47227">TemporaryError</a> =  ndberror_st_temporary, 
<a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618f39e2cb3839afe2ccecc9b44905b3d89">PermanentError</a> =  ndberror_st_permanent, 
<a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad45861895ee56680dca939e370f27de09c92f4c">UnknownResult</a> =  ndberror_st_unknown
 }
<li>enum <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1">Classification</a> { <br>
&nbsp;&nbsp;<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf11ddfd50175583b8da119e368418b1359">NoError</a> =  ndberror_cl_none, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf178910275ae5e5bb8eeff0a7e74ea323b">ApplicationError</a> =  ndberror_cl_application, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1314fe5364bff40b6d98a7f9c7ce36a79">NoDataFound</a> =  ndberror_cl_no_data_found, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf128b25db416ba9257509f671226ce66b0">ConstraintViolation</a> =  ndberror_cl_constraint_violation, 
<br>
&nbsp;&nbsp;<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf160d3446b9bd6e62a4e40fe3f01cf2aeb">SchemaError</a> =  ndberror_cl_schema_error, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1a5c97390482ff8fb9701e992e1796877">UserDefinedError</a> =  ndberror_cl_user_defined, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf161c26eab060e21294ea70643c79d326a">InsufficientSpace</a> =  ndberror_cl_insufficient_space, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1189997ec65e7e0333cedfd2e02b52f7d">TemporaryResourceError</a> =  ndberror_cl_temporary_resource, 
<br>
&nbsp;&nbsp;<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1470bc395a7686f21a08f43c92f1b7a24">NodeRecoveryError</a> =  ndberror_cl_node_recovery, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1a749c588d2cdf50847d8a58801966a52">OverloadError</a> =  ndberror_cl_overload, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf10d134b7d4436e61f296404f62bb0c40e">TimeoutExpired</a> =  ndberror_cl_timeout_expired, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1dc4edd716882c164ce9ee4848582005d">UnknownResultError</a> =  ndberror_cl_unknown_result, 
<br>
&nbsp;&nbsp;<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf157deb84d1f1aeeaaac4005332fbeef73">InternalError</a> =  ndberror_cl_internal_error, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1bc43e38dd5f9ee5d2012122282826506">FunctionNotImplemented</a> =  ndberror_cl_function_not_implemented, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf178bec7fb8d9d2f9de7367a5d9201de5c">UnknownErrorCode</a> =  ndberror_cl_unknown_error_code, 
<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf14296704d4bda8de2fc75e04c29faa97a">NodeShutdown</a> =  ndberror_cl_node_shutdown, 
<br>
&nbsp;&nbsp;<a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf10e8cdd8b9f060e7fdb00456837f690ea">SchemaObjectExists</a> =  ndberror_cl_schema_object_already_exists
<br>
 }
</ul>
<h2>Public Attributes</h2>
<ul>
<li><a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618">Status</a> <a class="el" href="structNdbError.html#f4af76b35a92ccebbb814705578e74e9">status</a>
<li><a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1">Classification</a> <a class="el" href="structNdbError.html#bc9a4841feb45bb8ca5fdaa8e14d20d6">classification</a>
<li>int <a class="el" href="structNdbError.html#87429c24aeeafdee05f41051ba0f2160">code</a>
<li>const char * <a class="el" href="structNdbError.html#59d98203577586394c30cdb01a270c2c">message</a>
<li>char * <a class="el" href="structNdbError.html#3b45b15467a57e0ef01cc0d96fec553a">details</a>
</ul>
<hr><h2>Member Enumeration Documentation</h2>
<a class="anchor" name="77140bdb323bd821bd517639ad458618"></a><!-- doxytag: member="NdbError::Status" ref="77140bdb323bd821bd517639ad458618" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618">NdbError::Status</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Status categorizes error codes into status values reflecting what the application should do when encountering errors <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="77140bdb323bd821bd517639ad458618eda60d921a6f3415692bc163084cc326"></a><!-- doxytag: member="Success" ref="77140bdb323bd821bd517639ad458618eda60d921a6f3415692bc163084cc326" args="" -->Success</em>&nbsp;</td><td>
The error code indicate success<br>
 (Includes classification: <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf11ddfd50175583b8da119e368418b1359">NdbError::NoError</a>) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="77140bdb323bd821bd517639ad4586189d6a4af4ffaf1aed83fdf29ef2c47227"></a><!-- doxytag: member="TemporaryError" ref="77140bdb323bd821bd517639ad4586189d6a4af4ffaf1aed83fdf29ef2c47227" args="" -->TemporaryError</em>&nbsp;</td><td>
The error code indicates a temporary error. The application should typically retry.<br>
 (Includes classifications: <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf161c26eab060e21294ea70643c79d326a">NdbError::InsufficientSpace</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1189997ec65e7e0333cedfd2e02b52f7d">NdbError::TemporaryResourceError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1470bc395a7686f21a08f43c92f1b7a24">NdbError::NodeRecoveryError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1a749c588d2cdf50847d8a58801966a52">NdbError::OverloadError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf14296704d4bda8de2fc75e04c29faa97a">NdbError::NodeShutdown</a> and <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf10d134b7d4436e61f296404f62bb0c40e">NdbError::TimeoutExpired</a>.) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="77140bdb323bd821bd517639ad458618f39e2cb3839afe2ccecc9b44905b3d89"></a><!-- doxytag: member="PermanentError" ref="77140bdb323bd821bd517639ad458618f39e2cb3839afe2ccecc9b44905b3d89" args="" -->PermanentError</em>&nbsp;</td><td>
The error code indicates a permanent error.<br>
 (Includes classificatons: <a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618f39e2cb3839afe2ccecc9b44905b3d89">NdbError::PermanentError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf178910275ae5e5bb8eeff0a7e74ea323b">NdbError::ApplicationError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1314fe5364bff40b6d98a7f9c7ce36a79">NdbError::NoDataFound</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf128b25db416ba9257509f671226ce66b0">NdbError::ConstraintViolation</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf160d3446b9bd6e62a4e40fe3f01cf2aeb">NdbError::SchemaError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1a5c97390482ff8fb9701e992e1796877">NdbError::UserDefinedError</a>, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf157deb84d1f1aeeaaac4005332fbeef73">NdbError::InternalError</a>, and, <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1bc43e38dd5f9ee5d2012122282826506">NdbError::FunctionNotImplemented</a>.) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="77140bdb323bd821bd517639ad45861895ee56680dca939e370f27de09c92f4c"></a><!-- doxytag: member="UnknownResult" ref="77140bdb323bd821bd517639ad45861895ee56680dca939e370f27de09c92f4c" args="" -->UnknownResult</em>&nbsp;</td><td>
The result/status is unknown.<br>
 (Includes classifications: <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1dc4edd716882c164ce9ee4848582005d">NdbError::UnknownResultError</a>, and <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf178bec7fb8d9d2f9de7367a5d9201de5c">NdbError::UnknownErrorCode</a>.) </td></tr>
</table>
</dl>

</div>
</div><p>
<a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1"></a><!-- doxytag: member="NdbError::Classification" ref="a1ca0a1dc5881fce46374c62cee0bdf1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1">NdbError::Classification</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Type of error <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf11ddfd50175583b8da119e368418b1359"></a><!-- doxytag: member="NoError" ref="a1ca0a1dc5881fce46374c62cee0bdf11ddfd50175583b8da119e368418b1359" args="" -->NoError</em>&nbsp;</td><td>
Success. No error occurred. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf178910275ae5e5bb8eeff0a7e74ea323b"></a><!-- doxytag: member="ApplicationError" ref="a1ca0a1dc5881fce46374c62cee0bdf178910275ae5e5bb8eeff0a7e74ea323b" args="" -->ApplicationError</em>&nbsp;</td><td>
Error in application program. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1314fe5364bff40b6d98a7f9c7ce36a79"></a><!-- doxytag: member="NoDataFound" ref="a1ca0a1dc5881fce46374c62cee0bdf1314fe5364bff40b6d98a7f9c7ce36a79" args="" -->NoDataFound</em>&nbsp;</td><td>
Read operation failed due to missing record. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf128b25db416ba9257509f671226ce66b0"></a><!-- doxytag: member="ConstraintViolation" ref="a1ca0a1dc5881fce46374c62cee0bdf128b25db416ba9257509f671226ce66b0" args="" -->ConstraintViolation</em>&nbsp;</td><td>
E.g. inserting a tuple with a primary key already existing in the table. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf160d3446b9bd6e62a4e40fe3f01cf2aeb"></a><!-- doxytag: member="SchemaError" ref="a1ca0a1dc5881fce46374c62cee0bdf160d3446b9bd6e62a4e40fe3f01cf2aeb" args="" -->SchemaError</em>&nbsp;</td><td>
Error in creating table or usage of table. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1a5c97390482ff8fb9701e992e1796877"></a><!-- doxytag: member="UserDefinedError" ref="a1ca0a1dc5881fce46374c62cee0bdf1a5c97390482ff8fb9701e992e1796877" args="" -->UserDefinedError</em>&nbsp;</td><td>
Error occurred in interpreted program. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf161c26eab060e21294ea70643c79d326a"></a><!-- doxytag: member="InsufficientSpace" ref="a1ca0a1dc5881fce46374c62cee0bdf161c26eab060e21294ea70643c79d326a" args="" -->InsufficientSpace</em>&nbsp;</td><td>
E.g. insufficient memory for data or indexes. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1189997ec65e7e0333cedfd2e02b52f7d"></a><!-- doxytag: member="TemporaryResourceError" ref="a1ca0a1dc5881fce46374c62cee0bdf1189997ec65e7e0333cedfd2e02b52f7d" args="" -->TemporaryResourceError</em>&nbsp;</td><td>
E.g. too many active transactions. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1470bc395a7686f21a08f43c92f1b7a24"></a><!-- doxytag: member="NodeRecoveryError" ref="a1ca0a1dc5881fce46374c62cee0bdf1470bc395a7686f21a08f43c92f1b7a24" args="" -->NodeRecoveryError</em>&nbsp;</td><td>
Temporary failures which are probably inflicted by a node recovery in progress. Examples: information sent between application and NDB lost, distribution change. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1a749c588d2cdf50847d8a58801966a52"></a><!-- doxytag: member="OverloadError" ref="a1ca0a1dc5881fce46374c62cee0bdf1a749c588d2cdf50847d8a58801966a52" args="" -->OverloadError</em>&nbsp;</td><td>
E.g. out of log file space. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf10d134b7d4436e61f296404f62bb0c40e"></a><!-- doxytag: member="TimeoutExpired" ref="a1ca0a1dc5881fce46374c62cee0bdf10d134b7d4436e61f296404f62bb0c40e" args="" -->TimeoutExpired</em>&nbsp;</td><td>
Timeouts, often inflicted by deadlocks in NDB. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1dc4edd716882c164ce9ee4848582005d"></a><!-- doxytag: member="UnknownResultError" ref="a1ca0a1dc5881fce46374c62cee0bdf1dc4edd716882c164ce9ee4848582005d" args="" -->UnknownResultError</em>&nbsp;</td><td>
Is is unknown whether the transaction was committed or not. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf157deb84d1f1aeeaaac4005332fbeef73"></a><!-- doxytag: member="InternalError" ref="a1ca0a1dc5881fce46374c62cee0bdf157deb84d1f1aeeaaac4005332fbeef73" args="" -->InternalError</em>&nbsp;</td><td>
A serious error in NDB has occurred. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf1bc43e38dd5f9ee5d2012122282826506"></a><!-- doxytag: member="FunctionNotImplemented" ref="a1ca0a1dc5881fce46374c62cee0bdf1bc43e38dd5f9ee5d2012122282826506" args="" -->FunctionNotImplemented</em>&nbsp;</td><td>
A function used is not yet implemented. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf178bec7fb8d9d2f9de7367a5d9201de5c"></a><!-- doxytag: member="UnknownErrorCode" ref="a1ca0a1dc5881fce46374c62cee0bdf178bec7fb8d9d2f9de7367a5d9201de5c" args="" -->UnknownErrorCode</em>&nbsp;</td><td>
Error handler could not determine correct error code. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf14296704d4bda8de2fc75e04c29faa97a"></a><!-- doxytag: member="NodeShutdown" ref="a1ca0a1dc5881fce46374c62cee0bdf14296704d4bda8de2fc75e04c29faa97a" args="" -->NodeShutdown</em>&nbsp;</td><td>
Node shutdown </td></tr>
<tr><td valign="top"><em><a class="anchor" name="a1ca0a1dc5881fce46374c62cee0bdf10e8cdd8b9f060e7fdb00456837f690ea"></a><!-- doxytag: member="SchemaObjectExists" ref="a1ca0a1dc5881fce46374c62cee0bdf10e8cdd8b9f060e7fdb00456837f690ea" args="" -->SchemaObjectExists</em>&nbsp;</td><td>
Schema object already exists </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="f4af76b35a92ccebbb814705578e74e9"></a><!-- doxytag: member="NdbError::status" ref="f4af76b35a92ccebbb814705578e74e9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structNdbError.html#77140bdb323bd821bd517639ad458618">Status</a> <a class="el" href="structNdbError.html#f4af76b35a92ccebbb814705578e74e9">NdbError::status</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Error status. 
</div>
</div><p>
<a class="anchor" name="bc9a4841feb45bb8ca5fdaa8e14d20d6"></a><!-- doxytag: member="NdbError::classification" ref="bc9a4841feb45bb8ca5fdaa8e14d20d6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structNdbError.html#a1ca0a1dc5881fce46374c62cee0bdf1">Classification</a> <a class="el" href="structNdbError.html#bc9a4841feb45bb8ca5fdaa8e14d20d6">NdbError::classification</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Error type 
</div>
</div><p>
<a class="anchor" name="87429c24aeeafdee05f41051ba0f2160"></a><!-- doxytag: member="NdbError::code" ref="87429c24aeeafdee05f41051ba0f2160" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="structNdbError.html#87429c24aeeafdee05f41051ba0f2160">NdbError::code</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Error code 
</div>
</div><p>
<a class="anchor" name="59d98203577586394c30cdb01a270c2c"></a><!-- doxytag: member="NdbError::message" ref="59d98203577586394c30cdb01a270c2c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* <a class="el" href="structNdbError.html#59d98203577586394c30cdb01a270c2c">NdbError::message</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Error message 
</div>
</div><p>
<a class="anchor" name="3b45b15467a57e0ef01cc0d96fec553a"></a><!-- doxytag: member="NdbError::details" ref="3b45b15467a57e0ef01cc0d96fec553a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* <a class="el" href="structNdbError.html#3b45b15467a57e0ef01cc0d96fec553a">NdbError::details</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The detailed description. This is extra information regarding the error which is not included in the error message.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Is NULL when no details specified </dd></dl>

</div>
</div><p>
</div>
<hr>
<address>
<small>
<center>
Documentation generated Sun Apr 20 06:25:31 2008 from mysql source files.<br>
&copy; 2003-2004 
<a href="http://www.mysql.com">MySQL AB</a>
<br>
</center>
</small></address>
</body>
</html>