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


Modified: MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-06 05:03:19 UTC (rev 190)
+++ MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-06 05:17:57 UTC (rev 191)
@@ -70,7 +70,149 @@
 
     pDiagnostic->doClear();
 
-    MYODBCDbgReturn( SQL_ERROR );
+    SQLUINTEGER  pUnsignedInt = (SQLUINTEGER)pValue;  /* to reduce clutter               
    */
+
+    /* known statement attributes */
+    switch ( nAttribute )
+    {
+        case SQL_ATTR_APP_PARAM_DESC:
+            if ( !MYODBCDrvAssociateDes( pStm, (MYODBC_DES_PTR)pValue,
MYODBC_RTTI_DES_APD ) )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HY000, 0,
NULL ) );
+            break;
+        case SQL_ATTR_APP_ROW_DESC:
+            if ( !MYODBCDrvAssociateDes( pStm, (MYODBC_DES_PTR)pValue,
MYODBC_RTTI_DES_ARD ) )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HY000, 0,
NULL ) );
+            break;
+        case SQL_ATTR_ASYNC_ENABLE:
+            if ( pUnsignedInt != SQL_ASYNC_ENABLE_ON )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_CONCURRENCY:
+            if ( pUnsignedInt != SQL_CONCUR_READ_ONLY )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_CURSOR_SCROLLABLE:
+            if ( pUnsignedInt == SQL_NONSCROLLABLE && pStm->attr_cursor_type
!= SQL_CURSOR_FORWARD_ONLY )
+                pStm->attr_cursor_type = SQL_CURSOR_FORWARD_ONLY;
+            else if ( pUnsignedInt == SQL_SCROLLABLE && pStm->attr_cursor_type
== SQL_CURSOR_FORWARD_ONLY )
+                pStm->attr_cursor_type = SQL_CURSOR_STATIC;
+            break;
+        case SQL_ATTR_CURSOR_SENSITIVITY:
+            if ( pUnsignedInt != SQL_UNSPECIFIED )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_CURSOR_TYPE:
+            if ( pStm->pDbc->nFlag & MYODBC_FLAG_FORWARD_CURSOR )
+            {
+                pStm->attr_cursor_type = SQL_CURSOR_FORWARD_ONLY;
+                if ( pUnsignedInt != SQL_CURSOR_FORWARD_ONLY )
+                    MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_01S02, 0,
NULL ) );
+            }
+            else if ( pStm->pDbc->nFlag & MYODBC_FLAG_DYNAMIC_CURSOR )
+            {
+                if ( pUnsignedInt != SQL_CURSOR_KEYSET_DRIVEN )
+                    pStm->attr_cursor_type = pUnsignedInt;
+                else
+                {
+                    pStm->attr_cursor_type = SQL_CURSOR_STATIC;
+                    MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_01S02, 0,
"Option value changed to default static cursor" ) );
+                }
+            }
+            else
+            {
+                if ( pUnsignedInt == SQL_CURSOR_FORWARD_ONLY || pUnsignedInt ==
SQL_CURSOR_STATIC )
+                    pStm->attr_cursor_type = pUnsignedInt;
+                else
+                {
+                    pStm->attr_cursor_type = SQL_CURSOR_STATIC;
+                    MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_01S02, 0,
"Option value changed to default static cursor" ) );
+                }
+            }
+            break;
+        case SQL_ATTR_ENABLE_AUTO_IPD:
+            if ( pUnsignedInt != SQL_FALSE )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_FETCH_BOOKMARK_PTR:
+            if ( pValue )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_IMP_PARAM_DESC:
+            MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HY000, 0, NULL )
);
+            break;
+        case SQL_ATTR_IMP_ROW_DESC:
+            MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HY000, 0, NULL )
);
+            break;
+        case SQL_ATTR_KEYSET_SIZE:
+            if ( pUnsignedInt != 0 )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_MAX_LENGTH:
+            pStm->attr_max_length = pUnsignedInt;
+            break;
+        case SQL_ATTR_MAX_ROWS:
+            pStm->attr_max_rows = pUnsignedInt;
+            break;
+        case SQL_ATTR_METADATA_ID:
+            if ( pUnsignedInt != SQL_FALSE )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_NOSCAN:
+            if ( pUnsignedInt != SQL_NOSCAN_ON )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_PARAM_BIND_OFFSET_PTR:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_BIND_OFFSET_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_PARAM_BIND_TYPE:      
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_BIND_TYPE, pValue, nStringLength ) );
+        case SQL_ATTR_PARAM_OPERATION_PTR:  
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_PARAM_STATUS_PTR:     
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_imp_param_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_PARAMS_PROCESSED_PTR: 
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_imp_param_desc, -1,
SQL_DESC_ROWS_PROCESSED_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_PARAMSET_SIZE:        
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_ARRAY_SIZE, pValue, nStringLength ) );
+        case SQL_ATTR_QUERY_TIMEOUT:
+            if ( pUnsignedInt != SQL_QUERY_TIMEOUT_DEFAULT )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_RETRIEVE_DATA:
+            if ( pUnsignedInt != SQL_RD_DEFAULT )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_ROW_ARRAY_SIZE:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_ARRAY_SIZE, pValue, nStringLength ) );
+
+        case SQL_ROWSET_SIZE:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_ARRAY_SIZE, pValue, nStringLength ) );
+
+        case SQL_ATTR_ROW_BIND_OFFSET_PTR:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_BIND_OFFSET_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_ROW_BIND_TYPE:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_BIND_TYPE, pValue, nStringLength ) );
+        case SQL_ATTR_ROW_NUMBER:
+            MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0, NULL )
);
+        case SQL_ATTR_ROW_OPERATION_PTR:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_ROW_STATUS_PTR:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_imp_row_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_ROWS_FETCHED_PTR:
+            MYODBCDbgReturn( MYODBCDrvSetDescField( pStm->attr_imp_row_desc, -1,
SQL_DESC_ROWS_PROCESSED_PTR, pValue, nStringLength ) );
+        case SQL_ATTR_SIMULATE_CURSOR:
+            if ( pUnsignedInt != SQL_SC_TRY_UNIQUE )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        case SQL_ATTR_USE_BOOKMARKS:
+            if ( pUnsignedInt != pStm->attr_use_bookmarks )
+                MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HYC00, 0,
NULL ) );
+            break;
+        default:
+            MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_01000, 0,
"Attribute unknown & ignored." ) );
+            /* MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HY092, 0, NULL
) ); */
+    }
+
+    MYODBCDbgReturn( SQL_SUCCESS );
 }
 
 
@@ -110,7 +252,110 @@
 
     pDiagnostic->doClear();
 
-    MYODBCDbgReturn( SQL_ERROR );
+    SQLPOINTER *  pPointer      = (SQLPOINTER*)pValuePtr;   /* to reduce clutter         
          */
+    SQLUINTEGER * pUnsignedInt  = (SQLUINTEGER*)pValuePtr;  /* to reduce clutter         
          */
+    SQLINTEGER    nStringLengthPtr;
+
+    /* pnStringLengthPtr is optional        */
+    if ( !pnStringLengthPtr )
+        pnStringLengthPtr = &nStringLengthPtr;
+
+    /* known statement nAttributes */
+    switch ( nAttribute )
+    {
+        case SQL_ATTR_APP_PARAM_DESC:
+            *pPointer  = pStm->attr_app_param_desc;
+            break;
+        case SQL_ATTR_APP_ROW_DESC:
+            *pPointer  = pStm->attr_app_row_desc;
+            break;
+        case SQL_ATTR_ASYNC_ENABLE:
+            *pUnsignedInt = pStm->attr_async_enable;
+            break;
+        case SQL_ATTR_CONCURRENCY:
+            *pUnsignedInt = pStm->attr_concurrency;
+            break;
+        case SQL_ATTR_CURSOR_SCROLLABLE:
+            *pUnsignedInt = pStm->attr_cursor_scrollable;
+            break;
+        case SQL_ATTR_CURSOR_SENSITIVITY:
+            *pUnsignedInt = pStm->attr_cursor_sensitivity;
+            break;
+        case SQL_ATTR_CURSOR_TYPE:
+            *pUnsignedInt = pStm->attr_cursor_type;
+            break;
+        case SQL_ATTR_ENABLE_AUTO_IPD:
+            *pUnsignedInt = pStm->attr_enable_auto_ipd;
+            break;
+        case SQL_ATTR_FETCH_BOOKMARK_PTR:
+            *pPointer  = pStm->attr_fetch_bookmark_ptr;
+            break;
+        case SQL_ATTR_IMP_PARAM_DESC:
+            *pPointer  = pStm->attr_imp_param_desc;
+            break;
+        case SQL_ATTR_IMP_ROW_DESC:
+            *pPointer  = pStm->attr_imp_row_desc;
+            break;
+        case SQL_ATTR_KEYSET_SIZE:
+            *pUnsignedInt = pStm->attr_keyset_size;
+            break;
+        case SQL_ATTR_MAX_LENGTH:
+            *pUnsignedInt = pStm->attr_max_length;
+            break;
+        case SQL_ATTR_MAX_ROWS:
+            *pUnsignedInt = pStm->attr_max_rows;
+            break;
+        case SQL_ATTR_METADATA_ID:
+            *pUnsignedInt = pStm->attr_metadata_id;
+            break;
+        case SQL_ATTR_NOSCAN:
+            *pUnsignedInt = 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 ) );
+        case SQL_ATTR_PARAM_BIND_TYPE:      
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_BIND_TYPE, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        case SQL_ATTR_PARAM_OPERATION_PTR:  
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_param_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        case SQL_ATTR_PARAM_STATUS_PTR:     
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_imp_param_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        case SQL_ATTR_PARAMS_PROCESSED_PTR: 
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_imp_param_desc, -1,
SQL_DESC_ROWS_PROCESSED_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        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;
+            break;
+        case SQL_ATTR_RETRIEVE_DATA:
+            *pUnsignedInt = 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 ) );
+        case SQL_ATTR_ROW_BIND_OFFSET_PTR:  
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_BIND_OFFSET_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        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;
+            break;
+        case SQL_ATTR_ROW_OPERATION_PTR:      
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_app_row_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        case SQL_ATTR_ROW_STATUS_PTR:         
+            MYODBCDbgReturn( MYODBCDrvGetDescField( pStm->attr_imp_row_desc, -1,
SQL_DESC_ARRAY_STATUS_PTR, pValuePtr, nBufferLength, pnStringLengthPtr ) );
+        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;
+            break;
+        case SQL_ATTR_USE_BOOKMARKS:
+            *pUnsignedInt = pStm->attr_use_bookmarks;
+            break;
+        default:
+            MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_01000, 0,
"Attribute unknown & ignored." ) );
+            /* MYODBCDbgReturn( MYODBCDiaAppend( pStm->hDia, MYODBC_DIA_HY092, 0, NULL
) ); */
+    }
+
+    MYODBCDbgReturn( SQL_SUCCESS );
 }
 
 SQLRETURN MStatement::getTypeInfo( SQLSMALLINT nDataType )

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