List:Commits« Previous MessageNext Message »
From:pharvey Date:September 11 2006 8:09am
Subject:Connector/ODBC 5 commit: r537 - trunk/SDK/MYSQLPlus/Library
View as plain text  
Modified:
   trunk/SDK/MYSQLPlus/Library/Library.pro
   trunk/SDK/MYSQLPlus/Library/MResult.cpp
   trunk/SDK/MYSQLPlus/Library/MResult.h
   trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
   trunk/SDK/MYSQLPlus/Library/MResultPlus.h
Log:
changes/additions for block-cursor support

Modified: trunk/SDK/MYSQLPlus/Library/Library.pro
===================================================================
--- trunk/SDK/MYSQLPlus/Library/Library.pro	2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/Library.pro	2006-09-11 08:09:46 UTC (rev 537)
@@ -7,7 +7,7 @@
 include( ../../../common.pri )
 include( ../../../config.pri )
 include( ../../../defines.pri )
-CONFIG          += staticlib ResultPlus
+CONFIG          += staticlib
 # CONFIG          += staticlib ResultPlus ResultRes ResultStmt
 INCLUDEPATH	+= ../../C/include
 INCLUDEPATH	+= ../../Dbg/include

Modified: trunk/SDK/MYSQLPlus/Library/MResult.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.cpp	2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResult.cpp	2006-09-11 08:09:46 UTC (rev 537)
@@ -47,7 +47,7 @@
     nRow                    = 0;
     pDescriptorRecordIRD    = NULL;
     pDescriptorRecordARD    = NULL;
-    nBytesRemaining         = 0;        /*!< only used indirectly via pnBytesRemaining
when pnBytesRemaining==NULL - do not use otherwise!  */
+    nBytesRemaining         = 0;
 
     MYODBCDbgReturn2();
 }
@@ -539,7 +539,7 @@
     {
         if ( MDescriptorRecordIRD::isVariableLength(
resultGetData.pDescriptorRecordIRD->getConciseType() ) )
         {
-            if  ( nColumn == 0 || *(resultGetData.pnBytesRemaining) == 0 ||
vectorRows.at( resultGetData.nRow ).vectorColumns.at( resultGetData.nColumn ).isNull() )
+            if  ( resultGetData.nColumn == 0 || *(resultGetData.pnBytesRemaining) == 0 ||
vectorRows.at( resultGetData.nRow ).vectorColumns.at( resultGetData.nColumn ).isNull() )
                 MYODBCDbgReturn( SQL_NO_DATA );
 
             /*!
@@ -811,6 +811,64 @@
 }
 
 /*!
+    \brief  Refresh the application buffers.
+
+            - SQL_ATTR_ROW_STATUS_PTR (row status buffer - must match the RowSetSize)
+                - SQL_ROW_SUCCESS
+                - SQL_ROW_SUCCESS_WITH_INFO
+                - SQL_ROW_ERROR
+                - SQL_ROW_UPDATED 
+                - SQL_ROW_DELETED
+                - SQL_ROW_ADDED
+            - SQL_ATTR_ROWS_FETCHED_PTR (to return RowSetRows)
+            - ARD (bound buffers - must match the RowSetSize)
+            - SQL_ATTR_ROW_BIND_TYPE (bound by columns or rows)
+                - SQL_BIND_BY_COLUMN <default>
+                - length of a structure or an instance of a buffer
+
+*/
+SQLRETURN MResult::doRefresh()
+{
+    MYODBCDbgEnter();
+
+    if ( getState() < STATE_EXECUTED )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
+
+    resultSetData.doClear();
+    resultGetData.doClear();
+
+    SQLUSMALLINT *  pnArrayStatus   = getImpRowDesc()->getArrayStatusPtr();
+    SQLUINTEGER     nRow            = 0;
+
+    if ( isValidResultSetRow() )
+        nRow = getResultSetRowIndex();
+
+    for ( ; nRow < nRowSetSize; nRow++ )
+    {
+        switch ( vectorRows.at( nRow ).nStatus )
+        {
+            case SQL_ROW_SUCCESS:
+            case SQL_ROW_SUCCESS_WITH_INFO:
+            case SQL_ROW_UPDATED:
+            case SQL_ROW_DELETED:
+            case SQL_ROW_ADDED:
+                if ( getRowSetSize() > 1 )
+                    doRefreshArray( nRow );
+                else
+                    doRefresh( nRow );
+                break;
+            case SQL_ROW_ERROR:
+                break;
+            default:
+        }
+        if ( pnArrayStatus )
+            pnArrayStatus[nRow] = vectorRows.at( nRow ).nStatus;
+    }
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+/*!
     \brief  Aligns the RowSet with the first row in ResultSet.
 
             <B>ResultSetRow</B> is set to the first row in ResultSet.
ResultSetRow, and
@@ -2449,10 +2507,10 @@
         to retrieve 50 characters of data.
     */
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QString stringData = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
+    QString stringData = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
     if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
     {
         if ( MYODBCC::doStringCopyOut( (SQLCHAR*)pResultGetData->pTarget,
pResultGetData->nBytesMax, (SQLCHAR*)stringData.toAscii().data() ) )
@@ -2462,7 +2520,7 @@
         else
         {
             *pResultGetData->pnBytesRemaining = stringData.length() -
pResultGetData->nBytesMax;
-            vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( pResultGetData->nBytesMax - 1 )
);
+            vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( pResultGetData->nBytesMax - 1 )
);
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
         }
     }
@@ -2510,10 +2568,10 @@
         to retrieve 50 characters of data.
     */
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QString stringData = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
+    QString stringData = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
     if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
     {
         if ( MYODBCC::doStringCopyOut( (SQLWCHAR*)pResultGetData->pTarget,
pResultGetData->nBytesMax / sizeof(SQLWCHAR), (SQLWCHAR*)stringData.utf16() ) )
@@ -2523,7 +2581,7 @@
         else
         {
             *pResultGetData->pnBytesRemaining = stringData.length() * sizeof(SQLWCHAR)
- pResultGetData->nBytesMax;
-            vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( (pResultGetData->nBytesMax - 1)
/ sizeof(SQLWCHAR) ) );
+            vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( (pResultGetData->nBytesMax - 1)
/ sizeof(SQLWCHAR) ) );
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
         }
     }
@@ -2573,10 +2631,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<short int>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<short int>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((short int *)(pResultGetData->pTarget)) = (short int)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
+    *((short int *)(pResultGetData->pTarget)) = (short int)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2610,12 +2668,12 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned short int>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned short int>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((unsigned short int *)pResultGetData->pTarget) = (unsigned short
int)vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toUInt();
+    *((unsigned short int *)pResultGetData->pTarget) = (unsigned short
int)vectorRows.at( pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toUInt();
 
-    vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).clear();
+    vectorRows.at( pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).clear();
     *pResultGetData->pnBytesRemaining = 0;
 
     MYODBCDbgReturn( SQL_SUCCESS );
@@ -2659,17 +2717,17 @@
          pResultGetData->pDescriptorRecordIRD->getConciseType() == SQL_TYPE_DATE   
    ||
          pResultGetData->pDescriptorRecordIRD->getConciseType() ==
SQL_TYPE_TIMESTAMP )
     {
-        if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() ) 
+        if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() ) 
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-        *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toDateTime().toTime_t();
+        *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toDateTime().toTime_t();
         
     }
     else
     {
-        if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qlonglong>() ) 
+        if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qlonglong>() ) 
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
-        *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
+        *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
     }
 
     *pResultGetData->pnBytesRemaining = 0;
@@ -2707,7 +2765,7 @@
 //    if ( !pResultGetData->variantData.canConvert<unsigned long int>() ) 
 //        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((unsigned long int *)pResultGetData->pTarget) = (unsigned long
int)vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toULongLong();
+    *((unsigned long int *)pResultGetData->pTarget) = (unsigned long
int)vectorRows.at( pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toULongLong();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2741,10 +2799,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<float>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<float>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((float *)pResultGetData->pTarget) = (float)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
+    *((float *)pResultGetData->pTarget) = (float)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2778,10 +2836,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<double>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<double>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((double *)pResultGetData->pTarget) = (double)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
+    *((double *)pResultGetData->pTarget) = (double)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2815,7 +2873,7 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
     /*!
@@ -2825,9 +2883,9 @@
 
         This rule is for compat with v3 - but we issue a warning.
     */
-    if ( vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 0 )
+    if ( vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 0 )
         *((unsigned char *)pResultGetData->pTarget) = 0;
-    else if ( vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 1 )
+    else if ( vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 1 )
         *((unsigned char *)pResultGetData->pTarget) = 1;
     else
     {
@@ -2867,10 +2925,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<char>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<char>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((char *)pResultGetData->pTarget) = vectorRows.at( pRresultGetData->nRow
).vectorColumns.at( pResultGetData->nColumn ).toInt();
+    *((char *)pResultGetData->pTarget) = vectorRows.at( pResultGetData->nRow
).vectorColumns.at( pResultGetData->nColumn ).toInt();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2904,10 +2962,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((unsigned char *)pResultGetData->pTarget) = vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
+    *((unsigned char *)pResultGetData->pTarget) = vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2941,10 +2999,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qint64>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qint64>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((qint64 *)pResultGetData->pTarget) = (qint64)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
+    *((qint64 *)pResultGetData->pTarget) = (qint64)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -2978,10 +3036,10 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<quint64>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<quint64>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    *((quint64 *)pResultGetData->pTarget) = (quint64)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
+    *((quint64 *)pResultGetData->pTarget) = (quint64)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
 
     *pResultGetData->pnBytesRemaining = 0;
 
@@ -3004,10 +3062,10 @@
 {
     MYODBCDbgEnter();
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QByteArray bytearray = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
+    QByteArray bytearray = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
 
     if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
     {
@@ -3019,7 +3077,7 @@
         else
         {
             *pResultGetData->pnBytesRemaining = bytearray.size() -
pResultGetData->nBytesMax;
-            vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
+            vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
         }
     }
@@ -3052,10 +3110,10 @@
 {
     MYODBCDbgEnter();
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QByteArray bytearray = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
+    QByteArray bytearray = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
 
     if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
     {
@@ -3067,7 +3125,7 @@
         else
         {
             *pResultGetData->pnBytesRemaining = bytearray.size() -
pResultGetData->nBytesMax;
-            vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
+            vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
         }
     }
@@ -3109,10 +3167,10 @@
 
     SQL_DATE_STRUCT *pDateTarget = (SQL_DATE_STRUCT *)pResultGetData->pTarget;
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDate>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDate>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QDate d             = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDate();
+    QDate d             = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDate();
     pDateTarget->day    = d.day();
     pDateTarget->month  = d.month();
     pDateTarget->year   = d.year();
@@ -3151,10 +3209,10 @@
 
     SQL_TIME_STRUCT *pTimeTarget = (SQL_TIME_STRUCT *)pResultGetData->pTarget;
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QTime>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QTime>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QTime t             = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toTime();
+    QTime t             = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toTime();
     pTimeTarget->hour   = t.hour();
     pTimeTarget->minute = t.minute();
     pTimeTarget->second = t.second();
@@ -3193,10 +3251,10 @@
 
     SQL_TIMESTAMP_STRUCT *pTimeStampTarget = (SQL_TIMESTAMP_STRUCT
*)pResultGetData->pTarget;
 
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() ) 
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() ) 
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
 
-    QDateTime t = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDateTime();
+    QDateTime t = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDateTime();
     pTimeStampTarget->day        = t.date().day();
     pTimeStampTarget->fraction   = t.time().msec(); /*! \todo fraction is not same as
msec - look into it */
     pTimeStampTarget->hour       = t.time().hour();
@@ -3244,7 +3302,7 @@
     /* our high precision stuff (DECIMAL) is stored as a string and all other numerics
can be turned into a string 
        so lets use a string as our starting point - in this way we hope to catch &
report any possible loss of 
        precision/scale :) */
-    if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
+    if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006, 0,
tr("Variant (data conversion hub) could not convert to a string.") ) );
 
     /*!
@@ -3258,7 +3316,7 @@
         MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
     }
 
-    QString stringData = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString().trimmed();
+    QString stringData = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString().trimmed();
 
     /*!
         \internal ODBC RULE

Modified: trunk/SDK/MYSQLPlus/Library/MResult.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.h	2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResult.h	2006-09-11 08:09:46 UTC (rev 537)
@@ -46,6 +46,7 @@
     SQLUINTEGER             nRow;                   /*!< index into vectorRows
(0-based)                                    */
     MDescriptorRecordIRD *  pDescriptorRecordIRD;   /*!< descriptor describing the
resultset column                         */
     MDescriptorRecordARD *  pDescriptorRecordARD;   /*!< set if nTargetType ==
SQL_ARD_TYPE - otherwise this is null        */
+    SQLINTEGER              nBytesRemaining;        /*!< only used indirectly via
pnBytesRemaining when pnBytesRemaining==NULL - do not use otherwise!  */
 };
 
 /*!
@@ -319,6 +320,7 @@
 
     /* doers */
     virtual SQLRETURN doPrepare( MCommand *pCommand ) = 0;  /*!< Prepare the given
command.                                 */
+    virtual SQLRETURN doRefresh();                          /*!< Load/refreshs bound
buffers provided by application.       */
     virtual SQLRETURN doExecute() = 0;                      /*!< Execute the prepared
command.                              */
     virtual SQLRETURN doAppend() = 0;
     virtual SQLRETURN doClear() = 0;
@@ -331,7 +333,6 @@
     virtual SQLRETURN doSkip( qlonglong nRowSets );         /*!< Moves cursor/rowset
relative to current row in resultset.  */
     virtual SQLRETURN doGoto( qulonglong nRow );            /*!< Moves cursor/rowset
relative to first row of resultset.    */
     virtual SQLRETURN doCommit() = 0;                       
-    virtual SQLRETURN doRefresh() = 0;                      /*!< Load/refreshs bound
buffers provided by application.       */
 
     /* isers */
     virtual BOOLEAN isAfterEnd();
@@ -355,6 +356,9 @@
 
                 This contains the ResultSet (incl. RowSet) rows or just the RowSet rows
depending 
                 upon the cursor settings.
+
+                At some point block-cursors may be supported in the server. If this
happens we may need to
+                abstract ourself from this - but for now its a handy solution which meets
our needs.
     */
     /*@{*/
     MResultRows     vectorRows;

Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp	2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp	2006-09-11 08:09:46 UTC (rev 537)
@@ -147,48 +147,6 @@
     MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010, 0,
tr("Resultset is read-only.") ) );
 }
 
-/*!
-    \brief  Refresh the application buffers.
-
-            - SQL_ATTR_ROW_STATUS_PTR (row status buffer - must match the RowSetSize)
-                - SQL_ROW_SUCCESS
-                - SQL_ROW_SUCCESS_WITH_INFO
-                - SQL_ROW_ERROR
-                - SQL_ROW_UPDATED 
-                - SQL_ROW_DELETED
-                - SQL_ROW_ADDED
-            - SQL_ATTR_ROWS_FETCHED_PTR (to return RowSetRows)
-            - ARD (bound buffers - must match the RowSetSize)
-            - SQL_ATTR_ROW_BIND_TYPE (bound by columns or rows)
-                - SQL_BIND_BY_COLUMN <default>
-                - length of a structure or an instance of a buffer
-
-*/
-SQLRETURN MResultPlus::doRefresh()
-{
-    MYODBCDbgEnter();
-
-    if ( getState() < STATE_EXECUTED )
-        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
-
-    SQLUINTEGER nRowArraySize = getStatement()->getRowArraySize();
-
-    if ( getStatement()->getCursorType() == SQL_CURSOR_FORWARD_ONLY )
-        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("doGoto() not supported when SQL_CURSOR_FORWARD_ONLY") ) );
-
-    resultGetData.doClear();
-
-    if ( !isValidRowSetRow( nRow ) )
-    {
-        nRow = 0;
-        MYODBCDbgReturn( SQL_NO_DATA );
-    }
-
-    this->nRow = nRow;
-
-    MYODBCDbgReturn( SQL_SUCCESS );
-}
-
 SQLRETURN MResultPlus::doColumns( const QString &stringCatalog, const QString
&stringSchema, const QString &stringTable, const QString &stringColumn )
 {
     MYODBCDbgEnter();

Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.h	2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.h	2006-09-11 08:09:46 UTC (rev 537)
@@ -43,7 +43,6 @@
     SQLRETURN setData( SQLUSMALLINT nColumn, const QVariant &variantData );
 
     /* getters */
-    SQLRETURN getData( SQLUSMALLINT nColumn, QVariant &variantData );
 
     /* doers */
     SQLRETURN doPrepare( MCommand *pCommand );

Thread
Connector/ODBC 5 commit: r537 - trunk/SDK/MYSQLPlus/Librarypharvey11 Sep