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)
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).
Added service-provider entry to
META-INF/services/java.sql.Driver for
JDBC-4.0 support.
(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.
Fuller synchronization of Connection to avoid
deadlocks when using multithreaded frameworks that multithread a
single connection (usually not recommended, but the JDBC spec
permits it anyways), part of fix to Bug #14972).
(Bug #14729)
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 all SQLException constructor usage to a
factory in SQLError (ground-work for JDBC-4.0
SQLState-based exception classes).
(Bug #14729)
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.
Moved -bin-g.jar file into separate
debug subdirectory to avoid confusion.
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)
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.
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)
Do not permit .setAutoCommit(true), or
.commit() or .rollback()
on an XA-managed connection as per the JDBC specification.
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 "[VAR]BINARY" for
RSMD.getColumnTypeName() when that is
actually the type, and it can be distinguished (MySQL-4.1 and
newer).
(Bug #14729)
Added unit tests for XADatasource, as well as
friendlier exceptions for XA failures compared to the "stock"
XAException (which has no messages).
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.
