Modified:
trunk/MYSQLPlus/MYSQLPlusLib/MConnection.cpp
trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
trunk/MYSQLPlus/include/MConnection.h
Log:
more work on getInfo*() methods
Modified: trunk/MYSQLPlus/MYSQLPlusLib/MConnection.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-06-27 02:16:45 UTC (rev 401)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MConnection.cpp 2006-06-27 04:03:18 UTC (rev 402)
@@ -469,6 +469,16 @@
BOOLEAN bCopyOk;
/*!
+ \internal
+ \todo
+
+ Need to go through each support method to ensure that;
+
+ - values which are based upon server version etc are actually based upon that
underlying dependency
+ - values which are literal in fact reflect reality for example;
getInfoMaxColumnsInTable - is it really infinite
+ */
+
+ /*!
\internal ODBC RULE
We clear diagnostic each time an ODBC API call is made (with exceptions).
@@ -729,11 +739,13 @@
*pnSQLUINTEGER = getInfoCreateView();
break;
case SQL_CURSOR_COMMIT_BEHAVIOR:
+ *pnSQLUSMALLINT = getInfoCursorCommitBehavior();
+ break;
case SQL_CURSOR_ROLLBACK_BEHAVIOR:
- *pnSQLUSMALLINT = SQL_CB_PRESERVE;
+ *pnSQLUSMALLINT = getInfoCursorRollbackBehavior();
break;
case SQL_CURSOR_SENSITIVITY:
- *pnSQLUINTEGER = SQL_UNSPECIFIED;
+ *pnSQLUINTEGER = getInfoCursorSensitivity();
break;
case SQL_DATA_SOURCE_NAME:
if ( getDataSourceName().isEmpty() )
@@ -792,9 +804,7 @@
}
break;
case SQL_DATETIME_LITERALS:
- *pnSQLUINTEGER = (SQL_DL_SQL92_DATE |
- SQL_DL_SQL92_TIME |
- SQL_DL_SQL92_TIMESTAMP);
+ *pnSQLUINTEGER = getInfoDatetimeLiterals();
break;
case SQL_DBMS_NAME:
bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"MySQL", &nStringLengthChars );
@@ -813,10 +823,10 @@
}
break;
case SQL_DDL_INDEX:
- *pnSQLUINTEGER = (SQL_DI_CREATE_INDEX | SQL_DI_DROP_INDEX);
+ *pnSQLUINTEGER = getInfoDdlIndex();
break;
case SQL_DEFAULT_TXN_ISOLATION:
- *pnSQLUINTEGER = SQL_TXN_READ_COMMITTED;
+ *pnSQLUINTEGER = getInfoDefaultTxnIsolation();
break;
case SQL_DESCRIBE_PARAMETER:
bCopyOk = MYODBCC::doStringCopyOut( pszSQLWCHAR, nBufferLength /
sizeof(SQLWCHAR), L"N", &nStringLengthChars );
@@ -854,7 +864,7 @@
is no driver manager in the equation. So we just return "this" as we are
the handle the caller is
looking for.
*/
- *pnSQLUINTEGER = (SQLUINTEGER)this;
+ *pnSQLUINTEGER = getInfoDriverHdbc();
break;
case SQL_DRIVER_HENV:
if ( !pInfoValue )
@@ -868,7 +878,7 @@
The only way we would get this request is if the app linked directly to
the driver - if there
is no driver manager in the equation.
*/
- *pnSQLUINTEGER = (SQLUINTEGER)getEnvironment();
+ *pnSQLUINTEGER = getInfoDriverHenv();
break;
case SQL_DRIVER_HDESC:
/*!
@@ -979,46 +989,34 @@
}
break;
case SQL_DROP_ASSERTION:
+ *pnSQLUINTEGER = getInfoDropAssertion();
+ break;
case SQL_DROP_CHARACTER_SET:
+ *pnSQLUINTEGER = getInfoDropCharacterSet();
+ break;
case SQL_DROP_COLLATION:
+ *pnSQLUINTEGER = getInfoDropCollation();
+ break;
case SQL_DROP_DOMAIN:
+ *pnSQLUINTEGER = getInfoDropDomain();
+ break;
case SQL_DROP_SCHEMA:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoDropSchema();
break;
case SQL_DROP_TABLE:
- *pnSQLUINTEGER = (SQL_DT_DROP_TABLE |
- SQL_DT_CASCADE |
- SQL_DT_RESTRICT);
+ *pnSQLUINTEGER = getInfoDropTable();
break;
case SQL_DROP_TRANSLATION:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoDropTranslation();
break;
case SQL_DROP_VIEW:
- *pnSQLUINTEGER = SQL_DT_DROP_TABLE;
+ *pnSQLUINTEGER = getInfoDropView();
break;
case SQL_DYNAMIC_CURSOR_ATTRIBUTES1:
- *pnSQLUINTEGER = (SQL_CA1_NEXT |
- SQL_CA1_ABSOLUTE |
- SQL_CA1_RELATIVE |
- SQL_CA1_LOCK_NO_CHANGE |
- SQL_CA1_POS_POSITION |
- SQL_CA1_POS_UPDATE |
- SQL_CA1_POS_DELETE |
- SQL_CA1_POS_REFRESH |
- SQL_CA1_POSITIONED_UPDATE |
- SQL_CA1_POSITIONED_DELETE |
- SQL_CA1_BULK_ADD);
+ *pnSQLUINTEGER = getInfoDynamicCursorAttributes1();
break;
case SQL_DYNAMIC_CURSOR_ATTRIBUTES2:
- *pnSQLUINTEGER = (SQL_CA2_SENSITIVITY_ADDITIONS |
- SQL_CA2_SENSITIVITY_DELETIONS |
- SQL_CA2_SENSITIVITY_UPDATES |
- SQL_CA2_MAX_ROWS_SELECT |
- SQL_CA2_MAX_ROWS_INSERT |
- SQL_CA2_MAX_ROWS_DELETE |
- SQL_CA2_MAX_ROWS_UPDATE |
- SQL_CA2_CRC_EXACT |
- SQL_CA2_SIMULATE_TRY_UNIQUE);
+ *pnSQLUINTEGER = getInfoDynamicCursorAttributes2();
break;
case SQL_EXPRESSIONS_IN_ORDERBY:
bCopyOk = MYODBCC::doStringCopyOut( (SQLWCHAR*)pInfoValue, nBufferLength,
L"Y", &nStringLengthChars );
@@ -1027,46 +1025,25 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_FETCH_DIRECTION: /* for compat. with 2.x */
- *pnSQLUINTEGER = (SQL_FD_FETCH_NEXT |
- SQL_FD_FETCH_FIRST |
- SQL_FD_FETCH_LAST |
- SQL_FD_FETCH_PRIOR |
- SQL_FD_FETCH_ABSOLUTE |
- SQL_FD_FETCH_RELATIVE);
+ *pnSQLUINTEGER = getInfoFetchDirection();
break;
case SQL_FILE_USAGE:
- *pnSQLUSMALLINT = SQL_FILE_NOT_SUPPORTED;
+ *pnSQLUSMALLINT = getInfoFileUsage();
break;
case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1:
- *pnSQLUINTEGER = (SQL_CA1_NEXT |
- SQL_CA1_ABSOLUTE |
- SQL_CA1_RELATIVE |
- SQL_CA1_LOCK_NO_CHANGE |
- SQL_CA1_POS_POSITION |
- SQL_CA1_POS_UPDATE |
- SQL_CA1_POS_DELETE |
- SQL_CA1_POS_REFRESH |
- SQL_CA1_POSITIONED_UPDATE |
- SQL_CA1_POSITIONED_DELETE |
- SQL_CA1_BULK_ADD);
+ *pnSQLUINTEGER = getInfoForwardOnlyCursorAttributes1();
break;
case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2:
- *pnSQLUINTEGER = (SQL_CA2_MAX_ROWS_SELECT |
- SQL_CA2_MAX_ROWS_INSERT |
- SQL_CA2_MAX_ROWS_DELETE |
- SQL_CA2_MAX_ROWS_UPDATE |
- SQL_CA2_CRC_EXACT);
+ *pnSQLUINTEGER = getInfoForwardOnlyCursorAttributes2();
break;
case SQL_GETDATA_EXTENSIONS:
- *pnSQLUINTEGER = (SQL_GD_ANY_COLUMN |
- SQL_GD_ANY_ORDER |
- SQL_GD_BOUND);
+ *pnSQLUINTEGER = getInfoGetdataExtensions();
break;
case SQL_GROUP_BY:
- *pnSQLUSMALLINT = SQL_GB_NO_RELATION;
+ *pnSQLUSMALLINT = getInfoGroupBy();
break;
case SQL_IDENTIFIER_CASE:
- *pnSQLUSMALLINT = SQL_IC_MIXED;
+ *pnSQLUSMALLINT = getInfoIdentifierCase();
break;
case SQL_IDENTIFIER_QUOTE_CHAR:
bCopyOk = MYODBCC::doStringCopyOut( (SQLWCHAR*)pInfoValue, nBufferLength,
L"`", &nStringLengthChars );
@@ -1075,15 +1052,13 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_INDEX_KEYWORDS:
- *pnSQLUINTEGER = SQL_IK_NONE;
+ *pnSQLUINTEGER = getInfoIndexKeywords();
break;
case SQL_INFO_SCHEMA_VIEWS:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoInfoSchemaViews();
break;
case SQL_INSERT_STATEMENT:
- *pnSQLUINTEGER = (SQL_IS_INSERT_LITERALS |
- SQL_IS_INSERT_SEARCHED |
- SQL_IS_SELECT_INTO);
+ *pnSQLUINTEGER = getInfoInsertStatement();
break;
case SQL_INTEGRITY:
bCopyOk = MYODBCC::doStringCopyOut( (SQLWCHAR*)pInfoValue, nBufferLength,
L"N", &nStringLengthChars );
@@ -1092,8 +1067,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_KEYSET_CURSOR_ATTRIBUTES1:
+ *pnSQLUINTEGER = getInfoKeysetCursorAttributes1();
+ break;
case SQL_KEYSET_CURSOR_ATTRIBUTES2:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoKeysetCursorAttributes2();
break;
case SQL_KEYWORDS:
bCopyOk = MYODBCC::doStringCopyOut( (SQLWCHAR*)pInfoValue, nBufferLength,
L"UNIQUE,ZEROFILL,UNSIGNED,BIGINT,BLOB,TINYBLOB,MEDIMUMBLOB,LONGBLOB,MEDIUMINT,PROCEDURE,SHOW,LIMIT,DEFAULT,TABLES,REGEXP,RLIKE,KEYS,TINYTEXT,MEDIUMTEXT",
&nStringLengthChars );
@@ -1108,46 +1085,58 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_LOCK_TYPES: /* for compat with 2.x */
+ *pnSQLUINTEGER = getInfoLockTypes();
+ break;
case SQL_MAX_ASYNC_CONCURRENT_STATEMENTS:
+ *pnSQLUINTEGER = getInfoMaxAsyncConcurrentStatements();
+ break;
case SQL_MAX_BINARY_LITERAL_LEN:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoMaxBinaryLiteralLen();
break;
case SQL_MAX_CATALOG_NAME_LEN:
- *pnSQLUSMALLINT = NAME_LEN;
+ *pnSQLUSMALLINT = getInfoMaxCatalogNameLen();
break;
case SQL_MAX_CHAR_LITERAL_LEN:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoMaxCharLiteralLen();
break;
case SQL_MAX_COLUMN_NAME_LEN:
- *pnSQLUSMALLINT = NAME_LEN;
+ *pnSQLUSMALLINT = getInfoMaxColumnNameLen();
break;
case SQL_MAX_COLUMNS_IN_GROUP_BY:
- *pnSQLUSMALLINT = 0L;
+ *pnSQLUSMALLINT = getInfoMaxColumnsInGroupBy();
break;
case SQL_MAX_COLUMNS_IN_INDEX:
- *pnSQLUSMALLINT = 32;
+ *pnSQLUSMALLINT = getInfoMaxColumnsInIndex();
break;
case SQL_MAX_COLUMNS_IN_ORDER_BY:
+ *pnSQLUSMALLINT = getInfoMaxColumnsInOrderBy();
+ break;
case SQL_MAX_COLUMNS_IN_SELECT:
+ *pnSQLUSMALLINT = getInfoMaxColumnsInSelect();
+ break;
case SQL_MAX_COLUMNS_IN_TABLE:
+ *pnSQLUSMALLINT = getInfoMaxColumnsInTable();
+ break;
case SQL_MAX_CONCURRENT_ACTIVITIES:
+ *pnSQLUSMALLINT = getInfoMaxConcurrentActivities();
+ break;
case SQL_MAX_CURSOR_NAME_LEN:
- *pnSQLUSMALLINT = 0L;
+ *pnSQLUSMALLINT = getInfoMaxCursorNameLen();
break;
case SQL_MAX_DRIVER_CONNECTIONS:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoMaxDriverConnections();
break;
case SQL_MAX_IDENTIFIER_LEN:
- *pnSQLUSMALLINT = NAME_LEN;
+ *pnSQLUSMALLINT = getInfoMaxIdentifierLen();
break;
case SQL_MAX_INDEX_SIZE:
- *pnSQLUINTEGER = 500;
+ *pnSQLUINTEGER = getInfoMaxIndexSize();
break;
case SQL_MAX_PROCEDURE_NAME_LEN:
- *pnSQLUSMALLINT = NAME_LEN;
+ *pnSQLUSMALLINT = getInfoMaxProcedureNameLen();
break;
case SQL_MAX_ROW_SIZE:
- *pnSQLUINTEGER = 0L;
+ *pnSQLUINTEGER = getInfoMaxRowSize();
break;
case SQL_MAX_ROW_SIZE_INCLUDES_LONG:
bCopyOk = MYODBCC::doStringCopyOut( (SQLWCHAR*)pInfoValue, nBufferLength,
L"Y", &nStringLengthChars );
@@ -1156,19 +1145,19 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 )
);
break;
case SQL_MAX_SCHEMA_NAME_LEN:
- *pnSQLUSMALLINT = NAME_LEN;
+ *pnSQLUSMALLINT = getInfoMaxSchemaNameLen();
break;
case SQL_MAX_STATEMENT_LEN:
- *pnSQLUINTEGER = net_buffer_length;
+ *pnSQLUINTEGER = getInfoMaxStatementLen();
break;
case SQL_MAX_TABLE_NAME_LEN:
- *pnSQLUSMALLINT = NAME_LEN;
+ *pnSQLUSMALLINT = getInfoMaxTableNameLen();
break;
case SQL_MAX_TABLES_IN_SELECT:
- *pnSQLUSMALLINT = 31;
+ *pnSQLUSMALLINT = getInfoMaxTablesInSelect();
break;
case SQL_MAX_USER_NAME_LEN:
- *pnSQLUSMALLINT = 16;
+ *pnSQLUSMALLINT = getInfoMaxUserNameLen();
break;
case SQL_MULT_RESULT_SETS:
case SQL_MULTIPLE_ACTIVE_TXN:
@@ -3593,105 +3582,108 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_CB_PRESERVE );
}
SQLUSMALLINT MConnection::getInfoCursorRollbackBehavior()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_CB_PRESERVE );
}
SQLUINTEGER MConnection::getInfoCursorSensitivity()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_UNSPECIFIED );
}
-SQLUINTEGER MConnection::getInfoDatetimeLiterals()
+QString MConnection::getInfoDataSourceName()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn1( sssss );
}
-QString MConnection::getInfoDbmsName()
+QString MConnection::getInfoDataSourceReadOnly()
{
MYODBCDbgEnter();
- MYODBCDbgReturn1( sssss );
+ MYODBCDbgReturn1( "N" );
}
-QString MConnection::getInfoDbmsVer()
+QString MConnection::getInfoDatabaseName()
{
MYODBCDbgEnter();
MYODBCDbgReturn1( sssss );
}
-SQLUINTEGER MConnection::getInfoDdlIndex()
+SQLUINTEGER MConnection::getInfoDatetimeLiterals()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_DL_SQL92_DATE |
+ SQL_DL_SQL92_TIME |
+ SQL_DL_SQL92_TIMESTAMP ) );
}
-SQLUINTEGER MConnection::getInfoDefaultTxnIsolation()
+QString MConnection::getInfoDbmsName()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn1( sssss );
}
-QString MConnection::getInfoDescribeParameter()
+QString MConnection::getInfoDbmsVer()
{
MYODBCDbgEnter();
MYODBCDbgReturn1( sssss );
}
-QString MConnection::getInfoDmVer()
+SQLUINTEGER MConnection::getInfoDdlIndex()
{
MYODBCDbgEnter();
- MYODBCDbgReturn1( sssss );
+ MYODBCDbgReturn3( "%d", ( SQL_DI_CREATE_INDEX |
+ SQL_DI_DROP_INDEX ) );
}
-SQLUINTEGER MConnection::getInfoDriverHdbc()
+SQLUINTEGER MConnection::getInfoDefaultTxnIsolation()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_TXN_READ_COMMITTED );
}
-SQLUINTEGER MConnection::getInfoDriverHenv()
+QString MConnection::getInfoDescribeParameter()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn1( sssss );
}
-SQLUINTEGER MConnection::getInfoDriverHdesc()
+QString MConnection::getInfoDmVer()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn1( sssss );
}
-SQLUINTEGER MConnection::getInfoDriverHlib()
+SQLUINTEGER MConnection::getInfoDriverHdbc()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", (SQLUINTEGER)this );
}
-SQLUINTEGER MConnection::getInfoDriverHstmt()
+SQLUINTEGER MConnection::getInfoDriverHenv()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", (SQLUINTEGER)getEnvironment() );
}
QString MConnection::getInfoDriverName()
@@ -3719,70 +3711,90 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoDropCharacterSet()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoDropCollation()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoDropDomain()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoDropSchema()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoDropTable()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_DT_DROP_TABLE |
+ SQL_DT_CASCADE |
+ SQL_DT_RESTRICT ) );
}
SQLUINTEGER MConnection::getInfoDropTranslation()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoDropView()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_DT_DROP_TABLE );
}
SQLUINTEGER MConnection::getInfoDynamicCursorAttributes1()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_CA1_NEXT |
+ SQL_CA1_ABSOLUTE |
+ SQL_CA1_RELATIVE |
+ SQL_CA1_LOCK_NO_CHANGE |
+ SQL_CA1_POS_POSITION |
+ SQL_CA1_POS_UPDATE |
+ SQL_CA1_POS_DELETE |
+ SQL_CA1_POS_REFRESH |
+ SQL_CA1_POSITIONED_UPDATE |
+ SQL_CA1_POSITIONED_DELETE |
+ SQL_CA1_BULK_ADD ) );
}
SQLUINTEGER MConnection::getInfoDynamicCursorAttributes2()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_CA2_SENSITIVITY_ADDITIONS |
+ SQL_CA2_SENSITIVITY_DELETIONS |
+ SQL_CA2_SENSITIVITY_UPDATES |
+ SQL_CA2_MAX_ROWS_SELECT |
+ SQL_CA2_MAX_ROWS_INSERT |
+ SQL_CA2_MAX_ROWS_DELETE |
+ SQL_CA2_MAX_ROWS_UPDATE |
+ SQL_CA2_CRC_EXACT |
+ SQL_CA2_SIMULATE_TRY_UNIQUE ) );
}
QString MConnection::getInfoExpressionsInOrderby()
@@ -3796,49 +3808,70 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_FD_FETCH_NEXT |
+ SQL_FD_FETCH_FIRST |
+ SQL_FD_FETCH_LAST |
+ SQL_FD_FETCH_PRIOR |
+ SQL_FD_FETCH_ABSOLUTE |
+ SQL_FD_FETCH_RELATIVE ) );
}
SQLUSMALLINT MConnection::getInfoFileUsage()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_FILE_NOT_SUPPORTED );
}
SQLUINTEGER MConnection::getInfoForwardOnlyCursorAttributes1()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_CA1_NEXT |
+ SQL_CA1_ABSOLUTE |
+ SQL_CA1_RELATIVE |
+ SQL_CA1_LOCK_NO_CHANGE |
+ SQL_CA1_POS_POSITION |
+ SQL_CA1_POS_UPDATE |
+ SQL_CA1_POS_DELETE |
+ SQL_CA1_POS_REFRESH |
+ SQL_CA1_POSITIONED_UPDATE |
+ SQL_CA1_POSITIONED_DELETE |
+ SQL_CA1_BULK_ADD ) );
}
SQLUINTEGER MConnection::getInfoForwardOnlyCursorAttributes2()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_CA2_MAX_ROWS_SELECT |
+ SQL_CA2_MAX_ROWS_INSERT |
+ SQL_CA2_MAX_ROWS_DELETE |
+ SQL_CA2_MAX_ROWS_UPDATE |
+ SQL_CA2_CRC_EXACT ) );
}
SQLUINTEGER MConnection::getInfoGetdataExtensions()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_GD_ANY_COLUMN |
+ SQL_GD_ANY_ORDER |
+ SQL_GD_BOUND ) );
}
SQLUSMALLINT MConnection::getInfoGroupBy()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_GB_NO_RELATION );
}
SQLUSMALLINT MConnection::getInfoIdentifierCase()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_IC_MIXED );
}
QString MConnection::getInfoIdentifierQuoteChar()
@@ -3848,25 +3881,27 @@
MYODBCDbgReturn1( sssss );
}
-SQLUINTEGER MConnection::getInfoIndexKeywqords()
+SQLUINTEGER MConnection::getInfoIndexKeywords()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", SQL_IK_NONE );
}
SQLUINTEGER MConnection::getInfoInfoSchemaViews()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoInsertStatement()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", ( SQL_IS_INSERT_LITERALS |
+ SQL_IS_INSERT_SEARCHED |
+ SQL_IS_SELECT_INTO ) );
}
QString MConnection::getInfoIntegrity()
@@ -3880,14 +3915,14 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoKeysetCursorAttributes2()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
QString MConnection::getInfoKeywords()
@@ -3908,126 +3943,150 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoMaxAsyncConcurrentStatements()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoMaxBinaryLiteralLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxCatalogNameLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ /*!
+ \internal
+ \note
+
+ NAME_LEN is, at this time, found in mysql_com.h.
+ */
+ MYODBCDbgReturn3( "%d", NAME_LEN );
}
SQLUINTEGER MConnection::getInfoMaxCharLiteralLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxColumnNameLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ /*!
+ \internal
+ \note
+
+ NAME_LEN is, at this time, found in mysql_com.h.
+ */
+ MYODBCDbgReturn3( "%d", NAME_LEN );
}
SQLUSMALLINT MConnection::getInfoMaxColumnsInGroupBy()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxColumnsInIndex()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 32 );
}
SQLUSMALLINT MConnection::getInfoMaxColumnsInOrderBy()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxColumnsInSelect()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxColumnsInTable()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxConcurrentActivities()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxCursorNameLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUINTEGER MConnection::getInfoMaxDriverConnections()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
SQLUSMALLINT MConnection::getInfoMaxIdentifierLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ /*!
+ \internal
+ \note
+
+ NAME_LEN is, at this time, found in mysql_com.h.
+ */
+ MYODBCDbgReturn3( "%d", NAME_LEN );
}
SQLUINTEGER MConnection::getInfoMaxIndexSize()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 500 );
}
SQLUSMALLINT MConnection::getInfoMaxProcedureNameLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ /*!
+ \internal
+ \note
+
+ NAME_LEN is, at this time, found in mysql_com.h.
+ */
+ MYODBCDbgReturn3( "%d", NAME_LEN );
}
SQLUINTEGER MConnection::getInfoMaxRowSize()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 0L );
}
QString MConnection::getInfoMaxRowSizeIncludesLong()
@@ -4041,35 +4100,47 @@
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ /*!
+ \internal
+ \note
+
+ NAME_LEN is, at this time, found in mysql_com.h.
+ */
+ MYODBCDbgReturn3( "%d", NAME_LEN );
}
SQLUINTEGER MConnection::getInfoMaxStatementLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", net_buffer_length );
}
SQLUSMALLINT MConnection::getInfoMaxTableNameLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ /*!
+ \internal
+ \note
+
+ NAME_LEN is, at this time, found in mysql_com.h.
+ */
+ MYODBCDbgReturn3( "%d", NAME_LEN );
}
SQLUSMALLINT MConnection::getInfoMaxTablesInSelect()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 31 );
}
SQLUSMALLINT MConnection::getInfoMaxUserNameLen()
{
MYODBCDbgEnter();
- MYODBCDbgReturn3( "%d", nnnnn );
+ MYODBCDbgReturn3( "%d", 16 );
}
QString MConnection::getInfoMultiResultSets()
Modified: trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp 2006-06-27 02:16:45 UTC (rev 401)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp 2006-06-27 04:03:18 UTC (rev 402)
@@ -166,10 +166,8 @@
Looks like we can choose whether to return error or provide warning while
continuing. We
choose to return an error.
-
- The odbc spec says 18 is most we can set so we adopt that as our limit.
*/
- if ( stringCursorName.length() > 18 )
+ if ( getConnection()->getInfoMaxCursorNameLen() &&
stringCursorName.length() > getConnection()->getInfoMaxCursorNameLen() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_34000 ) );
/*!
Modified: trunk/MYSQLPlus/include/MConnection.h
===================================================================
--- trunk/MYSQLPlus/include/MConnection.h 2006-06-27 02:16:45 UTC (rev 401)
+++ trunk/MYSQLPlus/include/MConnection.h 2006-06-27 04:03:18 UTC (rev 402)
@@ -150,20 +150,22 @@
The thinking here is that the features we support may vary quite a bit
based upon such things as;
+ - driver/client platform
- driver version
- driver build options
- environment and connection attributes
- - mysql client version
- - mysql client build options
- - mysql client config options
- - mysql server version
- - mysql server build options
- - mysql server config options (config files, session vars etc)
+ - client version
+ - client build options
+ - client config options
+ - server platform
+ - server version
+ - server build options
+ - server config options (config files, session vars, storage engine, etc)
So we have a need to check some, perhaps many, of these during our
processing. To do this using getInfo() is awkward and
less efficient than using these.
- We do this for all info types for completeness.
+ We do this for all info types for completeness (we ignore the fact that
many are likely to be constant over time).
*/
/*@{*/
QString getInfoAccessibleProcedures();
@@ -219,6 +221,9 @@
SQLUSMALLINT getInfoCursorCommitBehavior();
SQLUSMALLINT getInfoCursorRollbackBehavior();
SQLUINTEGER getInfoCursorSensitivity();
+ QString getInfoDataSourceName();
+ QString getInfoDataSourceReadOnly();
+ QString getInfoDatabaseName();
SQLUINTEGER getInfoDatetimeLiterals();
QString getInfoDbmsName();
QString getInfoDbmsVer();
@@ -228,9 +233,6 @@
QString getInfoDmVer();
SQLUINTEGER getInfoDriverHdbc();
SQLUINTEGER getInfoDriverHenv();
- SQLUINTEGER getInfoDriverHdesc();
- SQLUINTEGER getInfoDriverHlib();
- SQLUINTEGER getInfoDriverHstmt();
QString getInfoDriverName();
QString getInfoDriverOdbcVer();
QString getInfoDriverVer();
@@ -253,7 +255,7 @@
SQLUSMALLINT getInfoGroupBy();
SQLUSMALLINT getInfoIdentifierCase();
QString getInfoIdentifierQuoteChar();
- SQLUINTEGER getInfoIndexKeywqords();
+ SQLUINTEGER getInfoIndexKeywords();
SQLUINTEGER getInfoInfoSchemaViews();
SQLUINTEGER getInfoInsertStatement();
QString getInfoIntegrity();
| Thread |
|---|
| • Connector/ODBC 5 commit: r402 - in trunk/MYSQLPlus: MYSQLPlusLib include | pharvey | 27 Jun |