Modified:
MYSQLPlus/MYSQLPlusLib/MConnection.cpp
MYSQLPlus/include/MConnection.h
doc/Project/ScratchPad.odt
Log:
Modified: MYSQLPlus/MYSQLPlusLib/MConnection.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-05-02 22:51:00 UTC (rev 181)
+++ MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-05-03 02:41:16 UTC (rev 182)
@@ -223,6 +223,7 @@
stringDSN = "DEFAULT";
+ /* see if we can load a DSN */
MYODBCInsDataSource datasource;
datasource.setMode( MYODBCInsDataSource::DATASOURCE_MODE_DSN_VIEW );
datasource.setScope( MYODBCInsDataSource::DATASOURCE_SCOPE_BOTH );
@@ -232,47 +233,37 @@
goto SQLConnectExit1;
}
-++++++++++++++++
/*!
- \internal ODBC Rule
+ \internal ODBC RULE
Precedence for UID is;
\li as provided to function
\li as found in system information
*/
- if ( pszUserName && pszUserName[0] != '\0' && (nNameLength2 > 0 ||
nNameLength2 == SQL_NTS) )
- {
- MYODBCCFree( pDataSource->pszUSER );
- pDataSource->pszUSER = MYODBCCStrDup( pszUserName, nNameLength2 );
- }
+ if ( !stringUserName.isNull() )
+ datasource.setUID( stringUserName );
/*!
- \internal ODBC Rule
+ \internal ODBC RULE
Precedence for PWD is;
\li as provided to function
\li as found in system information
*/
- if ( pszAuthentication && pszAuthentication[0] != '\0' &&
(nNameLength3 > 0 || nNameLength3 == SQL_NTS) )
- {
- MYODBCCFree( pDataSource->pszPASSWORD );
- pDataSource->pszPASSWORD = MYODBCCStrDup( pszAuthentication, nNameLength2 );
- }
+ if ( !stringAuthentication.isEmpty() )
+ datasource.setPWD( stringAuthentication );
- /* cleanup pDataSource such that we can use values for mysql_real_connect */
- MYODBCInsDefaultDataSource( pDataSource );
+ /* allocate the MYSQL handle (this will silently do the library init as needed) */
+ pMySQL = mysql_init( NULL );
- /* allocate the MYSQL handle */
- pDbc->pMySQL = mysql_init( NULL );
/* mysql_options(pDbc->pMySQL, MYSQL_OPT_CONNECT_TIMEOUT, (const char
*)&pDbc->attr_connection_timeout); */
/* translate our flags into client while appling pre-connect flags */
- nFlags = MYODBCDrvGetClientFlag( pDbc->pMySQL,
- (ulong)atol( pDataSource->pszOPTION ),
- (uint)pDbc->attr_login_timeout,
- pDataSource->pszSTMT );
+ nFlags = getClientFlag( datasource.getOPTION().toULong() ),
+ (uint)pDbc ->attr_login_timeout,
+ datasource.getSTMT() );
/* ask mysql for a connection */
if ( !mysql_real_connect( pDbc->pMySQL,
@@ -352,5 +343,161 @@
}
+SQLUINTEGER MConnection::getAccessMode()
+{
+ MYODBCDbgEnter();
+ MYODBCDbgReturn3( "%d", zz );
+}
+SQLUINTEGER MConnection::getAsyncEnable()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", zz );
+}
+
+SQLUINTEGER MConnection::getAutoIPD()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", SQL_TRUE );
+}
+
+SQLUINTEGER MConnection::getAutocommit()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nAutocommit );
+}
+
+SQLUINTEGER MConnection::getConnectionDead()
+{
+ MYODBCDbgEnter();
+
+ SQLUINTEGER nConnectionDead = SQL_CD_FALSE;
+
+ if ( getState() == STATE_C4 )
+ {
+ mysql_ping( pMySQL );
+ }
+
+ MYODBCDbgReturn3( "%d", nConnectionDead );
+}
+
+SQLUINTEGER MConnection::getConnectionTimeout()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nConnectionTimeout );
+}
+
+QString MConnection::getCurrentCatalog()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%s", stringCurrentCatalog );
+}
+
+SQLUINTEGER MConnection::getLoginTimeout()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nLoginTimeout );
+}
+
+SQLUINTEGER MConnection::getMetadataID()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nMetadataID );
+}
+
+SQLUINTEGER MConnection::getODBCCursors()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nODBCCursors );
+}
+
+SQLUINTEGER MConnection::getPacketSize()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nPacketSize );
+}
+
+HWND_32 MConnection::getQuietMode()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%p", hQuietMode );
+}
+
+SQLUINTEGER MConnection::getTrace()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nTrace );
+}
+
+QString MConnection::getTracefile()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%s", stringTracefile );
+}
+
+QString MConnection::getTranslateLib()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%s", stringTranslateLib );
+}
+
+qint32 MConnection::getTranslateOption()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nTranslateOption );
+}
+
+qint32 MConnection::getTxnIsolation()
+{
+ MYODBCDbgEnter();
+
+ MYODBCDbgReturn3( "%d", nTxnIsolation );
+}
+
+ulong MConnection::getClientFlag( MYSQL *pMySQL, ulong nOptions, uint nConnectTimeout,
const QString &stringInitialStatement )
+{
+ ulong nClientFlag = CLIENT_ODBC;
+
+ if ( nOptions & (MYODBC_FLAG_FOUND_ROWS | MYODBC_FLAG_SAFE) )
+ nClientFlag |= CLIENT_FOUND_ROWS;
+ if ( nOptions & MYODBC_FLAG_NO_SCHEMA )
+ nClientFlag |= CLIENT_NO_SCHEMA;
+/*
+ if (nOptions & (MYODBC_FLAG_BIG_PACKETS | MYODBC_FLAG_SAFE))
+ max_allowed_packet=~0L;
+*/
+ if ( nOptions & MYODBC_FLAG_COMPRESSED_PROTO )
+ nClientFlag |= CLIENT_COMPRESS;
+ if ( nOptions & MYODBC_FLAG_IGNORE_SPACE )
+ nClientFlag |= CLIENT_IGNORE_SPACE;
+#ifdef __WIN__
+ if ( nOptions & MYODBC_FLAG_NAMED_PIPE )
+ mysql_options( pMySQL, MYSQL_OPT_NAMED_PIPE, NullS );
+#endif
+
+ if ( nOptions & MYODBC_FLAG_USE_MYCNF )
+ mysql_options( pMySQL, MYSQL_READ_DEFAULT_GROUP, "odbc" );
+ if ( !stringInitialStatement.isEmpty() )
+ mysql_options( pMySQL, MYSQL_INIT_COMMAND, stringInitialStatement.toUtf8().data()
);
+ if ( nConnectTimeout )
+ mysql_options( pMySQL, MYSQL_OPT_CONNECT_TIMEOUT, (char*)&nConnectTimeout );
+getl
+
+ return nClientFlag;
+}
+
Modified: MYSQLPlus/include/MConnection.h
===================================================================
--- MYSQLPlus/include/MConnection.h 2006-05-02 22:51:00 UTC (rev 181)
+++ MYSQLPlus/include/MConnection.h 2006-05-03 02:41:16 UTC (rev 182)
@@ -53,14 +53,68 @@
SQLRETURN doNativeSql( SQLWCHAR *psInStatementText, SQLINTEGER nTextLength1, SQLWCHAR
*psOutStatementText, SQLINTEGER nBufferLength, SQLINTEGER *pnTextLength2 );
protected:
+
+ /* setters */
+ SQLRETURN setAccessMode( SQLUINTEGER nAccessMode );
+ SQLRETURN setAsyncEnable( SQLUINTEGER nAsyncEnable );
+ SQLRETURN setAutocommit( SQLUINTEGER nAutocommit );
+ SQLRETURN setConnectionTimeout( SQLUINTEGER nConnectionTimeout );
+ SQLRETURN setCurrentCatalog( QString stringCurrentCatalog );
+ SQLRETURN setLoginTimeout( SQLUINTEGER nLoginTimeout );
+ SQLRETURN setMetadataID( SQLUINTEGER nMetadataID );
+ SQLRETURN setODBCCursors( SQLUINTEGER nODBCCursors );
+ SQLRETURN setPacketSize( SQLUINTEGER nPacketSize );
+ SQLRETURN setQuietMode( HWND_32 hQuietMode );
+ SQLRETURN setTrace( SQLUINTEGER nTrace );
+ SQLRETURN setTracefile( QString stringTracefile );
+ SQLRETURN setTranslateLib( QString stringTranslateLib );
+ SQLRETURN setTranslateOption( qint32 nTranslateOption );
+ SQLRETURN setTxnIsolation( qint32 nTxnIsolation );
+
/* getters */
- MDiagnostic * getDiagnostic();
+ MDiagnostic *getDiagnostic();
+ SQLUINTEGER getAccessMode();
+ SQLUINTEGER getAsyncEnable();
+ SQLUINTEGER getAutoIPD();
+ SQLUINTEGER getAutocommit();
+ SQLUINTEGER getConnectionDead();
+ SQLUINTEGER getConnectionTimeout();
+ QString getCurrentCatalog();
+ SQLUINTEGER getLoginTimeout();
+ SQLUINTEGER getMetadataID();
+ SQLUINTEGER getODBCCursors();
+ SQLUINTEGER getPacketSize();
+ HWND_32 getQuietMode();
+ SQLUINTEGER getTrace();
+ QString getTracefile();
+ QString getTranslateLib();
+ qint32 getTranslateOption();
+ qint32 getTxnIsolation();
+
private:
STATE nState; /*!< our current state
*/
MDiagnostic * pDiagnostic; /*!< our diagnostic information
*/
MYSQL * pMySQL; /*!< main mysql connection handle, others may
be used internally */
STATEMENT_TYPE nStatementType; /*!< tells us which MStatement based class we
are going to work with */
+
+ SQLUINTEGER nAccessMode; /*!< SQL_ATTR_ACCESS_MODE */
+ SQLUINTEGER nAsyncEnable; /*!< SQL_ATTR_ASYNC_ENABLE */
+/* SQLUINTEGER nAutoIPD; */ /*!< SQL_ATTR_AUTO_IPD */
+ SQLUINTEGER nAutocommit; /*!< SQL_ATTR_AUTOCOMMIT */
+/* SQLUINTEGER nConnectionDead; */ /*!< SQL_ATTR_CONNECTION_DEAD */
+ SQLUINTEGER nConnectionTimeout; /*!< SQL_ATTR_CONNECTION_TIMEOUT */
+ QString stringCurrentCatalog; /*!< SQL_ATTR_CURRENT_CATALOG */
+ SQLUINTEGER nLoginTimeout; /*!< SQL_ATTR_LOGIN_TIMEOUT */
+ SQLUINTEGER nMetadataID; /*!< SQL_ATTR_METADATA_ID */
+ SQLUINTEGER nODBCCursors; /*!< SQL_ATTR_ODBC_CURSORS (DM) */
+ SQLUINTEGER nPacketSize; /*!< SQL_ATTR_PACKET_SIZE */
+ HWND_32 hQuietMode; /*!< SQL_ATTR_QUIET_MODE */
+ SQLUINTEGER nTrace; /*!< SQL_ATTR_TRACE (DM) */
+ QString stringTracefile; /*!< SQL_ATTR_TRACEFILE (DM) */
+ QString stringTranslateLib; /*!< SQL_ATTR_TRANSLATE_LIB */
+ qint32 nTranslateOption; /*!< SQL_ATTR_TRANSLATE_OPTION */
+ qint32 nTxnIsolation; /*!< SQL_ATTR_TXN_ISOLATION */
};
#endif
Modified: doc/Project/ScratchPad.odt
===================================================================
(Binary files differ)
| Thread |
|---|
| • Connector/ODBC 5 commit: r182 - MYSQLPlus/MYSQLPlusLib MYSQLPlus/include doc/Project | pharvey | 3 May |