From: pharvey Date: May 3 2006 7:15am Subject: Connector/ODBC 5 commit: r184 - MYSQLPlus/MYSQLPlusLib doc/Project List-Archive: http://lists.mysql.com/commits/5852 Message-Id: <200605030715.k437FHoO005430@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified: MYSQLPlus/MYSQLPlusLib/MConnection.cpp doc/Project/SituationReport-20060505.ods Log: Modified: MYSQLPlus/MYSQLPlusLib/MConnection.cpp =================================================================== --- MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-05-03 07:07:35 UTC (rev 183) +++ MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-05-03 07:15:17 UTC (rev 184) @@ -159,8 +159,34 @@ break; case SQL_ATTR_CURRENT_CATALOG: + /*! + \internal MYODBC RULE + + We mst have a the length at pValue. + */ + if ( nBufferLength < 1 ) + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY090 ) ); + + /* copy string */ if ( pValue ) - MYODBCCStrCopyOut( pszChar, nBufferLength, pDbc->attr_current_catalog, pnLen ); + { + errno_t nError; + + if ( getCurrentCatalog().isNull() ) + { + MYODBCDbgReturn( SQL_NO_DATA ); + *pnLen = 0; + } + else if ( nError = MYODBCC::doStrNCpy( (SQLWCHAR*)pValue, nBufferLength / sizeof(SQLWCHAR), getCurrentCatalog().utf16() ) ) + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, nError, tr("doStrNCpy() failed.") ) ); + } + + /* copy len */ + *pnLen = getCurrentCatalog().length() * sizeof(SQLWCHAR); + + /* are we truncated */ + if ( *pnLen > nBufferLength ) + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_01004 ) ); break; case SQL_ATTR_LOGIN_TIMEOUT: @@ -200,9 +226,15 @@ break; case SQL_ATTR_TRACEFILE: + /*! + \internal MYODBC RULE + + We mst have a the length at pValue. + */ if ( nBufferLength < 1 ) MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY090 ) ); + /* copy string */ if ( pValue ) { errno_t nError; @@ -215,14 +247,44 @@ else if ( nError = MYODBCC::doStrNCpy( (SQLWCHAR*)pValue, nBufferLength / sizeof(SQLWCHAR), getTracefile().utf16() ) ) MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, nError, tr("doStrNCpy() failed.") ) ); } + + /* copy len */ *pnLen = getTracefile().length() * sizeof(SQLWCHAR); + + /* are we truncated */ if ( *pnLen > nBufferLength ) - MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO ); + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_01004 ) ); break; case SQL_ATTR_TRANSLATE_LIB: + /*! + \internal MYODBC RULE + + We mst have a the length at pValue. + */ + if ( nBufferLength < 1 ) + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY090 ) ); + + /* copy string */ if ( pValue ) - MYODBCCStrCopyOut( pszChar, nBufferLength, pDbc->attr_translate_lib, pnLen ); + { + errno_t nError; + + if ( getTranslateLib().isNull() ) + { + MYODBCDbgReturn( SQL_NO_DATA ); + *pnLen = 0; + } + else if ( nError = MYODBCC::doStrNCpy( (SQLWCHAR*)pValue, nBufferLength / sizeof(SQLWCHAR), getTranslateLib().utf16() ) ) + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY000, nError, tr("doStrNCpy() failed.") ) ); + } + + /* copy len */ + *pnLen = getTranslateLib().length() * sizeof(SQLWCHAR); + + /* are we truncated */ + if ( *pnLen > nBufferLength ) + MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_01004 ) ); break; case SQL_ATTR_TRANSLATE_OPTION: @@ -230,6 +292,7 @@ *((SQLINTEGER*)pValue) = (SQLINTEGER)getTranslateOption(); *pnLen = SQL_IS_INTEGER ; break; + case SQL_ATTR_TXN_ISOLATION: if ( pValue ) *((SQLINTEGER*)pValue) = (SQLINTEGER)getTxnIsolation(); Modified: doc/Project/SituationReport-20060505.ods =================================================================== (Binary files differ)