Modified:
MYODBCC/MYODBCCLib/MYODBCC.cpp
MYODBCC/include/MYODBCC.h
MYSQLPlus/MYSQLPlusLib/MConnection.cpp
MYSQLPlus/include/MConnection.h
Log:
Modified: MYODBCC/MYODBCCLib/MYODBCC.cpp
===================================================================
--- MYODBCC/MYODBCCLib/MYODBCC.cpp 2006-05-28 16:04:54 UTC (rev 281)
+++ MYODBCC/MYODBCCLib/MYODBCC.cpp 2006-05-28 17:35:19 UTC (rev 282)
@@ -1436,43 +1436,48 @@
1. the dest string is always null terminated (unless buffer is not
provided)
2. considers truncation
+ 3. optionally returns the number of chars (not bytes) in pszSrc
+ \param pszDest The target buffer.
+ \param nDestMaxChars The max chars we can hold in pszDest (inlcuding null
terminator)
+ \param pszSrc The source string. This must be null terminated.
+ \param pnSrcLenCharsPtr Optional buffer to return the string length (in
chars) of pszSrc.
+
\return BOOLEAN
\retval true Copy completed with no warnings/errors
false Copy completed but result was truncated due to lack of space in
dest buffer
*/
-BOOLEAN MYODBCC::doStringCopyOut( SQLWCHAR *pszDest, SQLINTEGER nDestMaxChars, SQLWCHAR
*pszSrc )
+BOOLEAN MYODBCC::doStringCopyOut( SQLWCHAR *pszDest, SQLINTEGER nDestMaxChars, SQLWCHAR
*pszSrc, SQLINTEGER *pnSrcLenCharsPtr )
{
- SQLINTEGER nIndex = 0;
+ SQLINTEGER nSrcLenChars = 0;
+ SQLINTEGER *pnSrcLenChars = pnSrcLenCharsPtr;
- /* sanity checks */
- if ( !pszDest || nDestMaxChars < 1 )
- {
- if ( *pszSrc )
- return false;
- return true;
- }
+ if ( !pnSrcLenCharsPtr )
+ pnSrcLenChars = &nSrcLenChars;
if ( !pszSrc )
{
- *pszDest = '\0';
- return true; /* ok - but nothing to copy */
+ if ( pszDest && nDestMaxChars > 0 )
+ *pszDest = '\0';
+
+ return true;
}
- /* copy chars while room in pszDest or end of pszSrc */
- for ( nIndex = 0; nIndex < nDestMaxChars; nIndex++ )
+ *pnSrcLenChars = wcslen( pszSrc );
+
+ if ( !pszDest || nDestMaxChars < 1 )
+ return false;
+
+ wcsncpy( pszDest, pszSrc, min( nDestMaxChars, *pnSrcLenChars ) );
+
+ if ( *pnSrcLenChars >= nDestMaxChars )
{
- pszDest[nIndex] = pszSrc[nIndex];
- if ( pszSrc[nIndex] == '\0' )
- return true;
+ pszDest[nDestMaxChars - 1] = '\0';
+ return false;
}
- /* pszDest full - ensure last char is null terminator */
- pszDest[nIndex-1] = '\0';
-
- /* results are truncated */
- return false;
+ return true;
}
Modified: MYODBCC/include/MYODBCC.h
===================================================================
--- MYODBCC/include/MYODBCC.h 2006-05-28 16:04:54 UTC (rev 281)
+++ MYODBCC/include/MYODBCC.h 2006-05-28 17:35:19 UTC (rev 282)
@@ -242,9 +242,9 @@
static QString getIntervalCodeString( SQLSMALLINT nCode );
static QString getInstallerErrorString( RETCODE nRetCode );
- static void * doMemCpy( void *pDest, const void *pSrc, size_t nBytes );
+ static void * doMemCpy( void *pDest, const void *pSrc, size_t nBytes );
static BOOLEAN doStringCopyOut( SQLCHAR *pszDest, SQLINTEGER nDestMaxChars, SQLCHAR
*pszSrc );
- static BOOLEAN doStringCopyOut( SQLWCHAR *pszDest, SQLINTEGER nDestMaxChars, SQLWCHAR
*pszSrc );
+ static BOOLEAN doStringCopyOut( SQLWCHAR *pszDest, SQLINTEGER nDestMaxChars, SQLWCHAR
*pszSrc, SQLINTEGER *pnSrcLenChars = NULL );
static void doFree( void *p );
static BOOLEAN isConnectAttr( SQLINTEGER nAttribute );
Modified: MYSQLPlus/MYSQLPlusLib/MConnection.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-05-28 16:04:54 UTC (rev 281)
+++ MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-05-28 17:35:19 UTC (rev 282)
@@ -448,88 +448,81 @@
MYODBCDbgReturn( pDiagnostic->getDiagRec( nRecNumber, psSQLState, pnNativeError,
psMessageText, nBufferLength, pnTextLength ) )
}
-SQLRETURN MConnection::getInfo( SQLUSMALLINT nInfoType, SQLPOINTER pInfoValuePtr,
SQLSMALLINT nBufferLength, SQLSMALLINT *pnStringLengthPtr )
+SQLRETURN MConnection::getInfo( SQLUSMALLINT nInfoType, SQLPOINTER pInfoValue,
SQLSMALLINT nBufferLength /* bytes */, SQLSMALLINT *pnStringLengthBytesPtr )
{
MYODBCDbgEnter();
+ /* cast here to make code below a little cleaner */
+ SQLUSMALLINT * pnSQLUSMALLINT = (SQLUSMALLINT *)pInfoValue;
+ SQLUINTEGER * pnSQLUINTEGER = (SQLUINTEGER *)pInfoValue;
+ SQLWCHAR * pszSQLWCHAR = (SQLWCHAR *)pInfoValue;
+ SQLSMALLINT * pnSQLSMALLINT = (SQLSMALLINT *)pInfoValue;
+ /* pnStringLengthBytes is optional so provide dummy to make code below a little
cleaner */
+ SQLSMALLINT nStringLengthBytes;
+ SQLSMALLINT * pnStringLengthBytes = pnStringLengthBytesPtr;
+ SQLINTEGER nStringLengthChars;
+ BOOLEAN bCopyOk;
+
/*!
\internal ODBC RULE
We clear diagnostic each time an ODBC API call is made (with exceptions).
*/
- pDiagnostic->doClear();
+ getDiagnostic()->doClear();
- MYODBC_DRV_DBC_PTR pDbc = (MYODBC_DRV_DBC_PTR)hDbc;
- /* cast here to make code below a little cleaner */
- SQLUSMALLINT * pnSQLUSMALLINT = (SQLUSMALLINT *)pInfoValuePtr;
- SQLUINTEGER * pnSQLUINTEGER = (SQLUINTEGER *)pInfoValuePtr;
- SQLCHAR * pszSQLCHAR = (SQLCHAR *)pInfoValuePtr;
- SQLSMALLINT * pnSQLSMALLINT = pnStringLengthPtr;
- /* pnStringLengthPtr is optional so provide dummy to make code below a little cleaner
*/
- SQLSMALLINT nStringLength;
- SQLSMALLINT * pnStringLength = pnStringLengthPtr;
+ /*!
+ \internal ODBC RULE (DM)
- MYODBCDbgEnter( "SQLGetInfo" );
-#if MYODBC_DBG > 1
- MYODBCDbgPrint2( "\thDbc=%p\n", hDbc );
- MYODBCDbgPrint2( "\tnInfoType=%d", nInfoType );
- MYODBCDbgPrint2( " %s\n", MYODBCDbgInfoTypeString( nInfoType ) );
- MYODBCDbgPrint2( "\tpInfoValuePtr=%p\n", pInfoValuePtr );
- MYODBCDbgPrint2( "\tnBufferLength=%d\n", nBufferLength );
- MYODBCDbgPrint2( "\tpnStringLengthPtr=%p\n", pnStringLengthPtr );
-#endif
+ The value specified for argument BufferLength was less than 0.
+ */
+ if ( nBufferLength < 0 )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
-#if MYODBC_DEV > 0
- /* sanity check on args as we are an entry point */
- if ( !hDbc )
- MYODBCDbgReturn( SQL_INVALID_HANDLE );
- if ( MYODBCRttiType( hDbc ) != MYODBC_RTTI_DBC )
- MYODBCDbgReturn( SQL_INVALID_HANDLE );
-#endif
-
- /* delete any pending messages for handle */
- MYODBCDiaClear( pDbc->hDia );
-
/*!
- \internal ODBC Rule
+ \internal ODBC RULE (DM)
- (DM) The value specified for argument BufferLength was less than 0.
+ If *InfoValuePtr is a Unicode string (when calling SQLGetInfoW), the BufferLength
argument must be
+ an even number; if not, SQLSTATE HY090 (Invalid string or buffer length) is
returned.
*/
- if ( nBufferLength < 0 )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_HY090, 0, NULL ) );
+ if ( nBufferLength )
+ {
+ double nInteger;
+ if ( modf( nBufferLength, &nInteger ) != 0 )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY090 ) );
+ }
/*!
- \internal MYODBC Rule
+ \internal MYODBC RULE
- We DO NOT consider pInfoValuePtr to be optional.
+ We DO NOT consider pInfoValue to be optional.
*/
- if ( !pInfoValuePtr )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_HY000, 0, NULL ) );
+ if ( !pInfoValue )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("buffer, to return value, must be provided") ) );
/*!
- \internal MYODBC Rule
+ \internal MYODBC RULE
- The following ODBC Rule makes pnStringLengthPtr optional.
+ The following ODBC Rule makes pnStringLength optional.
*/
/*!
- \internal ODBC Rule
+ \internal ODBC RULE
For all other types (other than string) of data, the value of BufferLength is
ignored
and the driver assumes the size of *InfoValuePtr is SQLUSMALLINT or SQLUINTEGER,
depending
on the InfoType.
*/
- if ( !pnStringLengthPtr )
- pnStringLength = &nStringLength;
+ if ( !pnStringLengthBytesPtr )
+ pnStringLengthBytes = &nStringLengthBytesPtr;
/*!
- \internal ODBC Rule
+ \internal ODBC RULE (DM)
- (DM) The type of information requested in InfoType requires an open connection.
Of the
+ The type of information requested in InfoType requires an open connection. Of the
information types reserved by ODBC, only SQL_ODBC_VER can be returned without an
open
connection.
*/
- if ( pDbc->nState < MYODBC_DRV_STATE_C4 && (nInfoType != SQL_ODBC_VER
&& nInfoType != SQL_DRIVER_ODBC_VER) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_08003, 0, NULL ) );
+ if ( getState() < STATE_C4 && (nInfoType != SQL_ODBC_VER &&
nInfoType != SQL_DRIVER_ODBC_VER) )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_08003 ) );
/*!
\todo
@@ -558,12 +551,16 @@
case 30002:
break;
case SQL_ACCESSIBLE_PROCEDURES:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "Y",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"Y", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_ACCESSIBLE_TABLES:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "Y",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"Y", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_ACTIVE_ENVIRONMENTS:
*pnSQLUSMALLINT = 0;
@@ -606,16 +603,22 @@
*pnSQLUSMALLINT = SQL_CL_START;
break;
case SQL_CATALOG_NAME:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "Y",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"Y", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_CATALOG_NAME_SEPARATOR:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, ".",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L".", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_CATALOG_TERM:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "database",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"database", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_CATALOG_USAGE:
*pnSQLUINTEGER = (SQL_CU_DML_STATEMENTS |
@@ -625,12 +628,16 @@
SQL_CU_PRIVILEGE_DEFINITION);
break;
case SQL_COLLATION_SEQ:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_COLUMN_ALIAS:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "Y",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"Y", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_CONCAT_NULL_BEHAVIOR:
*pnSQLUSMALLINT = SQL_CB_NULL;
@@ -791,18 +798,24 @@
case SQL_DATA_SOURCE_NAME:
if ( pDbc->pszDataSourceName )
{
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength,
pDbc->pszDataSourceName, (SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), pDbc->pszDataSourceName, &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004
) );
}
else
{
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004
) );
}
break;
case SQL_DATA_SOURCE_READ_ONLY:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "N",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"N", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DATABASE_NAME:
{
@@ -827,13 +840,17 @@
/* return the current catalog */
if ( pDbc->attr_current_catalog )
{
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength,
pDbc->attr_current_catalog, (SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia,
MYODBC_DIA_01004, 0, NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), pDbc->attr_current_catalog, &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
}
else
{
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia,
MYODBC_DIA_01004, 0, NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
}
}
break;
@@ -843,12 +860,16 @@
SQL_DL_SQL92_TIMESTAMP);
break;
case SQL_DBMS_NAME:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "MySQL",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"MySQL", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DBMS_VER:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength,
pDbc->pMySQL->server_version, (SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), pDbc->pMySQL->server_version, &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DDL_INDEX:
*pnSQLUINTEGER = (SQL_DI_CREATE_INDEX | SQL_DI_DROP_INDEX);
@@ -857,8 +878,10 @@
*pnSQLUINTEGER = SQL_TXN_READ_COMMITTED;
break;
case SQL_DESCRIBE_PARAMETER:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "N",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"N", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DM_VER:
/*!
@@ -868,8 +891,10 @@
us directly. I suppose that someone could even use us as a replacement
for
a DM (say on a lean machine). So lets fake it. Applications mileage may
vary.
*/
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, (SQL_SPEC_STRING
".0000.0000"), (SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L(SQL_SPEC_STRING ".0000.0000"), &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DRIVER_HDBC:
/*!
@@ -902,9 +927,9 @@
(DM) The InfoType argument was SQL_DRIVER_HDESC, and the value pointed to
by
InfoValuePtr was not a valid descriptor handle.
*/
- if ( !pInfoValuePtr || MYODBCRttiType( pInfoValuePtr ) != MYODBC_RTTI_DES )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_HY024, 0,
NULL ) );
- *pnSQLUINTEGER = (SQLUINTEGER)pInfoValuePtr;
+ if ( !pInfoValue || MYODBCRttiType( pInfoValue ) != MYODBC_RTTI_DES )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY024 )
);
+ *pnSQLUINTEGER = (SQLUINTEGER)pInfoValue;
break;
case SQL_DRIVER_HLIB:
/*!
@@ -918,7 +943,7 @@
We can get this (see dll.c in 3.51 driver).
*/
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_HYC00, 0, NULL )
);
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HYC00 ) );
break;
case SQL_DRIVER_HSTMT:
/*!
@@ -933,21 +958,27 @@
(DM) The InfoType argument was SQL_DRIVER_HSTMT, and the value pointed to
by
InfoValuePtr was not a valid statement handle.
*/
- if ( !pInfoValuePtr || MYODBCRttiType( pInfoValuePtr ) != MYODBC_RTTI_STM )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_HY024, 0,
NULL ) );
- *pnSQLUINTEGER = (SQLUINTEGER)pInfoValuePtr;
+ if ( !pInfoValue || MYODBCRttiType( pInfoValue ) != MYODBC_RTTI_STM )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY024 )
);
+ *pnSQLUINTEGER = (SQLUINTEGER)pInfoValue;
break;
case SQL_DRIVER_NAME:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, MYODBC_DRIVER_NAME,
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength,
MYODBC_DRIVER_NAME, &nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DRIVER_ODBC_VER:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength,
MYODBC_DRIVER_ODBC_VER, (SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength,
MYODBC_DRIVER_ODBC_VER, &nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DRIVER_VER:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, MYODBC_DRIVER_VER,
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength,
MYODBC_DRIVER_VER, &nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_DROP_ASSERTION:
case SQL_DROP_CHARACTER_SET:
@@ -992,8 +1023,10 @@
SQL_CA2_SIMULATE_TRY_UNIQUE);
break;
case SQL_EXPRESSIONS_IN_ORDERBY:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "Y",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"Y",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_FETCH_DIRECTION: /* for compat. with 2.x */
*pnSQLUINTEGER = (SQL_FD_FETCH_NEXT |
@@ -1038,8 +1071,10 @@
*pnSQLUSMALLINT = SQL_IC_MIXED;
break;
case SQL_IDENTIFIER_QUOTE_CHAR:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "`",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"`",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_INDEX_KEYWORDS:
*pnSQLUINTEGER = SQL_IK_NONE;
@@ -1053,20 +1088,26 @@
SQL_IS_SELECT_INTO);
break;
case SQL_INTEGRITY:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "N",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"N",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_KEYSET_CURSOR_ATTRIBUTES1:
case SQL_KEYSET_CURSOR_ATTRIBUTES2:
*pnSQLUINTEGER = 0L;
break;
case SQL_KEYWORDS:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, MYODBC_DRV_KEYWORDS,
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength,
MYODBC_DRV_KEYWORDS, &nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_LIKE_ESCAPE_CLAUSE:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "Y",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"Y",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_LOCK_TYPES: /* for compat with 2.x */
case SQL_MAX_ASYNC_CONCURRENT_STATEMENTS:
@@ -1111,8 +1152,10 @@
*pnSQLUINTEGER = 0L;
break;
case SQL_MAX_ROW_SIZE_INCLUDES_LONG:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "Y",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"Y",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_MAX_SCHEMA_NAME_LEN:
*pnSQLUSMALLINT = NAME_LEN;
@@ -1131,12 +1174,16 @@
break;
case SQL_MULT_RESULT_SETS:
case SQL_MULTIPLE_ACTIVE_TXN:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "Y",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"Y",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_NEED_LONG_DATA_LEN:
- if ( !MYODBCCStrCopyOut( pInfoValuePtr, nBufferLength, "N",
(SQLINTEGER*)pnStringLengthPtr ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pInfoValue, nBufferLength, L"N",
&nStringLengthCharsPtr ) )
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_NON_NULLABLE_COLUMNS:
*pnSQLUSMALLINT = SQL_NNC_NON_NULL;
@@ -1194,8 +1241,10 @@
are the major version and the next two digits are the minor version. This
is implemented solely in the Driver Manager.
*/
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, (SQL_SPEC_STRING
".0000"), (SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L(SQL_SPEC_STRING ".0000"), &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_OJ_CAPABILITIES:
*pnSQLUINTEGER = (SQL_OJ_LEFT |
@@ -1206,8 +1255,10 @@
SQL_OJ_RIGHT);
break;
case SQL_ORDER_BY_COLUMNS_IN_SELECT:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "Y",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"Y", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_PARAM_ARRAY_ROW_COUNTS:
*pnSQLUINTEGER = SQL_PARC_NO_BATCH;
@@ -1216,12 +1267,16 @@
*pnSQLUINTEGER = SQL_PAS_NO_SELECT;
break;
case SQL_PROCEDURE_TERM:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "procedure",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"procedure", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_PROCEDURES:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "Y",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"Y", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_POS_OPERATIONS:
*pnSQLUINTEGER = (SQL_POS_POSITION |
@@ -1238,12 +1293,16 @@
*pnSQLUSMALLINT = SQL_IC_SENSITIVE;
break;
case SQL_ROW_UPDATES:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "N",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"N", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_SCHEMA_TERM:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "schema",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"schema", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_SCHEMA_USAGE:
*pnSQLUINTEGER = 0L;
@@ -1259,16 +1318,22 @@
SQL_SO_DYNAMIC);
break;
case SQL_SEARCH_PATTERN_ESCAPE:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "\\",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"\\", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_SERVER_NAME:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength,
pDbc->pMySQL->host_info, (SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), pDbc->pMySQL->host_info, &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_SPECIAL_CHARACTERS:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, MYODBC_DRV_VALID_CHARS,
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), MYODBC_DRV_VALID_CHARS, &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_SQL_CONFORMANCE:
*pnSQLUINTEGER = SQL_SC_SQL92_INTERMEDIATE;
@@ -1388,8 +1453,10 @@
SQL_FN_SYS_USERNAME);
break;
case SQL_TABLE_TERM:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "table",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"table", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_TIMEDATE_ADD_INTERVALS:
case SQL_TIMEDATE_DIFF_INTERVALS:
@@ -1433,21 +1500,27 @@
case SQL_USER_NAME:
if ( pDbc->pszUser )
{
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, pDbc->pszUser,
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), pDbc->pszUser, &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004
) );
}
else
{
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004
) );
}
break;
case SQL_XOPEN_CLI_YEAR:
- if ( !MYODBCCStrCopyOut( pszSQLCHAR, nBufferLength, "1992",
(SQLINTEGER*)pnStringLength ) )
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_01004, 0,
NULL ) );
+ bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"1992", &nStringLengthChars );
+ *pnStringLengthBytes = nStringLengthChars * sizeof(SQLWCHAR);
+ if ( !bCopyOk )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
default:
- MYODBCDbgReturn( MYODBCDiaAppend( pDbc->hDia, MYODBC_DIA_HYC00, 0, NULL )
);
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HYC00 ) );
}
MYODBCDbgReturn( SQL_SUCCESS );
Modified: MYSQLPlus/include/MConnection.h
===================================================================
--- MYSQLPlus/include/MConnection.h 2006-05-28 16:04:54 UTC (rev 281)
+++ MYSQLPlus/include/MConnection.h 2006-05-28 17:35:19 UTC (rev 282)
@@ -37,7 +37,7 @@
SQLRETURN getConnectAttr( SQLINTEGER nAttribute, SQLPOINTER pValuePtr, SQLINTEGER
nBufferLength, SQLINTEGER *pnStringLengthPtr );
SQLRETURN getDiagField( SQLSMALLINT nRecNumber, SQLSMALLINT nDiagIdentifier,
SQLPOINTER pDiagInfoPtr, SQLSMALLINT nBufferLength, SQLSMALLINT *pnStringLengthPtr );
SQLRETURN getDiagRec( SQLSMALLINT nRecNumber, SQLWCHAR *psSQLState, SQLINTEGER
*pnNativeErrorPtr, SQLWCHAR *psMessageText, SQLSMALLINT nBufferLength, SQLSMALLINT
*pnTextLengthPtr );
- SQLRETURN getInfo( SQLUSMALLINT nInfoType, SQLPOINTER pInfoValuePtr, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr );
+ SQLRETURN getInfo( SQLUSMALLINT nInfoType, SQLPOINTER pInfoValue, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLength );
STATE getState();
STATEMENT_TYPE getStatementType();
| Thread |
|---|
| • Connector/ODBC 5 commit: r282 - MYODBCC/MYODBCCLib MYODBCC/include MYSQLPlus/MYSQLPlusLib MYSQLPlus/include | pharvey | 28 May |