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 MYSQLPlusTest | pharvey | 7 Aug |