Tuesday, 11 September 2007

Re-engineered ODBC 5.1 driver for MySQL

MySQL is today releasing a new ODBC driver, under the version number ODBC 5.1. It is a partial rewrite of the the original MyODBC 3.51 code base, originally developed by Monty and Venu Anuganti, including individual parts of the current 65K ODBC 5 code base. It is designed to work with all MySQL versions starting with MySQL 4.1.

The original ODBC 3.51 driver was incomplete and admittedly somewhat of a quick hack, containing some debatable code. For that reason, Connector/ODBC 5 started as a complete rewrite. After 2 years it had 65 KLOC, but no tests and was in part overdesigned. That project was started but never finished, and had some deep Qt dependencies.

In the meantime, the original ODBC 3.51 has had 6 new releases and over 200 bugs fixed. As for ODBC 5.1, debatable parts of the code have been rewritten. The new ODBC 5.1 driver thus shares almost solely its major version number with the old ODBC 5 driver, which never went past Beta stage. The development of the old ODBC 5 driver has now stopped.

The new ODBC 5.1 driver, like 3.51, supports all relevant platforms (including Win64). While ODBC mostly is relevant for Windows, we have some (but not many) Linux based ODBC users.

Overall, ODBC 3.51 (released as 3.51.20) is now in a better state than ever. The ODBC QA team has written several hundred new tests. Without doubt, the 3.51 code base is now a good fundament for the new ODBC 5.1 version.

ODBC 3.51 supports a subset of the ODBC Core interface, plus some Level 1 and Level 2 features. ODBC 5.1 should be a complete implementation of the ODBC Core interface, plus more Level 1 and 2 features.

We aren't going to reach complete Level 1 conformance because we won't be supporting asynchronous execution. and we won't support SQLProcedureColumns() as we at this point cannot get stored procedure parameter info from the server.

The stumbling blocks for full level 2 conformance are in/out and out parameters, and bookmarks, related to MySQL Server.

New features include Unicode support, and descriptors for connectors and metadata as required by Level 3. The following features are already supported in ODBC 5.1.0

  • Support for SQL_C_WCHAR.

  • Support for Unicode functions (SQLConnectW, etc.)

  • Descriptor support (SQLGetDescField, SQLGetDescRec, etc.)

Before ODBC 5.1 goes beta, you can expect the following functions

MySQL has a number of beta customers identified by the Support team. They represent user bases for which Unicode is interesting. From the Community of MySQL users, we are looking for testers who can expand upon the quality assurance done inside MySQL, which is based on automated tests.

Especially, we're looking for beta testers who work with closed source applications like Microsoft Access, PowerBuilder, and Borland tools. Testers should contact Lenz Grimmer or Kaj Arnö in the MySQL community team (at firstname@mysql.com), who will establish the contact between the ODBC team and the beta testers.

1 comment: