2009.07.15

MySQL

MySQL Connector/J 5.1.8がリリースされました。

オリジナル版: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.