List:Commits« Previous MessageNext Message »
From:pharvey Date:June 28 2006 11:16am
Subject:Connector/ODBC 5 commit: r412 - in trunk: MYODBCDriver/MYODBCDriverLib MYSQLPlus/MYSQLPlusLib
View as plain text  
Modified:
   trunk/MYODBCDriver/MYODBCDriverLib/SQLForeignKeysW.cpp
   trunk/MYODBCDriver/MYODBCDriverLib/SQLGetFunctions.cpp
   trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
Log:
started work on SQLForeignKeys

Modified: trunk/MYODBCDriver/MYODBCDriverLib/SQLForeignKeysW.cpp
===================================================================
--- trunk/MYODBCDriver/MYODBCDriverLib/SQLForeignKeysW.cpp	2006-06-28 11:01:40 UTC (rev
411)
+++ trunk/MYODBCDriver/MYODBCDriverLib/SQLForeignKeysW.cpp	2006-06-28 11:16:10 UTC (rev
412)
@@ -8,6 +8,38 @@
 */
 #include "MYODBCDriverInternal.h"
 
+/*!
+    \brief  <B>ODBC 1.0 API</B>
+            <BR>
+            Returns;
+            - A list of foreign keys in the specified table (columns
+            in the specified table that refer to primary keys in
+            other tables).
+            - A list of foreign keys in other tables that refer to the primary
+            key in the specified table
+            
+    \param  hStm                Viable statement handle.
+    \param  pszPKCatalogName    Primary key table catalog name.
+    \param  nNameLength1        Length of pszPKCatalogName.
+    \param  pszPKSchemaName     Primary key table schema name.
+    \param  nNameLength2        Length of pszPKSchemaName.
+    \param  pszPKTableName      Primary key table name.
+    \param  nNameLength3        Length of pszPKTableName.
+    \param  pszFKCatalogName    Foreign key table catalog name.
+    \param  nNameLength4        Length of pszFKCatalogName.
+    \param  pszFKSchemaName     Foreign key table schema name.
+    \param  nNameLength5        Length of pszFKSchemaName.
+    \param  pszFKTableName      Foreign key table name.
+    \param  nNameLength6        Length of pszFKTableName.
+
+    \return SQLRETURN
+
+    \retval SQL_SUCCESS             Request processed ok.
+    \retval SQL_SUCCESS_WITH_INFO   Request was probably processed ok - check diagnostic.
+    \retval SQL_STILL_EXECUTING     Still executing from a previous call.     
+    \retval SQL_ERROR               Request failed.
+    \retval SQL_INVALID_HANDLE      Invalid handle was provided.
+*/
 SQLRETURN SQL_API SQLForeignKeysW( SQLHSTMT      hStm,
                                    SQLWCHAR *    psPKCatalogName,
                                    SQLSMALLINT   nNameLength1,

Modified: trunk/MYODBCDriver/MYODBCDriverLib/SQLGetFunctions.cpp
===================================================================
--- trunk/MYODBCDriver/MYODBCDriverLib/SQLGetFunctions.cpp	2006-06-28 11:01:40 UTC (rev
411)
+++ trunk/MYODBCDriver/MYODBCDriverLib/SQLGetFunctions.cpp	2006-06-28 11:16:10 UTC (rev
412)
@@ -105,7 +105,7 @@
     SQL_API_SQLDRIVERCONNECT,
 /*  SQL_API_SQLDRIVERS,             DM  */
 /*  SQL_API_SQLEXTENDEDFETCH,       Dep */
-/*  SQL_API_SQLFOREIGNKEYS,             */
+    SQL_API_SQLFOREIGNKEYS,
 /*  SQL_API_SQLMORERESULTS,             */
     SQL_API_SQLNATIVESQL,
     SQL_API_SQLNUMPARAMS,

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-06-28 11:01:40 UTC (rev 411)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-06-28 11:16:10 UTC (rev 412)
@@ -2427,7 +2427,7 @@
     MYODBCDbgReturn( SQL_ERROR );
 }
 
-SQLRETURN MStatement::doForeignKeys( SQLWCHAR *psPKCatalogName, SQLSMALLINT nNameLength1,
SQLWCHAR *psPKSchemaName, SQLSMALLINT nNameLength2, SQLWCHAR *psPKTableName, SQLSMALLINT
nNameLength3, SQLWCHAR *psFKCatalogName, SQLSMALLINT nNameLength4, SQLWCHAR
*psFKSchemaName, SQLSMALLINT nNameLength5, SQLWCHAR *psFKTableName, SQLSMALLINT
nNameLength6 )
+SQLRETURN MStatement::doForeignKeys( SQLWCHAR *psPKCatalog, SQLSMALLINT nLength1,
SQLWCHAR *psPKSchema, SQLSMALLINT nLength2, SQLWCHAR *psPKTable, SQLSMALLINT nLength3,
SQLWCHAR *psFKCatalog, SQLSMALLINT nLength4, SQLWCHAR *psFKSchema, SQLSMALLINT nLength5,
SQLWCHAR *psFKTable, SQLSMALLINT nLength6 )
 {
     MYODBCDbgEnter();
 
@@ -2438,7 +2438,105 @@
     */
     getDiagnostic()->doClear();
 
-    MYODBCDbgReturn( SQL_ERROR );
+    /*!
+        \internal ODBC RULE (DM)
+
+        A cursor was open on the StatementHandle, and SQLFetch or 
+        SQLFetchScroll had been called.
+    */
+    if ( getState() == STATE_S6 )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_24000 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        A cursor was open on the StatementHandle, but SQLFetch or SQLFetchScroll 
+        had not been called.
+    */
+    if ( getState() == STATE_S5 )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_24000 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        An asynchronously executing function was called for the 
+        StatementHandle and was still executing when this function 
+        was called.
+    */
+    if ( isAsyncInProgress() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was 
+        called for the StatementHandle and returned SQL_NEED_DATA. 
+        This function was called before data was sent for all 
+        data-at-execution parameters or columns.
+    */
+    if ( isDataNeeded() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        The value of one of the length arguments was less than 0 but 
+        not equal to SQL_NTS.
+    */
+    if ( nLength1 < 0 && nLength1 != SQL_NTS )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength2 < 0 && nLength2 != SQL_NTS )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength3 < 0 && nLength3 != SQL_NTS )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength4 < 0 && nLength4 != SQL_NTS )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength5 < 0 && nLength5 != SQL_NTS )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength6 < 0 && nLength6 != SQL_NTS )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        The value of one of the name length arguments exceeded the maximum length 
+        value for the corresponding name.
+    */
+    if ( nLength1 > getConnection()->getInfoMaxCatalogNameLen() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength2 > getConnection()->getInfoMaxSchemaNameLen() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength3 > getConnection()->getInfoMaxTableNameLen() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength4 > getConnection()->getInfoMaxCatalogNameLen() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength5 > getConnection()->getInfoMaxSchemaNameLen() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+    if ( nLength6 > getConnection()->getInfoMaxTableNameLen() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+
+    /* do it */
+    QString stringPKCatalog;
+    QString stringPKSchema;
+    QString stringPKTable;
+    QString stringFKCatalog;
+    QString stringFKSchema;
+    QString stringFKTable;
+
+    if ( psPKCatalog && nLength1 != 0 )
+        stringPKCatalog = QString::fromUtf16( psPKCatalog, ( nLength1 == SQL_NTS ? -1 :
nLength1 ) );
+    if ( psPKSchema && nLength2 != 0  )
+        stringPKSchema = QString::fromUtf16( psPKSchema, ( nLength2 == SQL_NTS ? -1 :
nLength2 ) );
+    if ( psPKTable && nLength3 != 0  )
+        stringPKTable = QString::fromUtf16( psPKTable, ( nLength3 == SQL_NTS ? -1 :
nLength3 ) );
+    if ( psFKCatalog && nLength4 != 0 )
+        stringFKCatalog = QString::fromUtf16( psFKCatalog, ( nLength4 == SQL_NTS ? -1 :
nLength4 ) );
+    if ( psFKSchema && nLength5 != 0  )
+        stringFKSchema = QString::fromUtf16( psFKSchema, ( nLength5 == SQL_NTS ? -1 :
nLength5 ) );
+    if ( psFKTable && nLength6 != 0  )
+        stringFKTable = QString::fromUtf16( psFKTable, ( nLength6 == SQL_NTS ? -1 :
nLength6 ) );
+
+    MYODBCDbgReturn( SQL_SUCCESS );
 }
 
 SQLRETURN MStatement::doFreeStmt( SQLUSMALLINT nOption )

Thread
Connector/ODBC 5 commit: r412 - in trunk: MYODBCDriver/MYODBCDriverLib MYSQLPlus/MYSQLPlusLibpharvey28 Jun