Modified:
trunk/Driver/Driver/Tests/MYODBCDriverTest.h
trunk/Driver/Driver/Tests/TSTDriverConnect.c
trunk/SDK/MYSQLPlus/Library/MCommand.cpp
trunk/SDK/MYSQLPlus/Library/MResult.cpp
trunk/SDK/MYSQLPlus/Library/MResult.h
trunk/SDK/MYSQLPlus/Library/MResultRes.cpp
trunk/SDK/MYSQLPlus/Library/MStatement.cpp
Log:
FIX: Remove redundant test.
WIP: Work to fully implement SQLBindParameter.
ENH: Improved trace/log output.
Modified: trunk/Driver/Driver/Tests/MYODBCDriverTest.h
===================================================================
--- trunk/Driver/Driver/Tests/MYODBCDriverTest.h 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/Driver/Driver/Tests/MYODBCDriverTest.h 2006-11-07 12:18:36 UTC (rev 657)
@@ -78,7 +78,6 @@
/* for SQLDriverConnect */
#define MYODBC_DRV_TST_CONNECT _T("DSN=NorthwindMyODBC5;UID=myodbctest;PWD=myodbctest;")
#define MYODBC_DRV_TST_CONNECT2 _T("DRIVER=MySQL Connector/ODBC
v5;DATABASE=Northwind;UID=myodbctest;PWD=myodbctest;")
-#define MYODBC_DRV_TST_CONNECT3 _T("DRIVER={MySQL Connector/ODBC
v5};server=localhost;uid=myodbctest;pwd=myodbctest;database=Northwind;OPTION=16384")
#define MYODBC_DRV_TST_CATALOG _T("Northwind")
#define MYODBC_DRV_TST_MAX_LEN 1024
Modified: trunk/Driver/Driver/Tests/TSTDriverConnect.c
===================================================================
--- trunk/Driver/Driver/Tests/TSTDriverConnect.c 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/Driver/Driver/Tests/TSTDriverConnect.c 2006-11-07 12:18:36 UTC (rev 657)
@@ -56,14 +56,6 @@
}
if ( !TSTDisconnect() ) return FALSE;
- /* connect with DRIVER (using {} in connect string)*/
- if ( !SQL_SUCCEEDED( MYODBCTstDriverConnect( hDbc, NULL, MYODBC_DRV_TST_CONNECT3,
SQL_NTS, NULL, 0, 0, SQL_DRIVER_NOPROMPT ) ) )
- {
- MYODBCTstFilePrint( stderr, _T("[%s][%d]Failed to connect using [%s].\n"),
_T(__FILE__), __LINE__, MYODBC_DRV_TST_CONNECT3 );
- return FALSE;
- }
- if ( !TSTDisconnect() ) return FALSE;
-
return TRUE;
}
Modified: trunk/SDK/MYSQLPlus/Library/MCommand.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MCommand.cpp 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/SDK/MYSQLPlus/Library/MCommand.cpp 2006-11-07 12:18:36 UTC (rev 657)
@@ -200,7 +200,7 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%s", stringCommand );
+ MYODBCDbgReturn1( stringCommand );
}
/*!
Modified: trunk/SDK/MYSQLPlus/Library/MResult.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.cpp 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/SDK/MYSQLPlus/Library/MResult.cpp 2006-11-07 12:18:36 UTC (rev 657)
@@ -68,7 +68,7 @@
MYODBCDbgReturn3( "%d", false );
}
-MResultSetData::MResultSetData()
+MResultPutData::MResultPutData()
{
MYODBCDbgEnter();
@@ -77,7 +77,7 @@
MYODBCDbgReturn2();
}
-void MResultSetData::doClear()
+void MResultPutData::doClear()
{
MYODBCDbgEnter();
@@ -3695,22 +3695,26 @@
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::fromC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- if ( !pResultSetData->pDescriptorRecordAPD->getDataPtr() )
+#if MYODBC_DBG > 1
+ MYODBCDbgInfo( QString( "APD::SQL_DESC_DATA_PTR=%1" ).arg( (unsigned
long)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
+#endif
+
+ if ( !pResultPutData->pDescriptorRecordAPD->getDataPtr() )
{
/* for the moment we are assuming we are being used to create an SQL statement */
- pResultSetData->variantData.setValue( QString( "NULL" ) );
+ pResultPutData->variantData.setValue( QString( "NULL" ) );
MYODBCDbgReturn( SQL_SUCCESS );
}
- switch ( pResultSetData->pDescriptorRecordAPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordAPD->getConciseType() )
{
case SQL_C_CHAR:
case SQL_C_WCHAR:
- MYODBCDbgReturn( fromCharacterC( pResultSetData ) );
+ MYODBCDbgReturn( fromCharacterC( pResultPutData ) );
case SQL_C_STINYINT:
case SQL_C_UTINYINT:
case SQL_C_TINYINT:
@@ -3725,26 +3729,26 @@
case SQL_C_SBIGINT:
case SQL_C_UBIGINT:
case SQL_C_NUMERIC:
- MYODBCDbgReturn( fromNumericC( pResultSetData ) );
+ MYODBCDbgReturn( fromNumericC( pResultPutData ) );
case SQL_C_BIT:
- MYODBCDbgReturn( fromBitC( pResultSetData ) );
+ MYODBCDbgReturn( fromBitC( pResultPutData ) );
case SQL_C_BINARY:
- MYODBCDbgReturn( fromBinaryC( pResultSetData ) );
+ MYODBCDbgReturn( fromBinaryC( pResultPutData ) );
case SQL_C_GUID:
- MYODBCDbgReturn( fromGuidC( pResultSetData ) );
+ MYODBCDbgReturn( fromGuidC( pResultPutData ) );
case SQL_C_TYPE_DATE:
case SQL_C_DATE: /* ODBC v2 - should already be validated */
- MYODBCDbgReturn( fromDateC( pResultSetData ) );
+ MYODBCDbgReturn( fromDateC( pResultPutData ) );
case SQL_C_TYPE_TIME:
case SQL_C_TIME: /* ODBC v2 - should already be validated */
- MYODBCDbgReturn( fromTimeC( pResultSetData ) );
+ MYODBCDbgReturn( fromTimeC( pResultPutData ) );
case SQL_C_TYPE_TIMESTAMP:
case SQL_C_TIMESTAMP: /* ODBC v2 - should already be validated */
- MYODBCDbgReturn( fromTimeStampC( pResultSetData ) );
+ MYODBCDbgReturn( fromTimeStampC( pResultPutData ) );
case SQL_C_INTERVAL_MONTH:
case SQL_C_INTERVAL_YEAR:
case SQL_C_INTERVAL_YEAR_TO_MONTH:
- MYODBCDbgReturn( fromIntervalYearMonthC( pResultSetData ) );
+ MYODBCDbgReturn( fromIntervalYearMonthC( pResultPutData ) );
case SQL_C_INTERVAL_DAY:
case SQL_C_INTERVAL_HOUR:
case SQL_C_INTERVAL_MINUTE:
@@ -3755,14 +3759,14 @@
case SQL_C_INTERVAL_HOUR_TO_MINUTE:
case SQL_C_INTERVAL_HOUR_TO_SECOND:
case SQL_C_INTERVAL_MINUTE_TO_SECOND:
- MYODBCDbgReturn( fromIntervalDayTimeC( pResultSetData ) );
+ MYODBCDbgReturn( fromIntervalDayTimeC( pResultPutData ) );
/* case SQL_C_DEFAULT: */
}
- MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_HY000, 0, QString(
tr("unknown C data type %1") ).arg(
pResultSetData->pDescriptorRecordAPD->getConciseType() ) ) );
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_HY000, 0, QString(
tr("unknown C data type %1") ).arg(
pResultPutData->pDescriptorRecordAPD->getConciseType() ) ) );
}
-SQLRETURN MResult::fromCharacterC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromCharacterC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
@@ -3771,12 +3775,12 @@
Incoming character data is always null terminated (so ignore OctetLength).
*/
- if ( pResultSetData->pDescriptorRecordAPD->getConciseType() == SQL_C_WCHAR )
- pResultSetData->variantData.setValue( MYODBCC::QString_fromWCharArray(
(SQLWCHAR*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ if ( pResultPutData->pDescriptorRecordAPD->getConciseType() == SQL_C_WCHAR )
+ pResultPutData->variantData.setValue( MYODBCC::QString_fromWCharArray(
(SQLWCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
else
- pResultSetData->variantData.setValue( QString::fromAscii(
(char*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( QString::fromAscii(
(char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -3784,7 +3788,7 @@
case SQL_WCHAR:
case SQL_WVARCHAR:
case SQL_WLONGVARCHAR:
- pResultSetData->variantData.setValue( "'" +
pResultSetData->variantData.toString() + "'" );
+ pResultPutData->variantData.setValue( "'" +
pResultPutData->variantData.toString() + "'" );
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_DECIMAL:
case SQL_NUMERIC:
@@ -3802,7 +3806,7 @@
case SQL_INTERVAL_HOUR:
case SQL_INTERVAL_MINUTE:
case SQL_INTERVAL_SECOND:
- if ( pResultSetData->variantData.convert( QVariant::LongLong ) )
+ if ( pResultPutData->variantData.convert( QVariant::LongLong ) )
MYODBCDbgReturn( SQL_SUCCESS );
break;
}
@@ -3817,49 +3821,52 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromNumericC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromNumericC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
/* get number into variant */
- switch ( pResultSetData->pDescriptorRecordAPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordAPD->getConciseType() )
{
case SQL_C_TINYINT:
case SQL_C_STINYINT:
- pResultSetData->variantData.setValue(
*((char*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+#if MYODBC_DBG > 1
+ MYODBCDbgInfo( QString( "*APD::SQL_DESC_DATA_PTR=%1" ).arg( *(
(char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) ) );
+#endif
+ pResultPutData->variantData.setValue( *(
(char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_UTINYINT:
- pResultSetData->variantData.setValue(
*((SQLCHAR*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_SHORT:
case SQL_C_SSHORT:
- pResultSetData->variantData.setValue(
*((SQLSMALLINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLSMALLINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_USHORT:
- pResultSetData->variantData.setValue(
*((SQLUSMALLINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLUSMALLINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_LONG:
case SQL_C_SLONG:
- pResultSetData->variantData.setValue(
*((SQLINTEGER*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLINTEGER*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_ULONG:
- pResultSetData->variantData.setValue(
*((SQLUINTEGER*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLUINTEGER*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_FLOAT:
- pResultSetData->variantData.setValue(
*((SQLREAL*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLREAL*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_DOUBLE:
- pResultSetData->variantData.setValue(
*((SQLDOUBLE*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLDOUBLE*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_SBIGINT:
- pResultSetData->variantData.setValue(
*((SQLBIGINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLBIGINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_UBIGINT:
- pResultSetData->variantData.setValue(
*((SQLUBIGINT*)pResultSetData->pDescriptorRecordAPD->getDataPtr() ) );
+ pResultPutData->variantData.setValue( *(
(SQLUBIGINT*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
break;
case SQL_C_NUMERIC:
{
- SQL_NUMERIC_STRUCT *pNumeric =
(SQL_NUMERIC_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQL_NUMERIC_STRUCT *pNumeric =
(SQL_NUMERIC_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
char szFormatBuffer[128];
/*!
\internal
@@ -3875,7 +3882,7 @@
}
/* touch up based upon the requested SQL type */
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -3883,9 +3890,9 @@
case SQL_WCHAR:
case SQL_WVARCHAR:
case SQL_WLONGVARCHAR:
- if ( !pResultSetData->variantData.convert( QVariant::String ) )
+ if ( !pResultPutData->variantData.convert( QVariant::String ) )
break;
- pResultSetData->variantData.setValue( "'" +
pResultSetData->variantData.toString() + "'" );
+ pResultPutData->variantData.setValue( "'" +
pResultPutData->variantData.toString() + "'" );
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_DECIMAL:
case SQL_NUMERIC:
@@ -3916,13 +3923,13 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromBitC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromBitC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- pResultSetData->variantData.setValue(
*(SQLCHAR*)pResultSetData->pDescriptorRecordAPD->getDataPtr() );
+ pResultPutData->variantData.setValue(
*(SQLCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() );
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -3930,9 +3937,9 @@
case SQL_WCHAR:
case SQL_WVARCHAR:
case SQL_WLONGVARCHAR:
- if ( !pResultSetData->variantData.convert( QVariant::String ) )
+ if ( !pResultPutData->variantData.convert( QVariant::String ) )
break;
- pResultSetData->variantData.setValue( "'" +
pResultSetData->variantData.toString() + "'" );
+ pResultPutData->variantData.setValue( "'" +
pResultPutData->variantData.toString() + "'" );
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_DECIMAL:
case SQL_NUMERIC:
@@ -3957,13 +3964,13 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromBinaryC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromBinaryC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- pResultSetData->variantData.setValue( QByteArray(
(char*)pResultSetData->pDescriptorRecordAPD->getDataPtr(),
pResultSetData->pDescriptorRecordAPD->getOctetLength() ) );
+ pResultPutData->variantData.setValue( QByteArray(
(char*)pResultPutData->pDescriptorRecordAPD->getDataPtr(),
pResultPutData->pDescriptorRecordAPD->getOctetLength() ) );
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -3971,9 +3978,9 @@
case SQL_WCHAR:
case SQL_WVARCHAR:
case SQL_WLONGVARCHAR:
- if ( !pResultSetData->variantData.convert( QVariant::String ) )
+ if ( !pResultPutData->variantData.convert( QVariant::String ) )
break;
- pResultSetData->variantData.setValue( "'" +
pResultSetData->variantData.toString() + "'" );
+ pResultPutData->variantData.setValue( "'" +
pResultPutData->variantData.toString() + "'" );
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_DECIMAL:
case SQL_NUMERIC:
@@ -3992,7 +3999,7 @@
case SQL_FLOAT:
case SQL_DOUBLE:
case SQL_BIT:
- if ( pResultSetData->variantData.convert( QVariant::LongLong ) )
+ if ( pResultPutData->variantData.convert( QVariant::LongLong ) )
MYODBCDbgReturn( SQL_SUCCESS );
break;
case SQL_TYPE_DATE:
@@ -4007,9 +4014,9 @@
We assume that these are NOT stored in SQL_*_STRUCT format but are
instead
stored in string format.
*/
- if ( !pResultSetData->variantData.convert( QVariant::String ) )
+ if ( !pResultPutData->variantData.convert( QVariant::String ) )
break;
- pResultSetData->variantData.setValue( "'" +
pResultSetData->variantData.toString() + "'" );
+ pResultPutData->variantData.setValue( "'" +
pResultPutData->variantData.toString() + "'" );
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_BINARY:
case SQL_VARBINARY:
@@ -4027,14 +4034,14 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromDateC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromDateC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- SQL_DATE_STRUCT * pDate =
(SQL_DATE_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQL_DATE_STRUCT * pDate =
(SQL_DATE_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
char szFormatBuffer[128];
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -4053,7 +4060,7 @@
pDate->year,
pDate->month,
pDate->day );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_TYPE_TIMESTAMP:
case SQL_TIMESTAMP:
@@ -4066,7 +4073,7 @@
pDate->year,
pDate->month,
pDate->day );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
}
@@ -4080,14 +4087,14 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromGuidC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromGuidC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- SQLGUID * pGuid =
(SQLGUID*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQLGUID * pGuid =
(SQLGUID*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
char szFormatBuffer[128];
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -4116,14 +4123,14 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromTimeC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromTimeC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- SQL_TIME_STRUCT * pTime =
(SQL_TIME_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQL_TIME_STRUCT * pTime =
(SQL_TIME_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
char szFormatBuffer[128];
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -4140,7 +4147,7 @@
pTime->hour,
pTime->minute,
pTime->second );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_TYPE_TIME:
@@ -4154,7 +4161,7 @@
pTime->hour,
pTime->minute,
pTime->second );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_TYPE_TIMESTAMP:
@@ -4168,7 +4175,7 @@
pTime->hour,
pTime->minute,
pTime->second );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
}
@@ -4182,14 +4189,14 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromTimeStampC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromTimeStampC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- SQL_TIMESTAMP_STRUCT * pTimestamp =
(SQL_TIMESTAMP_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQL_TIMESTAMP_STRUCT * pTimestamp =
(SQL_TIMESTAMP_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
char szFormatBuffer[128];
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -4209,7 +4216,7 @@
pTimestamp->hour,
pTimestamp->minute,
pTimestamp->second );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_TYPE_DATE:
@@ -4223,7 +4230,7 @@
pTimestamp->year,
pTimestamp->month,
pTimestamp->day );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_TYPE_TIME:
@@ -4237,7 +4244,7 @@
pTimestamp->hour,
pTimestamp->minute,
pTimestamp->second );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_TYPE_TIMESTAMP:
@@ -4254,7 +4261,7 @@
pTimestamp->hour,
pTimestamp->minute,
pTimestamp->second );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
}
@@ -4269,15 +4276,15 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromIntervalYearMonthC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromIntervalYearMonthC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- SQL_INTERVAL_STRUCT * pInterval =
(SQL_INTERVAL_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQL_INTERVAL_STRUCT * pInterval =
(SQL_INTERVAL_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
SQL_YEAR_MONTH_STRUCT * pYearMonth = &pInterval->intval.year_month;
char szFormatBuffer[128];
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -4293,7 +4300,7 @@
sprintf( szFormatBuffer, "'%04d:%02d'",
pYearMonth->year,
pYearMonth->month );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_DECIMAL:
case SQL_NUMERIC:
@@ -4307,9 +4314,9 @@
We convert to months.
*/
if ( pInterval->interval_sign == SQL_FALSE )
- pResultSetData->variantData.setValue( pYearMonth->year * 12 +
pYearMonth->month );
+ pResultPutData->variantData.setValue( pYearMonth->year * 12 +
pYearMonth->month );
else
- pResultSetData->variantData.setValue( 0 - (pYearMonth->year * 12 +
pYearMonth->month) );
+ pResultPutData->variantData.setValue( 0 - (pYearMonth->year * 12 +
pYearMonth->month) );
MYODBCDbgReturn( SQL_SUCCESS );
@@ -4329,15 +4336,15 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_07006 ) );
}
-SQLRETURN MResult::fromIntervalDayTimeC( MResultSetData *pResultSetData )
+SQLRETURN MResult::fromIntervalDayTimeC( MResultPutData *pResultPutData )
{
MYODBCDbgEnter();
- SQL_INTERVAL_STRUCT * pInterval =
(SQL_INTERVAL_STRUCT*)pResultSetData->pDescriptorRecordAPD->getDataPtr();
+ SQL_INTERVAL_STRUCT * pInterval =
(SQL_INTERVAL_STRUCT*)pResultPutData->pDescriptorRecordAPD->getDataPtr();
SQL_DAY_SECOND_STRUCT * pDaySecond = &pInterval->intval.day_second;
char szFormatBuffer[128];
- switch ( pResultSetData->pDescriptorRecordIPD->getConciseType() )
+ switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
{
case SQL_CHAR:
case SQL_VARCHAR:
@@ -4356,7 +4363,7 @@
pDaySecond->minute,
pDaySecond->second,
pDaySecond->fraction );
- pResultSetData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
+ pResultPutData->variantData.setValue( QString::fromAscii( szFormatBuffer )
); ;
MYODBCDbgReturn( SQL_SUCCESS );
case SQL_DECIMAL:
case SQL_NUMERIC:
@@ -4370,9 +4377,9 @@
We convert to seconds (any fraction is truncated).
*/
if ( pInterval->interval_sign == SQL_FALSE )
- pResultSetData->variantData.setValue( ((pDaySecond->day * 24 +
pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second );
+ pResultPutData->variantData.setValue( ((pDaySecond->day * 24 +
pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second );
else
- pResultSetData->variantData.setValue( 0 - (((pDaySecond->day * 24 +
pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second) );
+ pResultPutData->variantData.setValue( 0 - (((pDaySecond->day * 24 +
pDaySecond->hour) * 60 + pDaySecond->minute) * 60 + pDaySecond->second) );
if ( pDaySecond->fraction )
{
Modified: trunk/SDK/MYSQLPlus/Library/MResult.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.h 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/SDK/MYSQLPlus/Library/MResult.h 2006-11-07 12:18:36 UTC (rev 657)
@@ -55,24 +55,24 @@
};
/*!
- \brief Data to support doSetData.
+ \brief Data to support doPutData.
- doSetData can be used to supply data-at-execution data for two uses:
+ doPutData can be used to supply data-at-execution data for two uses:
- parameter data to be used in a call to SQLExecute or SQLExecDirect
- column data to be used when a row is updated or added by a call to
SQLBulkOperations or is updated by a call to SQLSetPos
*/
-class MResultSetData
+class MResultPutData
{
public:
- MResultSetData();
+ MResultPutData();
void doClear();
/*
\note
- We have a string version of data prepared for use in an SQL statement but this is
going to change to be in synch with
+ We have a string version of data prepared for use in an SQL statement but this is
going to change to be in sync with
format as found in resultset. So we have a variant for future.
*/
QVariant variantData; /*!< data (may be partially full
depending upon state) */
@@ -318,7 +318,7 @@
protected:
MResultGetData resultGetData; /*!< to support getData() (in particular;
chunking) */
- MResultSetData resultSetData; /*!< to support doBindParameter()
*/
+ MResultPutData resultSetData; /*!< to support doBindParameter()
*/
SQLUSMALLINT nRowSetRow; /*!< Current row in rowset.
*/
SQLUSMALLINT nRowSetRows; /*!< Is RowSetSize but will be less when
RowSet goes beyond ResultSetRows. */
@@ -511,7 +511,7 @@
/*!
\name from*C
- These are used to convert/copy data into an initialized MResultSetData. These
methods also enforce ODBC rules
+ These are used to convert/copy data into an initialized MResultPutData. These
methods also enforce ODBC rules
generalized based upon C type.
\sa
@@ -519,17 +519,17 @@
"Converting Data from C to SQL Data Types"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcconverting_data_from_c_to_sql_data_types.asp
*/
/*@{*/
- SQLRETURN fromC( MResultSetData *pResultSetData );
- SQLRETURN fromCharacterC( MResultSetData *pResultSetData );
- SQLRETURN fromNumericC( MResultSetData *pResultSetData );
- SQLRETURN fromBitC( MResultSetData *pResultSetData );
- SQLRETURN fromBinaryC( MResultSetData *pResultSetData );
- SQLRETURN fromDateC( MResultSetData *pResultSetData );
- SQLRETURN fromGuidC( MResultSetData *pResultSetData );
- SQLRETURN fromTimeC( MResultSetData *pResultSetData );
- SQLRETURN fromTimeStampC( MResultSetData *pResultSetData );
- SQLRETURN fromIntervalYearMonthC( MResultSetData *pResultSetData );
- SQLRETURN fromIntervalDayTimeC( MResultSetData *pResultSetData );
+ SQLRETURN fromC( MResultPutData *pResultPutData );
+ SQLRETURN fromCharacterC( MResultPutData *pResultPutData );
+ SQLRETURN fromNumericC( MResultPutData *pResultPutData );
+ SQLRETURN fromBitC( MResultPutData *pResultPutData );
+ SQLRETURN fromBinaryC( MResultPutData *pResultPutData );
+ SQLRETURN fromDateC( MResultPutData *pResultPutData );
+ SQLRETURN fromGuidC( MResultPutData *pResultPutData );
+ SQLRETURN fromTimeC( MResultPutData *pResultPutData );
+ SQLRETURN fromTimeStampC( MResultPutData *pResultPutData );
+ SQLRETURN fromIntervalYearMonthC( MResultPutData *pResultPutData );
+ SQLRETURN fromIntervalDayTimeC( MResultPutData *pResultPutData );
/*@}*/
private:
Modified: trunk/SDK/MYSQLPlus/Library/MResultRes.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultRes.cpp 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/SDK/MYSQLPlus/Library/MResultRes.cpp 2006-11-07 12:18:36 UTC (rev 657)
@@ -286,6 +286,10 @@
doStateRollBack( STATE_INITIALIZED );
MYODBCDbgReturn( nReturnInternal );
}
+#if MYODBC_DBG > 1
+ MYODBCDbgInfo( QString( "variantData.isNull=%1" ).arg(
resultSetData.variantData.isNull() ) );
+ MYODBCDbgInfo( QString( "variantData=%1" ).arg( resultSetData.variantData.toString()
) );
+#endif
stringStatement += resultSetData.variantData.toString();
nParameter++;
continue;
Modified: trunk/SDK/MYSQLPlus/Library/MStatement.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MStatement.cpp 2006-11-06 17:29:45 UTC (rev 656)
+++ trunk/SDK/MYSQLPlus/Library/MStatement.cpp 2006-11-07 12:18:36 UTC (rev 657)
@@ -1418,12 +1418,14 @@
MYODBCDbgEnter();
#if MYODBC_DBG > 1
- MYODBCDbgInfo( QString( "nParameterNumber=%1" ).arg( nParameterNumber ) );
- MYODBCDbgInfo( QString( "nInputOutputType=%1=%2" ).arg( nInputOutputType ).arg(
MYODBCC::getInputOutputTypeString( nInputOutputType ) ) );
- MYODBCDbgInfo( QString( "nValueType=%1=%2" ).arg( nValueType ).arg(
MYODBCC::getConciseTypeStringC( nValueType ) ) );
- MYODBCDbgInfo( QString( "nParameterType=%1=%2" ).arg( nParameterType ).arg(
MYODBCC::getConciseTypeStringSQL( nParameterType ) ) );
- MYODBCDbgInfo( QString( "nColumnSize=%1" ).arg( nColumnSize ) );
- MYODBCDbgInfo( QString( "nDecimalDigits=%1" ).arg( nDecimalDigits ) );
+ MYODBCDbgInfo( QString( "nParameterNumber =%1" ).arg( nParameterNumber ) );
+ MYODBCDbgInfo( QString( "nInputOutputType =%1=%2" ).arg( nInputOutputType ).arg(
MYODBCC::getInputOutputTypeString( nInputOutputType ) ) );
+ MYODBCDbgInfo( QString( "nValueType =%1=%2" ).arg( nValueType ).arg(
MYODBCC::getConciseTypeStringC( nValueType ) ) );
+ MYODBCDbgInfo( QString( "nParameterType =%1=%2" ).arg( nParameterType ).arg(
MYODBCC::getConciseTypeStringSQL( nParameterType ) ) );
+ MYODBCDbgInfo( QString( "nColumnSize =%1" ).arg( nColumnSize ) );
+ MYODBCDbgInfo( QString( "nDecimalDigits =%1" ).arg( nDecimalDigits ) );
+ MYODBCDbgInfo( QString( "pParameterValue =%1" ).arg( (unsigned
long)pParameterValue ) );
+ MYODBCDbgInfo( QString( "pnStrLenOrInd =%1" ).arg( (unsigned long)pnStrLenOrInd
) );
#endif
SQLRETURN nReturn = SQL_SUCCESS;
@@ -1489,7 +1491,12 @@
ParameterType.
*/
if ( nValueType == SQL_C_DEFAULT )
+ {
nValueType = MYODBCC::getCDefault( getEnvironment()->getODBCVersion(),
nParameterType );
+#if MYODBC_DBG > 1
+ MYODBCDbgInfo( QString( "nValueType=%1=%2" ).arg( nValueType ).arg(
MYODBCC::getConciseTypeStringC( nValueType ) ) );
+#endif
+ }
/*!
\internal ODBC RULE (DM)
@@ -1747,61 +1754,47 @@
/*!
\internal ODBC RULE
- There are many rules for this. See ODBC spec.
+ The StrLen_or_IndPtr ..... This argument sets the SQL_DESC_OCTET_LENGTH_PTR and
+ SQL_DESC_INDICATOR_PTR record fields of the application parameter pointers.
- \todo
+ \note
- Factor in the ODBC rules found in the spec.
+ Its ok to set SQL_DESC_INDICATOR_PTR & SQL_DESC_OCTET_LENGTH_PTR to same
pointer when
+ we are dealing with an APD.
+
+ There are many rules for pnStrLenOrInd.
+
+ - SQL_NULL_DATA (-1)
+ - SQL_DATA_AT_EXEC (-2)
+ - SQL_NTS (-3)
+ - SQL_DEFAULT_PARAM (-5)
+ - SQL_LEN_DATA_AT_EXEC(len)
+ - null
+ - array of SQLINTEGER
+
*/
- if ( pnStrLenOrInd && *pnStrLenOrInd > 0 )
+ nReturn = pAppParamDesc->setDescField( nParameterNumber, SQL_DESC_INDICATOR_PTR,
pnStrLenOrInd, SQL_IS_POINTER );
+ switch ( nReturn )
{
- nReturn = pAppParamDesc->setDescField( nParameterNumber,
SQL_DESC_INDICATOR_PTR, pnStrLenOrInd, SQL_IS_POINTER );
- switch ( nReturn )
- {
- case SQL_SUCCESS:
- break;
- case SQL_SUCCESS_WITH_INFO:
- bHasInfo = true;
- break;
- default:
- goto doBindParameterExit1;
- }
- nReturn = pAppParamDesc->setDescField( nParameterNumber,
SQL_DESC_OCTET_LENGTH_PTR, NULL, SQL_IS_POINTER );
- switch ( nReturn )
- {
- case SQL_SUCCESS:
- break;
- case SQL_SUCCESS_WITH_INFO:
- bHasInfo = true;
- break;
- default:
- goto doBindParameterExit1;
- }
+ case SQL_SUCCESS:
+ break;
+ case SQL_SUCCESS_WITH_INFO:
+ bHasInfo = true;
+ break;
+ default:
+ goto doBindParameterExit1;
}
- else
+
+ nReturn = pAppParamDesc->setDescField( nParameterNumber,
SQL_DESC_OCTET_LENGTH_PTR, pnStrLenOrInd, SQL_IS_POINTER );
+ switch ( nReturn )
{
- nReturn = pAppParamDesc->setDescField( nParameterNumber,
SQL_DESC_OCTET_LENGTH_PTR, pnStrLenOrInd, SQL_IS_POINTER );
- switch ( nReturn )
- {
- case SQL_SUCCESS:
- break;
- case SQL_SUCCESS_WITH_INFO:
- bHasInfo = true;
- break;
- default:
- goto doBindParameterExit1;
- }
- nReturn = pAppParamDesc->setDescField( nParameterNumber,
SQL_DESC_INDICATOR_PTR, NULL, SQL_IS_POINTER );
- switch ( nReturn )
- {
- case SQL_SUCCESS:
- break;
- case SQL_SUCCESS_WITH_INFO:
- bHasInfo = true;
- break;
- default:
- goto doBindParameterExit1;
- }
+ case SQL_SUCCESS:
+ break;
+ case SQL_SUCCESS_WITH_INFO:
+ bHasInfo = true;
+ break;
+ default:
+ goto doBindParameterExit1;
}
/*
@@ -3811,7 +3804,7 @@
*/
pDiagnostic->doClear();
- MYODBCDbgReturn( SQL_ERROR );
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_IM001 ) );
}
/*!
@@ -4498,7 +4491,7 @@
*/
pDiagnostic->doClear();
- MYODBCDbgReturn( SQL_ERROR );
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::STATE_IM001 ) );
}
SQLRETURN MStatement::doRowCount( SQLINTEGER *pnRowCount )