List:Commits« Previous MessageNext Message »
From:pharvey Date:September 25 2006 11:20am
Subject:Connector/ODBC 5 commit: r555 - in trunk: . SDK/MYSQLPlus/Library SDK/MYSQLPlus/Tests
View as plain text  
Modified:
   trunk/Install.bat
   trunk/SDK/MYSQLPlus/Library/MResult.cpp
   trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
   trunk/SDK/MYSQLPlus/Library/MResultRes.cpp
   trunk/SDK/MYSQLPlus/Library/MStatement.cpp
   trunk/SDK/MYSQLPlus/Tests/MYSQLPlusTest.cpp
   trunk/Uninstall.bat
   trunk/connector-odbc.vpw
Log:
- brought some of the batch files up-to-date (mostly path issues)
- tracked down a few, obvious, bugs in MySQLPlus in quest to get post-build-tests to run
ok (mostly ResultSet and RowSet buffer and state issues)
- this code should build fine on win32 with vs2003 but has some debug lines in it

Modified: trunk/Install.bat
===================================================================
--- trunk/Install.bat	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/Install.bat	2006-09-25 11:20:29 UTC (rev 555)
@@ -16,16 +16,16 @@
 
 :doNormal
 IF EXIST %SystemRoot%\System32\MYODBCDriver5.dll GOTO :doError4
-IF NOT EXIST lib\MYODBCDriver5.dll GOTO :doError2
-IF NOT EXIST lib\MYODBCSetup5.dll GOTO :doError2
+IF NOT EXIST Driver\lib\MYODBCDriver5.dll GOTO :doError2
+IF NOT EXIST Driver\lib\MYODBCSetup5.dll GOTO :doError2
 
 REM ****
 REM * Copying myodbc libraries and executables to install dir...
 REM ****
-copy lib\MYODBCDriver5.dll %SystemRoot%\System32
-copy lib\MYODBCDriver5.lib %SystemRoot%\System32
-copy lib\MYODBCSetup5.dll %SystemRoot%\System32
-copy lib\MYODBCSetup5.lib %SystemRoot%\System32
+copy Driver\lib\MYODBCDriver5.dll %SystemRoot%\System32
+copy Driver\lib\MYODBCDriver5.lib %SystemRoot%\System32
+copy Driver\lib\MYODBCSetup5.dll %SystemRoot%\System32
+copy Driver\lib\MYODBCSetup5.lib %SystemRoot%\System32
 
 REM \todo "Program Files\MySQL\Connector ODBC 5\bin"
 REM copy bin\MYODBCInstaller.exe %SystemRoot%\System32
@@ -42,27 +42,27 @@
 REM * as 64bit windows but ODBCConf is not as powerful.
 REM ****
 
-bin\MYODBCInstaller -a -d -n "MySQL Connector/ODBC v5 Driver" -t
"DRIVER=MYODBCDriver5.dll;SETUP=MYODBCSetup5.dll"
+Tools\bin\MYODBCInstaller -a -d -n "MySQL Connector/ODBC v5 Driver" -t
"DRIVER=MYODBCDriver5.dll;SETUP=MYODBCSetup5.dll"
 REM bin\MYODBCInstaller -a -d -n "MySQL Connector/ODBC v5 Driver" -t
"DRIVER=MYODBCDriver5.dll;SETUP=myodbc3S.dll"
 
 GOTO doSuccess
 
 :doDebug
 IF EXIST %SystemRoot%\System32\MYODBCDriver5d.dll GOTO :doError4
-IF NOT EXIST lib\MYODBCDriver5d.dll goto doError3
-IF NOT EXIST lib\MYODBCSetup5d.dll goto doError3
+IF NOT EXIST Driver\lib\MYODBCDriver5d.dll goto doError3
+IF NOT EXIST Driver\lib\MYODBCSetup5d.dll goto doError3
 REM ****
 REM * Copying myodbc debug libraries to install dir...
 REM ****
-copy lib\MYODBCDriver5d.dll %SystemRoot%\System32
-copy lib\MYODBCDriver5d.lib %SystemRoot%\System32
-copy lib\MYODBCSetup5d.dll %SystemRoot%\System32
-copy lib\MYODBCSetup5d.lib %SystemRoot%\System32
+copy Driver\lib\MYODBCDriver5d.dll %SystemRoot%\System32
+copy Driver\lib\MYODBCDriver5d.lib %SystemRoot%\System32
+copy Driver\lib\MYODBCSetup5d.dll %SystemRoot%\System32
+copy Driver\lib\MYODBCSetup5d.lib %SystemRoot%\System32
 
 REM ****
 REM * Registering driver...
 REM ****
-bin\MYODBCInstaller -a -d -n "MySQL Connector/ODBC v5 Driver (debug)" -t
"DRIVER=MYODBCDriver5d.dll;SETUP=MYODBCSetup5d.dll"
+Tools\bin\MYODBCInstaller -a -d -n "MySQL Connector/ODBC v5 Driver (debug)" -t
"DRIVER=MYODBCDriver5d.dll;SETUP=MYODBCSetup5d.dll"
 
 goto doSuccess
 

Modified: trunk/SDK/MYSQLPlus/Library/MResult.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.cpp	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/SDK/MYSQLPlus/Library/MResult.cpp	2006-09-25 11:20:29 UTC (rev 555)
@@ -130,9 +130,6 @@
     nState              = STATE_UNINITIALIZED;              // our state
     nSimulateCursor     = SIMULATE_CURSOR_TRY_UNIQUE;       // we try to ensure pos
update/delete affects 1 row but in case of no unique row id - we may affect more than 1
row 
 
-    vectorStatus.resize( 1 );
-    vectorStatus[0] = SQL_ROW_NOROW;
-
     /*!
         \internal
         \note
@@ -898,16 +895,19 @@
 {
     MYODBCDbgEnter();
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     if ( getState() < STATE_EXECUTED )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
 
     resultSetData.doClear();
     resultGetData.doClear();
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     SQLRETURN nReturn = doNext_();
     if ( !SQL_SUCCEEDED( nReturn ) )
         MYODBCDbgReturn( nReturn );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     /*!
         \internal ODBC RULE
 
@@ -916,6 +916,7 @@
     if ( !getResultSetRows() )
         MYODBCDbgReturn( setBeforeStart() );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     /*!
         \internal ODBC RULE
 
@@ -937,6 +938,7 @@
         MYODBCDbgReturn( SQL_SUCCESS );
     }
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     /*!
         \internal ODBC RULE
 
@@ -949,6 +951,7 @@
     if ( isAfterEnd() )
         MYODBCDbgReturn( setAfterEnd() ); // just be sure all vars set
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     /*!
         \internal ODBC RULE
 
@@ -970,6 +973,7 @@
         MYODBCDbgReturn( SQL_SUCCESS );
     }
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     /*!
         \internal ODBC RULE
 
@@ -982,6 +986,7 @@
     if ( nResultSetRow + nRowSetSize > getResultSetRows() )
         MYODBCDbgReturn( setAfterEnd() );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0, tr("Unknown
condition in doNext().") ) );
 }
 
@@ -1815,6 +1820,7 @@
 
     this->nRowSetRows = nRowSetRows;
 
+    /* mark rows beyond the ResultSet as SQL_ROW_NOROW */
     while ( nRowSetRows < getRowSetSize() )
     {
         vectorStatus[nRowSetRows] = SQL_ROW_NOROW;

Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp	2006-09-25 11:20:29 UTC (rev 555)
@@ -145,6 +145,7 @@
     SQLRETURN       nReturn         = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TABLE_CAT", SQL_NULLABLE );
@@ -210,6 +211,7 @@
     SQLRETURN       nReturn2 = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TABLE_CAT", SQL_NULLABLE );
@@ -254,6 +256,7 @@
     SQLRETURN       nReturn2 = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "PKTABLE_CAT", SQL_NULLABLE );
@@ -317,6 +320,7 @@
     SQLRETURN       nReturn2 = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TABLE_CAT", SQL_NULLABLE );
@@ -372,6 +376,7 @@
     SQLRETURN       nReturn = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "PROCEDURE_CAT", SQL_NULLABLE );
@@ -458,6 +463,7 @@
     MDescriptor *pDescriptor;
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "PROCEDURE_CAT", SQL_NULLABLE );
@@ -528,6 +534,7 @@
     SQLRETURN       nReturn2 = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_SMALLINT, "SCOPE", SQL_NULLABLE );
@@ -591,6 +598,7 @@
     SQLRETURN       nReturn = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TABLE_CAT", SQL_NULLABLE );
@@ -677,6 +685,7 @@
     SQLRETURN       nReturn = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TABLE_CAT", SQL_NULLABLE );
@@ -738,6 +747,7 @@
     SQLRETURN       nReturn2 = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TABLE_CAT", SQL_NULLABLE );
@@ -817,6 +827,7 @@
     SQLRETURN       nReturn2 = doApplyCursorRestrictions();
 
     doClear();
+    vectorStatus.resize( getRowSetSize() );
 
     pDescriptor = getImpRowDesc();
     pDescriptor->doAppend( SQL_VARCHAR, "TYPE_NAME", SQL_NO_NULLS );
@@ -972,6 +983,7 @@
 
         case STATE_EXECUTED:
             vectorRows.clear();
+            vectorStatus.clear();
             setResultSetRows( 0, true );
             setRowsAffected( 0 );
             setBeforeStart();

Modified: trunk/SDK/MYSQLPlus/Library/MResultRes.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultRes.cpp	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/SDK/MYSQLPlus/Library/MResultRes.cpp	2006-09-25 11:20:29 UTC (rev 555)
@@ -14,6 +14,7 @@
 
     pRes        = NULL;
     pCommand    = NULL;
+    setState( STATE_INITIALIZED );
 
     MYODBCDbgReturn2();
 }
@@ -249,18 +250,25 @@
         }
     }
 
-    /* submit command to server */
+    /*!
+        \internal
+        \todo
+
+        Submit command to server as utf8. We probably want to be smarter about what
encoding we use here.
+    */
     if ( mysql_real_query( getMySQL(), stringStatement.toUtf8().constData(),
stringStatement.length() ) )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000,
mysql_errno( getMySQL() ), mysql_error( getMySQL() ) ) );
 
     switch ( getBuffered() )
     {
         case BUFFERED_UNBUFFERED:
+            pRes = mysql_use_result( getMySQL() );      // bring rows to client as needed
                               // bring rows to client as needed
+            break;
         case BUFFERED_MYSQL_PLUS:
-            pRes = mysql_use_result( getMySQL() ); // bring rows to client as needed
+            pRes = mysql_use_result( getMySQL() );      // bring rows to client as needed
             break;
         case BUFFERED_MYSQL_CLIENT:
-            pRes = mysql_store_result( getMySQL() ); // bring all rows to client now
+            pRes = mysql_store_result( getMySQL() );    // bring all rows to client now
             break;
         default:
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("Unknown buffer type.") ) );
@@ -284,6 +292,27 @@
             MYODBCDbgReturn( nReturnInternal );
     }
 
+    switch ( getBuffered() )
+    {
+        case BUFFERED_UNBUFFERED:
+            // *we* will buffer RowSet only
+            for ( SQLUINTEGER n = 0; n < getRowSetSize(); n++ ) { vectorRows.append(
MResultColumns( getColumns() ) ); }    
+            vectorStatus.resize( getRowSetSize() );
+            break;
+        case BUFFERED_MYSQL_PLUS:
+            // *we* will buffer ResultSet but only as needed/used
+            vectorRows.resize( 0 );
+            vectorStatus.resize( getRowSetSize() );
+            break;
+        case BUFFERED_MYSQL_CLIENT:
+            // *we* will buffer RowSet only
+            for ( SQLUINTEGER n = 0; n < getRowSetSize(); n++ ) { vectorRows.append(
MResultColumns( getColumns() ) ); }
+            vectorStatus.resize( getRowSetSize() );
+            break;
+        default:
+            MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("Unknown buffer type.") ) );
+    }
+
     /* we need STATE_EXECUTED here so getRows() will work */
     setState( STATE_EXECUTED );
 
@@ -413,14 +442,19 @@
 {
     MYODBCDbgEnter();
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     SQLRETURN nReturn1 = SQL_SUCCESS;
 
     switch ( getBuffered() )
     {
         case BUFFERED_UNBUFFERED:
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY106 ) );
 
         case BUFFERED_MYSQL_PLUS:
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             if ( !isResultSetRowsKnown() )
             {
                 if ( getResultSetRows() < getRowSetSize() )
@@ -429,6 +463,8 @@
             break;
 
         case BUFFERED_MYSQL_CLIENT:
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             if ( getResultSetRows() )
             {
                 mysql_data_seek( pRes, 0 );
@@ -440,6 +476,7 @@
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("Unknown buffer type.") ) );
     }
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     MYODBCDbgReturn( nReturn1 );
 }
 
@@ -559,21 +596,29 @@
 {
     MYODBCDbgEnter();
 
-    if ( isBeforeStart() )
-        MYODBCDbgReturn( doFirst_() );
+printf( "[PAH][%s][%s][%d] Rows: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows.count() );
+if ( vectorRows.count() )
+    printf( "[PAH][%s][%s][%d] Columns: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows[0].count() );
 
     if ( isAfterEnd() )
         MYODBCDbgReturn( SQL_SUCCESS );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     SQLRETURN nReturn1 = SQL_SUCCESS;
 
     switch ( getBuffered() )
     {
         case BUFFERED_UNBUFFERED:
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             nReturn1 = getRowSetData();
             break;
 
         case BUFFERED_MYSQL_PLUS:
+            if ( isBeforeStart() )
+                MYODBCDbgReturn( doFirst_() );
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             while ( !isResultSetRowsKnown() && getResultSetRow() +
getRowSetSize() >= getResultSetRows() )
             {
                 nReturn1 = getRowSetData();
@@ -583,6 +628,10 @@
             break;
 
         case BUFFERED_MYSQL_CLIENT:
+            if ( isBeforeStart() )
+                MYODBCDbgReturn( doFirst_() );
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             if ( getResultSetRow() + getRowSetSize() < getResultSetRows() )
             {
                 mysql_data_seek( pRes, getResultSetRow() + getRowSetSize() );
@@ -594,6 +643,7 @@
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("Unknown buffer type.") ) );
     }
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     MYODBCDbgReturn( nReturn1 );
 }
 
@@ -800,6 +850,7 @@
                 mysql_free_result( pRes );
             pRes = NULL;
             vectorRows.clear();
+            vectorStatus.clear();
             setResultSetRows( 0, true );
             setRowsAffected( 0 );
             setBeforeStart();
@@ -838,6 +889,10 @@
 
     SQLUSMALLINT nRowSetRow = 0;
 
+printf( "[PAH][%s][%s][%d] Rows: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows.count() );
+if ( vectorRows.count() )
+    printf( "[PAH][%s][%s][%d] Columns: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows[0].count() );
+
     if ( getRowSetSize() < 1 )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("RowSetSize < 1") ) );
 
@@ -845,19 +900,24 @@
     {
         case BUFFERED_UNBUFFERED:
         case BUFFERED_MYSQL_CLIENT:
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             /* load next RowSetRows from res - replace RowSet */
             {
-                vectorRows.clear();
+                // vectorRows.clear();
                 while ( nRowSetRow < getRowSetSize() )
                 {
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
                     MYSQL_ROW pRow = mysql_fetch_row( pRes );
                     if ( pRow )
                     {
+printf( "[PAH][%s][%s][%d] %d %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorStatus.count(), nRowSetRow );
                         vectorStatus[nRowSetRow] = getRowSetRowData( pRow, nRowSetRow );
                         nRowSetRow++;
                     }
                     else
                     {
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
                         if ( getBuffered() == BUFFERED_UNBUFFERED )
                             setResultSetRows( getResultSetRows() + nRowSetRow, true );
                         MYODBCDbgReturn( SQL_SUCCESS );
@@ -866,6 +926,8 @@
                 if ( getBuffered() == BUFFERED_UNBUFFERED )
                     setResultSetRows( getResultSetRows() + nRowSetRow );
             }
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             break;
 
         case BUFFERED_MYSQL_PLUS:
@@ -921,11 +983,20 @@
 {
     MYODBCDbgEnter();
 
+printf( "[PAH][%s][%s][%d] Rows: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows.count() );
+if ( vectorRows.count() )
+    printf( "[PAH][%s][%s][%d] Columns: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows[0].count() );
+
     SQLUSMALLINT nColumns  = getColumns();
     SQLUSMALLINT nColumn   = 0;
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     for ( nColumn = 0; nColumn < nColumns; nColumn++ )
     {
+printf( "[PAH][%s][%s][%d] Rows: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows.count() );
+if ( vectorRows.count() )
+    printf( "[PAH][%s][%s][%d] Columns: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows[0].count() );
+
         if ( pRow[nColumn] )
         {
             MYSQL_FIELD *pField = mysql_fetch_field_direct( pRes, nColumn );
@@ -956,7 +1027,12 @@
                 case MYSQL_TYPE_SET:
                 case MYSQL_TYPE_STRING:
                 case MYSQL_TYPE_GEOMETRY:
+printf( "[PAH][%s][%s][%d] Rows: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows.count() );
+if ( vectorRows.count() )
+    printf( "[PAH][%s][%s][%d] Columns: %d\n", __FILE__, __FUNCTION__, __LINE__,
vectorRows[0].count() );
+
                     vectorRows[nRow][nColumn].setValue( QString( (const char
*)pRow[nColumn] ) );
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
                     break;
                 case MYSQL_TYPE_VAR_STRING:
                 case MYSQL_TYPE_TINY_BLOB:

Modified: trunk/SDK/MYSQLPlus/Library/MStatement.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MStatement.cpp	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/SDK/MYSQLPlus/Library/MStatement.cpp	2006-09-25 11:20:29 UTC (rev 555)
@@ -2870,6 +2870,7 @@
 {
     MYODBCDbgEnter();
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     /*!
         \internal ODBC RULE
 
@@ -2965,6 +2966,7 @@
     if ( nFetchOrientation == SQL_FETCH_BOOKMARK && getFetchBookmarkPtr() == NULL
)
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY111 ) );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     setState( STATE_S6 );
 
     switch ( nFetchOrientation )
@@ -3788,6 +3790,7 @@
         goto doPrepareExit1;
     }
 
+
     /* first command is current by default - this is the one we will prepare for execute
now */
     nReturn = doPrepare( pCommands->getCommand() );
     if ( !SQL_SUCCEEDED( nReturn ) )

Modified: trunk/SDK/MYSQLPlus/Tests/MYSQLPlusTest.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Tests/MYSQLPlusTest.cpp	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/SDK/MYSQLPlus/Tests/MYSQLPlusTest.cpp	2006-09-25 11:20:29 UTC (rev 555)
@@ -137,6 +137,7 @@
     MStatement      statement( pConnection );
 
     SQLRETURN nReturn = statement.doExecDirect( psSQL, SQL_NTS );
+
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
@@ -175,12 +176,41 @@
 {
     MStatement  statement( pConnection );
     SQLRETURN   nReturn;
+    SQLINTEGER  nRows   = 0;
 
     nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( vcName ) VALUES (
'name1' )"), SQL_NTS );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 
+    /* RowsAffected (non-cached)... */
+    nReturn = statement.getDiagField( 0, SQL_DIAG_ROW_COUNT, &nRows, SQL_IS_INTEGER,
NULL );
+    if ( nReturn != SQL_SUCCESS )
+        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+    QCOMPARE( nRows, (SQLINTEGER)1 );
+
+    /* RowsAffected (cached)... */
+    nReturn = statement.doRowCount( &nRows );
+    if ( nReturn != SQL_SUCCESS )
+        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+    QCOMPARE( nRows, (SQLINTEGER)1 );
+
+    /* RowsAffected (non-cached again)... */
+    nReturn = statement.getDiagField( 0, SQL_DIAG_ROW_COUNT, &nRows, SQL_IS_INTEGER,
NULL );
+    if ( nReturn != SQL_SUCCESS )
+        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+    QCOMPARE( nRows, (SQLINTEGER)0 );
+
+    /* ResultSetRows... */
+    nReturn = statement.getDiagField( 0, SQL_DIAG_CURSOR_ROW_COUNT, &nRows,
SQL_IS_INTEGER, NULL );
+    if ( nReturn != SQL_SUCCESS )
+        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+    QCOMPARE( nRows, (SQLINTEGER)0 );
+
     nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( vcName ) VALUES (
'name2' )"), SQL_NTS );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
@@ -211,30 +241,47 @@
     SQLWCHAR    szNameWide[100];
     SQLINTEGER  nStrLenOrInd;
 
-    /* this *should* error out so do not show diag message */
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
+    /* this *should* error out so we do not show diag message - diagnostics will be
cleared by next call */
     nReturn = statement.doNumResultCols( &nCols );
     QCOMPARE( nReturn, (SQLRETURN)SQL_ERROR );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
     nReturn = statement.doExecDirect( TEXT("SELECT * FROM tbMyODBCTest"), SQL_NTS );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 
-    nReturn = statement.doNumResultCols( &nCols );
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
+    /* ResultSetRows... */
+    nReturn = statement.getDiagField( 0, SQL_DIAG_CURSOR_ROW_COUNT, &nRows,
SQL_IS_INTEGER, NULL );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
-    QCOMPARE( nCols, (SQLSMALLINT)3 );
+    QCOMPARE( nRows, (SQLINTEGER)0 ); /* 0 not 3 (as one may expect) because we are by
default using a non-buffered result */
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
+    /* RowsAffected... */
     nReturn = statement.doRowCount( &nRows );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
-    QCOMPARE( nRows, (SQLINTEGER)3 );
+    QCOMPARE( nRows, (SQLINTEGER)0 );
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
+    /* Columns... */
+    nReturn = statement.doNumResultCols( &nCols );
+    if ( nReturn != SQL_SUCCESS )
+        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
+    QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+    QCOMPARE( nCols, (SQLSMALLINT)3 );
+
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
+    /* ResultSet data... */
     nRows = 0;
     while ( 1 )
     {
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
         nReturn = statement.doFetch();
         if ( nReturn == SQL_NO_DATA )
             break;
@@ -243,6 +290,7 @@
 
         nRows++;
 
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
         nReturn = statement.getData( 1, SQL_C_LONG, &nUserID, 0, &nStrLenOrInd );
         if ( nReturn != SQL_SUCCESS )
             textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
@@ -251,6 +299,7 @@
 
         if ( nRows == 1 )
         {
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             nReturn = statement.getData( 2, SQL_C_CHAR, &szName, 100,
&nStrLenOrInd );
             QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
             QVERIFY( nStrLenOrInd == 0 );
@@ -258,6 +307,7 @@
         }
         else if ( nRows == 2 )
         {
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             nReturn = statement.getData( 2, SQL_C_WCHAR, &szNameWide, 100,
&nStrLenOrInd );
             QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
             QVERIFY( nStrLenOrInd == 0 );
@@ -265,12 +315,14 @@
         }
         else if ( nRows == 3 )
         {
+printf( "[PAH][%s][%s][%d]\n", __FILE__, __FUNCTION__, __LINE__ );
             nReturn = statement.getData( 2, SQL_C_CHAR, &szName, 100,
&nStrLenOrInd );
             QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
             QVERIFY( nStrLenOrInd == 0 );
             QVERIFY( strcmp( (const char*)szName, "name3" ) == 0  );
         }
     }
+    /* ResultSetRows (buffered or unbuffered this is what we got)...*/
     QCOMPARE( nRows, (SQLINTEGER)3 );
 }
 

Modified: trunk/Uninstall.bat
===================================================================
--- trunk/Uninstall.bat	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/Uninstall.bat	2006-09-25 11:20:29 UTC (rev 555)
@@ -19,7 +19,7 @@
 REM ****
 REM * Deregistering driver...
 REM ****
-bin\MYODBCInstaller -d -r -n "MySQL Connector/ODBC v5 Driver"
+Tools\bin\MYODBCInstaller -d -r -n "MySQL Connector/ODBC v5 Driver"
 
 REM ****
 REM * Removing files...
@@ -40,7 +40,7 @@
 REM ****
 REM * Deregistering driver...
 REM ****
-bin\MYODBCInstaller -d -r -n "MySQL Connector/ODBC v5 Driver (debug)"
+Tools\bin\MYODBCInstaller -d -r -n "MySQL Connector/ODBC v5 Driver (debug)"
 
 REM ****
 REM * Removing files...

Modified: trunk/connector-odbc.vpw
===================================================================
--- trunk/connector-odbc.vpw	2006-09-19 05:51:29 UTC (rev 554)
+++ trunk/connector-odbc.vpw	2006-09-25 11:20:29 UTC (rev 555)
@@ -16,6 +16,7 @@
 		<Project File="SDK/Installer/Library/InsLibrary.vpj" />
 		<Project File="Tools/Installer/Installer.vpj" />
 		<Project File="SDK/Installer/Tests/InsTests.vpj" />
+		<Project File="../../mysql-include.vpj" />
 		<Project File="SDK/MYSQLPlus/MYSQLPlus.vpj" />
 		<Project File="SDK/MYSQLPlus/Library/MYSQLPlusLibrary.vpj" />
 		<Project File="SDK/MYSQLPlus/Tests/MYSQLPlusTests.vpj" />

Thread
Connector/ODBC 5 commit: r555 - in trunk: . SDK/MYSQLPlus/Library SDK/MYSQLPlus/Testspharvey25 Sep