List:Commits« Previous MessageNext Message »
From:Jess Balint Date:November 7 2006 3:42pm
Subject:Re: Connector/ODBC 5 commit: r657 - in trunk: Driver/Driver/Tests SDK/MYSQLPlus/Library
View as plain text  
Looks ok, but why change the name of MResultSetData? seemed more
consistent with other stuff as getdata and setdata

On Tue, Nov 07, 2006 at 01:18:38PM +0100, pharvey@stripped wrote:
> Modified:
>    trunk/Driver/Driver/Tests/MYODBCDriverTest.h
>    trunk/Driver/Driver/Tests/TSTDriverConnect.c
>    trunk/SDK/MYSQLPlus/Library/MCommand.cpp
>    trunk/SDK/MYSQLPlus/Library/MResult.cpp
>    trunk/SDK/MYSQLPlus/Library/MResult.h
>    trunk/SDK/MYSQLPlus/Library/MResultRes.cpp
>    trunk/SDK/MYSQLPlus/Library/MStatement.cpp
> Log:
> FIX: Remove redundant test.
> WIP: Work to fully implement SQLBindParameter.
> ENH: Improved trace/log output.
> 
> Modified: trunk/Driver/Driver/Tests/MYODBCDriverTest.h
> ===================================================================
> --- trunk/Driver/Driver/Tests/MYODBCDriverTest.h	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/Driver/Driver/Tests/MYODBCDriverTest.h	2006-11-07 12:18:36 UTC (rev 657)
> @@ -78,7 +78,6 @@
>  /* for SQLDriverConnect */
>  #define MYODBC_DRV_TST_CONNECT
> _T("DSN=NorthwindMyODBC5;UID=myodbctest;PWD=myodbctest;")
>  #define MYODBC_DRV_TST_CONNECT2 _T("DRIVER=MySQL Connector/ODBC
> v5;DATABASE=Northwind;UID=myodbctest;PWD=myodbctest;")
> -#define MYODBC_DRV_TST_CONNECT3 _T("DRIVER={MySQL Connector/ODBC
> v5};server=localhost;uid=myodbctest;pwd=myodbctest;database=Northwind;OPTION=16384")
>  
>  #define MYODBC_DRV_TST_CATALOG _T("Northwind")
>  #define MYODBC_DRV_TST_MAX_LEN 1024
> 
> Modified: trunk/Driver/Driver/Tests/TSTDriverConnect.c
> ===================================================================
> --- trunk/Driver/Driver/Tests/TSTDriverConnect.c	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/Driver/Driver/Tests/TSTDriverConnect.c	2006-11-07 12:18:36 UTC (rev 657)
> @@ -56,14 +56,6 @@
>      }
>      if ( !TSTDisconnect() ) return FALSE;
>  
> -    /* connect with DRIVER (using {} in connect string)*/
> -    if ( !SQL_SUCCEEDED( MYODBCTstDriverConnect( hDbc, NULL,
> MYODBC_DRV_TST_CONNECT3, SQL_NTS, NULL, 0, 0, SQL_DRIVER_NOPROMPT ) ) )
> -    {
> -        MYODBCTstFilePrint( stderr, _T("[%s][%d]Failed to connect using [%s].\n"),
> _T(__FILE__), __LINE__, MYODBC_DRV_TST_CONNECT3 );
> -        return FALSE;
> -    }
> -    if ( !TSTDisconnect() ) return FALSE;
> -
>      return TRUE;
>  }
>  
> 
> Modified: trunk/SDK/MYSQLPlus/Library/MCommand.cpp
> ===================================================================
> --- trunk/SDK/MYSQLPlus/Library/MCommand.cpp	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/SDK/MYSQLPlus/Library/MCommand.cpp	2006-11-07 12:18:36 UTC (rev 657)
> @@ -200,7 +200,7 @@
>  {
>      MYODBCDbgEnter();
>  
> -    MYODBCDbgReturn3( "%s", stringCommand );
> +    MYODBCDbgReturn1( stringCommand );
>  }
>  
>  /*!
> 
> Modified: trunk/SDK/MYSQLPlus/Library/MResult.cpp
> ===================================================================
> --- trunk/SDK/MYSQLPlus/Library/MResult.cpp	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/SDK/MYSQLPlus/Library/MResult.cpp	2006-11-07 12:18:36 UTC (rev 657)
> @@ -68,7 +68,7 @@
>      MYODBCDbgReturn3( "%d", false );
>  }
>  
> -MResultSetData::MResultSetData()
> +MResultPutData::MResultPutData()
>  {
>      MYODBCDbgEnter();
>  
> @@ -77,7 +77,7 @@
>      MYODBCDbgReturn2();
>  }
>  
> -void MResultSetData::doClear()
> +void MResultPutData::doClear()
>  {
>      MYODBCDbgEnter();
>  
> @@ -3695,22 +3695,26 @@
>      MYODBCDbgReturn( SQL_ERROR );
>  }
>  
> -SQLRETURN MResult::fromC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    if ( !pResultSetData->pDescriptorRecordAPD->getDataPtr() )
> +#if MYODBC_DBG > 1
> +    MYODBCDbgInfo( QString( "APD::SQL_DESC_DATA_PTR=%1" ).arg( (unsigned
> long)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
> +#endif
> +
> +    if ( !pResultPutData->pDescriptorRecordAPD->getDataPtr() )
>      {
>          /* for the moment we are assuming we are being used to create an SQL
> statement */
> -        pResultSetData->variantData.setValue( QString( "NULL" ) );
> +        pResultPutData->variantData.setValue( QString( "NULL" ) );
>          MYODBCDbgReturn( SQL_SUCCESS );
>      }
>  
> -    switch ( pResultSetData->pDescriptorRecordAPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordAPD->getConciseType() )
>      {
>          case SQL_C_CHAR:
>          case SQL_C_WCHAR:
> -            MYODBCDbgReturn( fromCharacterC( pResultSetData ) );
> +            MYODBCDbgReturn( fromCharacterC( pResultPutData ) );
>          case SQL_C_STINYINT:
>          case SQL_C_UTINYINT:
>          case SQL_C_TINYINT:
> @@ -3725,26 +3729,26 @@
>          case SQL_C_SBIGINT:
>          case SQL_C_UBIGINT:
>          case SQL_C_NUMERIC:
> -            MYODBCDbgReturn( fromNumericC( pResultSetData ) );
> +            MYODBCDbgReturn( fromNumericC( pResultPutData ) );
>          case SQL_C_BIT:
> -            MYODBCDbgReturn( fromBitC( pResultSetData ) );
> +            MYODBCDbgReturn( fromBitC( pResultPutData ) );
>          case SQL_C_BINARY:
> -            MYODBCDbgReturn( fromBinaryC( pResultSetData ) );
> +            MYODBCDbgReturn( fromBinaryC( pResultPutData ) );
>          case SQL_C_GUID:
> -            MYODBCDbgReturn( fromGuidC( pResultSetData ) );
> +            MYODBCDbgReturn( fromGuidC( pResultPutData ) );
>          case SQL_C_TYPE_DATE:
>          case SQL_C_DATE:        /* ODBC v2 - should already be validated */
> -            MYODBCDbgReturn( fromDateC( pResultSetData ) );
> +            MYODBCDbgReturn( fromDateC( pResultPutData ) );
>          case SQL_C_TYPE_TIME:
>          case SQL_C_TIME:        /* ODBC v2 - should already be validated */
> -            MYODBCDbgReturn( fromTimeC( pResultSetData ) );
> +            MYODBCDbgReturn( fromTimeC( pResultPutData ) );
>          case SQL_C_TYPE_TIMESTAMP:
>          case SQL_C_TIMESTAMP:   /* ODBC v2 - should already be validated */
> -            MYODBCDbgReturn( fromTimeStampC( pResultSetData ) );
> +            MYODBCDbgReturn( fromTimeStampC( pResultPutData ) );
>          case SQL_C_INTERVAL_MONTH:
>          case SQL_C_INTERVAL_YEAR:
>          case SQL_C_INTERVAL_YEAR_TO_MONTH:
> -            MYODBCDbgReturn( fromIntervalYearMonthC( pResultSetData ) );
> +            MYODBCDbgReturn( fromIntervalYearMonthC( pResultPutData ) );
>          case SQL_C_INTERVAL_DAY:
>          case SQL_C_INTERVAL_HOUR:
>          case SQL_C_INTERVAL_MINUTE:
> @@ -3755,14 +3759,14 @@
>          case SQL_C_INTERVAL_HOUR_TO_MINUTE:
>          case SQL_C_INTERVAL_HOUR_TO_SECOND:
>          case SQL_C_INTERVAL_MINUTE_TO_SECOND:
> -            MYODBCDbgReturn( fromIntervalDayTimeC( pResultSetData ) );
> +            MYODBCDbgReturn( fromIntervalDayTimeC( pResultPutData ) );
>          /* case SQL_C_DEFAULT: */
>      }
>  
> -    MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_HY000, 0,
> QString( tr("unknown C data type %1") ).arg(
> pResultSetData->pDescriptorRecordAPD->getConciseType() ) ) );
> +    MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_HY000, 0,
> QString( tr("unknown C data type %1") ).arg(
> pResultPutData->pDescriptorRecordAPD->getConciseType() ) ) );
>  }
>  
> -SQLRETURN MResult::fromCharacterC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromCharacterC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> @@ -3771,12 +3775,12 @@
>  
>          Incoming character data is always null terminated (so ignore OctetLength).  
>       
>      */
> -    if ( pResultSetData->pDescriptorRecordAPD->getConciseType() == SQL_C_WCHAR
> )
> -        pResultSetData->variantData.setValue( MYODBCC::QString_fromWCharArray(
> (SQLWCHAR*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +    if ( pResultPutData->pDescriptorRecordAPD->getConciseType() == SQL_C_WCHAR
> )
> +        pResultPutData->variantData.setValue( MYODBCC::QString_fromWCharArray(
> (SQLWCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>      else
> -        pResultSetData->variantData.setValue( QString::fromAscii(
> (char*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +        pResultPutData->variantData.setValue( QString::fromAscii(
> (char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -3784,7 +3788,7 @@
>          case SQL_WCHAR:
>          case SQL_WVARCHAR:
>          case SQL_WLONGVARCHAR:
> -            pResultSetData->variantData.setValue( "'" +
> pResultSetData->variantData.toString() + "'" );
> +            pResultPutData->variantData.setValue( "'" +
> pResultPutData->variantData.toString() + "'" );
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_DECIMAL:
>          case SQL_NUMERIC:
> @@ -3802,7 +3806,7 @@
>          case SQL_INTERVAL_HOUR:
>          case SQL_INTERVAL_MINUTE:
>          case SQL_INTERVAL_SECOND:
> -            if ( pResultSetData->variantData.convert( QVariant::LongLong ) )
> +            if ( pResultPutData->variantData.convert( QVariant::LongLong ) )
>                  MYODBCDbgReturn( SQL_SUCCESS );
>              break;
>      }
> @@ -3817,49 +3821,52 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromNumericC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromNumericC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
>      /* get number into variant */
> -    switch ( pResultSetData->pDescriptorRecordAPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordAPD->getConciseType() )
>      {
>          case SQL_C_TINYINT:
>          case SQL_C_STINYINT:
> -            pResultSetData->variantData.setValue(
> *((char*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +#if MYODBC_DBG > 1
> +            MYODBCDbgInfo( QString( "*APD::SQL_DESC_DATA_PTR=%1" ).arg( *(
> (char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) ) );
> +#endif
> +            pResultPutData->variantData.setValue( *(
> (char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_UTINYINT:
> -            pResultSetData->variantData.setValue(
> *((SQLCHAR*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_SHORT:
>          case SQL_C_SSHORT:
> -            pResultSetData->variantData.setValue(
> *((SQLSMALLINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLSMALLINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_USHORT:
> -            pResultSetData->variantData.setValue(
> *((SQLUSMALLINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLUSMALLINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_LONG:
>          case SQL_C_SLONG:
> -            pResultSetData->variantData.setValue(
> *((SQLINTEGER*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLINTEGER*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_ULONG:
> -            pResultSetData->variantData.setValue(
> *((SQLUINTEGER*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLUINTEGER*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_FLOAT:
> -            pResultSetData->variantData.setValue(
> *((SQLREAL*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLREAL*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_DOUBLE:
> -            pResultSetData->variantData.setValue(
> *((SQLDOUBLE*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLDOUBLE*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_SBIGINT:
> -            pResultSetData->variantData.setValue(
> *((SQLBIGINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLBIGINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_UBIGINT:
> -            pResultSetData->variantData.setValue(
> *((SQLUBIGINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
> +            pResultPutData->variantData.setValue( *(
> (SQLUBIGINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
>              break;
>          case SQL_C_NUMERIC:
>              {
> -                SQL_NUMERIC_STRUCT *pNumeric =
> (SQL_NUMERIC_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +                SQL_NUMERIC_STRUCT *pNumeric =
> (SQL_NUMERIC_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>                  char                szFormatBuffer[128];
>                  /*!
>                      \internal
> @@ -3875,7 +3882,7 @@
>      }
>  
>      /* touch up based upon the requested SQL type */
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -3883,9 +3890,9 @@
>          case SQL_WCHAR:
>          case SQL_WVARCHAR:
>          case SQL_WLONGVARCHAR:
> -            if ( !pResultSetData->variantData.convert( QVariant::String ) )
> +            if ( !pResultPutData->variantData.convert( QVariant::String ) )
>                  break;
> -            pResultSetData->variantData.setValue( "'" +
> pResultSetData->variantData.toString() + "'" );
> +            pResultPutData->variantData.setValue( "'" +
> pResultPutData->variantData.toString() + "'" );
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_DECIMAL:
>          case SQL_NUMERIC:
> @@ -3916,13 +3923,13 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromBitC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromBitC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    pResultSetData->variantData.setValue(
> *(SQLCHAR*)pResultSetData->pDescriptorRecordAPD->getDataPtr() );
> +    pResultPutData->variantData.setValue(
> *(SQLCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() );
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -3930,9 +3937,9 @@
>          case SQL_WCHAR:
>          case SQL_WVARCHAR:
>          case SQL_WLONGVARCHAR:
> -            if ( !pResultSetData->variantData.convert( QVariant::String ) )
> +            if ( !pResultPutData->variantData.convert( QVariant::String ) )
>                  break;
> -            pResultSetData->variantData.setValue( "'" +
> pResultSetData->variantData.toString() + "'" );
> +            pResultPutData->variantData.setValue( "'" +
> pResultPutData->variantData.toString() + "'" );
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_DECIMAL:
>          case SQL_NUMERIC:
> @@ -3957,13 +3964,13 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromBinaryC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromBinaryC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    pResultSetData->variantData.setValue( QByteArray(
> (char*)pResultSetData->pDescriptorRecordAPD->getDataPtr(),
> pResultSetData->pDescriptorRecordAPD->getOctetLength() ) );
> +    pResultPutData->variantData.setValue( QByteArray(
> (char*)pResultPutData->pDescriptorRecordAPD->getDataPtr(),
> pResultPutData->pDescriptorRecordAPD->getOctetLength() ) );
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -3971,9 +3978,9 @@
>          case SQL_WCHAR:
>          case SQL_WVARCHAR:
>          case SQL_WLONGVARCHAR:
> -            if ( !pResultSetData->variantData.convert( QVariant::String ) )
> +            if ( !pResultPutData->variantData.convert( QVariant::String ) )
>                  break;
> -            pResultSetData->variantData.setValue( "'" +
> pResultSetData->variantData.toString() + "'" );
> +            pResultPutData->variantData.setValue( "'" +
> pResultPutData->variantData.toString() + "'" );
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_DECIMAL:
>          case SQL_NUMERIC:
> @@ -3992,7 +3999,7 @@
>          case SQL_FLOAT:
>          case SQL_DOUBLE:
>          case SQL_BIT:
> -            if ( pResultSetData->variantData.convert( QVariant::LongLong ) )
> +            if ( pResultPutData->variantData.convert( QVariant::LongLong ) )
>                  MYODBCDbgReturn( SQL_SUCCESS );
>              break;
>          case SQL_TYPE_DATE:
> @@ -4007,9 +4014,9 @@
>                  We assume that these are NOT stored in SQL_*_STRUCT format but are
> instead
>                  stored in string format.
>              */
> -            if ( !pResultSetData->variantData.convert( QVariant::String ) )
> +            if ( !pResultPutData->variantData.convert( QVariant::String ) )
>                  break;
> -            pResultSetData->variantData.setValue( "'" +
> pResultSetData->variantData.toString() + "'" );
> +            pResultPutData->variantData.setValue( "'" +
> pResultPutData->variantData.toString() + "'" );
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_BINARY:
>          case SQL_VARBINARY:
> @@ -4027,14 +4034,14 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromDateC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromDateC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    SQL_DATE_STRUCT *   pDate =
> (SQL_DATE_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +    SQL_DATE_STRUCT *   pDate =
> (SQL_DATE_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>      char                szFormatBuffer[128];
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -4053,7 +4060,7 @@
>                       pDate->year,
>                       pDate->month,
>                       pDate->day );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_TYPE_TIMESTAMP:
>          case SQL_TIMESTAMP:
> @@ -4066,7 +4073,7 @@
>                       pDate->year,
>                       pDate->month,
>                       pDate->day );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>      }
>  
> @@ -4080,14 +4087,14 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromGuidC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromGuidC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    SQLGUID *   pGuid =
> (SQLGUID*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +    SQLGUID *   pGuid =
> (SQLGUID*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>      char        szFormatBuffer[128];
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -4116,14 +4123,14 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromTimeC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromTimeC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    SQL_TIME_STRUCT *   pTime =
> (SQL_TIME_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +    SQL_TIME_STRUCT *   pTime =
> (SQL_TIME_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>      char                szFormatBuffer[128];
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -4140,7 +4147,7 @@
>                       pTime->hour, 
>                       pTime->minute, 
>                       pTime->second );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
>          case SQL_TYPE_TIME:
> @@ -4154,7 +4161,7 @@
>                       pTime->hour, 
>                       pTime->minute, 
>                       pTime->second );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
>          case SQL_TYPE_TIMESTAMP:
> @@ -4168,7 +4175,7 @@
>                       pTime->hour, 
>                       pTime->minute, 
>                       pTime->second );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>      }
>  
> @@ -4182,14 +4189,14 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromTimeStampC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromTimeStampC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    SQL_TIMESTAMP_STRUCT *  pTimestamp =
> (SQL_TIMESTAMP_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +    SQL_TIMESTAMP_STRUCT *  pTimestamp =
> (SQL_TIMESTAMP_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>      char                    szFormatBuffer[128];
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -4209,7 +4216,7 @@
>                       pTimestamp->hour,
>                       pTimestamp->minute,
>                       pTimestamp->second );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
>          case SQL_TYPE_DATE:
> @@ -4223,7 +4230,7 @@
>                       pTimestamp->year,
>                       pTimestamp->month,
>                       pTimestamp->day );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
>          case SQL_TYPE_TIME:
> @@ -4237,7 +4244,7 @@
>                       pTimestamp->hour,
>                       pTimestamp->minute,
>                       pTimestamp->second );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
>          case SQL_TYPE_TIMESTAMP:
> @@ -4254,7 +4261,7 @@
>                       pTimestamp->hour,
>                       pTimestamp->minute,
>                       pTimestamp->second );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
>      }
> @@ -4269,15 +4276,15 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromIntervalYearMonthC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromIntervalYearMonthC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    SQL_INTERVAL_STRUCT *   pInterval   =
> (SQL_INTERVAL_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +    SQL_INTERVAL_STRUCT *   pInterval   =
> (SQL_INTERVAL_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>      SQL_YEAR_MONTH_STRUCT * pYearMonth  = &pInterval->intval.year_month;
>      char                    szFormatBuffer[128];
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -4293,7 +4300,7 @@
>              sprintf( szFormatBuffer, "'%04d:%02d'", 
>                       pYearMonth->year,
>                       pYearMonth->month );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_DECIMAL:
>          case SQL_NUMERIC:
> @@ -4307,9 +4314,9 @@
>                  We convert to months. 
>              */
>              if ( pInterval->interval_sign == SQL_FALSE )
> -                pResultSetData->variantData.setValue( pYearMonth->year * 12 +
> pYearMonth->month );
> +                pResultPutData->variantData.setValue( pYearMonth->year * 12 +
> pYearMonth->month );
>              else
> -                pResultSetData->variantData.setValue( 0 - (pYearMonth->year *
> 12 + pYearMonth->month) );
> +                pResultPutData->variantData.setValue( 0 - (pYearMonth->year *
> 12 + pYearMonth->month) );
>  
>              MYODBCDbgReturn( SQL_SUCCESS );
>  
> @@ -4329,15 +4336,15 @@
>      MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
>  }
>  
> -SQLRETURN MResult::fromIntervalDayTimeC( MResultSetData *pResultSetData )
> +SQLRETURN MResult::fromIntervalDayTimeC( MResultPutData *pResultPutData )
>  {
>      MYODBCDbgEnter();
>  
> -    SQL_INTERVAL_STRUCT *   pInterval   =
> (SQL_INTERVAL_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
> +    SQL_INTERVAL_STRUCT *   pInterval   =
> (SQL_INTERVAL_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
>      SQL_DAY_SECOND_STRUCT * pDaySecond  = &pInterval->intval.day_second;
>      char                    szFormatBuffer[128];
>  
> -    switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
> +    switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
>      {
>          case SQL_CHAR:
>          case SQL_VARCHAR:
> @@ -4356,7 +4363,7 @@
>                       pDaySecond->minute,
>                       pDaySecond->second,
>                       pDaySecond->fraction );
> -            pResultSetData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
> +            pResultPutData->variantData.setValue( QString::fromAscii(
> szFormatBuffer ) ); ;
>              MYODBCDbgReturn( SQL_SUCCESS );
>          case SQL_DECIMAL:
>          case SQL_NUMERIC:
> @@ -4370,9 +4377,9 @@
>                  We convert to seconds (any fraction is truncated). 
>              */
>              if ( pInterval->interval_sign == SQL_FALSE )
> -                pResultSetData->variantData.setValue( ((pDaySecond->day * 24 +
> pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second );
> +                pResultPutData->variantData.setValue( ((pDaySecond->day * 24 +
> pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second );
>              else
> -                pResultSetData->variantData.setValue( 0 - (((pDaySecond->day *
> 24 + pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second) );
> +                pResultPutData->variantData.setValue( 0 - (((pDaySecond->day *
> 24 + pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second) );
>  
>              if ( pDaySecond->fraction )
>              {
> 
> Modified: trunk/SDK/MYSQLPlus/Library/MResult.h
> ===================================================================
> --- trunk/SDK/MYSQLPlus/Library/MResult.h	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/SDK/MYSQLPlus/Library/MResult.h	2006-11-07 12:18:36 UTC (rev 657)
> @@ -55,24 +55,24 @@
>  };
>  
>  /*!
> -    \brief      Data to support doSetData.
> +    \brief      Data to support doPutData.
>  
> -                doSetData can be used to supply data-at-execution data for two uses:
> 
> +                doPutData can be used to supply data-at-execution data for two uses:
> 
>  
>                  - parameter data to be used in a call to SQLExecute or
> SQLExecDirect
>                  - column data to be used when a row is updated or added by a call to
> SQLBulkOperations or is updated by a call to SQLSetPos
>  */
> -class MResultSetData
> +class MResultPutData
>  {
>  public:
> -    MResultSetData();
> +    MResultPutData();
>  
>      void doClear();
>  
>      /* 
>          \note 
>  
> -        We have a string version of data prepared for use in an SQL statement but
> this is going to change to be in synch with 
> +        We have a string version of data prepared for use in an SQL statement but
> this is going to change to be in sync with 
>          format as found in resultset. So we have a variant for future. 
>      */
>      QVariant                variantData;            /*!< data (may be partially
> full depending upon state)                  */
> @@ -318,7 +318,7 @@
>  
>  protected:
>      MResultGetData  resultGetData;      /*!< to support getData() (in particular;
> chunking)                                                                 */
> -    MResultSetData  resultSetData;      /*!< to support doBindParameter()        
>                                                                           */
> +    MResultPutData  resultSetData;      /*!< to support doBindParameter()        
>                                                                           */
>      SQLUSMALLINT    nRowSetRow;         /*!< Current row in rowset.              
>                                                                           */
>      SQLUSMALLINT    nRowSetRows;        /*!< Is RowSetSize but will be less when
> RowSet goes beyond ResultSetRows.                                          */
>  
> @@ -511,7 +511,7 @@
>      /*!
>          \name   from*C
>  
> -        These are used to convert/copy data into an initialized MResultSetData.
> These methods also enforce ODBC rules 
> +        These are used to convert/copy data into an initialized MResultPutData.
> These methods also enforce ODBC rules 
>          generalized based upon C type.
>  
>          \sa 
> @@ -519,17 +519,17 @@
>          "Converting Data from C to SQL Data Types"
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcconverting_data_from_c_to_sql_data_types.asp
>      */
>      /*@{*/
> -    SQLRETURN       fromC( MResultSetData  *pResultSetData );
> -    SQLRETURN       fromCharacterC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromNumericC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromBitC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromBinaryC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromDateC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromGuidC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromTimeC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromTimeStampC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromIntervalYearMonthC( MResultSetData *pResultSetData );
> -    SQLRETURN       fromIntervalDayTimeC( MResultSetData *pResultSetData );
> +    SQLRETURN       fromC( MResultPutData  *pResultPutData );
> +    SQLRETURN       fromCharacterC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromNumericC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromBitC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromBinaryC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromDateC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromGuidC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromTimeC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromTimeStampC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromIntervalYearMonthC( MResultPutData *pResultPutData );
> +    SQLRETURN       fromIntervalDayTimeC( MResultPutData *pResultPutData );
>      /*@}*/
>  
>  private:
> 
> Modified: trunk/SDK/MYSQLPlus/Library/MResultRes.cpp
> ===================================================================
> --- trunk/SDK/MYSQLPlus/Library/MResultRes.cpp	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/SDK/MYSQLPlus/Library/MResultRes.cpp	2006-11-07 12:18:36 UTC (rev 657)
> @@ -286,6 +286,10 @@
>                          doStateRollBack( STATE_INITIALIZED );
>                          MYODBCDbgReturn( nReturnInternal );
>                  }
> +#if MYODBC_DBG > 1
> +    MYODBCDbgInfo( QString( "variantData.isNull=%1" ).arg(
> resultSetData.variantData.isNull() ) );
> +    MYODBCDbgInfo( QString( "variantData=%1" ).arg(
> resultSetData.variantData.toString() ) );
> +#endif
>                  stringStatement += resultSetData.variantData.toString();
>                  nParameter++;
>                  continue;
> 
> Modified: trunk/SDK/MYSQLPlus/Library/MStatement.cpp
> ===================================================================
> --- trunk/SDK/MYSQLPlus/Library/MStatement.cpp	2006-11-06 17:29:45 UTC (rev 656)
> +++ trunk/SDK/MYSQLPlus/Library/MStatement.cpp	2006-11-07 12:18:36 UTC (rev 657)
> @@ -1418,12 +1418,14 @@
>      MYODBCDbgEnter();
>  
>  #if MYODBC_DBG > 1
> -    MYODBCDbgInfo( QString( "nParameterNumber=%1" ).arg( nParameterNumber ) );
> -    MYODBCDbgInfo( QString( "nInputOutputType=%1=%2" ).arg( nInputOutputType ).arg(
> MYODBCC::getInputOutputTypeString( nInputOutputType ) ) );
> -    MYODBCDbgInfo( QString( "nValueType=%1=%2" ).arg( nValueType ).arg(
> MYODBCC::getConciseTypeStringC( nValueType ) ) );
> -    MYODBCDbgInfo( QString( "nParameterType=%1=%2" ).arg( nParameterType ).arg(
> MYODBCC::getConciseTypeStringSQL( nParameterType ) ) );
> -    MYODBCDbgInfo( QString( "nColumnSize=%1" ).arg( nColumnSize ) );
> -    MYODBCDbgInfo( QString( "nDecimalDigits=%1" ).arg( nDecimalDigits ) );
> +    MYODBCDbgInfo( QString( "nParameterNumber   =%1" ).arg( nParameterNumber ) );
> +    MYODBCDbgInfo( QString( "nInputOutputType   =%1=%2" ).arg( nInputOutputType
> ).arg( MYODBCC::getInputOutputTypeString( nInputOutputType ) ) );
> +    MYODBCDbgInfo( QString( "nValueType         =%1=%2" ).arg( nValueType ).arg(
> MYODBCC::getConciseTypeStringC( nValueType ) ) );
> +    MYODBCDbgInfo( QString( "nParameterType     =%1=%2" ).arg( nParameterType ).arg(
> MYODBCC::getConciseTypeStringSQL( nParameterType ) ) );
> +    MYODBCDbgInfo( QString( "nColumnSize        =%1" ).arg( nColumnSize ) );
> +    MYODBCDbgInfo( QString( "nDecimalDigits     =%1" ).arg( nDecimalDigits ) );
> +    MYODBCDbgInfo( QString( "pParameterValue    =%1" ).arg( (unsigned
> long)pParameterValue ) );
> +    MYODBCDbgInfo( QString( "pnStrLenOrInd      =%1" ).arg( (unsigned
> long)pnStrLenOrInd ) );
>  #endif
>  
>      SQLRETURN   nReturn     = SQL_SUCCESS;
> @@ -1489,7 +1491,12 @@
>          ParameterType.
>      */
>      if ( nValueType == SQL_C_DEFAULT )
> +    {
>          nValueType = MYODBCC::getCDefault( getEnvironment()->getODBCVersion(),
> nParameterType );
> +#if MYODBC_DBG > 1
> +        MYODBCDbgInfo( QString( "nValueType=%1=%2" ).arg( nValueType ).arg(
> MYODBCC::getConciseTypeStringC( nValueType ) ) );
> +#endif
> +    }
>  
>      /*!
>          \internal ODBC RULE (DM)
> @@ -1747,61 +1754,47 @@
>      /*! 
>          \internal ODBC RULE
>  
> -        There are many rules for this. See ODBC spec.
> +        The StrLen_or_IndPtr ..... This argument sets the SQL_DESC_OCTET_LENGTH_PTR
> and 
> +        SQL_DESC_INDICATOR_PTR record fields of the application parameter pointers.
>  
> -        \todo 
> +        \note
>  
> -        Factor in the ODBC rules found in the spec.
> +        Its ok to set SQL_DESC_INDICATOR_PTR & SQL_DESC_OCTET_LENGTH_PTR to same
> pointer when
> +        we are dealing with an APD.
> +
> +        There are many rules for pnStrLenOrInd.
> +
> +        - SQL_NULL_DATA (-1)
> +        - SQL_DATA_AT_EXEC (-2)
> +        - SQL_NTS (-3)
> +        - SQL_DEFAULT_PARAM (-5)
> +        - SQL_LEN_DATA_AT_EXEC(len)
> +        - null
> +        - array of SQLINTEGER 
> +
>      */
> -    if ( pnStrLenOrInd && *pnStrLenOrInd > 0 )
> +    nReturn = pAppParamDesc->setDescField( nParameterNumber,
> SQL_DESC_INDICATOR_PTR, pnStrLenOrInd, SQL_IS_POINTER );
> +    switch ( nReturn )
>      {
> -        nReturn = pAppParamDesc->setDescField( nParameterNumber,
> SQL_DESC_INDICATOR_PTR, pnStrLenOrInd, SQL_IS_POINTER );
> -        switch ( nReturn )
> -        {
> -            case SQL_SUCCESS:
> -                break;
> -            case SQL_SUCCESS_WITH_INFO:
> -                bHasInfo = true;
> -                break;
> -            default:
> -                goto doBindParameterExit1;
> -        }
> -        nReturn = pAppParamDesc->setDescField( nParameterNumber,
> SQL_DESC_OCTET_LENGTH_PTR, NULL, SQL_IS_POINTER );
> -        switch ( nReturn )
> -        {
> -            case SQL_SUCCESS:
> -                break;
> -            case SQL_SUCCESS_WITH_INFO:
> -                bHasInfo = true;
> -                break;
> -            default:
> -                goto doBindParameterExit1;
> -        }
> +        case SQL_SUCCESS:
> +            break;
> +        case SQL_SUCCESS_WITH_INFO:
> +            bHasInfo = true;
> +            break;
> +        default:
> +            goto doBindParameterExit1;
>      }
> -    else
> +
> +    nReturn = pAppParamDesc->setDescField( nParameterNumber,
> SQL_DESC_OCTET_LENGTH_PTR, pnStrLenOrInd, SQL_IS_POINTER );
> +    switch ( nReturn )
>      {
> -        nReturn = pAppParamDesc->setDescField( nParameterNumber,
> SQL_DESC_OCTET_LENGTH_PTR, pnStrLenOrInd, SQL_IS_POINTER );
> -        switch ( nReturn )
> -        {
> -            case SQL_SUCCESS:
> -                break;
> -            case SQL_SUCCESS_WITH_INFO:
> -                bHasInfo = true;
> -                break;
> -            default:
> -                goto doBindParameterExit1;
> -        }
> -        nReturn = pAppParamDesc->setDescField( nParameterNumber,
> SQL_DESC_INDICATOR_PTR, NULL, SQL_IS_POINTER );
> -        switch ( nReturn )
> -        {
> -            case SQL_SUCCESS:
> -                break;
> -            case SQL_SUCCESS_WITH_INFO:
> -                bHasInfo = true;
> -                break;
> -            default:
> -                goto doBindParameterExit1;
> -        }
> +        case SQL_SUCCESS:
> +            break;
> +        case SQL_SUCCESS_WITH_INFO:
> +            bHasInfo = true;
> +            break;
> +        default:
> +            goto doBindParameterExit1;
>      }
>  
>      /*
> @@ -3811,7 +3804,7 @@
>      */
>      pDiagnostic->doClear();
>  
> -    MYODBCDbgReturn( SQL_ERROR );
> +    MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_IM001 ) );
>  }
>  
>  /*!
> @@ -4498,7 +4491,7 @@
>      */
>      pDiagnostic->doClear();
>  
> -    MYODBCDbgReturn( SQL_ERROR );
> +    MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_IM001 ) );
>  }
>  
>  SQLRETURN MStatement::doRowCount( SQLINTEGER *pnRowCount )
> 
> 
> -- 
> MySQL Code Commits Mailing List
> For list archives: http://lists.mysql.com/commits
> To unsubscribe:    http://lists.mysql.com/commits?unsub=1
Thread
Connector/ODBC 5 commit: r657 - in trunk: Driver/Driver/Tests SDK/MYSQLPlus/Librarypharvey7 Nov
  • Re: Connector/ODBC 5 commit: r657 - in trunk: Driver/Driver/Tests SDK/MYSQLPlus/LibraryJess Balint7 Nov