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


Modified: MYSQLPlus/MYSQLPlusLib/MResult.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MResult.cpp	2006-05-17 06:34:20 UTC (rev 249)
+++ MYSQLPlus/MYSQLPlusLib/MResult.cpp	2006-05-17 06:55:08 UTC (rev 250)
@@ -102,30 +102,37 @@
 {
     MYODBCDbgEnter();
 
+    /* validate column number */
+    if ( nColumnNumber > getImpRowDesc()->getCount() )
+        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07009 ) );
+
+    MResultDataTarget dataTarget;
+    dataTarget.nBytesOrCharsMax         = nBufferLength;
+    dataTarget.nColumn                  = nColumnNumber;
+    dataTarget.nTargetType              = nTargetType;
+    dataTarget.pnBytesOrCharsRemaining  = pnLength; 
+    dataTarget.pnIndicator              = pnIndicator;
+    dataTarget.pTarget                  = pTargetValue;
+    
     /* get our col data from current row (as variant) */
-    QVariant    variantData;
-    SQLRETURN   nReturn = getData( nColumnNumber, variantData );
+    SQLRETURN   nReturn = getData( nColumnNumber, dataTarget.variantData );
     if ( !SQL_SUCCEEDED(nReturn) )
         MYODBCDbgReturn( nReturn );
 
     /* get indicator value; no need to process further if we are null */
-    if ( variantData.isNull() )
+    if ( dataTarget.variantData.isNull() )
     {
-        if ( pnIndicator ) 
+        if ( dataTarget.pnIndicator ) 
         {
-            *pnIndicator = SQL_NULL_DATA;
+            *dataTarget.pnIndicator = SQL_NULL_DATA;
             MYODBCDbgReturn( SQL_SUCCESS );
         }
         else
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_22002 ) );
     }
 
-    if ( pnIndicator ) *pnIndicator = 0;
+    if ( dataTarget.pnIndicator ) *dataTarget.pnIndicator = 0;
 
-    /* validate column number */
-    if ( nColumnNumber > getImpRowDesc()->getCount() )
-        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07009 ) );
-
     /* get data and data length, convert data as needed */
     switch ( nTargetType )
     {
@@ -204,61 +211,63 @@
         case SQL_C_DEFAULT:
             MYODBCDbgReturn( getData( nColumnNumber,
(MDescriptorRecordIRD*)getImpRowDesc()->getRecord( nColumnNumber ), pTargetValue,
nBufferLength, pnLength, pnIndicator ) );
 
-        case SQL_C_CHAR:
-        case SQL_C_WCHAR:
-            /*!
-                \internal
-                \todo
+        case SQL_CHAR:
+        case SQL_VARCHAR:
+        case SQL_LONGVARCHAR:
+        case SQL_WCHAR:
+        case SQL_WVARCHAR:
+        case SQL_WLONGVARCHAR:
+            MYODBCDbgReturn( fromCharacterSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-                Differentiate between char and wide-char.
-            */
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQLWCHAR *)pTargetValue, nBufferLength * sizeof(SQLWCHAR), SQLINTEGER pnLength ) );
+        case SQL_DECIMAL:
+        case SQL_NUMERIC:
+        case SQL_TINYINT:
+        case SQL_SMALLINT:
+        case SQL_INTEGER:
+        case SQL_BIGINT:
+        case SQL_REAL:
+        case SQL_FLOAT:
+        case SQL_DOUBLE:
+            MYODBCDbgReturn( fromNumericSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_SSHORT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(short int *)pTargetValue, pnLength ) );
+        case SQL_BIT:
+            MYODBCDbgReturn( fromBitSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_USHORT:            
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned short int *)pTargetValue, pnLength ) );
+        case SQL_BINARY:
+        case SQL_VARBINARY:
+        case SQL_LONGVARBINARY:
+            MYODBCDbgReturn( fromBinarySQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_SLONG:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(long int *)pTargetValue, pnLength ) );
+        case SQL_TYPE_DATE:
+            MYODBCDbgReturn( fromDateSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_ULONG:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned long int *)pTargetValue, pnLength ) );
+        case SQL_GUID:
+            MYODBCDbgReturn( fromGuidSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_FLOAT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(float *)pTargetValue, pnLength ) );
+        case SQL_TYPE_TIME:
+            MYODBCDbgReturn( fromTimeSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_DOUBLE:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(double *)pTargetValue, pnLength ) );
+        case SQL_TYPE_TIMESTAMP:
+            MYODBCDbgReturn( fromTimeStampSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_BIT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned char *)pTargetValue, pnLength ) );
+        case SQL_INTERVAL_YEAR:
+        case SQL_INTERVAL_MONTH:
+        case SQL_INTERVAL_YEAR_TO_MONTH:
+            MYODBCDbgReturn( fromIntervalYearMonthSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_STINYINT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(char *)pTargetValue, pnLength ) );
+        case SQL_INTERVAL_DAY:
+        case SQL_INTERVAL_HOUR:
+        case SQL_INTERVAL_MINUTE:
+        case SQL_INTERVAL_SECOND:
+        case SQL_INTERVAL_DAY_TO_HOUR:
+        case SQL_INTERVAL_DAY_TO_MINUTE:
+        case SQL_INTERVAL_DAY_TO_SECOND:
+        case SQL_INTERVAL_HOUR_TO_MINUTE:
+        case SQL_INTERVAL_HOUR_TO_SECOND:
+        case SQL_INTERVAL_MINUTE_TO_SECOND:
+            MYODBCDbgReturn( fromIntervalDayTimeSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
 
-        case SQL_C_UTINYINT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned char *)pTargetValue, pnLength ) );
-
-        case SQL_C_SBIGINT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(qint64 *)pTargetValue, pnLength ) );
-
-        case SQL_C_UBIGINT:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(quint64 *)pTargetValue, pnLength ) );
-
-        case SQL_C_BINARY:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
pTargetValue, nBufferLength, pnLength ) );
-
-        case SQL_C_TYPE_DATE:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQL_DATE_STRUCT *)pTargetValue, pnLength ) );
-
-        case SQL_C_TYPE_TIME:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQL_TIME_STRUCT *)pTargetValue, pnLength ) );
-
-        case SQL_C_TYPE_TIMESTAMP:
-            MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQL_TIMESTAMP_STRUCT *)pTargetValue, pnLength ) );
-
+++++++++++++
         case SQL_C_NUMERIC:
             {
                 /*!
@@ -283,26 +292,6 @@
             }
             break;
 
-        case SQL_C_GUID:
-            SQLGUID;
-            break;
-
-        case SQL_C_INTERVAL_MONTH:
-        case SQL_C_INTERVAL_YEAR:
-        case SQL_C_INTERVAL_YEAR_TO_MONTH:
-        case SQL_C_INTERVAL_DAY:
-        case SQL_C_INTERVAL_HOUR:
-        case SQL_C_INTERVAL_MINUTE:
-        case SQL_C_INTERVAL_SECOND:
-        case SQL_C_INTERVAL_DAY_TO_HOUR:
-        case SQL_C_INTERVAL_DAY_TO_MINUTE:
-        case SQL_C_INTERVAL_DAY_TO_SECOND:
-        case SQL_C_INTERVAL_HOUR_TO_MINUTE:
-        case SQL_C_INTERVAL_HOUR_TO_SECOND:
-        case SQL_C_INTERVAL_MINUTE_TO_SECOND:
-            SQL_INTERVAL_STRUCT;
-            break;
-
         default:
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY003 ) );
     }

Thread
Connector/ODBC 5 commit: r250 - MYSQLPlus/MYSQLPlusLibpharvey17 May