MySQL Connector/J 5.1.8 Has Been Released!
Mark Matthews <[email protected]> Wed, 15 Jul 2009 16:10:01 -0500
| Newsgroups | gmane.comp.db.mysql.java |
|---|---|
| Message-ID | <[email protected]> |
Hi,
MySQL Connector/J 5.1.8, a maintenance release of the production
5.1branch has been released. Connector/J is the Type-IV pure-Java JDBC
driver for MySQL.
Version 5.1.8 is suitable for use with any MySQL version including
MySQL-4.1, MySQL-5.0, MySQL-5.1 or the MySQL-5.4 performance
release.
It is now available in source and binary form from the Connector/J
download pages at
http://dev.mysql.com/downloads/connector/j/5.1.html
and mirror sites (note that not all mirror sites may be up to date at
this point of time - if you can't find this version on some mirror,
please try again later or choose another download site.)
As always, we recommend that you check the change log
http://dev.mysql.com/doc/refman/5.1/en/cj-news.html
and "Upgrading" sections
http://dev.mysql.com/doc/refman/5.1/en/cj-upgrading.html
in the manual before upgrading as well as the "CHANGES" file in the
download archive to be aware of changes in behavior that might affect
your application.
I'd also like to take a minute to welcome and thank Jess Balint (on
the CC) to the development team for Connector/J. He's handled a good
chunk of bug fixes for this release, as well as doing the qa and
release engineering work. Thanks Jess!
We welcome and appreciate your feedback, bug reports, bug fixes,
patches etc.:
http://forge.mysql.com/wiki/Contributing
MySQL Connector/J 5.1.8 includes the following changes targeted at
scalability and performance:
- Fixed a performance regression (Bug#41532) in rewritten batched
inserts when "ON DUPLICATE KEY"
was present.
Fixes include an improvement to token searching in the
statement, and the ability for the driver
to rewrite prepared statements that include "ON DUPLICATE KEY
UPDATE" into multi-valued inserts as
long as there is no use of LAST_INSERT_ID() in the update
clause (as this would render
getGeneratedKey() values incorrect).
- Fixed BUG#43421 - Made doPing() global blacklist-aware, so that
it does not
throw Exceptions when at least a single load-balanced server is
available.
- The driver will automatically disable elideSetAutoCommit and
useLocalTransactionState
if it detects a MySQL server version older than 6.0.10 with the
query cache enabled, due
to Bug#36326 which can cause the server to report bogus
transaction state.
- Fixed Bug#44056 - Statement.getGeneratedKeys() retains result
set instances until statement is closed,
thus causing memory leaks for long-lived statements, or
statements used in tight loops.
- Fixed issues with server-side prepared statement batch re-
writing caused by the fix to Bug#41532.
Rewriting of batched statements now works the same between
normal prepared statements and server-side
prepared statements.
As well as the following general bug fixes and improvements:
- Fixed BUG#44588 - Fixed error message for connection exceptions
when
streaming result sets are used.
- Fixed BUG#43071 - Specifying ASCII encoding for converting seed
String to
byte array; allowing system default encoding to be used causes
auth failures
on EBCDIC platforms.
- Fixed BUG#43070 - traceProtocol parameter isn't configured
early enough to
capture handshake protocol.
- Fixed BUG#41161 - PreparedStatement.addBatch() doesn't check
for all parameters
being set, which leads to a NullPointerException when calling
executeBatch() and
rewriting batched statements into multi-value or multi-
statement statements.
- Fixed BUG#42055 - ConcurrentModificationException possible when
removing items
from global blacklist.
- Fixed Bug #42309 - Statement.getGeneratedKeys() returns 2 keys
when
using ON DUPLICATE KEY UPDATE
- Fixed some quoting of substituted parameter issues in localized
error messages.
- Added a version check around getting the variable
'auto_increment_increment' for
servers < 5.0.2, which quiets down a warning message that the
driver would log
when connecting to MySQL-4.1 or older.
- Fixed Bug#44862 - getBestRowIdentifier does not return
resultset as per JDBC API specifications
- Fixed Bug#44683 - getVersionColumns does not return resultset
as per JDBC API specifications
- Fixed Bug#44865 - getColumns does not return resultset as per
JDBC API specifications
- Fixed Bug#44868 - getTypeInfo does not return resultset as per
JDBC API specifications
- Fixed Bug#44869 - getIndexInfo does not return resultset as per
JDBC API specifications
- Fixed Bug#44867 - getImportedKeys/exportedKeys/crossReference
doesn't have correct type for DEFERRABILITY
- Fixed Bug#41730 - SQL Injection when using U+00A5 and SJIS
- Fixed Bug#43196 - Statement.getGeneratedKeys() doesn't return
values for UNSIGNED BIGINTS with values > Long.MAX_VALUE.
Unfortunately, because the server doesn't tell clients what
TYPE the auto increment value is, the driver can't consistently
return BigIntegers for the result set returned from
getGeneratedKeys(), it will only return them if the value is >
Long.MAX_VALUE.
If your application needs this consistency, it will need to
check the class of the return value from .getObject() on the
ResultSet returned by Statement.getGeneratedKeys() and if it's
not a BigInteger, create one based on the java.lang.Long that
is returned.
- Fixed Bug#38387 - "functionsNeverReturnBlobs=true" now works
for SQL functions that return binary/binary collation VAR_STRINGS.
- Fixed Bug#45171 - Connection.serverPrepareStatement() returns
wrong default result set types
- Fixed Bug #43714 - useInformationSchema with
DatabaseMetaData.getExportedKeys() throws exception
- Fixed Bug #42253 - multiple escaped quotes cause exception from
EscapeProcessor
- Fixed Bug #41566 - Quotes within comments not correctly ignored
by statement parser
- Fixed Bug #41269 - DatabaseMetadata.getProcedureColumns()
returns wrong value for column length
- Fixed Bug #40439 - Error rewriting batched statement if table
name ends with "values".
- Fixed Bug #41484 Accessing fields by name after the ResultSet
is closed throws NullPointerException.
- Fixed Bug #39426 - executeBatch passes most recent
PreparedStatement params to StatementInterceptor
- Support use of INFORMATION_SCHEMA.PARAMETERS when
"useInformationSchema" is set "true" and the view exists
for DatabaseMetaData.getProcedureColumns() and
getFunctionColumns().
- When "logSlowQueries" is set to "true", and the driver has made
a connection to a server that has suport
for the SERVER_QUERY_WAS_SLOW flag in the protocol, the query
will be logged if the server indicates the
query has passed the slow query threshold.
- Added new property, "maxAllowedPacket" to set maximum allowed
packet size to send to server.
Enjoy!
-Mark
--
Mark Matthews, Architect - Enterprise Tools
MySQL @ Sun Microsystems, Inc., http://www.sun.com/mysql/
--
MySQL Java Mailing List
For list archives: http://lists.mysql.com/java
To unsubscribe: http://lists.mysql.com/[email protected]