Modified:
MYSQLPlus/MYSQLPlusLib/MResult.cpp
MYSQLPlus/MYSQLPlusLib/MResult.h
MYSQLPlus/MYSQLPlusLib/MStatement.cpp
Log:
Modified: MYSQLPlus/MYSQLPlusLib/MResult.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MResult.cpp 2006-05-26 23:21:48 UTC (rev 274)
+++ MYSQLPlus/MYSQLPlusLib/MResult.cpp 2006-05-26 23:35:36 UTC (rev 275)
@@ -436,7 +436,7 @@
MYODBCDbgReturn3( "%p", getStatement()->getImpRowDesc() );
}
-STATEMENT_TYPE MResult::getStatementType()
+MResult::STATEMENT_TYPE MResult::getStatementType()
{
MYODBCDbgEnter();
Modified: MYSQLPlus/MYSQLPlusLib/MResult.h
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MResult.h 2006-05-26 23:21:48 UTC (rev 274)
+++ MYSQLPlus/MYSQLPlusLib/MResult.h 2006-05-26 23:35:36 UTC (rev 275)
@@ -77,7 +77,7 @@
This information is gleaned from the first bit of the statement during a
doPrepare(). It
is useful to keep such information - look for usage in the source to see why.
*/
- enum STATMENT_TYPE
+ enum STATEMENT_TYPE
{
STATEMENT_TYPE_NULL, /*!< we do not have a statement
*/
STATEMENT_TYPE_MULTI, /*!< multiple statements, possibly a mix of types,
has been prepared */
@@ -98,15 +98,15 @@
virtual SQLRETURN setRow( qulonglong nRow ) = 0;
/* getters */
- STATE getState();
+ STATE getState();
+ qulonglong getRowsAffected();
+ STATEMENT_TYPE getStatementType();
virtual SQLRETURN getColumns( uint *pnColumns ) = 0;
virtual SQLRETURN getData( SQLUSMALLINT nColumn, QVariant &variantData ) = 0;
virtual SQLRETURN getData( SQLUSMALLINT nColumn, SQLSMALLINT nTargetType,
SQLPOINTER pTargetValue, SQLINTEGER nBufferLength, SQLINTEGER *pnLength, SQLINTEGER
*pnIndicator );
virtual SQLRETURN getRow( qulonglong *pnRow ) = 0;
virtual SQLRETURN getRows( qulonglong *pnRows ) = 0;
- qulonglong getRowsAffected();
- STATEMENT_TYPE getStatementType();
/* doers */
virtual SQLRETURN doAppend() = 0;
@@ -191,7 +191,7 @@
STATE nState; /*!< our state
*/
BOOLEAN bBuffered; /*!< true causes entire resultset to get pulled to
client at execute (enabling other features) (default=true) */
qulonglong nRowsAffected; /*!< number of rows affected by a non-SELECT
statement (catalog and SHOW statements count as SELECT in this case) */
- STATMENT_TYPE nStatementType;
+ STATEMENT_TYPE nStatementType;
};
#endif
Modified: MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MStatement.cpp 2006-05-26 23:21:48 UTC (rev 274)
+++ MYSQLPlus/MYSQLPlusLib/MStatement.cpp 2006-05-26 23:35:36 UTC (rev 275)
@@ -1953,18 +1953,18 @@
switch ( pResult->getStatementType() )
{
- case STATEMENT_TYPE_UPDATE:
- case STATEMENT_TYPE_DELETE:
- case STATEMENT_TYPE_INSERT:
+ case MResult::STATEMENT_TYPE_UPDATE:
+ case MResult::STATEMENT_TYPE_DELETE:
+ case MResult::STATEMENT_TYPE_INSERT:
setState( STATE_S2 );
break;
- case STATEMENT_TYPE_NULL:
+ case MResult::STATEMENT_TYPE_NULL:
pDiagnostic->doAppend( MDiagnostic::DIA_01000, 0, tr("STATEMENT_TYPE_NULL
should not happen here") );
- case STATEMENT_TYPE_MULTI:
- case STATEMENT_TYPE_SELECT:
- case STATEMENT_TYPE_SHOW:
- case STATEMENT_TYPE_PLUS:
- case STATEMENT_TYPE_OTHER:
+ case MResult::STATEMENT_TYPE_MULTI:
+ case MResult::STATEMENT_TYPE_SELECT:
+ case MResult::STATEMENT_TYPE_SHOW:
+ case MResult::STATEMENT_TYPE_PLUS:
+ case MResult::STATEMENT_TYPE_OTHER:
setState( STATE_S3 );
break;
}
@@ -2044,6 +2044,44 @@
*/
pDiagnostic->doClear();
+ /*!
+ \internal ODBC RULE (DM)
+
+ The specified StatementHandle was not in an executed state.
+ The function was called without first calling SQLExecDirect,
+ SQLExecute or a catalog function.
+ */
+ if ( getState() < STATE_S4 )
+ MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY010 ) );
+
+ /*!
+ \internal ODBC RULE (DM)
+
+ An asynchronously executing function (not this one) was called
+ for the StatementHandle and was still executing when this function
+ was called.
+ */
+ if ( isAsyncInProgress() )
+ MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY010 ) );
+
+ /*!
+ \internal ODBC RULE (DM)
+
+ SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was
+ called for the StatementHandle and returned SQL_NEED_DATA. This
+ function was called before data was sent for all data-at-execution
+ parameters or columns.
+ */
+ if ( isDataNeeded() )
+ MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY010 ) );
+
+ /*!
+ \internal MYODBC RULE
+
+ We need pnRowCount. This is mostly just to simplify the following code
+ but also in lite of the fact that this call would serve very little
+ purpose without it.
+ */
if ( !pnRowCount )
MYODBCDbgReturn( getDiagnotic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("pnRowCount must not be null") ) );
@@ -2063,18 +2101,18 @@
*/
switch ( pResult->getStatementType() )
{
- case STATEMENT_TYPE_UPDATE:
- case STATEMENT_TYPE_DELETE:
- case STATEMENT_TYPE_INSERT:
+ case MResult::STATEMENT_TYPE_UPDATE:
+ case MResult::STATEMENT_TYPE_DELETE:
+ case MResult::STATEMENT_TYPE_INSERT:
*pnRowCount = getRowsAffected();
MYODBCDbgReturn( SQL_SUCCESS );
- case STATEMENT_TYPE_NULL:
+ case MResult::STATEMENT_TYPE_NULL:
pDiagnostic->doAppend( MDiagnostic::DIA_01000, 0, tr("STATEMENT_TYPE_NULL
should not happen here") );
- case STATEMENT_TYPE_MULTI:
- case STATEMENT_TYPE_SELECT:
- case STATEMENT_TYPE_SHOW:
- case STATEMENT_TYPE_PLUS:
- case STATEMENT_TYPE_OTHER:
+ case MResult::STATEMENT_TYPE_MULTI:
+ case MResult::STATEMENT_TYPE_SELECT:
+ case MResult::STATEMENT_TYPE_SHOW:
+ case MResult::STATEMENT_TYPE_PLUS:
+ case MResult::STATEMENT_TYPE_OTHER:
if ( pResult->getRows( pnRowCount ) == SQL_SUCCESS )
MYODBCDbgReturn( SQL_SUCCESS );
break;
| Thread |
|---|
| • Connector/ODBC 5 commit: r275 - MYSQLPlus/MYSQLPlusLib | pharvey | 27 May |