List:Commits« Previous MessageNext Message »
From:pharvey Date:June 27 2006 4:03am
Subject:Connector/ODBC 5 commit: r402 - in trunk/MYSQLPlus: MYSQLPlusLib include
View as plain text  
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 includepharvey27 Jun