オリジナル版:http://lists.mysql.com/java/9273
バージョン5.1版での製品版保守リリースであるMySQL Connector/J 5.1.8が リリースされました。Connector/Jは、MySQL用のタイプ4のpure-Java JDBCドライバです。
バージョン5.1.8は、MySQL-4.1、MySQL-5.0、MySQL-5.1 RC、MySQL-5.4パフォーマンスリリースを含んだいくつかのMySQLのバージョンでの使用にふさわしいリリースです。
バージョン5.1.8は、http://dev.mysql.com/downloads/connector/j/5.1.htmlおよびミラーサイトのConnector/Jダウンロードページからソースおよびバイナリ形式で入手可能です。(すべてのミラーサイトが現在において最新であるとは限らないかもしれないことに注意してください。あるミラーサイトでこのバージョンを見つけることができない場合は、再度確認を行うか、あるいは別のダウンロード・サイトを選択してください。)
いつものことですが、アプリケーションに影響を及ぼす動作変更を把握するには、アップグレードの前に、マニュアルの変更ログ(http://dev.mysql.com/doc/refman/5.1/en/cj-news.html)と"Upgrading"の節(http://dev.mysql.com/doc/refman/5.1/en/cj-upgrading.html)をチェックするようお勧めします。
バグレポート、バグ修正、パッチ等の情報をお待ちしておりますので、以下のページをご利用ください。
http://forge.mysql.com/wiki/Contributing
以下は、Connector/J 5.1.8の変更情報です。
- 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).
- FixedBUG#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
toBug#36326which can cause the server to report bogus
transaction state.
- FixedBug#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 toBug#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:
- FixedBUG#44588- Fixed error message for connection exceptions
when
streaming result sets are used.
- FixedBUG#43071- Specifying ASCII encoding for converting seed
String to
byte array; allowing system default encoding to be used causes
auth failures
on EBCDIC platforms.
- FixedBUG#43070- traceProtocol parameter isn't configured
early enough to
capture handshake protocol.
- FixedBUG#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.
- FixedBUG#42055- ConcurrentModificationException possible when
removing items
from global blacklist.
- FixedBug #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.
- FixedBug#44862- getBestRowIdentifier does not return
resultset as per JDBC API specifications
- FixedBug#44683- getVersionColumns does not return resultset
as per JDBC API specifications
- FixedBug#44865- getColumns does not return resultset as per
JDBC API specifications
- FixedBug#44868- getTypeInfo does not return resultset as per
JDBC API specifications
- FixedBug#44869- getIndexInfo does not return resultset as per
JDBC API specifications
- FixedBug#44867- getImportedKeys/exportedKeys/crossReference
doesn't have correct type for DEFERRABILITY
- FixedBug#41730- SQL Injection when using U+00A5 and SJIS
- FixedBug#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.
- FixedBug#38387- "functionsNeverReturnBlobs=true" now works
for SQL functions that return binary/binary collation VAR_STRINGS.
- FixedBug#45171- Connection.serverPrepareStatement() returns
wrong default result set types
- FixedBug #43714- useInformationSchema with
DatabaseMetaData.getExportedKeys() throws exception
- FixedBug #42253- multiple escaped quotes cause exception from
EscapeProcessor
- FixedBug #41566- Quotes within comments not correctly ignored
by statement parser
- FixedBug #41269- DatabaseMetadata.getProcedureColumns()
returns wrong value for column length
- FixedBug #40439- Error rewriting batched statement if table
name ends with "values".
- FixedBug #41484Accessing fields by name after the ResultSet
is closed throws NullPointerException.
- FixedBug #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.