        ************************************
        *       MyODBC Release Notes       *
        *         Version 02.50.38         *    
        *      Updated : 19 July 2001      *
        ************************************
        
======================================================
CONTENTS
======================================================
1. What is MyODBC ?
2. MyODBC New Fatures in 02.50.38
3. MyODBC Bugs Fixes in 02.50.38
4. MyODBC Supported Features
5. MyODBC Open Issues
6. Applications working with MyODBC
7. Reporting problems with MyODBC

======================================================
1. WHAT IS MYODBC ?
======================================================

MySQL, the most popular Open Source SQL database, is provided by MySQL AB.
MySQL AB is a commercial company that builds its business providing services
around the MySQL database.

MySQL provides support for ODBC by means of the MyODBC program. For more
information about MyODBC, please visit the following link:
http://www.mysql.com/documentation/mysql/bychapter/manual_ODBC.html#ODBC

======================================================
2. MYODBC NEW FEATURES IN 02.50.38
======================================================

The following features or APIs are newly supported in this release:

-- SQLSetCursorName
-- SQLGetCusrorName
-- SQLSetPos
-- positioned update/delete operations

SQLSetCursorName and SQLGetCursorName
-------------------------------------
Now, MyODBC applications can make use of cursors in manipulating the 
result set data using the cursors. This can be accomplished with the
use of SQLSetCursorName and SQLGetCursorName ODBC APIs, to set and get
the cursors with the appropriate statement handles respectivly.

SQLSetPos
---------
SQLSetPos, yes you are correct, one of the magic/wonderful API from ODBC, is
now supported by MyODBC driver. Using this MyODBC applications can delete or
update the desired row of data in the result set, while result set is 
processed.The following options are supported in SQLSetPos.

SQL_POSITION
SQL_DELETE
SQL_UPDATE and
SQL_REFRESH.

Positioned update or delete operations
--------------------------------------
Now, MyODBC applications can delete/update the desired row in the
result set, using the cursors.  Now using WHERE CURRENT OF cursor_name,
application can delete / update the current row that is in the process.

SYNTAX:

DELETE FROM table_name WHERE CURRENT OF cursor_name;
UPDATE table_name SET col_list WHERE CURRENT OF cursor_name;

NOTE: For the usage of SQLSetPos and Positioned delete/update operations,
please refer to ODBC manual from MSDASDK which is available from the
followimg link: 

http://www.microsoft.com/data

======================================================
3. MYODBC BUG FIXES IN 02.50.38
======================================================

1. Execution of row bindings prior to setting the complete param bindings.
Previously driver use to through the error when the application calls
SQLBindCol to set the row buffers, prior to setting any pending param
bindings. This is not supposed to be validated by the driver till the 
execution of the statement. This is fixed in the release

2. Fix to export of table with one of the column type as TEXT from 
MS Access98/2000 to MySQL.

======================================================
4. MYODBC SUPPORTED or UN-SUPPORTED FEATURES
======================================================

[Functions]                 [Supported]    [Level]
SQLAllocConnect()           Supported       Core
SQLAllocEnv()               Supported       Core
SQLAllocStmt()              Supported       Core
SQLBindCol()                Supported       Core
SQLCancel()                 Supported       Core
SQLColAttribute()           Supported       Core
SQLColumns()                Supported       Level 1
SQLConnect()                Supported       Core
SQLDataSources()            Supported       Level 2
SQLDescribeCol()            Supported       Core
SQLDisconnect()             Supported       Core
SQLError()                  Supported       Core
SQLExecDirect()             Supported       Core
SQLExecute()                Supported       Core
SQLFetch()                  Supported       Core
SQLFreeConnect()            Supported       Core
SQLFreeEnv()                Supported       Core
SQLFreeStmt()               Supported       Core
SQLGetConnnectOptions()     Supported       Level 1
SQLGetCursorName()          Supported       Core
SQLGetData()                Supported       Level 1
SQLGetFunctions()           Supported       Level 1
SQLGetInfo()                Supported       Level 1
SQLGetStmtOption()          Supported       Level 1
SQLGetTypeInfo()            Supported       Level 1
SQLNumResultCols()          Supported       Core
SQLParamData()              Supported       Level 1
SQLPrepare()                Supported       Core
SQLPutData()                Supported       Level 1
SQLRowCount()               Supported       Core
SQLSetConnectOption()       Supported       Level 1
SQLSetCursorName()          Supported       Core
SQLSetParam()               Supported       Core
SQLSetStmtOption()          Supported       Level 1
SQLSpecialColumns()         Supported       Level 1
SQLStatistics()             Supported       Level 1
SQLTables()                 Supported       Level 1
SQLTransact()               Supported       Core
SQLBindParameter()          Supported       Level 1
SQLBrowseConnect()          Unsupported     Level 2
SQLColumnPrivileges()       Unsupported     Level 2
SQLDescribeParam()          Supported       Level 2
SQLDriverConnect()          Supported       Level 1
SQLDrivers()                Supported       Level 2
SQLExtendedFetch()          Supported       Level 2
SQLForeignKeys()            Supported       Level 2
SQLMoreResults()            Supported       Level 2
SQLNativeSQL()              Supported       Level 2
SQLNumParams()              Supported       Level 2
SQLParamOptions()           Unsupported     Level 2
SQLPrimaryKeys()            Supported       Level 2
SQLProcedureColumns()       Unsupported     Level 2
SQLProcedures()             Unsupported     Level 2
SQLSetPos()                 Supported       Level 2
SQLSetScrollOptions()       Supported       Level 2
SQLTablePrivileges()        Unsupported     Level 2

[Driver Info]
SQL_ACTIVE_CONNECTIONS      SQL_SUCCESS     Core
SQL_ACTIVE_STATEMENTS       SQL_SUCCESS     Core
SQL_CONVERT_FUNCTIONS       SQL_SUCCESS     Core
SQL_DATABASE_NAME           SQL_SUCCESS     Core
SQL_DBMS_NAME               SQL_SUCCESS     Core
SQL_DBMS_VER                SQL_SUCCESS     Core
SQL_DATA_SOURCE_NAME        SQL_SUCCESS     Core
SQL_DRIVER_NAME             SQL_SUCCESS     Core
SQL_DRIVER_ODBC_VER         SQL_SUCCESS     Core
SQL_DRIVER_VER              SQL_SUCCESS     Core
SQL_FETCH_DIRECTION         SQL_SUCCESS     Core
SQL_FILE_USAGE              SQL_SUCCESS     Core
SQL_GETDATA_EXTENSIONS      SQL_SUCCESS     Core
SQL_LOCK_TYPES              SQL_ERROR       Core
SQL_NUMERIC_FUNCTIONS       SQL_SUCCESS     Core
SQL_ODBC_API_CONFORMANCE    SQL_SUCCESS     Core
SQL_ODBC_SAG_CLI_CONFORMANCE    SQL_SUCCESS Core
SQL_ODBC_VER                SQL_SUCCESS     Core
SQL_POS_OPERATIONS          SQL_SUCCESS     Core
SQL_POSITIONED_STATEMENTS   SQL_SUCCESS     Core
SQL_ROW_UPDATES             SQL_SUCCESS     Core
SQL_SEARCH_PATTERN_ESCAPE   SQL_SUCCESS     Core

[DataSource Info]
SQL_ACCESSIBLE_PROCEDURES   SQL_SUCCESS     Core
SQL_ACCESSIBLE_TABLES       SQL_SUCCESS     Core
SQL_BOOKMARK_PERSISTENCE    SQL_SUCCESS     Core
SQL_CURSOR_COMMIT_BEHAVIOR  SQL_SUCCESS     Core
SQL_CURSOR_ROLLBACK_BEHAVIOR    SQL_SUCCESS Core
SQL_DATA_SOURCE_READ_ONLY   SQL_SUCCESS     Core
SQL_DEFAULT_TXN_ISOLATION   SQL_SUCCESS     Core
SQL_MULT_RESULT_SETS        SQL_SUCCESS     Level 2
SQL_MULTIPLE_ACTIVE_TXN     SQL_SUCCESS     Core
SQL_NEED_LONG_DATA_LEN      SQL_SUCCESS     Level 1
SQL_NULL_COLLATION          SQL_SUCCESS     Core
SQL_OWNER_TERM              SQL_SUCCESS     Core
SQL_OWNER_USAGE             SQL_SUCCESS     Core
SQL_PROCEDURE_TERM          SQL_SUCCESS     Core
SQL_QUALIFIER_TERM          SQL_SUCCESS     Core
SQL_SCROLL_CONCURRENCY      SQL_SUCCESS     Core
SQL_SCROLL_OPTIONS          SQL_SUCCESS     Core
SQL_STATIC_SENSITIVITY      SQL_SUCCESS     Core
SQL_TABLE_TERM              SQL_SUCCESS     Core
SQL_TIMEDATE_ADD_INTERVALS  SQL_SUCCESS     Core
SQL_TIMEDATE_DIFF_INTERVALS SQL_SUCCESS     Core

[Connection Attr]
SQL_ACCESS_MODE             SQL_SUCCESS     Core
SQL_AUTOCOMMIT              SQL_SUCCESS     Core
SQL_CURRENT_QUALIFIER       SQL_SUCCESS     Core
SQL_LOGIN_TIMEOUT           SQL_SUCCESS     Core
SQL_ODBC_CURSORS            SQL_SUCCESS     Core
SQL_PACKET_SIZE             SQL_SUCCESS     Core
SQL_TRANSLATE_DLL           SQL_ERROR       Core
SQL_TRANSLATE_OPTION        SQL_ERROR       Core
SQL_TXN_ISOLATION           SQL_SUCCESS     Core

[Statement Attr]
SQL_ASYNC_ENABLE            SQL_SUCCESS     Level 2
SQL_BIND_TYPE               SQL_SUCCESS     Core
SQL_CONCURRENCY             SQL_SUCCESS     Core
SQL_CURSOR_TYPE             SQL_SUCCESS     Core
SQL_KEYSET_SIZE             SQL_SUCCESS     Core
SQL_MAX_LENGTH              SQL_SUCCESS     Level 1
SQL_MAX_ROWS                SQL_SUCCESS     Level 2
SQL_NOSCAN                  SQL_SUCCESS     Level 1
SQL_QUERY_TIMEOUT           SQL_SUCCESS     Core
SQL_RETRIEVE_DATA           SQL_SUCCESS     Level 2
SQL_ROWSET_SIZE             SQL_SUCCESS     Level 2
SQL_SIMULATE_CURSOR         SQL_SUCCESS     Level 2
SQL_USE_BOOKMARKS           SQL_SUCCESS     Level 1

[SQL Conf]
SQL_ALTER_TABLE             SQL_SUCCESS     Core
SQL_COLUMN_ALIAS            SQL_SUCCESS     Core
SQL_CONCAT_NULL_BEHAVIOR    SQL_SUCCESS     Core
SQL_CORRELATION_NAME        SQL_SUCCESS     Core
SQL_EXPRESSIONS_IN_ORDERBY  SQL_SUCCESS     Core
SQL_GROUP_BY                SQL_SUCCESS     Core
SQL_IDENTIFIER_CASE         SQL_SUCCESS     Core
SQL_IDENTIFIER_QUOTE_CHAR   SQL_SUCCESS     Core
SQL_KEYWORDS                SQL_SUCCESS_WITH_INFO   Core
SQL_LIKE_ESCAPE_CLAUSE      SQL_SUCCESS     Level 1
SQL_MAX_BINARY_LITERAL_LEN  SQL_SUCCESS     Level 1
SQL_MAX_CHAR_LITERAL_LEN    SQL_SUCCESS     Level 1
SQL_MAX_COLUMN_NAME_LEN     SQL_SUCCESS     Core
SQL_MAX_COLUMNS_IN_GROUP_BY SQL_SUCCESS     Core
SQL_MAX_COLUMNS_IN_INDEX    SQL_SUCCESS     Core
SQL_MAX_COLUMNS_IN_ORDER_BY SQL_SUCCESS     Core
SQL_MAX_COLUMNS_IN_SELECT   SQL_SUCCESS     Core
SQL_MAX_COLUMNS_IN_TABLE    SQL_SUCCESS     Core
SQL_MAX_CURSOR_NAME_LEN     SQL_SUCCESS     Core
SQL_MAX_INDEX_SIZE          SQL_SUCCESS     Core
SQL_MAX_OWNER_NAME_LEN      SQL_SUCCESS     Core
SQL_MAX_PROCEDURE_NAME_LEN  SQL_SUCCESS     Core
SQL_MAX_ROW_SIZE            SQL_SUCCESS     Core
SQL_MAX_ROW_SIZE_INCLUDES_LONG  SQL_SUCCESS Core
SQL_MAX_STATEMENT_LEN       SQL_SUCCESS     Core
SQL_MAX_TABLE_NAME_LEN      SQL_SUCCESS     Core
SQL_MAX_TABLES_IN_SELECT    SQL_SUCCESS     Core
SQL_MAX_USER_NAME_LEN       SQL_SUCCESS     Core
SQL_NON_NULLABLE_COLUMNS    SQL_SUCCESS     Core
SQL_ODBC_SQL_CONFORMANCE    SQL_SUCCESS     Core
SQL_ODBC_SQL_OPT_IEF        SQL_SUCCESS     Core
SQL_ORDER_BY_COLUMNS_IN_SELECT  SQL_SUCCESS Core
SQL_OUTER_JOINS             SQL_SUCCESS     Core
SQL_POSITIONED_STATEMENTS   SQL_SUCCESS     Core
SQL_PROCEDURES              SQL_SUCCESS     Core
SQL_QUOTED_IDENTIFIER_CASE  SQL_SUCCESS     Core
SQL_SPECIAL_CHARACTERS      SQL_SUCCESS     Core
SQL_SUBQUERIES              SQL_SUCCESS     Core
SQL_UNION                   SQL_SUCCESS     Core

======================================================
5. MYODBC OPEN ISSUES
======================================================
TO DO...!!!

======================================================
6. APPLICATIONS WORKING WITH MYODBC
======================================================
Please visit the following link, to know the common
applications that works with MyODBC.

http://www.mysql.com/documentation/mysql/bychapter/manual_ODBC.html#MyODBC_clients

======================================================
7. REPORTING PROBLEMS WITH MYODBC
======================================================

If you encounter difficulties with MyODBC, you should start by making a
log file from the ODBC manager (the log you get when requesting logs from
ODBCADMIN) and a MyODBC log. 

To get a MyODBC log, you need to do the following: 

   1.Ensure that you are using myodbcd.dll and not myodbc.dll. The easiest
     way to do this is to get myodbcd.dll from the MyODBC distribution and
     copy it over the myodbc.dll, which is probably in your 
     C:\windows\system32 or C:\winnt\system32 directory. Note that you 
     probably want to restore the old myodbc.dll file when you have finished
     testing, as this is a lot faster than myodbcd.dll. 
   2.Tag the `Trace MyODBC' option flag in the MyODBC connect/configure screen
     The log will be written to file `C:\myodbc.log'. If the trace option is 
     not remembered when you are going back to the above screen, it means that
     you are not using the myodbcd.dll driver (see above). 
   3.Start your application and try to get it to fail. 

Check the MyODBC trace file, to find out what could be wrong. You should be
able to find out the issued queries by searching after the string >
mysql_real_query in the `myodbc.log' file. 

You should also try duplicating the queries in the mysql monitor or admndemo
to find out if the error is MyODBC or MySQL. 

If you find out something is wrong, please only send the relevant rows (max 40
rows) to myodbc@lists.mysql.com. Please never send the whole MyODBC or ODBC
log file! 

If you are unable to find out what's wrong, the last option is to make an 
archive (tar or zip) that contains a MyODBC trace file, the ODBC log file, 
and a README file that explains the problem. You can send this to 
ftp://support.mysql.com/pub/mysql/secret. Only we at MySQL AB will have 
access to the files you upload, and we will be very discrete with the data! 

If you can create a program that also shows this problem, please upload
this too!. If the program works with some other SQL server, you should make an
ODBC log file where you do exactly the same thing in the other SQL server. 

Remember that the more information you can supply to us, the more likely it
is that we can fix the problem! 

Please read MyODBC mailing list archieve before posting the bug to the 
