Modified:
trunk/SDK/MYSQLPlus/Library/Library.pro
trunk/SDK/MYSQLPlus/Library/MConnection.cpp
trunk/SDK/MYSQLPlus/Library/MInternal.h
trunk/SDK/MYSQLPlus/Library/MResult.cpp
trunk/SDK/MYSQLPlus/Library/MResult.h
trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
trunk/SDK/MYSQLPlus/Library/MResultPlus.h
trunk/SDK/MYSQLPlus/Library/MResultRes.h
trunk/SDK/MYSQLPlus/Library/MStatement.cpp
Log:
changes/additions for block-cursor support
Modified: trunk/SDK/MYSQLPlus/Library/Library.pro
===================================================================
--- trunk/SDK/MYSQLPlus/Library/Library.pro 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/Library.pro 2006-09-11 04:53:45 UTC (rev 535)
@@ -7,7 +7,7 @@
include( ../../../common.pri )
include( ../../../config.pri )
include( ../../../defines.pri )
-CONFIG += staticlib
+CONFIG += staticlib ResultPlus
# CONFIG += staticlib ResultPlus ResultRes ResultStmt
INCLUDEPATH += ../../C/include
INCLUDEPATH += ../../Dbg/include
Modified: trunk/SDK/MYSQLPlus/Library/MConnection.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MConnection.cpp 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MConnection.cpp 2006-09-11 04:53:45 UTC (rev 535)
@@ -1780,9 +1780,6 @@
*/
pDiagnostic->doClear();
- /* save some cycles - get this once */
- STATE nState = getState();
-
/*!
\internal ODBC RULE (DM)
@@ -4064,7 +4061,8 @@
MYODBCDbgReturn3( "%d", ( SQL_GD_ANY_COLUMN |
SQL_GD_ANY_ORDER |
- SQL_GD_BOUND ) );
+ SQL_GD_BOUND |
+ SQL_GD_BLOCK ) );
}
SQLUSMALLINT MConnection::getInfoGroupBy()
Modified: trunk/SDK/MYSQLPlus/Library/MInternal.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MInternal.h 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MInternal.h 2006-09-11 04:53:45 UTC (rev 535)
@@ -33,10 +33,15 @@
class MDescriptorRecordIPD;
class MDescriptorRecordIRD;
-#if defined(_WIN32) && _MSC_VER < 1400
- typedef QVector<QVariant> MResultRow;
-#endif
+typedef struct tMResultRow
+{
+ SQLUSMALLINT nStatus;
+ QVector<QVariant> vectorColumns;
+} MResultRow;
+
+typedef QList<MResultRow> MResultRows;
+
#include "MCommands.h"
#include "MCommand.h"
#include "MDiagnostic.h"
Modified: trunk/SDK/MYSQLPlus/Library/MResult.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.cpp 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MResult.cpp 2006-09-11 04:53:45 UTC (rev 535)
@@ -1715,6 +1715,15 @@
MYODBCDbgReturn( SQL_SUCCESS );
}
+void MResult::setState( STATE nState )
+{
+ MYODBCDbgEnter();
+
+ this->nState = nState;
+
+ MYODBCDbgReturn2();
+}
+
MYSQL *MResult::getMySQL()
{
MYODBCDbgEnter();
@@ -3334,85 +3343,85 @@
MYODBCDbgReturn( SQL_SUCCESS );
}
-SQLRETURN MResult::toGuidC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toGuidC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalMonthC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalMonthC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalYearC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalYearC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalYearToMonthC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalYearToMonthC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalDayC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalDayC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalHourC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalHourC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalMinuteC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalMinuteC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalSecondC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalSecondC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalDayToHourC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalDayToHourC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalDayToMinuteC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalDayToMinuteC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalDayToSecondC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalDayToSecondC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalHourToMinuteC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalHourToMinuteC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalHourToSecondC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalHourToSecondC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
}
-SQLRETURN MResult::toIntervalMinuteToSecondC( MResultGetData *pResultGetData )
+SQLRETURN MResult::toIntervalMinuteToSecondC( MResultGetData * )
{
MYODBCDbgEnter();
MYODBCDbgReturn( SQL_ERROR );
Modified: trunk/SDK/MYSQLPlus/Library/MResult.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.h 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MResult.h 2006-09-11 04:53:45 UTC (rev 535)
@@ -350,9 +350,18 @@
qulonglong nRowsAffected; /*!< number of rows affected by a non-SELECT
statement (catalog and SHOW statements count as SELECT in this case) */
SQLUSMALLINT nRowSetRow; /*!< Current row in rowset.
*/
SQLUSMALLINT nRowSetRows; /*!< Is RowSetSize but will be less when
RowSet goes beyond ResultSetRows. */
- STATE nState; /*!< our state
*/
/*!
+ \name listRows
+
+ This contains the ResultSet rows or the RowSet rows depending
+ upon the cursor settings.
+ */
+ /*@{*/
+ MResultRows listRows;
+ /*@}*/
+
+ /*!
\name Statement attributes.
We duplicate these because;
@@ -379,6 +388,7 @@
virtual SQLRETURN setBeforeStart();
virtual SQLRETURN setBuffered( BUFFERED bBuffered = BUFFERED_UNBUFFERED );
SQLRETURN setGetDataDefault(); // support for getData: this is called when
target C type is SQL_C_DEFAULT (derive type from IRD)
+ void setState( STATE nState );
/* getters */
MYSQL * getMySQL();
@@ -502,6 +512,7 @@
*/
BUFFERED nBuffered; /*!< where is ResultSet buffered - if at all */
+ STATE nState; /*!< our state */
};
#endif
Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp 2006-09-11 04:53:45 UTC (rev 535)
@@ -23,7 +23,7 @@
MYODBCDbgReturn2();
}
-SQLRETURN MResultPlus::setData( uint nColumn, const QVariant &variantData )
+SQLRETURN MResultPlus::setData( SQLUSMALLINT nColumn, const QVariant &variantData )
{
MYODBCDbgEnter();
@@ -174,6 +174,23 @@
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();
@@ -183,7 +200,6 @@
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") ) );
Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.h 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.h 2006-09-11 04:53:45 UTC (rev 535)
@@ -83,26 +83,12 @@
protected:
/* doers */
SQLRETURN doStateRollBack( STATE nState );
- SQLRETURN doApplyCursorRestrictions()
+ SQLRETURN doApplyCursorRestrictions();
SQLRETURN doAppendVarChar();
private:
- /*!
- \name listResults
+ QStringList stringlistTableTypesPossible; /*!< supports SQLTables */
- Our result set is a list of rows. Each row is a vector of column data.
Column data
- is a QVariant.
- */
- /*@{*/
-#if defined(_WIN32) && _MSC_VER < 1400
- QList<MResultRow> listResults;
-#else
- QList<QVector<QVariant>> listResults;
-#endif
- /*@}*/
-
- QStringList stringlistTableTypesPossible; /*!< supports
SQLTables */
-
QStringList getTableTypes( const QString &stringFilter );
QStringList getCatalogs( const QString &stringFilter );
QStringList getSchemas( const QString &stringCatalogFilter, const QString
&stringFilterSchema );
Modified: trunk/SDK/MYSQLPlus/Library/MResultRes.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultRes.h 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MResultRes.h 2006-09-11 04:53:45 UTC (rev 535)
@@ -50,7 +50,7 @@
protected:
/* doers */
- SQLRETURN doApplyCursorRestrictions()
+ SQLRETURN doApplyCursorRestrictions();
SQLRETURN doStateRollBack( STATE nState );
private:
Modified: trunk/SDK/MYSQLPlus/Library/MStatement.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MStatement.cpp 2006-09-11 01:53:42 UTC (rev 534)
+++ trunk/SDK/MYSQLPlus/Library/MStatement.cpp 2006-09-11 04:53:45 UTC (rev 535)
@@ -1065,7 +1065,7 @@
#ifdef RESULTPLUS
MResultPlus *pResult = new MResultPlus( this );
- nReturn = pResult->getTypeInfo( nDataType );
+ nReturn = pResult->doTypeInfo( nDataType );
if ( !SQL_SUCCEEDED( nReturn ) )
{
delete pResult;
| Thread |
|---|
| • Connector/ODBC 5 commit: r535 - trunk/SDK/MYSQLPlus/Library | pharvey | 11 Sep |