List:Commits« Previous MessageNext Message »
From:pharvey Date:May 26 2006 11:35pm
Subject:Connector/ODBC 5 commit: r275 - MYSQLPlus/MYSQLPlusLib
View as plain text  
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/MYSQLPlusLibpharvey27 May