List:Commits« Previous MessageNext Message »
From:pharvey Date:August 7 2006 5:20pm
Subject:Connector/ODBC 5 commit: r476 - in trunk/MYSQLPlus: MYSQLPlusLib MYSQLPlusTest
View as plain text  
Modified:
   trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp
   trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
   trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
Log:
- tweak to state transition to get proper row count back

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp	2006-08-07 05:55:01 UTC (rev 475)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp	2006-08-07 17:20:52 UTC (rev 476)
@@ -544,6 +544,9 @@
             MYODBCDbgReturn( nReturnInternal );
     }
 
+    /* we need STATE_EXECUTED here so getRows() will work */
+    setState( STATE_EXECUTED );
+
     /*!
         \internal ODBC RULE
 
@@ -559,16 +562,24 @@
         Wet set SQL_DIAG_ROW_COUNT when any result set is requested - for example we also
set SQL_DIAG_ROW_COUNT for catalog
         functions.
     */
-    qulonglong nRows = -1;
-    if ( !SQL_SUCCEEDED( getRows( &nRows ) ) )
-        nRows = -1;
+    if ( pCommand->isResultSetPossible() )
+    {
+        qulonglong nRows = -1;
+        if ( !SQL_SUCCEEDED( getRows( &nRows ) ) )
+            nRows = -1;
 
-    if ( pCommand->isResultSetPossible() )
+        getDiagnostic()->setCursorRowCount( nRows );
         getDiagnostic()->setRowCount( nRows );
+        setRowsAffected( nRows );
+    }
     else
-        setRowsAffected( mysql_affected_rows( getMySQL() ) );
+    {
+        qulonglong nRows = mysql_affected_rows( getMySQL() );
 
-    setState( STATE_EXECUTED );
+        getDiagnostic()->setCursorRowCount( -1 );
+        getDiagnostic()->setRowCount( nRows );
+        setRowsAffected( nRows );
+    }
 
     MYODBCDbgReturn( nReturn );
 }

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-08-07 05:55:01 UTC (rev 475)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-08-07 17:20:52 UTC (rev 476)
@@ -3540,7 +3540,8 @@
         \internal MYODBC RULE
 
         We return the number of resultset rows for SELECT type statements - but this will
be -1
-        when we can not do this at this time (unbuffered results for example).
+        when we can not do this at this time (unbuffered results for example). Note: Some
other 
+        drivers (such as the DB2 driver) strictly return rows affected.
     */
     MResult *   pResult     = getResult();
     MCommands * pCommands   = getCommands();

Modified: trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp	2006-08-07 05:55:01 UTC (rev 475)
+++ trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp	2006-08-07 17:20:52 UTC (rev 476)
@@ -445,7 +445,7 @@
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
-    QVERIFY( nRowCount == 1 );
+    QCOMPARE( nRowCount, (SQLINTEGER)1 );
 
     nReturn = statement.doNumResultCols( &nNumResultCols );
     if ( nReturn != SQL_SUCCESS )

Thread
Connector/ODBC 5 commit: r476 - in trunk/MYSQLPlus: MYSQLPlusLib MYSQLPlusTestpharvey7 Aug