2007.04.12

MySQL

MySQL Connector/J 5.1.0アルファ版が リリースされました。

オリジナル版:http://lists.mysql.com/java/9050

MySQL Connector/J 5.1.0アルファ版(MySQL用のタイプ4のpure-Java JDBCドライバの最新バージョン)が リリースされました。

バージョン5.1.0は、MySQL-4.1、MySQL-5.0、MySQL-5.1ベータ版、MySQL-5.2ファルコンプレビュー用を含んだいくつかのMySQLのバージョンでの使用にふさわしいリリースです。

バージョン5.1.0は、http://dev.mysql.com/downloads/connector/j/5.1.htmlおよびミラーサイトのConnector/Jダウンロードページからソースおよびバイナリ形式で入手可能です。(すべてのミラーサイトが現在において最新であるとは限らないかもしれないことに注意してください。あるミラーサイトでこのバージョンを見つけることができない場合は、再度確認を行うか、あるいは別のダウンロード・サイトを選択してください。)

いつものことですが、アプリケーションに影響を及ぼす動作変更を把握するには、アップグレードの前に、マニュアルの変更ログ(http://dev.mysql.com/doc/refman/5.0/en/cj-news.html)と"Upgrading"の節(http://dev.mysql.com/doc/refman/5.0/en/cj-upgrading.html)をチェックするようお勧めします。

バグレポート、バグ修正、パッチ等の情報をお待ちしておりますので、以下のページをご利用ください。

http://forge.mysql.com/wiki/Contributing

バージョン5.1.0は、新たなJDBC-4.0 APIを実施した最初の試作品です。

他の試作リリースと同様、このアルファリリースは、製品レベルのシステムあるいはクリティカルなデータをもつシステム上でインストールしないでください。いかなるソフトウェアの新バージョンをインストールする前でも、バックアップをとることが望ましいです。MySQL AB社は、ハイレベルの品質を保証すべく、非常に努力してきましたが、いかなるソフトウェア試作リリースにおいてと同様、バックアップを行なうことによりデータの保護を行なってください。

以下は本製品の新たな特徴です。

MySQL Connector/J 5.1.0 includes the following new features:

  * JDBC-4.0 ease-of-development features including auto-registration with
the DriverManager via the service provider mechanism, standardized
Connection validity checks and categorized SQLExceptions based on
recoverability/retry-ability and class of the underlying error.

  * JDBC-4.0 standardized unwrapping to interfaces that include vendor
extensions

  * Support for JDBC-4.0 XML processing via JAXP interfaces to DOM, SAX and
StAX

  * JDBC-4.0 support for setting per-connection client information (which
can be viewed in the comments section of a query via "SHOW PROCESSLIST" on a
MySQL server, or can be extended to support custom persistence of the
information via a public interface)

  * Support for JDBC-4.0 NCHAR, NVARCHAR and NCLOB types

  * The driver will automatically adjust the server session variable
"net_write_timeout" when it determines its been asked for a "streaming"
result, and resets it to the previous value when the result set has been
consumed. (The configuration property is named
"netTimeoutForStreamingResults", with a unit of seconds, the value '0' means
the driver will not try and adjust this value).

This release also includes the following bug fixes that are also present in
Connector/J 5.0.6 (not yet released):

  * Fixed BUG#25545 - Client options not sent correctly when using SSL,
leading to stored procedures not being able to return results. Thanks to Don
Cohen for the bug report, testcase and patch.
  
  * Fixed BUG#26592 - PreparedStatement is not closed in
BlobFromLocator.getBytes().
  
  * Fixed BUG#25624 - Whitespace surrounding storage/size specifiers in
stored procedure parameters declaration causes NumberFormatException to be
thrown when calling stored procedure on JDK-1.5 or newer, as the Number
classes in JDK-1.5+ are whitespace intolerant.
  
  * Fixed BUG#26173 - When useCursorFetch=true, sometimes server would
return new, more exact metadata during the execution of the server-side
prepared statement that enables this functionality, which the driver ignored
(using the original metadata returned during prepare()), causing corrupt
reading of data due to type mismatch when the actual rows were returned.

  * Fixed BUG#26959 - comments in DDL of stored procedures/functions confuse
procedure parser, and thus metadata about them can not be created, leading
to inability to retrieve said metadata, or execute procedures that have
certain comments in them.
  
  * Give better error message when "streaming" result sets, and the
connection gets clobbered because of exceeding net_write_timeout on the
server. (which is basically what the error message says too).

  * Fixed BUG#26789 - fast date/time parsing doesn't take into account
00:00:00 as a legal value.
  
  * Fixed BUG#27317 - ResultSet.get*() with a column index < 1 returns
misleading error message.
 
  * Fixed BUG#25517 - Statement.setMaxRows() is not effective on result sets
materialized from cursors.
  
  * New configuration property, "enableQueryTimeouts" (default "true"). When
enabled, query timeouts set via Statement.setQueryTimeout() use a shared
java.util.Timer instance for scheduling. Even if the timeout doesn't expire
before the query is processed, there will be memory used by the TimerTask
for the given timeout which won't be reclaimed until the time the timeout
would have expired if it hadn't been cancelled by the driver. High-load
environments might want to consider disabling this functionality. (this
configuration property is part of the "maxPerformance" configuration
bundle).
  
  * Fixed BUG#27400 - CALL /* ... */ some_proc() doesn't work. As a side
effect of this fix, you can now use /* */ and # comments when preparing
statements using client-side prepared statement emulation.
  
    If the comments happen to contain parameter markers '?', they will be
treated as belonging to the comment (i.e. not recognized) rather than being
a parameter of the statement.
  
    Note that the statement when sent to the server will contain the
comments as-is, they're not stripped during the process of preparing the
PreparedStatement or CallableStatement.
  
  * Fixed BUG#25328 - BIT(> 1) is returned as java.lang.String from
ResultSet.getObject() rather than byte[].
  
  * Fixed BUG#25715 - CallableStatements with OUT/INOUT parameters that are
"binary" (blobs, bits, (var)binary, java_object) have extra 7 bytes (which
happens to be the _binary introducer!)
 
  * Added configuration property "padCharsWithSpace" (defaults to "false").
If set to "true", and a result set column has the CHAR type and the value
does not fill the amount of characters specified in the DDL for the column,
the driver will pad the remaining characters with space (for ANSI
compliance).
  
  * Fixed BUG#27655 - Connection.getTransactionIsolation() uses "SHOW
VARIABLES LIKE" which is very inefficient n MySQL-5.0+
  
  * Added configuration property "useDynamicCharsetInfo". If set to "false"
(the default), the driver will use a per-connection cache of character set
information queried from the server when necessary, or when set to "true",
use a built-in static mapping that is more efficient, but isn't aware of
custom character sets or character sets implemented after the release of the
JDBC driver.
  
    Note: this only affects the "padCharsWithSpace" configuration property
and the ResultSetMetaData.getColumnDisplayWidth() method.
 
  * More intelligent initial packet sizes for the "shared" packets are used
(512 bytes, rather than 16K), and initial packets used during handshake are
now sized appropriately as to not require reallocation.
 
  * Fixed issue where calling getGeneratedKeys() on a prepared statement
after calling execute() didn't always return the generated keys
(executeUpdate() worked fine however).