List:Commits« Previous MessageNext Message »
From:pharvey Date:May 6 2006 5:15pm
Subject:Connector/ODBC 5 commit: r195 - MYSQLPlus/MYSQLPlusLib
View as plain text  
Modified:
   MYSQLPlus/MYSQLPlusLib/MStatement.cpp
Log:


Modified: MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-06 13:46:13 UTC (rev 194)
+++ MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-06 15:15:15 UTC (rev 195)
@@ -238,50 +238,75 @@
     MYODBCDbgReturn( pDiagnostic->getDiagRec( nRecNumber, psSQLState, pnNativeError,
psMessageText, nBufferLength, pnTextLength ) )
 }
 
-SQLRETURN MStatement::getStmtAttr( SQLINTEGER nAttribute, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr )
+SQLRETURN MStatement::getStmtAttr( SQLINTEGER nAttribute, SQLPOINTER pValue, SQLINTEGER
nBufferLength, SQLINTEGER *pnStringLength )
 {
     MYODBCDbgEnter();
 
     pDiagnostic->doClear();
 
-    SQLPOINTER *  pPointer      = (SQLPOINTER*)pValuePtr;   /* to reduce clutter         
          */
-    SQLUINTEGER * pUnsignedInt  = (SQLUINTEGER*)pValuePtr;  /* to reduce clutter         
          */
-    SQLINTEGER    nStringLengthPtr;
+    /*!
+        \internal ODBC RULE (DM)
 
+        An asynchronously executing function was called for the StatementHandle and was 
+        still executing when this function was called.
+    */
+    if ( getState() == STATE_S11 )
+        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 ( getState() >= STATE_S8 && getState() <= STATE_S10 )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY010 ) );
+
     /* pnStringLengthPtr is optional        */
-    if ( !pnStringLengthPtr )
-        pnStringLengthPtr = &nStringLengthPtr;
+    SQLINTEGER nStringLength;
+    if ( !pnStringLength )
+        pnStringLength = &nStringLength;
 
     /* known statement nAttributes */
     switch ( nAttribute )
     {
         case SQL_ATTR_APP_PARAM_DESC:
-            *pPointer  = pStm->attr_app_param_desc;
+            *((MDescriptor*)pValue) = getAppParamDesc();
             break;
+
         case SQL_ATTR_APP_ROW_DESC:
-            *pPointer  = pStm->attr_app_row_desc;
+            *((MDescriptor*)pValue) = getAppRowDesc();
             break;
+
         case SQL_ATTR_ASYNC_ENABLE:
-            *pUnsignedInt = pStm->attr_async_enable;
+            *((SQLUINTEGER*)pValue) = getAsyncEnable();
             break;
+
         case SQL_ATTR_CONCURRENCY:
-            *pUnsignedInt = pStm->attr_concurrency;
+            *((SQLUINTEGER*)pValue) = getConcurrency();
             break;
+
         case SQL_ATTR_CURSOR_SCROLLABLE:
-            *pUnsignedInt = pStm->attr_cursor_scrollable;
+            *((SQLUINTEGER*)pValue) = getCursorScrollable();
             break;
+
         case SQL_ATTR_CURSOR_SENSITIVITY:
-            *pUnsignedInt = pStm->attr_cursor_sensitivity;
+            *((SQLUINTEGER*)pValue) = getCursorSensitivity();
             break;
+
         case SQL_ATTR_CURSOR_TYPE:
-            *pUnsignedInt = pStm->attr_cursor_type;
+            *((SQLUINTEGER*)pValue) = getCursorType();
             break;
+
         case SQL_ATTR_ENABLE_AUTO_IPD:
-            *pUnsignedInt = pStm->attr_enable_auto_ipd;
+            *((SQLUINTEGER*)pValue) = getEnableAutoIPD();
             break;
+
         case SQL_ATTR_FETCH_BOOKMARK_PTR:
-            *pPointer  = pStm->attr_fetch_bookmark_ptr;
+            *((SQLPOINTER)pValue) = getFetchBookmarkPtr();
             break;
+
         case SQL_ATTR_IMP_PARAM_DESC:
             *pPointer  = pStm->attr_imp_param_desc;
             break;
@@ -289,19 +314,19 @@
             *pPointer  = pStm->attr_imp_row_desc;
             break;
         case SQL_ATTR_KEYSET_SIZE:
-            *pUnsignedInt = pStm->attr_keyset_size;
+            *((SQLUINTEGER*)pValue) = pStm->attr_keyset_size;
             break;
         case SQL_ATTR_MAX_LENGTH:
-            *pUnsignedInt = pStm->attr_max_length;
+            *((SQLUINTEGER*)pValue) = pStm->attr_max_length;
             break;
         case SQL_ATTR_MAX_ROWS:
-            *pUnsignedInt = pStm->attr_max_rows;
+            *((SQLUINTEGER*)pValue) = pStm->attr_max_rows;
             break;
         case SQL_ATTR_METADATA_ID:
-            *pUnsignedInt = pStm->attr_metadata_id;
+            *((SQLUINTEGER*)pValue) = pStm->attr_metadata_id;
             break;
         case SQL_ATTR_NOSCAN:
-            *pUnsignedInt = pStm->attr_noscan;
+            *((SQLUINTEGER*)pValue) = pStm->attr_noscan;
             break;
         case SQL_ATTR_PARAM_BIND_OFFSET_PTR:
             MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_BIND_OFFSET_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
@@ -316,10 +341,10 @@
         case SQL_ATTR_PARAMSET_SIZE:        
             MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_ARRAY_SIZE, pValuePtr, nBufferLength, pnStringLengthPtr ) );
         case SQL_ATTR_QUERY_TIMEOUT:
-            *pUnsignedInt = pStm->attr_query_timeout;
+            *((SQLUINTEGER*)pValue) = pStm->attr_query_timeout;
             break;
         case SQL_ATTR_RETRIEVE_DATA:
-            *pUnsignedInt = pStm->attr_retrieve_data;
+            *((SQLUINTEGER*)pValue) = pStm->attr_retrieve_data;
             break;
         case SQL_ATTR_ROW_ARRAY_SIZE:       
             MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_ARRAY_SIZE, pValuePtr, nBufferLength, pnStringLengthPtr ) );
@@ -328,7 +353,7 @@
         case SQL_ATTR_ROW_BIND_TYPE:
             MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_BIND_TYPE, pValuePtr, nBufferLength, pnStringLengthPtr ) );
         case SQL_ATTR_ROW_NUMBER:
-            *pUnsignedInt = pStm->attr_row_number;
+            *((SQLUINTEGER*)pValue) = pStm->attr_row_number;
             break;
         case SQL_ATTR_ROW_OPERATION_PTR:      
             MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
@@ -337,10 +362,10 @@
         case SQL_ATTR_ROWS_FETCHED_PTR:       
             MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_imp_row_desc, -1,
SQL_DESC_ROWS_PROCESSED_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
         case SQL_ATTR_SIMULATE_CURSOR:
-            *pUnsignedInt = pStm->attr_simulate_cursor;
+            *((SQLUINTEGER*)pValue) = pStm->attr_simulate_cursor;
             break;
         case SQL_ATTR_USE_BOOKMARKS:
-            *pUnsignedInt = pStm->attr_use_bookmarks;
+            *((SQLUINTEGER*)pValue) = pStm->attr_use_bookmarks;
             break;
         default:
             MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_01000, 0,
"Attribute unknown & ignored." ) );
@@ -694,7 +719,7 @@
         /*!
             \internal ODBC RULE (DM)
 
-            (DM) The Attribute argument was SQL_ATTR_APP_ROW_DESC or
SQL_ATTR_APP_PARAM_DESC, and 
+            The Attribute argument was SQL_ATTR_APP_ROW_DESC or SQL_ATTR_APP_PARAM_DESC,
and 
             the value in ValuePtr was an implicitly allocated descriptor handle other
than the handle 
             originally allocated for the ARD or APD.
         */
@@ -1399,6 +1424,17 @@
 {
     MYODBCDbgEnter();
 
+    /*!
+        \internal ODBC RULE
+
+        The argument Attribute was SQL_ATTR_ROW_NUMBER and the cursor was not open, or 
+        the cursor was positioned before the start of the result set or after the end 
+        of the result set.
+    */
+    if ( getState() != STATE_S6 && getState() != STATE_S7 )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_24000 ) );
+
+
     MYODBCDbgReturn3( "%d", nRowNumber );
 }
 

Thread
Connector/ODBC 5 commit: r195 - MYSQLPlus/MYSQLPlusLibpharvey6 May