List:Commits« Previous MessageNext Message »
From:pharvey Date:May 2 2006 10:51pm
Subject:Connector/ODBC 5 commit: r181 - / MYODBCDriver/MYODBCDriverLib MYSQLPlus/MYSQLPlusLib doc/Project
View as plain text  
Removed:
   Status.html
Modified:
   MYODBCDriver/MYODBCDriverLib/SQLConnectW.cpp
   MYODBCDriver/MYODBCDriverLib/SQLSetEnvAttr.cpp
   MYSQLPlus/MYSQLPlusLib/MConnection.cpp
   MYSQLPlus/MYSQLPlusLib/MEnvironment.cpp
   doc/Project/SituationReport-20060505.ods
Log:


Modified: MYODBCDriver/MYODBCDriverLib/SQLConnectW.cpp
===================================================================
--- MYODBCDriver/MYODBCDriverLib/SQLConnectW.cpp	2006-05-02 20:50:18 UTC (rev 180)
+++ MYODBCDriver/MYODBCDriverLib/SQLConnectW.cpp	2006-05-02 22:51:00 UTC (rev 181)
@@ -17,6 +17,10 @@
                                SQLSMALLINT   nNameLength3 )
 {
     MYODBCDbgEnter();
+
+    if ( !hDbc )
+        MYODBCDbgReturn( SQL_INVALID_HANDLE );
+
     MYODBCDbgReturn( ((MConnection*)hDbc)->doConnect( psServerName, nNameLength1,
psUserName, nNameLength2, psAuthentication, nNameLength3 ) );
 }
 

Modified: MYODBCDriver/MYODBCDriverLib/SQLSetEnvAttr.cpp
===================================================================
--- MYODBCDriver/MYODBCDriverLib/SQLSetEnvAttr.cpp	2006-05-02 20:50:18 UTC (rev 180)
+++ MYODBCDriver/MYODBCDriverLib/SQLSetEnvAttr.cpp	2006-05-02 22:51:00 UTC (rev 181)
@@ -33,6 +33,11 @@
         The environment handle in the call to SQLSetEnvAttr is set to null, which 
         makes SQL_ATTR_CONNECTION_POOLING a process-level nAttribute. 
     */
+    /*!
+        \internal MYODBC RULE
+
+        We do not support process level attributes.
+    */
     if ( !hEnv )
         MYODBCDbgReturn( SQL_ERROR );
 

Modified: MYSQLPlus/MYSQLPlusLib/MConnection.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MConnection.cpp	2006-05-02 20:50:18 UTC (rev 180)
+++ MYSQLPlus/MYSQLPlusLib/MConnection.cpp	2006-05-02 22:51:00 UTC (rev 181)
@@ -131,9 +131,181 @@
 {
     MYODBCDbgEnter();
 
+    MYODBC_INS_DATASOURCE * pDataSource = NULL;
+    ulong                   nFlags      = 0;
+    SQLRETURN               nReturn     = SQL_SUCCESS;
+
     pDiagnostic->doClear();
 
-    MYODBCDbgReturn( SQL_ERROR );
+    /*!
+        \internal ODBC RULE (DM)
+
+        The specified ConnectionHandle had already been used to establish a 
+        connection with a data source, and the connection was still open or 
+        the user was browsing for a connection.
+
+        Normally a DM thing but we also handle here for case when app linked
+        directly to driver.
+    */
+    if ( getState() != STATE_C2 )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_08002 ) );
+
+    /*! 
+        \internal ODBC RULE (DM)
+
+        The value specified for argument NameLength1, NameLength2, or 
+        NameLength3 was less than 0 but not equal to SQL_NTS.
+    */
+    if ( (nNameLength1 < 0 && nNameLength1 != SQL_NTS) || 
+         (nNameLength2 < 0 && nNameLength2 != SQL_NTS) || 
+         (nNameLength3 < 0 && nNameLength3 != SQL_NTS) )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY090 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        The value specified for argument NameLength1 exceeded the 
+        maximum length for a data source name.
+    */
+    if ( nNameLength1 > SQL_MAX_DSN_LENGTH )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY090 ) );
+
+
+    QString stringServerName;
+    QString stringUserName;
+    QString stringAuthentication;
+
+    if ( psServerName )
+        stringServerName.setUtf16( psServerName, ( nNameLength1 == SQL_NTS ? wcslen(
psServerName ) : nNameLength1 ) );
+
+    if ( psUserName )
+        stringUserName.setUtf16( psUserName, ( nNameLength2 == SQL_NTS ? wcslen(
psUserName ) : nNameLength2 ) );
+
+    if ( psAuthentication )
+        stringAuthentication.setUtf16( psAuthentication, ( nNameLength3 == SQL_NTS ?
wcslen( psAuthentication ) : nNameLength3 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        ServerName was longer than SQL_MAX_DSN_LENGTH characters.
+    */
+    if ( psServerName && nNameLength1 == SQL_NTS &&
stringServerName.length() > SQL_MAX_DSN_LENGTH )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_IM010 ) );
+
+    /*!
+        \internal MYODBC RULE
+
+        psUserName was longer than SQL_MAX_OPTION_STRING_LENGTH characters.
+    */
+    if ( psUserName && nNameLength2 == SQL_NTS && stringUserName.length()
> SQL_MAX_OPTION_STRING_LENGTH )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, 0, "psUserName
is too long"));
+    if ( psUserName && nNameLength2 != SQL_NTS && nNameLength2 >
SQL_MAX_OPTION_STRING_LENGTH )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, 0, "psUserName
is too long"));
+
+    /*!
+        \internal MYODBC RULE
+
+        psAuthentication was longer than SQL_MAX_OPTION_STRING_LENGTH characters.
+    */
+    if ( psAuthentication && nNameLength3 == SQL_NTS &&
stringAuthentication.length() > SQL_MAX_OPTION_STRING_LENGTH )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, 0,
"pszAuthentication is too long"));
+    if ( psAuthentication && nNameLength3 != SQL_NTS && nNameLength3 >
SQL_MAX_OPTION_STRING_LENGTH )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, 0,
"pszAuthentication is too long"));
+
+    /*! 
+        \internal ODBC RULE (DM)
+
+        ServerName argument that cannot be found, is a null pointer, or is 
+        "DEFAULT", the Driver Manager connects to the default data source.
+    */
+    QString stringDSN = stringServerName;
+    if ( stringServerName.isEmpty() )
+        stringDSN = "DEFAULT";
+
+
+    MYODBCInsDataSource datasource;
+    datasource.setMode( MYODBCInsDataSource::DATASOURCE_MODE_DSN_VIEW );
+    datasource.setScope( MYODBCInsDataSource::DATASOURCE_SCOPE_BOTH );
+    if ( !datasource.doRead( stringDSN ) )
+    {
+        nReturn = pDiagnostic->doAppend( MDiagnostic::DIA_IM002 );
+        goto SQLConnectExit1;
+    }
+
+++++++++++++++++
+    /*!
+        \internal ODBC Rule 
+
+        Precedence for UID is;
+            \li as provided to function
+            \li as found in system information
+
+    */
+    if ( pszUserName && pszUserName[0] != '\0' && (nNameLength2 > 0 ||
nNameLength2 == SQL_NTS) )
+    {
+        MYODBCCFree( pDataSource->pszUSER );
+        pDataSource->pszUSER = MYODBCCStrDup( pszUserName, nNameLength2 );
+    }
+
+    /*!
+        \internal ODBC Rule 
+
+        Precedence for PWD is;
+            \li as provided to function
+            \li as found in system information
+
+    */
+    if ( pszAuthentication && pszAuthentication[0] != '\0' &&
(nNameLength3 > 0 || nNameLength3 == SQL_NTS) )
+    {
+        MYODBCCFree( pDataSource->pszPASSWORD );
+        pDataSource->pszPASSWORD = MYODBCCStrDup( pszAuthentication, nNameLength2 );
+    }
+
+    /* cleanup pDataSource such that we can use values for mysql_real_connect */
+    MYODBCInsDefaultDataSource( pDataSource );
+
+    /* allocate the MYSQL handle */
+    pDbc->pMySQL = mysql_init( NULL );
+/*  mysql_options(pDbc->pMySQL, MYSQL_OPT_CONNECT_TIMEOUT, (const char
*)&pDbc->attr_connection_timeout); */
+
+    /* translate our flags into client while appling pre-connect flags */
+    nFlags = MYODBCDrvGetClientFlag( pDbc->pMySQL, 
+                                     (ulong)atol( pDataSource->pszOPTION ), 
+                                     (uint)pDbc->attr_login_timeout, 
+                                     pDataSource->pszSTMT );
+
+    /* ask mysql for a connection */
+    if ( !mysql_real_connect( pDbc->pMySQL,
+                              pDataSource->pszSERVER,
+                              pDataSource->pszUSER,
+                              pDataSource->pszPASSWORD,
+                              pDataSource->pszDATABASE, 
+                              atoi( pDataSource->pszPORT ),
+                              pDataSource->pszSOCKET,
+                              (uint)nFlags) )
+    {
+        pDiagnostic->doAppend( MDiagnostic::DIA_HY000, mysql_errno( pDbc->pMySQL ),
(SQLCHAR*)mysql_error( pDbc->pMySQL ) );
+        mysql_close( pDbc->pMySQL );
+        pDbc->pMySQL    = NULL;
+        nReturn         = SQL_ERROR;
+        goto SQLConnectExit1;
+    }
+
+    /* free in case we were set before this connect */
+    MYODBCCFree( pDbc->attr_current_catalog );
+
+    pDbc->attr_current_catalog = MYODBCCStrDup( pDataSource->pszDATABASE, SQL_NTS
);
+    pDbc->nFlag                = nFlags;
+    pDbc->nPort                = atoi( pDataSource->pszPORT );
+    pDbc->pszDataSourceName    = MYODBCCStrDup( pszDSN, SQL_NTS );
+    pDbc->pszPassword          = MYODBCCStrDup( pDataSource->pszPASSWORD, SQL_NTS
);
+    pDbc->pszServer            = MYODBCCStrDup( pDataSource->pszSERVER, SQL_NTS );
+    pDbc->pszUser              = MYODBCCStrDup( pDataSource->pszUSER, SQL_NTS );
+    MYODBCDrvSetDbcState( pDbc, MYODBC_DRV_STATE_C4 );
+
+SQLConnectExit1:
+    MYODBCInsFreeDataSource( pDataSource );
+    MYODBCDbgReturn( nReturn );
 }
 
 SQLRETURN MConnection::doDisconnect()

Modified: MYSQLPlus/MYSQLPlusLib/MEnvironment.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MEnvironment.cpp	2006-05-02 20:50:18 UTC (rev 180)
+++ MYSQLPlus/MYSQLPlusLib/MEnvironment.cpp	2006-05-02 22:51:00 UTC (rev 181)
@@ -67,7 +67,7 @@
         case SQL_ATTR_OUTPUT_NTS:
             MYODBCDbgReturn( setOutputNTS( (SQLINTEGER)pValue ) );
         default:
-            MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, 0,
"Invalid nAttribute." ) );
+            MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY092 ) );
     }
 
     MYODBCDbgReturn( SQL_SUCCESS );
@@ -109,7 +109,7 @@
             SQLSetEnvAttr
             SQLSetStmtAttr
 */
-SQLRETURN MEnvironment::getEnvAttr( SQLINTEGER nAttribute, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr )
+SQLRETURN MEnvironment::getEnvAttr( SQLINTEGER nAttribute, SQLPOINTER pValue, SQLINTEGER
nBufferLength, SQLINTEGER *pnStringLength )
 {
     MYODBCDbgEnter();
 
@@ -120,23 +120,23 @@
     */
     pDiagnostic->doClear();
 
-    if ( !pValuePtr )
-        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY009, 0, "Invalid
arg 3." ) );
+    if ( !pValue )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000 ) );
 
     /* do it  */
     switch ( nAttribute )
     {
         case SQL_ATTR_CONNECTION_POOLING:
-            *((SQLUINTEGER*)pValuePtr) = getConnectionPooling();
+            *((SQLUINTEGER*)pValue) = getConnectionPooling();
             break;
         case SQL_ATTR_CP_MATCH:
-            *((SQLUINTEGER*)pValuePtr) = getCPMatch();
+            *((SQLUINTEGER*)pValue) = getCPMatch();
             break;
         case SQL_ATTR_ODBC_VERSION:
-            *((SQLINTEGER*)pValuePtr) = getODBCVersion();
+            *((SQLINTEGER*)pValue) = getODBCVersion();
             break;
         case SQL_ATTR_OUTPUT_NTS:
-            *((SQLINTEGER*)pValuePtr) = getOutputNTS();
+            *((SQLINTEGER*)pValue) = getOutputNTS();
             break;
         default:
             MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY092 ) );
@@ -192,7 +192,6 @@
     MYODBCDbgEnter();
 
     /*!
-        \todo
         \internal ODBC RULE
 
         This call must be made before the application allocates the shared 

Deleted: Status.html
===================================================================
--- Status.html	2006-05-02 20:50:18 UTC (rev 180)
+++ Status.html	2006-05-02 22:51:00 UTC (rev 181)
@@ -1,971 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
-	<TITLE></TITLE>
-	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3  (Linux)">
-	<META NAME="CREATED" CONTENT="20050724;21051500">
-	<META NAME="CHANGED" CONTENT="20050725;9454300">
-</HEAD>
-<BODY LANG="en-US" DIR="LTR">
-<P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany,
sans-serif"><FONT SIZE=4>MySQL
-Connector/ODBC v5 Alpha 1 2005.07.24</FONT></FONT></P>
-<P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany,
sans-serif"><FONT SIZE=4>Status</FONT></FONT></P>
-<HR>
-<P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany,
sans-serif"><FONT SIZE=4>Brief</FONT></FONT></P>
-<P><FONT FACE="OpenSymbol">This release of Connector/ODBC v5 should
-have enough functionality to make this driver useful to many people.
-This driver can be used to do the most typical calls as follows;</FONT></P>
-<UL>
-	<LI><P><FONT FACE="OpenSymbol">SQLAllocHandle –
environment</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLAllocHandle –
connection</FONT></P>
-	<LI><P><FONT
FACE="OpenSymbol">SQLConnect/SQLDriverConnect</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLAllocHandle –
statement</FONT></P>
-	<LI><P><FONT
FACE="OpenSymbol">SQLPrepare/SQLExecute/SQLExecDirect</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLFetch</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLGetData</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLFreeHandle –
statement</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLFreeHandle –
connection</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">SQLFreeHandle –
environment</FONT></P>
-</UL>
-<P><FONT FACE="OpenSymbol">This driver supports the regular MYSQL_RES
-and MYSQL_STMT methods of generating and managing results. The
-MYSQL_RES method is used by default and can not be changed without
-rebuilding the driver. A connect attribute/option will be created for
-this in the future.</FONT></P>
-<P><FONT FACE="OpenSymbol">The main things which are lacking from
-this version of the driver, but are planned to be included in v5,
-are;</FONT></P>
-<UL>
-	<LI><P><FONT FACE="OpenSymbol">UNICODE</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">full support for binding
columns</FONT></P>
-	<LI><P><FONT FACE="OpenSymbol">full support for binding
parameters</FONT></P>
-</UL>
-<P><FONT FACE="OpenSymbol">This version of the driver does not work
-with some popular applications such as MS Access but this is being
-worked on.</FONT></P>
-<P><BR><BR>
-</P>
-<P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany,
sans-serif"><FONT SIZE=4>Driver
-API</FONT></FONT></P>
-<P><FONT FACE="OpenSymbol">The following table lists all of the
-driver functions and states the status for each. </FONT>
-</P>
-<TABLE WIDTH=100% BORDER=1 CELLPADDING=5 CELLSPACING=4>
-	<COL WIDTH=85*>
-	<COL WIDTH=85*>
-	<COL WIDTH=85*>
-	<THEAD>
-		<TR VALIGN=TOP>
-			<TH WIDTH=33%>
-				<P>Function</P>
-			</TH>
-			<TH WIDTH=33%>
-				<P>Status</P>
-			</TH>
-			<TH WIDTH=33%>
-				<P>Comment</P>
-			</TH>
-		</TR>
-	</THEAD>
-	<TBODY>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLAllocConnect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLAllocHandle.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLAllocEnv</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLAllocHandle.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLAllocHandle</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLAllocStmt</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLAllocHandle.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLBindCol</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Bind will occur but is not used yet. Use SQLGetData for now.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLBindParameter</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Bind will occur but is not used yet. One must build SQL with
-				parameters in it until bind is used.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLBrowseConnect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet. Use SQLConnect or SQLDriverConnect for
-				now.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLBulkOperations</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet. Use SQL statements to handle this for
-				now.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLCancel</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLFreeStmt with SQL_CLOSE.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLCloseCursor</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLColAttribute</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLGetDescField with IRD.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLColAttributes</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLColAttribute.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLColumnPrivileges</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLColumns</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Database is mapped into Catalog and Schema is empty.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLConnect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Connection options need to be reworked.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLCopyDesc</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLDescribeCol</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to several SQLGetDescField calls.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLDescribeParam</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLGetDescField with IPD. 
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLDisconnect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLDriverConnect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Connection options need to be reworked.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLEndTran</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Does commit or rollback for connection handle.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLError</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLGetDiagRec.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLExecDirect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Does not escape SQL.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLExecute</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.8" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>80.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Does not process bound parameters yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLExtendedFetch</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet. Use SQLFetch for now.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLFetch</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.8" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>80.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Does not process bound columns yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLFetchScroll</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLExtendedFetch.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLForeignKeys</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemeted yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLFreeConnect</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLFreeHandle.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLFreeEnv</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLFreeHandle.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLFreeHandle</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLFreeStmt</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>May map to SQLFreeHandle or SQLSetDescField (depending upon
-				option).</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetConnectAttr</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetConnectOption</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Map map to SQLGetConnectAttr (depending upon option).</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetCursorName</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetData</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetDescField</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetDescRec</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetDiagField</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetDiagRec</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetEnvAttr</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetFunctions</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Optimistically states all supported.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetInfo</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Derived from 3.51 code. Needs more work.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetStmtAttr</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>May map to SQLGetDescField (depending upon the attribute).</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetStmtOption</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLGetStmtAttr.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLGetTypeInfo</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Derived from 3.51 code. Needs more work.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLMoreResults</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not supported yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLNativeSql</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not supported yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLNumParams</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLNumResultCols</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLParamData</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLParamOptions</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLSetStmtAttr.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLPrepare</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.8" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>80.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Does not process SQL for; escape sequences, parameter markers
-				or anything else – yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLPrimaryKeys</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLProcedureColumns</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLProcedures</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLPutData</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLRowCount</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetConnectAttr</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Needs more work.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetConnectOption</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLSetConnectAttr.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetCursorName</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetDescField</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetDescRec</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetEnvAttr</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.99" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>99.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>May need to loosen sanity checks a bit.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetPos</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetScrollOptions</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Mapped to SQLSetDescField.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetStmtAttr</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>May be mapped to SQLSetDescField (depending upon attribute).</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSetStmtOption</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Map be mapped to SQLSetStmtAttr (depending upon the
-				attribute).</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLSpecialColumns</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLStatistics</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Database is mapped to catalog.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLTablePrivileges</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>10.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented yet.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLTables</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Database is mapped to catalog.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>SQLTransact</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>100.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P><BR>
-				</P>
-			</TD>
-		</TR>
-	</TBODY>
-</TABLE>
-<P><BR><BR>
-</P>
-<P STYLE="margin-top: 0.17in; page-break-after: avoid"><FONT FACE="Albany,
sans-serif"><FONT SIZE=4>Setup
-API</FONT></FONT></P>
-<P><FONT FACE="OpenSymbol">The following table lists all of the setup
-functions and states the status for each.</FONT></P>
-<TABLE WIDTH=100% BORDER=1 CELLPADDING=5 CELLSPACING=4>
-	<COL WIDTH=85*>
-	<COL WIDTH=85*>
-	<COL WIDTH=85*>
-	<THEAD>
-		<TR VALIGN=TOP>
-			<TH WIDTH=33%>
-				<P>Function</P>
-			</TH>
-			<TH WIDTH=33%>
-				<P>Status</P>
-			</TH>
-			<TH WIDTH=33%>
-				<P>Comment</P>
-			</TH>
-		</TR>
-	</THEAD>
-	<TBODY>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>ConfigDriver</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>0.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented.</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>ConfigDSN</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0.9" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>90.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Needs more work on portability. Connection attributes/options
-				need to be reworked. 
-				</P>
-			</TD>
-		</TR>
-		<TR>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>ConfigTranslator</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0" SDNUM="9;0;0.00%">
-				<P ALIGN=RIGHT>0.00%</P>
-			</TD>
-			<TD WIDTH=33% VALIGN=TOP>
-				<P>Not implemented.</P>
-			</TD>
-		</TR>
-	</TBODY>
-</TABLE>
-<P><BR><BR>
-</P>
-<HR>
-<P><BR><BR>
-</P>
-</BODY>
-</HTML>
\ No newline at end of file

Modified: doc/Project/SituationReport-20060505.ods
===================================================================
(Binary files differ)

Thread
Connector/ODBC 5 commit: r181 - / MYODBCDriver/MYODBCDriverLib MYSQLPlus/MYSQLPlusLib doc/Projectpharvey3 May