MySQL Connector/J Release Notes  /  Changes in MySQL Connector/J 5.0  /  Changes in MySQL Connector/J 5.0.0 (2005-12-22)

Changes in MySQL Connector/J 5.0.0 (2005-12-22)

Bugs Fixed

  • Added support for Connector/MXJ integration using url subprotocol jdbc:mysql:mxj://.... (Bug #14729)

  • Idle timeouts cause XAConnections to whine about rolling themselves back. (Bug #14729)

  • When fix for Bug #14562 was merged from 3.1.12, added functionality for CallableStatement's parameter metadata to return correct information for .getParameterClassName(). (Bug #14729)

  • Added service-provider entry to META-INF/services/java.sql.Driver for JDBC-4.0 support. (Bug #14729)

  • Fuller synchronization of Connection to avoid deadlocks when using multi-threaded frameworks that multi-thread a single connection (usually not recommended, but the JDBC spec permits it anyways), part of fix to Bug #14972). (Bug #14729)

  • Moved all SQLException constructor usage to a factory in SQLError (ground-work for JDBC-4.0 SQLState-based exception classes). (Bug #14729)

  • Removed Java5-specific calls to BigDecimal constructor (when result set value is '', (int)0 was being used as an argument indirectly using method return value. This signature doesn't exist prior to Java5.) (Bug #14729)

  • Implementation of Statement.cancel() and Statement.setQueryTimeout(). Both require MySQL-5.0.0 or newer server, require a separate connection to issue the KILL QUERY statement, and in the case of setQueryTimeout() creates an additional thread to handle the timeout functionality.

    Note: Failures to cancel the statement for setQueryTimeout() may manifest themselves as RuntimeExceptions rather than failing silently, as there is currently no way to unblock the thread that is executing the query being cancelled due to timeout expiration and have it throw the exception instead. (Bug #14729)

  • Return "[VAR]BINARY" for RSMD.getColumnTypeName() when that is actually the type, and it can be distinguished (MySQL-4.1 and newer). (Bug #14729)

  • PreparedStatement.setString() didn't work correctly when sql_mode on server contained NO_BACKSLASH_ESCAPES and no characters that needed escaping were present in the string.

  • Do not permit .setAutoCommit(true), or .commit() or .rollback() on an XA-managed connection as per the JDBC specification.

  • Attempt detection of the MySQL type BINARY (it is an alias, so this isn't always reliable), and use the java.sql.Types.BINARY type mapping for it.

  • XADataSource implemented (ported from 3.2 branch which won't be released as a product). Use com.mysql.jdbc.jdbc2.optional.MysqlXADataSource as your datasource class name in your application server to utilize XA transactions in MySQL-5.0.10 and newer.

  • Setting useJDBCCompliantTimezoneShift=true (it is not the default) causes the driver to use GMT for all TIMESTAMP/DATETIME time zones, and the current VM time zone for any other type that refers to time zones. This feature can not be used when useTimezone=true to convert between server and client time zones.

  • Moved -bin-g.jar file into separate debug subdirectory to avoid confusion.

  • Added unit tests for XADatasource, as well as friendlier exceptions for XA failures compared to the "stock" XAException (which has no messages).

  • Add one level of indirection of internal representation of CallableStatement parameter metadata to avoid class not found issues on JDK-1.3 for ParameterMetadata interface (which doesn't exist prior to JDBC-3.0).

  • If the connection useTimezone is set to true, then also respect time zone conversions in escape-processed string literals (for example, "{ts ...}" and "{t ...}").

  • Return original column name for RSMD.getColumnName() if the column was aliased, alias name for .getColumnLabel() (if aliased), and original table name for .getTableName(). Note this only works for MySQL-4.1 and newer, as older servers don't make this information available to clients.

Download these Release Notes
PDF (US Ltr) - 484.0Kb
PDF (A4) - 483.8Kb
EPUB - 127.8Kb